【问题标题】:Android Property Animation not stoppingAndroid 属性动画没有停止
【发布时间】:2018-10-09 10:17:29
【问题描述】:

我正在尝试为 android 中的 CardView 动态创建闪烁效果。这是我用于创建动画师的代码

stove1Animator = ObjectAnimator.ofInt(stove1CardView, "backgroundColor", Color.WHITE, Color.YELLOW,
            Color.WHITE);
stove1Animator.setDuration(1500);
stove1Animator.setEvaluator(new ArgbEvaluator());
stove1Animator.setRepeatMode(ValueAnimator.REVERSE);
stove1Animator.setRepeatCount(Animation.INFINITE);

当我需要时,我会用 start() 调用开始动画。我在停止闪烁效果时遇到问题。动画监听器没有被调用,所以我试图改变 postHandler() 中的颜色。这是取消动画并设置它不起作用的背景颜色的代码。

if (stove1Animator.isRunning()) {
     stove1Animator.cancel();
     new Handler().postDelayed(new Runnable() {
          @Override
          public void run() {

             setColor("S1",helper.getStringValueForPref("S1_COLOR"));
                    }
                }, 2000);
            }

【问题讨论】:

  • 这个问题有什么问题?我希望我已经解释清楚了

标签: java android animation


【解决方案1】:

用它来清除动画

stove1Animator.clearAnimation()

解决方案 2:

if (stove1Animator.isRunning()) {

     new Handler().postDelayed(new Runnable() {
          @Override
          public void run() {

             setColor("S1",helper.getStringValueForPref("S1_COLOR"));
             stove1Animator.removeAllListeners();
             stove1Animator.end();
             stove1Animator.cancel();
                    }
                }, 2000);
            }

【讨论】:

  • stove1Animator 是 ObjectAnimator 它不是视图。它没有 clearAnimation() 方法。顺便说一句,如果我们使用 startAnimation clearAnimation 来启动动画就可以了。谢谢
  • @athersajjad 请发布更多代码以更好地理解..您如何将 ObjectAnimator 设置到您的视图中
  • stove1Animator = ObjectAnimator.ofInt(stove1CardView, "backgroundColor", Color.WHITE, Color.YELLOW, Color.WHITE);我在创建火炉1Animator 时传递了火炉1CardView 参考。这就是我在代码中设置它的方式
  • @athersajjad 知道了.. 看看这个programcreek.com/java-api-examples/…
猜你喜欢
  • 2023-04-06
  • 2013-08-30
  • 2015-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多