恒速的Android ObjectAnimator

Posted

技术标签:

【中文标题】恒速的Android ObjectAnimator【英文标题】:Android ObjectAnimator with constant speed 【发布时间】:2019-08-14 07:30:06 【问题描述】:

我使用 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();

【问题讨论】:

【参考方案1】:

查看Interpolator 类,ValueAnimator 的默认一个(ObjectAnimator 正在扩展它)是:

private static final TimeInterpolator sDefaultInterpolator =
        new AccelerateDecelerateInterpolator();

它将在“开始阶段”加速并在结束时减速。你想要线性插值:

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

但考虑用

替换AnimatorListener
animRotate.setRepeatMode(ValueAnimator.INFINITE);

还有setRepeatCount方法

【讨论】:

以上是关于恒速的Android ObjectAnimator的主要内容,如果未能解决你的问题,请参考以下文章

Android中属性动画2----ObjectAnimator监听的使用

ObjectAnimator 重复循环延迟

Android objectAnimator animate backgroundColor of Layout

java #android #objectAnimator

一起Talk Android吧(第四百八十九回:如何使用代码实现ObjectAnimator)

Android属动画ObjectAnimator和ValueAnimator应用