android 属性动画 执行动画过程,初始ofInt(100, 200)动态setIntValues改成了ofInt(0, 400)的起始值,但需要不间断继续动画,此时继续动画,如何根据改变后的起始值计算正确的fraction,通知到ValueAnimator,来实现平滑过渡
时间: 2024-06-04 11:12:48 浏览: 104
可以使用ValueAnimator的setCurrentFraction()方法来实现平滑过渡。在改变起始值后,我们需要记录当前动画执行的时间,然后计算出新的fraction值,最后调用setCurrentFraction()方法通知ValueAnimator即可。
具体实现如下:
1.记录当前动画执行的时间
long playTime = animator.getCurrentPlayTime();
2.计算新的fraction值
float fraction = (playTime / (float) animator.getDuration());
3.调用setCurrentFraction()方法通知ValueAnimator
animator.setCurrentFraction(fraction);
注意:在调用setCurrentFraction()方法时,需要保证动画已经开始执行,否则会抛出异常。
阅读全文