1d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout/* 2d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout * Copyright (C) 2014 The Android Open Source Project 3d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout * 4d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 5d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout * in compliance with the License. You may obtain a copy of the License at 6d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout * 7d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout * http://www.apache.org/licenses/LICENSE-2.0 8d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout * 9d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout * Unless required by applicable law or agreed to in writing, software distributed under the License 10d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 11d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout * or implied. See the License for the specific language governing permissions and limitations under 12d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout * the License. 13d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout */ 14d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stoutpackage android.support.v17.leanback.animation; 15d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout 168e10080c914d1ad0784394fa3026b85535535847Aurimas Liutikasimport static android.support.annotation.RestrictTo.Scope.LIBRARY_GROUP; 178e10080c914d1ad0784394fa3026b85535535847Aurimas Liutikas 18d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stoutimport android.animation.TimeInterpolator; 19c39d9c75590eca86a5e7e32a8824ba04a0d42e9bAlan Viveretteimport android.support.annotation.RestrictTo; 20c39d9c75590eca86a5e7e32a8824ba04a0d42e9bAlan Viverette 21d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout/** 22d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout * @hide 23d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout */ 248e10080c914d1ad0784394fa3026b85535535847Aurimas Liutikas@RestrictTo(LIBRARY_GROUP) 25d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stoutpublic class LogDecelerateInterpolator implements TimeInterpolator { 26d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout 27d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout int mBase; 28d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout int mDrift; 29d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout final float mLogScale; 30d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout 31d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout public LogDecelerateInterpolator(int base, int drift) { 32d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout mBase = base; 33d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout mDrift = drift; 34d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout 35d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout mLogScale = 1f / computeLog(1, mBase, mDrift); 36d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout } 37d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout 38d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout static float computeLog(float t, int base, int drift) { 39d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout return (float) -Math.pow(base, -t) + 1 + (drift * t); 40d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout } 41d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout 42d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout @Override 43d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout public float getInterpolation(float t) { 44d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout return computeLog(t, mBase, mDrift) * mLogScale; 45d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout } 46d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout} 47