AccelerateDecelerateInterpolator

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的增大,斜率先增大后减小。