ValueAnimator重复启动时的值

时间:2014-04-06 20:35:22

标签: android animation

我正在使用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

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

我试图扩展持续时间和值,问题仍然存在。

有任何人遇到同样的问题,还是我要挑选?

1 个答案:

答案 0 :(得分:0)

我遇到了类似的问题,但就我而言,更新后的值在起始值和结束值之间有所不同。

试试这个:

   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添加为延迟时间。这将使动画师立即开始制作动画。