package com.example.ipcplayer.widget; import android.view.animation.Interpolator; /** * An interpolator where the rate of change starts out quickly and * and then decelerates. * */ public class ElasticInterpolator implements Interpolator { private final float mTension; /** * Constructor * * @param factor Degree to which the animation should be eased. Seting factor to 1.0f produces * an upside-down y=x^2 parabola. Increasing factor above 1.0f makes exaggerates the * ease-out effect (i.e., it starts even faster and ends evens slower) */ public ElasticInterpolator(float tension) { mTension = tension; } public float getInterpolation(float t) { // _o(t) = t * t * ((tension + 1) * t + tension) // o(t) = _o(t - 1) + 1 t -= 1.0f; return t * t * t * t * ((mTension + 1) * t + mTension) + 1.0f; } }