我已经为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));
}
答案 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) {}
});