如何在 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();
}