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的时候,会就像射箭一样,先往后拉,然后再冲出去。