如何使用ValueAnimator #ofFloat

时间:2014-11-12 03:32:56

标签: java android android-animation

我对ValueAnimator在Android中如何运作感到困惑。这是一段代码片段(伪):

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

有人可以向我解释为什么我的更新功能会获得这些奇怪的值吗?

1 个答案:

答案 0 :(得分:5)

为什么不使用getAnimatedValue?它恰好是在财产变化时计算出的价值,它不是一个分数:

animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
    public void onAnimationUpdate(ValueAnimator animation) {
        Float value = (Float) animation.getAnimatedValue();
        Log("update", String.valueOf(value));
    }
});