FileDocCategorySizeDatePackage
AnticipateOvershootInterpolator.javaAPI DocAndroid 5.1 API4291Thu Mar 12 22:22:10 GMT 2015android.view.animation

AnticipateOvershootInterpolator

public class AnticipateOvershootInterpolator extends BaseInterpolator implements com.android.internal.view.animation.NativeInterpolatorFactory
An interpolator where the change starts backward then flings forward and overshoots the target value and finally goes back to the final value.

Fields Summary
private final float
mTension
Constructors Summary
public AnticipateOvershootInterpolator()

        mTension = 2.0f * 1.5f;
    
public AnticipateOvershootInterpolator(float tension)

param
tension Amount of anticipation/overshoot. When tension equals 0.0f, there is no anticipation/overshoot and the interpolator becomes a simple acceleration/deceleration interpolator.

        mTension = tension * 1.5f;
    
public AnticipateOvershootInterpolator(float tension, float extraTension)

param
tension Amount of anticipation/overshoot. When tension equals 0.0f, there is no anticipation/overshoot and the interpolator becomes a simple acceleration/deceleration interpolator.
param
extraTension Amount by which to multiply the tension. For instance, to get the same overshoot as an OvershootInterpolator with a tension of 2.0f, you would use an extraTension of 1.5f.

        mTension = tension * extraTension;
    
public AnticipateOvershootInterpolator(android.content.Context context, android.util.AttributeSet attrs)

        this(context.getResources(), context.getTheme(), attrs);
    
public AnticipateOvershootInterpolator(android.content.res.Resources res, android.content.res.Resources.Theme theme, android.util.AttributeSet attrs)

hide

        TypedArray a;
        if (theme != null) {
            a = theme.obtainStyledAttributes(attrs, AnticipateOvershootInterpolator, 0, 0);
        } else {
            a = res.obtainAttributes(attrs, AnticipateOvershootInterpolator);
        }

        mTension = a.getFloat(AnticipateOvershootInterpolator_tension, 2.0f) *
                a.getFloat(AnticipateOvershootInterpolator_extraTension, 1.5f);
        setChangingConfiguration(a.getChangingConfigurations());
        a.recycle();
    
Methods Summary
private static floata(float t, float s)

        return t * t * ((s + 1) * t - s);
    
public longcreateNativeInterpolator()

hide

        return NativeInterpolatorFactoryHelper.createAnticipateOvershootInterpolator(mTension);
    
public floatgetInterpolation(float t)

        // a(t, s) = t * t * ((s + 1) * t - s)
        // o(t, s) = t * t * ((s + 1) * t + s)
        // f(t) = 0.5 * a(t * 2, tension * extraTension), when t < 0.5
        // f(t) = 0.5 * (o(t * 2 - 2, tension * extraTension) + 2), when t <= 1.0
        if (t < 0.5f) return 0.5f * a(t * 2.0f, mTension);
        else return 0.5f * (o(t * 2.0f - 2.0f, mTension) + 2.0f);
    
private static floato(float t, float s)

        return t * t * ((s + 1) * t + s);