3

我创建了 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));

}
4

1 回答 1

2

我遇到了完全相同的问题,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) {}
});
于 2014-07-01T19:08:38.300 回答