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