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