[Android动画]插值器的理解

2020-04-13  本文已影响0人  qiHuang112

先说结论

插值器核心函数为getInterpolation方法,此方法可转化为一个函数图像,斜率表示方向,大小表示速度,速度对时间的积分表示位移

证明

1.LinearInterpolator

public float getInterpolation(float input) {
    return input;
}

画出图像:

实际效果

LinearInterpolator.gif

2.AccelerateDecelerateInterpolator

public float getInterpolation(float input) {
    return (float)(Math.cos((input + 1) * Math.PI) / 2.0f) + 0.5f;
}

画出图像:

实际效果

AccelerateDecelerateInterpolator.gif

3.CycleInterpolator

public float getInterpolation(float input) {
    return (float)(Math.sin(2 * mCycles * Math.PI * input));
}

画出图像:

实际效果

CycleInterpolator.gif

4.OvershootInterpolator

public float getInterpolation(float t) {
    // _o(t) = t * t * ((tension + 1) * t + tension)
    // o(t) = _o(t - 1) + 1
    t -= 1.0f;
    return t * t * ((mTension + 1) * t + mTension) + 1.0f;
}

画出图像:

实际效果

OvershootInterpolator.gif

总结

相信图像画出来之后,聪明的你已经看出了其中的规律,接下来就可以按照自己的想法设计插值器了,快去实现自己的动画效果吧-!

上一篇下一篇

猜你喜欢

热点阅读