如何在 android 中停止 ObjectAnimator?
How to stop ObjectAnimator in android?
我正在使用对象动画师为我的按钮创建闪烁效果。一切正常。除了我无法停止动画。这是一个错误还是我错过了什么。我有以下方法。
public void manageBlinkEffect(View view){
objectAnimator = ObjectAnimator.ofInt(view, "backgroundColor", Color.GRAY, Color.YELLOW);
objectAnimator.setDuration(1000);
objectAnimator.setEvaluator(new ArgbEvaluator());
objectAnimator.setRepeatMode(ValueAnimator.REVERSE);
objectAnimator.setRepeatCount(ValueAnimator.INFINITE);
objectAnimator.start();
}
public void stopBlinkEffect(View view){
objectAnimator = ObjectAnimator.ofInt(view, "backgroundColor", Color.GRAY, Color.YELLOW);
objectAnimator.cancel();
}
您正在创建 ObjectAnimator
的新 object
来停止由不同 ObjectAnimator
启动的动画。
应该是这样的
ObjectAnimator objectAnimator;
public void manageBlinkEffect(View view){
objectAnimator = ObjectAnimator.ofInt(view, "backgroundColor", Color.GRAY, Color.YELLOW)
objectAnimator.setDuration(1000);
objectAnimator.setEvaluator(new ArgbEvaluator());
objectAnimator.setRepeatMode(ValueAnimator.REVERSE);
objectAnimator.setRepeatCount(ValueAnimator.INFINITE);
objectAnimator.start();
}
public void stopBlinkEffect(View view){
objectAnimator.cancel();
}
请查看源代码,ObjectAnimator.ofInt(view, "backgroundColor", Color.GRAY, Color.YELLOW);
return每次都会新建对象
你应该:
public void manageBlinkEffect(View view){
objectAnimator = ObjectAnimator.ofInt(view, "backgroundColor",
Color.GRAY, Color.YELLOW);
objectAnimator.setDuration(1000);
objectAnimator.setEvaluator(new ArgbEvaluator());
objectAnimator.setRepeatMode(ValueAnimator.REVERSE);
objectAnimator.setRepeatCount(ValueAnimator.INFINITE);
objectAnimator.start();
}
public void stopBlinkEffect(View view){
objectAnimator.cancel();
}
我正在使用对象动画师为我的按钮创建闪烁效果。一切正常。除了我无法停止动画。这是一个错误还是我错过了什么。我有以下方法。
public void manageBlinkEffect(View view){
objectAnimator = ObjectAnimator.ofInt(view, "backgroundColor", Color.GRAY, Color.YELLOW);
objectAnimator.setDuration(1000);
objectAnimator.setEvaluator(new ArgbEvaluator());
objectAnimator.setRepeatMode(ValueAnimator.REVERSE);
objectAnimator.setRepeatCount(ValueAnimator.INFINITE);
objectAnimator.start();
}
public void stopBlinkEffect(View view){
objectAnimator = ObjectAnimator.ofInt(view, "backgroundColor", Color.GRAY, Color.YELLOW);
objectAnimator.cancel();
}
您正在创建 ObjectAnimator
的新 object
来停止由不同 ObjectAnimator
启动的动画。
应该是这样的
ObjectAnimator objectAnimator;
public void manageBlinkEffect(View view){
objectAnimator = ObjectAnimator.ofInt(view, "backgroundColor", Color.GRAY, Color.YELLOW)
objectAnimator.setDuration(1000);
objectAnimator.setEvaluator(new ArgbEvaluator());
objectAnimator.setRepeatMode(ValueAnimator.REVERSE);
objectAnimator.setRepeatCount(ValueAnimator.INFINITE);
objectAnimator.start();
}
public void stopBlinkEffect(View view){
objectAnimator.cancel();
}
请查看源代码,ObjectAnimator.ofInt(view, "backgroundColor", Color.GRAY, Color.YELLOW);
return每次都会新建对象
你应该:
public void manageBlinkEffect(View view){
objectAnimator = ObjectAnimator.ofInt(view, "backgroundColor",
Color.GRAY, Color.YELLOW);
objectAnimator.setDuration(1000);
objectAnimator.setEvaluator(new ArgbEvaluator());
objectAnimator.setRepeatMode(ValueAnimator.REVERSE);
objectAnimator.setRepeatCount(ValueAnimator.INFINITE);
objectAnimator.start();
}
public void stopBlinkEffect(View view){
objectAnimator.cancel();
}