我的班级有
TranslateAnimation
。动画自动开始。
我设置了按钮,如果单击该按钮,动画将被取消(
animation.cancel();
)。
我还为我的班级设置了一个AnimationListener。如果我的动画结束,我将开始一个新的活动(您进入菜单)。
public void onAnimationEnd(Animation animation) {
startActivity(new Intent(Class.this, Class2.class));
}
我的应用程序依赖于用户必须在动画结束之前单击按钮。 问题是
animation.cancel();
被承认为动画的结尾。
如何用另一种不计为动画结束的方式取消动画?这可能吗?
提前致谢!
取消动画后,您可以删除侦听器,从而防止调用
onAnimationEnd
:
@Override
public void onAnimationCancel(Animator animation) {
animation.removeAllListeners();
}
animation.cancel() 正在调用动画监听器,如 API 文档所述:
取消动画会调用动画监听器(如果设置) 通知动画结束。如果您手动取消动画, 您必须在再次开始动画之前调用reset()。
如果您希望在 cancel() 和 onAnimationEnd() 上有不同的行为,我建议使用一个布尔变量,可以在单击按钮时设置该变量,然后 onanimationend 检查它是否为 true。
删除集合中动画师的监听器:
animatorSet.childAnimations.forEach { it.removeAllListeners() }
animatorSet.removeAllListeners()
animatorSet.cancel()