AnticipateInterpolator

AnticipateInterpolator的源码如下:

package android.view.animation;

public class AnticipateInterpolator extends BaseInterpolator {

    private final float mTension;

    public AnticipateInterpolator() {
        mTension = 2.0f;
    }

    public AnticipateInterpolator(float tension) {
        mTension = tension;
    }

    public float getInterpolation(float t) {
        return t * t * ((mTension + 1) * t - mTension);
    }
}

float getInterpolation(float input)的实现,可以知道,这个可以用数学函数表达为y=x^2*((a+1)*x-a),x∈[0,1],a∈[-∞,+∞],a是常数

Matlab的命令窗口中输入如下命令:

x = linspace(0,1,100);
y = x .* x .* (3 .* x - 2);
plot(x, y);
title('y=x^2*(3x-2)');
grid on

得到下面的曲线图:

改变上面的a,得到下面的曲线图:

从图中可以看出,当构造参数传入的等于0的时候,就是加速的,当参数大于0的时候,会就像射箭一样,先往后拉,然后再冲出去。