我对 ValueAnimator 在 Android 中的工作方式感到很困惑。这是一个代码 fragment (伪):
Log("animating: ", start, end);
ValueAnimator animator = ValueAnimator.ofFloat(start, end);
animator.setUpdateListener(() -> {
Log("update", animation.getAnimatedFraction());
});
animator.start();
我在日志中看到以下内容:
animating: 0.0 to 1.0
update: 0.0
update: 0.05
..
update: 1.0
animating: 1.0 to 0.0
update: 0.0 (wtf)
update: 0.05
..
update: 1.0
animating: 0.5 to 1.0
update: 1.0 (wtf)
update: 1.0
有人可以向我解释为什么我的更新函数会得到这些奇怪的值吗?
最佳答案
你为什么不使用 getAnimatedValue
?它正是在属性更改时计算的值,而不是分数:
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
public void onAnimationUpdate(ValueAnimator animation) {
Float value = (Float) animation.getAnimatedValue();
Log("update", String.valueOf(value));
}
});
关于java - 如何使用 ValueAnimator#ofFloat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26878794/