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 16d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stoutimport android.animation.TimeInterpolator; 17d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout 18d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout/** 19d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout * @hide 20d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout */ 21d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stoutpublic class LogDecelerateInterpolator implements TimeInterpolator { 22d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout 23d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout int mBase; 24d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout int mDrift; 25d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout final float mLogScale; 26d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout 27d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout public LogDecelerateInterpolator(int base, int drift) { 28d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout mBase = base; 29d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout mDrift = drift; 30d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout 31d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout mLogScale = 1f / computeLog(1, mBase, mDrift); 32d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout } 33d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout 34d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout static float computeLog(float t, int base, int drift) { 35d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout return (float) -Math.pow(base, -t) + 1 + (drift * t); 36d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout } 37d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout 38d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout @Override 39d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout public float getInterpolation(float t) { 40d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout return computeLog(t, mBase, mDrift) * mLogScale; 41d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout } 42d1adbdcb44a48e142d28a93189c57edfe62d93ceCraig Stout} 43