package razerdp.demo.interpolator; import android.view.animation.LinearInterpolator; /** * Created by 大灯泡 on 2016/1/28. * The expression comes from web: * http://inloop.github.io/ */ public class AnticipateOverShootInterpolator extends LinearInterpolator { private float factor; public AnticipateOverShootInterpolator() { this.factor = (float) (2.0*1.5); } public AnticipateOverShootInterpolator(float factor) { this.factor = (float) (factor*1.5); } @Override public float getInterpolation(float input) { if (input < 0.5) return (float) (0.5 * a(input * 2.0, factor)); else return (float) (0.5 * (o(input * 2.0 - 2.0, input) + 2.0)); } private float a(double input,float factor){ return (float) (input * input * ((factor + 1) * input - factor)); } private float o(double input,float factor){ return (float) (input * input * ((factor + 1) * input + factor)); } }