java - 如何使用 ValueAnimator#ofFloat

标签 java android android-animation

我对 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/

相关文章:

android - 将 Activity 1 中的 View 转换/动画化为 Activity 2 中的 View

java - 如何优化动画?

java - ManyToMany HQL Join - 连接的预期路径

java - JTextField DocumentListener 异常变异错误

java - 如何在Android中获取 "onTouchEnd"事件?

java - 压缩/压缩android上的文件夹

android - Dropbox 同步 API。第一次没有在 Dropbox 上看到文件

java - 在 OS X 上调整 JPanel 的大小

java - 监听 JComboBoxes 和 JTextFields 来修改激活类突变器

Android - 为 ListView 中的单个项目设置动画