12

TranslateAnimation我的课上有一个。动画自动开始。

我设置按钮,如果它被点击,动画将被取消(animation.cancel();)。

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

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

我的应用程序依赖于用户必须在动画结束之前单击按钮。问题是animation.cancel();被承认为动画的结尾。

不计入动画结束的其他方式如何取消动画?那可能吗?

提前致谢!

4

2 回答 2

33

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

@Override
public void onAnimationCancel(Animator animation) {
  animation.removeAllListeners();
}
于 2016-02-10T10:13:21.403 回答
4

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

取消动画会调用动画侦听器(如果已设置)以通知动画结束。如果手动取消动画,则必须在再次启动动画之前调用 reset()。

如果你想在 cancel() 和 onAnimationEnd() 上有不同的行为,我会建议一个布尔变量,它可以在按钮单击时设置,onanimationend 检查它是否为真。

于 2013-03-03T19:07:10.660 回答