恒速的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监听的使用
Android objectAnimator animate backgroundColor of Layout