取消动画,停止applyTransformation运行

时间:2013-07-17 19:39:41

标签: android android-animation

我已经为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));

}

1 个答案:

答案 0 :(得分:2)

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

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) {}
});