我的视图完全位于屏幕之外,我正在尝试将其设置为屏幕上的动画。
我打电话的时候:
view.startAnimation(tA);
没有任何反应,tA.initialize和tA.applyTransformation永远不会被调用。
如果在开始动画之前移动视图以使其中的任何部分都可见,则动画可以正常工作。
当视图位于父视图之外时,是什么阻止视图被设置动画?
答案 0 :(得分:1)
我的理解是,研究同样的问题,Android动画在开始或结束时提供屏幕外坐标时表现不佳。
Android论坛上有一些关于这个bug的对话已经解决,但我仍然遇到4.2问题。
修改强>
第二个想法,我刚刚遇到了这个answer,如果你可以使用更新的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)
答案 1 :(得分:0)
我发现this answer使用ValueAnimator
来修改MarginLayoutParams.topMargin
中的onAnimationUpdate()
(在我的情况下),这解决了问题。我的视图以其边距设置开始,以便视图不在屏幕上。
ObjectAnimator
方法很有前途,但对我不起作用,它与TranslateAnimation
的屏幕外视图有相同的截止问题。