AccelerateDecelerateInterpolator
的源码如下:
package android.view.animation;
public class AccelerateDecelerateInterpolator extends BaseInterpolator {
public AccelerateDecelerateInterpolator() { }
public float getInterpolation(float input) {
return (float)(Math.cos((input + 1) * Math.PI) / 2.0f) + 0.5f;
}
}
从float getInterpolation(float input)
的实现,可以知道,这个可以用数学函数表达为y=(cos((x+1)π)+1)/2,x∈[0,1]
在Matlab的命令窗口中输入如下命令:
x = linspace(0,1,100);
y = (1/2)*cos(pi*(x+1)) + (1/2);
plot(x,y);
title('y=(cos((x+1)π)+1)/2');
得到下面的曲线图:
从上面的函数图可以看出,随着x的增大,斜率先增大后减小。