diff options
Diffstat (limited to 'src/com/android/gallery3d/anim/Animation.java')
-rw-r--r-- | src/com/android/gallery3d/anim/Animation.java | 92 |
1 files changed, 0 insertions, 92 deletions
diff --git a/src/com/android/gallery3d/anim/Animation.java b/src/com/android/gallery3d/anim/Animation.java deleted file mode 100644 index cc117bbce..000000000 --- a/src/com/android/gallery3d/anim/Animation.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright (C) 2010 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.gallery3d.anim; - -import android.view.animation.Interpolator; - -import com.android.gallery3d.common.Utils; - -// Animation calculates a value according to the current input time. -// -// 1. First we need to use setDuration(int) to set the duration of the -// animation. The duration is in milliseconds. -// 2. Then we should call start(). The actual start time is the first value -// passed to calculate(long). -// 3. Each time we want to get an animation value, we call -// calculate(long currentTimeMillis) to ask the Animation to calculate it. -// The parameter passed to calculate(long) should be nonnegative. -// 4. Use get() to get that value. -// -// In step 3, onCalculate(float progress) is called so subclasses can calculate -// the value according to progress (progress is a value in [0,1]). -// -// Before onCalculate(float) is called, There is an optional interpolator which -// can change the progress value. The interpolator can be set by -// setInterpolator(Interpolator). If the interpolator is used, the value passed -// to onCalculate may be (for example, the overshoot effect). -// -// The isActive() method returns true after the animation start() is called and -// before calculate is passed a value which reaches the duration of the -// animation. -// -// The start() method can be called again to restart the Animation. -// -abstract public class Animation { - private static final long ANIMATION_START = -1; - private static final long NO_ANIMATION = -2; - - private long mStartTime = NO_ANIMATION; - private int mDuration; - private Interpolator mInterpolator; - - public void setInterpolator(Interpolator interpolator) { - mInterpolator = interpolator; - } - - public void setDuration(int duration) { - mDuration = duration; - } - - public void start() { - mStartTime = ANIMATION_START; - } - - public void setStartTime(long time) { - mStartTime = time; - } - - public boolean isActive() { - return mStartTime != NO_ANIMATION; - } - - public void forceStop() { - mStartTime = NO_ANIMATION; - } - - public boolean calculate(long currentTimeMillis) { - if (mStartTime == NO_ANIMATION) return false; - if (mStartTime == ANIMATION_START) mStartTime = currentTimeMillis; - int elapse = (int) (currentTimeMillis - mStartTime); - float x = Utils.clamp((float) elapse / mDuration, 0f, 1f); - Interpolator i = mInterpolator; - onCalculate(i != null ? i.getInterpolation(x) : x); - if (elapse >= mDuration) mStartTime = NO_ANIMATION; - return mStartTime != NO_ANIMATION; - } - - abstract protected void onCalculate(float progress); -} |