Android 值Animator在启动时复制值

Android 值Animator在启动时复制值,android,animation,Android,Animation,我正在使用ValueAnimator(从)为我的视图组中的视图设置动画 ValueAnimator anim = ValueAnimator.ofInt(mHandleRect.left, mDisplayRect.right - mHandleWidth); anim.setDuration(delta); anim.addUpdateListener(onAnimationUpdateListener); anim.addListener(onAnimat

我正在使用ValueAnimator(从)为我的视图组中的视图设置动画

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
这会导致可见动画的延迟和抖动开始

我已经尝试扩展了持续时间和值,但问题仍然存在


有没有人遇到过同样的问题,或者我需要吹毛求疵?

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

试试这个:

   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的值。真正的问题是这个动画师类产生的延迟。在动画真正开始之前,我有大约200-300毫秒的延迟。因为有多个0值。动画设置开始延迟(0);没有帮助。你找到原因了吗?我遇到了同样的问题。