Android:如何停止在 ImageView 上应用的无限动画?
Posted
技术标签:
【中文标题】Android:如何停止在 ImageView 上应用的无限动画?【英文标题】:Android: How can I stop an infinite animation applied on an ImageView? 【发布时间】:2011-04-24 05:55:33 【问题描述】:我有一个 ImageView,我在其上应用了旋转动画。由于我希望轮换连续进行,因此我在我的 rotate.xml 中将 repeatCount 设为无限:
android:repeatCount="infinite"
在 onCreate() 中,我加载动画并启动它。
Animation myAnim = AnimationUtils.loadAnimation(this, R.anim.rotate);
objectImg.startAnimation(myAnim);
按下按钮时,旋转必须停止。因此,在我的 onClick() 中,我调用了 clearAnimation()。
objectImg.startAnimation(myAnim);
我的简单问题是停止动画是否正确。 我假设 clearAnimation() 对应于 loadAnimation(),但没有 stopAnimation() 对应于 startAnimation()。
【问题讨论】:
【参考方案1】:使用clearAnimation()
停止动画。 View
上没有 loadAnimation()
。
【讨论】:
好的,谢谢。所以只有 startAnimation() 和 clearAnimation() 适用于视图。 clearAnimation() 对我不起作用, setAnimation(null) 对我有用 嗨@CommonsWare,你能告诉我如何停止动画 onClick 视图本身,它是动画但不是单独的按钮?img.clearAnimation()
是最好的解决方案 - img.setAnimation(null)
也可以,但不太优雅 - img.startAnimation(null)
导致崩溃
我在放大/缩小的 imageView 上有一个无限动画。当我在单击视图后试图停止动画时, anim.cancel() 和 img.clearAnimation() 都不适合我。最后 img.setAnimation(null) 为我工作。【参考方案2】:
您也可以致电anim.cancel();
,但您也应该在此之后立即致电anim.reset();
。
然后当你想重新启动它时,只需在视图上调用startAnimation
。
【讨论】:
animation.cancel();需要 API 8 级,要在 API 7 及以上停止动画,唯一的选项是 view.clearAnimation();cancel()
只会将整个动画重置为初始状态。但是如何保持上次停止的状态呢?
需要同时调用 anim.cancel() 和 anim.reset() 的证明。 developer.android.com/reference/android/view/animation/…【参考方案3】:
只需添加以下两行。
anim?.cancelAnimation()
anim?.progress = 0f
【讨论】:
以上是关于Android:如何停止在 ImageView 上应用的无限动画?的主要内容,如果未能解决你的问题,请参考以下文章
如何在android中根据上面的imageview对齐textview