我用的是ValueAnimator的浮点值。

ValueAnimator anim = ValueAnimator.ofFloat(-1, 1);
anim.addUpdateListener(new AnimatorUpdateListener() {
        @Override
        public void onAnimationUpdate(ValueAnimator animation) {
            float f = (float) animation.getAnimatedValue();
        }
    });

这里是问题-内存分配跟踪程序检测到在每次调用getAnimatedValue()时都会创建一个新的Float对象。我在ValueAnimator重复模式下使用INFINITE,不断地创建新对象是个问题。有什么方法可以防止一直创建新对象吗?
注:我知道这种内存泄漏一点也不重要,只是对优化感兴趣。

最佳答案

有一种方法可以防止每次调用Float方法时创建新的onAnimationUpdate()对象。在我看来是:

@Override
public void onAnimationUpdate(ValueAnimator animation) {
    float t = 2f * animation.getAnimatedFraction() - 1f;
}

10-08 06:13