1c5b63021dfda1dd155775a0b4845c5ca3c70b1b0Chris Banes/* 2c5b63021dfda1dd155775a0b4845c5ca3c70b1b0Chris Banes * Copyright (C) 2015 The Android Open Source Project 3c5b63021dfda1dd155775a0b4845c5ca3c70b1b0Chris Banes * 4c5b63021dfda1dd155775a0b4845c5ca3c70b1b0Chris Banes * Licensed under the Apache License, Version 2.0 (the "License"); 5c5b63021dfda1dd155775a0b4845c5ca3c70b1b0Chris Banes * you may not use this file except in compliance with the License. 6c5b63021dfda1dd155775a0b4845c5ca3c70b1b0Chris Banes * You may obtain a copy of the License at 7c5b63021dfda1dd155775a0b4845c5ca3c70b1b0Chris Banes * 8c5b63021dfda1dd155775a0b4845c5ca3c70b1b0Chris Banes * http://www.apache.org/licenses/LICENSE-2.0 9c5b63021dfda1dd155775a0b4845c5ca3c70b1b0Chris Banes * 10c5b63021dfda1dd155775a0b4845c5ca3c70b1b0Chris Banes * Unless required by applicable law or agreed to in writing, software 11c5b63021dfda1dd155775a0b4845c5ca3c70b1b0Chris Banes * distributed under the License is distributed on an "AS IS" BASIS, 12c5b63021dfda1dd155775a0b4845c5ca3c70b1b0Chris Banes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13c5b63021dfda1dd155775a0b4845c5ca3c70b1b0Chris Banes * See the License for the specific language governing permissions and 14c5b63021dfda1dd155775a0b4845c5ca3c70b1b0Chris Banes * limitations under the License. 15c5b63021dfda1dd155775a0b4845c5ca3c70b1b0Chris Banes */ 16c5b63021dfda1dd155775a0b4845c5ca3c70b1b0Chris Banes 17c5b63021dfda1dd155775a0b4845c5ca3c70b1b0Chris Banespackage android.support.design.widget; 18c5b63021dfda1dd155775a0b4845c5ca3c70b1b0Chris Banes 193a30d0eaba58dd961cf2ae9be3a7d0b9754a031eChris Banesimport android.support.v4.view.animation.FastOutLinearInInterpolator; 20c5b63021dfda1dd155775a0b4845c5ca3c70b1b0Chris Banesimport android.support.v4.view.animation.FastOutSlowInInterpolator; 213a30d0eaba58dd961cf2ae9be3a7d0b9754a031eChris Banesimport android.support.v4.view.animation.LinearOutSlowInInterpolator; 22a6a508b2296730ca6954aaebcca52a9962a5cb55Chris Banesimport android.view.animation.Animation; 23a6a508b2296730ca6954aaebcca52a9962a5cb55Chris Banesimport android.view.animation.DecelerateInterpolator; 24c5b63021dfda1dd155775a0b4845c5ca3c70b1b0Chris Banesimport android.view.animation.Interpolator; 25c5b63021dfda1dd155775a0b4845c5ca3c70b1b0Chris Banesimport android.view.animation.LinearInterpolator; 26c5b63021dfda1dd155775a0b4845c5ca3c70b1b0Chris Banes 27c5b63021dfda1dd155775a0b4845c5ca3c70b1b0Chris Banesclass AnimationUtils { 28c5b63021dfda1dd155775a0b4845c5ca3c70b1b0Chris Banes 29c5b63021dfda1dd155775a0b4845c5ca3c70b1b0Chris Banes static final Interpolator LINEAR_INTERPOLATOR = new LinearInterpolator(); 30c5b63021dfda1dd155775a0b4845c5ca3c70b1b0Chris Banes static final Interpolator FAST_OUT_SLOW_IN_INTERPOLATOR = new FastOutSlowInInterpolator(); 313a30d0eaba58dd961cf2ae9be3a7d0b9754a031eChris Banes static final Interpolator FAST_OUT_LINEAR_IN_INTERPOLATOR = new FastOutLinearInInterpolator(); 323a30d0eaba58dd961cf2ae9be3a7d0b9754a031eChris Banes static final Interpolator LINEAR_OUT_SLOW_IN_INTERPOLATOR = new LinearOutSlowInInterpolator(); 33a6a508b2296730ca6954aaebcca52a9962a5cb55Chris Banes static final Interpolator DECELERATE_INTERPOLATOR = new DecelerateInterpolator(); 34c5b63021dfda1dd155775a0b4845c5ca3c70b1b0Chris Banes 35c5b63021dfda1dd155775a0b4845c5ca3c70b1b0Chris Banes /** 36c5b63021dfda1dd155775a0b4845c5ca3c70b1b0Chris Banes * Linear interpolation between {@code startValue} and {@code endValue} by {@code fraction}. 37c5b63021dfda1dd155775a0b4845c5ca3c70b1b0Chris Banes */ 38c5b63021dfda1dd155775a0b4845c5ca3c70b1b0Chris Banes static float lerp(float startValue, float endValue, float fraction) { 39c5b63021dfda1dd155775a0b4845c5ca3c70b1b0Chris Banes return startValue + (fraction * (endValue - startValue)); 40c5b63021dfda1dd155775a0b4845c5ca3c70b1b0Chris Banes } 41c5b63021dfda1dd155775a0b4845c5ca3c70b1b0Chris Banes 42a6a508b2296730ca6954aaebcca52a9962a5cb55Chris Banes static int lerp(int startValue, int endValue, float fraction) { 43a6a508b2296730ca6954aaebcca52a9962a5cb55Chris Banes return startValue + Math.round(fraction * (endValue - startValue)); 44a6a508b2296730ca6954aaebcca52a9962a5cb55Chris Banes } 45a6a508b2296730ca6954aaebcca52a9962a5cb55Chris Banes 46a6a508b2296730ca6954aaebcca52a9962a5cb55Chris Banes static class AnimationListenerAdapter implements Animation.AnimationListener { 47a6a508b2296730ca6954aaebcca52a9962a5cb55Chris Banes @Override 48a6a508b2296730ca6954aaebcca52a9962a5cb55Chris Banes public void onAnimationStart(Animation animation) { 49a6a508b2296730ca6954aaebcca52a9962a5cb55Chris Banes } 50a6a508b2296730ca6954aaebcca52a9962a5cb55Chris Banes 51a6a508b2296730ca6954aaebcca52a9962a5cb55Chris Banes @Override 52a6a508b2296730ca6954aaebcca52a9962a5cb55Chris Banes public void onAnimationEnd(Animation animation) { 53a6a508b2296730ca6954aaebcca52a9962a5cb55Chris Banes } 54a6a508b2296730ca6954aaebcca52a9962a5cb55Chris Banes 55a6a508b2296730ca6954aaebcca52a9962a5cb55Chris Banes @Override 56a6a508b2296730ca6954aaebcca52a9962a5cb55Chris Banes public void onAnimationRepeat(Animation animation) { 57a6a508b2296730ca6954aaebcca52a9962a5cb55Chris Banes } 58a6a508b2296730ca6954aaebcca52a9962a5cb55Chris Banes } 59a6a508b2296730ca6954aaebcca52a9962a5cb55Chris Banes 60c5b63021dfda1dd155775a0b4845c5ca3c70b1b0Chris Banes} 61