package com.android.launcher3; import android.animation.TimeInterpolator; public class LogAccelerateInterpolator implements TimeInterpolator { int mBase; int mDrift; final float mLogScale; public LogAccelerateInterpolator(int base, int drift) { mBase = base; mDrift = drift; mLogScale = 1f / computeLog(1, mBase, mDrift); } static float computeLog(float t, int base, int drift) { return (float) -Math.pow(base, -t) + 1 + (drift * t); } @Override public float getInterpolation(float t) { return 1 - computeLog(1 - t, mBase, mDrift) * mLogScale; } }