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

时间:2013-03-03 18:59:06

标签: android android-animation translate-animation

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

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

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

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

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

如何以不计入动画结尾的其他方式取消动画?这可能吗?

提前致谢!

2 个答案:

答案 0 :(得分:23)

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

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

答案 1 :(得分:3)

animation.cancel()将动画侦听器调用为API documentation describes

  

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

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