Android 在使用动画师对视图的某些属性设置动画后,如何将视图重置为原始状态?

Android 在使用动画师对视图的某些属性设置动画后,如何将视图重置为原始状态?,android,animation,objectanimator,viewpropertyanimator,Android,Animation,Objectanimator,Viewpropertyanimator,我正在使用动画师(ObjectAnimator)为视图的几个属性设置动画(缩放、旋转) 当ObjectAnimators设置为目标视图时,目标视图的动画设置正确 但是还有一个额外的要求,那就是在一段时间后查看原始位置(重置) 我试图取消() 可能的解决方案:创建另一个与初始动画师正好相反的动画师 是否有其他方法重置它?您的意思是停止正在运行的动画?如果是,请调用clearAnimation()从调用startAnimation()的视图中删除动画 如果您的意思是在动画结束后将视图重置为其原始外观

我正在使用动画师(ObjectAnimator)为视图的几个属性设置动画(缩放、旋转)

当ObjectAnimators设置为目标视图时,目标视图的动画设置正确

但是还有一个额外的要求,那就是在一段时间后查看原始位置(重置)

我试图取消()

可能的解决方案:创建另一个与初始动画师正好相反的动画师


是否有其他方法重置它?

您的意思是停止正在运行的动画?如果是,请调用
clearAnimation()
从调用
startAnimation()的视图中删除动画

如果您的意思是在动画结束后将视图重置为其原始外观,请始终
setFillAfter(false)到动画。

我遇到了同样的问题,因为我使用
ViewPropertyAnimator
addView()
removeView()
一次又一次地为视图设置动画,以避免创建新视图,但是视图可以显示一次,当您删除视图时,您再次调用
addView()
,这是不显示的,但是您可以看到属性可见性是可见的,并且也可以调用
animationListener
。这很奇怪。

查看我提出的解决方案,因为我在回收器视图中的动画内部视图存在类似问题,所以我必须找到一种方法来重置它们:


好消息是,在安卓系统中,这些将得到更好的支持

我的观点也有同样的问题。所以我用这个技巧解决了这个问题。 所以我们假设我们有一个视图,在点击它之后应用动画


          viewLayout.arrow_back.setOnClickListener {arrow ->
            arrow.animate().rotationXBy(50F) // this is a just simple anim not so usefull
                .start()
            arrow.isEnabled = false
        }


我希望它能帮助别人。

是否需要在同一动画中重置它?像fadein fadeout?我已经设定了持续时间。一旦完成,我想将其重置为其原始未激活状态,就像动画之前一样。我需要与视图动画相同的实现,当我们启用fillEnabled=false时CycleInterpolator@pskinkCycleInterpolator将在我的情况下工作,我需要通过周期和持续时间调整进行一些更改。谢谢。这就是我建议使用自定义插值器的原因……我的意思是将视图重置为非动画位置,就像应用动画之前一样。clearAnimation()不起作用。此外,它是属性动画,而不是通常的视图动画。这是重置动画的正确解决方案<代码>setFillAfter(false)完美地完成了这个技巧。