Java Android:cancel()对动画无效
我一直在做一个小游戏,我需要一个进度条动画,当我第一次触摸按钮时开始,如果我在动画结束前再次触摸按钮,进度条需要重置 在我的代码Java Android:cancel()对动画无效,java,android,animation,cancellation,objectanimator,Java,Android,Animation,Cancellation,Objectanimator,我一直在做一个小游戏,我需要一个进度条动画,当我第一次触摸按钮时开始,如果我在动画结束前再次触摸按钮,进度条需要重置 在我的代码animation.start()中运行良好,但动画.cancel()似乎不起作用 包含无效行的我的活动代码: public class MainActivity extends Activity { Button b_bleu; PrgressBar bar1; @Override public void onWindowFocu
animation.start()中代码>运行良好,但动画.cancel()
似乎不起作用
包含无效行的我的活动代码:
public class MainActivity extends Activity {
Button b_bleu;
PrgressBar bar1;
@Override
public void onWindowFocusChanged(boolean hasFocus) {
b_bleu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ObjectAnimator animation = ObjectAnimator.ofInt(bar1, "progress", 100, 0);
animation.setDuration(5000);
animation.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animator) {
}
@Override
public void onAnimationEnd(Animator animator) {
//application se termine
}
@Override
public void onAnimationCancel(Animator animator) {
}
@Override
public void onAnimationRepeat(Animator animator) {
}
});
animation.cancel();
animation.start();
}
});
}
我认为问题在于animation.cancel()
没有效果,因为您调用了animation.start()代码>就在它后面
试着这样做:
声明一个字段:
private boolean mStarted = false;
然后在动画回调中设置它并检查其值:
animation.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
mHasStarted = true;
}
@Override
public void onAnimationEnd(Animator animation) {
mHasStarted = false; // reset the field value so that it can be started again onClick once it has ened
}
@Override
public void onAnimationCancel(Animator animation) {
mHasStarted = false;
}
});
if (mStarted) {
animation.cancel();
} else {
animation.start();
}
希望这有帮助 你能详细说明一下“似乎不起作用”吗?你预计会发生什么?实际发生了什么?谢谢你的回答,但我找到了一个动画解决方案。setAutoCancel(false):)如果有人想要代码,请问我;)