【问题标题】:Cancel animation, stop applyTransformation running取消动画,停止 applyTransformation 运行
【发布时间】:2013-07-16 12:53:36
【问题描述】:

我创建了 Animation 类的扩展,以创建背景淡出动画。我在按下 ListView 行项目后开始动画。如果我一个接一个地按下,我想取消第一个动画并开始第二个。但是我遇到的一个错误是,当我一排又一排快速按下时,动画不会停止。调试后我注意到applyTransformation 方法在第一个动画中一直运行。我决定重写取消功能,但如何停止转换?

public BackgroundAnimation(View view, int color){
    this.view = view;
    setDuration(4000L);

    red = Color.red(color);
    blue = Color.blue(color);
    green = Color.green(color);
}
@Override
public void applyTransformation(float interpolatedTime,Transformation t){
    //super.applyTransformation(interpolatedTime, t);

    view.setBackgroundColor(Color.argb((int) ((1 - interpolatedTime) * 255), red, green, blue));

}

【问题讨论】:

  • 你试过 clearAnimation() 吗?
  • 应该可以,为什么你认为不行?
  • 不知道,我以为我已经实现了我的自定义动画类,而不是应该的。还是不完全!?
  • 所以 interpolatedTime 总是 0 -> 1?
  • 如果我运行取消方法,该方法将继续以 interpolatedTime 0 运行。如果我调用 clearAnimation 比是它从 0 -> 1 运行。

标签: android android-animation


【解决方案1】:

我遇到了完全相同的问题,interpolatedTime 会运行 0 -> 1,然后无限重复 0。我的解决方案是 clearAnimationAnimationListener 中。看起来你不应该这样做,但是哦。

animation.setAnimationListener(new Animation.AnimationListener() {
    @Override
    public void onAnimationStart(Animation animation) {}

    @Override
    public void onAnimationEnd(Animation animation) {
        animationTarget.clearAnimation();
    }

    @Override
    public void onAnimationRepeat(Animation animation) {}
});

【讨论】:

  • 我正在使用相同的解决方案,但在我们已经定义了持续时间并且可能将重复设置为 0 之后,我们必须手动取消它,这对我来说似乎很荒谬。
猜你喜欢
  • 1970-01-01
  • 2021-04-22
  • 1970-01-01
  • 1970-01-01
  • 2022-10-06
  • 1970-01-01
  • 2014-05-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多