自定义interpolator

这里给大家介绍一个关于差值器网站:

http://inloop.github.io/interpolator/

在这个网站上可以在线看每种 interpolator 的效果,从而选择所需要的 interpolator。这里我们选择 scaling,library 选择 spring。如下图:

自定义interpolator_第1张图片
image.png

然后重写 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的构造方法中我传的参数是弹性因子,它的值越大,它回弹效果越慢。让我们来看看效果吧!

你可能感兴趣的:(自定义interpolator)