Interpolator 被用来修饰动画效果,定义动画的变化率,可以使存在的动画效果accelerated(加速),decelerated(减速), repeated(重复), bounced(弹跳)等。
AccelerateDecelerateInterpolator 在动画开始与结束的地方速率改变比较慢,在中间的时候加速
AccelerateInterpolator 在动画开始的地方速率改变比较慢,然后开始加速
AnticipateInterpolator 开始的时候向后然后向前甩
AnticipateOvershootInterpolator 开始的时候向后然后向前甩一定值后返回最后的值
BounceInterpolator 动画结束的时候弹起
CycleInterpolator 动画循环播放特定的次数,速率改变沿着正弦曲线
DecelerateInterpolator 在动画开始的地方快然后慢
LinearInterpolator 以常量速率改变
OvershootInterpolator 向前甩一定值后再回到原来位置
如果SDK定义的interpolators不符合你的效果也可以自定义Interpolators。
一个小例子,如下:
AnimatorSet animatorSet = new AnimatorSet();//组合动画
ObjectAnimator animX = ObjectAnimator.ofFloat(mLogoIv, "scaleX", 0.6f, 1.4f, 0.6f, 1.2f, 0.6f, 1.0f);
ObjectAnimator animY = ObjectAnimator.ofFloat(mLogoIv, "scaleY", 0.6f, 1.4f, 0.6f, 1.2f, 0.6f, 1.0f);
animatorSet.play(animX).with(animY);
animatorSet.setDuration(2000);
animatorSet.setInterpolator(new AccelerateDecelerateInterpolator());
animatorSet.start();