這里給大家介紹一個(gè)關(guān)于差值器網(wǎng)站:
http://inloop.github.io/interpolator/
在這個(gè)網(wǎng)站上可以在線看每種 interpolator 的效果,從而選擇所需要的 interpolator彩扔。這里我們選擇 scaling,library 選擇 spring。如下圖:
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);
}
}
接下來就是把我們重寫的差值器設(shè)置進(jìn)去,看代碼:
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();
}
實(shí)現(xiàn)類SpringScaleInterpolator的構(gòu)造方法中我傳的參數(shù)是彈性因子须板,它的值越大,它回彈效果越慢习瑰。讓我們來看看效果吧!