如何取消动画,但不结束它?

问题描述 投票:0回答:3

我的班级有

TranslateAnimation
。动画自动开始。

我设置了按钮,如果单击该按钮,动画将被取消(

animation.cancel();
)。

我还为我的班级设置了一个AnimationListener。如果我的动画结束,我将开始一个新的活动(您进入菜单)。

public void onAnimationEnd(Animation animation) {
    startActivity(new Intent(Class.this, Class2.class));
}

我的应用程序依赖于用户必须在动画结束之前单击按钮。 问题是

animation.cancel();
被承认为动画的结尾。

如何用另一种不计为动画结束的方式取消动画?这可能吗?

提前致谢!

android android-animation translate-animation
3个回答
37
投票

取消动画后,您可以删除侦听器,从而防止调用

onAnimationEnd

@Override
public void onAnimationCancel(Animator animation) {
  animation.removeAllListeners();
}

4
投票

animation.cancel() 正在调用动画监听器,如 API 文档所述:

取消动画会调用动画监听器(如果设置) 通知动画结束。如果您手动取消动画, 您必须在再次开始动画之前调用reset()。

如果您希望在 cancel() 和 onAnimationEnd() 上有不同的行为,我建议使用一个布尔变量,可以在单击按钮时设置该变量,然后 onanimationend 检查它是否为 true。


0
投票

删除集合中动画师的监听器:

animatorSet.childAnimations.forEach { it.removeAllListeners() }
animatorSet.removeAllListeners()
animatorSet.cancel()
© www.soinside.com 2019 - 2024. All rights reserved.