我正在使用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
这会导致可见动画的延迟和抖动开始。
我试图扩展持续时间和值,问题仍然存在。
有任何人遇到同样的问题,还是我要挑选?
答案 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添加为延迟时间。这将使动画师立即开始制作动画。