我有一个完全位于屏幕外的视图,我正在尝试将其动画到屏幕上。
当我打电话时:
view.startAnimation(tA);
没有任何反应, tA.initialize 和 tA.applyTransformation 永远不会被调用。
如果我在开始动画之前移动视图以使其任何部分可见,则动画可以正常工作。
当视图远离父视图时,是什么阻止了视图的动画?
我有一个完全位于屏幕外的视图,我正在尝试将其动画到屏幕上。
当我打电话时:
view.startAnimation(tA);
没有任何反应, tA.initialize 和 tA.applyTransformation 永远不会被调用。
如果我在开始动画之前移动视图以使其任何部分可见,则动画可以正常工作。
当视图远离父视图时,是什么阻止了视图的动画?
我通过研究同样的问题了解到,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)
我发现这个答案用于ValueAnimator
修改MarginLayoutParams.topMargin
(在我的情况下) in onAnimationUpdate()
,这解决了这个问题。我的视图一开始就设置了边距,这样视图就离开了屏幕。
这种ObjectAnimator
方法很有希望,但对我不起作用,它与我得到的屏幕外视图有相同的截止问题TranslateAnimation
。