Android 具有恒定速度的 ObjectAnimator

Android ObjectAnimator with constant speed

我使用 ObjectAnimator 将视图从 0 度旋转到 360 度。但是旋转的速度不是恒定的。我需要一个恒定的速度,因为动画应该重复几次。速度的任何加速都会扰乱动画的一致性。这是我的代码:

ObjectAnimator animRotate = ObjectAnimator.ofFloat(ivLoader,"rotation", 0,360);
animRotate.addListener(new Animator.AnimatorListener() {
        @Override
        public void onAnimationEnd(Animator animation) {
            animRotate.start();
        }
});
animRotate.start();

查看 Interpolator class,ValueAnimator 的默认值(ObjectAnimator 正在扩展它)是:

private static final TimeInterpolator sDefaultInterpolator =
        new AccelerateDecelerateInterpolator();

它会在"starting phase"期间加速并在结束时减速。你想要线性插值所以:

ObjectAnimator animRotate = ...
animRotate.setInterpolator(new LinearInterpolator());
animRotate.addListener(... // rest of code

但考虑将 AnimatorListener 替换为

animRotate.setRepeatMode(ValueAnimator.INFINITE);

还有setRepeatCount方法