【问题标题】:ValueAnimator duplicate Values when startingValueAnimator 启动时重复值
【发布时间】:2014-04-07 06:21:03
【问题描述】:

我正在使用 ValueAnimator(来自 NineOldAndroids)为我的 ViewGroup 中的视图设置动画。

ValueAnimator anim = ValueAnimator.ofInt(mHandleRect.left, mDisplayRect.right - mHandleWidth);
anim.setDuration(delta);
anim.addUpdateListener(onAnimationUpdateListener);                  
anim.addListener(onAnimationListener);
anim.start();

在本例中为 0 到 402,但我已尝试使用其他值。

然后我使用动画更新监听器中的值:

@Override
        public void onAnimationUpdate(ValueAnimator animation) {
            int val = (Integer) animation.getAnimatedValue();

            Log.d("Animation Animating", " Current Value " + val);
}

现在问题来了:

第一个值都是0,多次

04-06 22:24:40.128: D/Animation Animating(22500):  Current Value 0
04-06 22:24:40.128: D/Animation Animating(22500):  Current Value 0
04-06 22:24:40.313: D/Animation Animating(22500):  Current Value 0
04-06 22:24:40.313: D/Animation Animating(22500):  Current Value 0
04-06 22:24:40.323: D/Animation Animating(22500):  Current Value 0
04-06 22:24:40.338: D/Animation Animating(22500):  Current Value 4
04-06 22:24:40.418: D/Animation Animating(22500):  Current Value 66
04-06 22:24:40.448: D/Animation Animating(22500):  Current Value 104
04-06 22:24:40.463: D/Animation Animating(22500):  Current Value 128
04-06 22:24:40.478: D/Animation Animating(22500):  Current Value 152
04-06 22:24:40.493: D/Animation Animating(22500):  Current Value 175
04-06 22:24:40.513: D/Animation Animating(22500):  Current Value 201
04-06 22:24:40.533: D/Animation Animating(22500):  Current Value 232
04-06 22:24:40.548: D/Animation Animating(22500):  Current Value 255
04-06 22:24:40.563: D/Animation Animating(22500):  Current Value 280
04-06 22:24:40.603: D/Animation Animating(22500):  Current Value 335
04-06 22:24:40.628: D/Animation Animating(22500):  Current Value 360
04-06 22:24:40.653: D/Animation Animating(22500):  Current Value 378
04-06 22:24:40.668: D/Animation Animating(22500):  Current Value 389
04-06 22:24:40.698: D/Animation Animating(22500):  Current Value 400
04-06 22:24:40.713: D/Animation Animating(22500):  Current Value 402

这会导致可见动画的延迟和抖动开始。

我已经尝试扩大持续时间和数值,问题仍然存在。

有没有人有同样的问题,还是我来挑剔?

【问题讨论】:

  • 你找到原因了吗?我遇到了同样的问题。

标签: android animation


【解决方案1】:

我遇到了类似的问题,但在我的情况下,更新的值在起始值和结束值之间变化。

试试这个:

   int mPrevious = -1;
    @Override
            public void onAnimationUpdate(ValueAnimator animation) {
                int val = (Integer) animation.getAnimatedValue();
                if(val != mPrevious){
                Log.d("Animation Animating", " Current Value " + val);                    
                mPrevious = val;
                } 

    }

逻辑语句不应有任何性能或视觉冲击。

或者,您可以尝试添加 0 作为延迟时间。这将使动画师立即开始制作动画。

【讨论】:

  • 那不是问题。动画仅适用于大于 0 的值。真正的问题是这个 Animator 类产生的延迟。在动画真正开始之前我有大约 200-300 毫秒的延迟。因为有多个 0 值。 anim.setStartDelay(0);没有帮助。
猜你喜欢
  • 1970-01-01
  • 2017-03-18
  • 1970-01-01
  • 2015-04-07
  • 1970-01-01
  • 2015-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多