9

我有一个完全位于屏幕外的视图,我正在尝试将其动画到屏幕上。

当我打电话时:

view.startAnimation(tA);

没有任何反应, tA.initialize 和 tA.applyTransformation 永远不会被调用。

如果我在开始动画之前移动视图以使其任何部分可见,则动画可以正常工作。

当视图远离父视图时,是什么阻止了视图的动画?

4

2 回答 2

3

我通过研究同样的问题了解到,Android 动画在为它们的开始或结束提供屏幕外坐标时表现不佳。

Android 论坛上有一些关于此错误已得到解决的对话,但我在 4.2 上仍然遇到问题。

编辑:

再想一想,我刚刚遇到了这个答案,如果您可以使用较新的 API ( ObjectAnimator),它提供了一个可行的替代方案。

View view = this;
ObjectAnimator anim = ObjectAnimator.ofFloat(view, "y", 0, 100);
anim.setDuration(super.animationDuration());
anim.start();

的属性在ObjectAnimator.ofFloat(view, "y", 0, 100);哪里

ObjectAnimator.ofFloat(Object objBeingAnimated, String propertyBeingAnimated, float startValue, float endValue)
于 2013-10-03T15:43:28.480 回答
0

我发现这个答案用于ValueAnimator修改MarginLayoutParams.topMargin(在我的情况下) in onAnimationUpdate(),这解决了这个问题。我的视图一开始就设置了边距,这样视图就离开了屏幕。

这种ObjectAnimator方法很有希望,但对我不起作用,它与我得到的屏幕外视图有相同的截止问题TranslateAnimation

于 2014-07-18T20:28:01.170 回答