这里给大家介绍一个关于差值器网站:
http://inloop.github.io/interpolator/
在这个网站上可以在线看每种 interpolator 的效果,从而选择所需要的 interpolator。这里我们选择 scaling,library 选择 spring。如下图:

然后重写 interpolator 类,代码如下:
public class SpringScaleInterpolator implements Interpolator {
//弹性因素
private float mFactor;
public SpringScaleInterpolator(float factor) {
mFactor = factor;
}
@Override
public float getInterpolation(float input) {
return (float) (Math.pow(2, -10 * input) * Math.sin((input - factor / 4) * (2 * Math.PI) / factor) + 1);
}
}
接下来就是把我们重写的差值器设置进去,看代码:
public void spring(View view){
ObjectAnimator animatorX = ObjectAnimator.ofFloat(iv, "scaleX",1.0f, 1.8f);
ObjectAnimator animatorY = ObjectAnimator.ofFloat(iv, "scaleY",1.0f, 1.8f);
AnimatorSet set = new AnimatorSet();
set.setDuration(1000);
set.setInterpolator(new SpringScaleInterpolator((float) 0.4));
set.playTogether(animatorX, animatorY);
set.start();
}
实现类SpringScaleInterpolator的构造方法中我传的参数是弹性因子,它的值越大,它回弹效果越慢。让我们来看看效果吧!
网友评论