ValueAnimator启动时重复的值启动时、ValueAnimator

2023-09-06 08:39:35 作者:烈焰地狱

林使用ValueAnimator(从 NineOldAndroids )动画在我的ViewGroup视图。

Im Using a ValueAnimator (from NineOldAndroids) to animate a View in my ViewGroup.

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

在这种情况下,从0到402,但我已经与其他值尝试过。

In this case from 0 to 402, but i have tried it with other values.

然后我使用的是价值观的动画更新监听器:

Then i'm using the Values in the Animation Update Listener:

@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

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

This results in a delayed and juddery start of the visible Animation.

我曾尝试扩大时间和价值观,问题依然存在。

I have tried to expand the duration and the values, the problem still exists.

任何人有同样的问题,还是我吹毛求疵?

Have anyone the same problem, or am i to nit-pick?

推荐答案

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

I've run into similar issue, but in my case the updated value was varying between the start value and end value.

试试这个:

   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;
                } 

    }

逻辑语句不应该有任何的性能或视觉命中。

Logic statement should not have any performance or visual hits.

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

Alternatively you could try to add 0 as delayed time. That will make the animator start animating immediately.