diff options
author | Joe Onorato <joeo@google.com> | 2010-10-10 11:26:02 -0700 |
---|---|---|
committer | Patrick Dubroy <dubroy@google.com> | 2010-10-13 12:01:04 -0700 |
commit | 4be866d3a1665aa2098cb5d38d535b1ad1aab6d6 (patch) | |
tree | 2013e9ad151f31aecae8af27a0a213438549fdb2 /src/com/android/launcher2/InterruptibleInOutAnimator.java | |
parent | b0b2e6f588367cf40a4270cca81af7d78f8e382e (diff) | |
download | android_packages_apps_Trebuchet-4be866d3a1665aa2098cb5d38d535b1ad1aab6d6.tar.gz android_packages_apps_Trebuchet-4be866d3a1665aa2098cb5d38d535b1ad1aab6d6.tar.bz2 android_packages_apps_Trebuchet-4be866d3a1665aa2098cb5d38d535b1ad1aab6d6.zip |
fix 3029324: Implement new drag feedback
Add "shrinkwrap" icon outlines to visualize where the item will land
Diffstat (limited to 'src/com/android/launcher2/InterruptibleInOutAnimator.java')
-rw-r--r-- | src/com/android/launcher2/InterruptibleInOutAnimator.java | 29 |
1 files changed, 23 insertions, 6 deletions
diff --git a/src/com/android/launcher2/InterruptibleInOutAnimator.java b/src/com/android/launcher2/InterruptibleInOutAnimator.java index fb0728480..920aa43e4 100644 --- a/src/com/android/launcher2/InterruptibleInOutAnimator.java +++ b/src/com/android/launcher2/InterruptibleInOutAnimator.java @@ -16,6 +16,8 @@ package com.android.launcher2; +import android.animation.Animator; +import android.animation.AnimatorListenerAdapter; import android.animation.ValueAnimator; import android.util.Log; @@ -31,6 +33,10 @@ public class InterruptibleInOutAnimator extends ValueAnimator { private Object mOriginalFromValue; private Object mOriginalToValue; + private boolean mFirstRun = true; + + private Object mTag = null; + public InterruptibleInOutAnimator(long duration, Object fromValue, Object toValue) { super(duration, fromValue, toValue); mOriginalDuration = duration; @@ -38,14 +44,17 @@ public class InterruptibleInOutAnimator extends ValueAnimator { mOriginalToValue = toValue; } - private void animate(Object fromValue, Object toValue) { + private void animateTo(Object toValue) { // This only makes sense when it's running in the opposite direction, or stopped. setDuration(mOriginalDuration - getCurrentPlayTime()); - final Object startValue = isRunning() ? getAnimatedValue() : fromValue; + final Object startValue = mFirstRun ? mOriginalFromValue : getAnimatedValue(); cancel(); - setValues(startValue, toValue); - start(); + if (startValue != toValue) { + setValues(startValue, toValue); + start(); + mFirstRun = false; + } } /** @@ -54,7 +63,7 @@ public class InterruptibleInOutAnimator extends ValueAnimator { * direction and animate for a correspondingly shorter duration. */ public void animateIn() { - animate(mOriginalFromValue, mOriginalToValue); + animateTo(mOriginalToValue); } /** @@ -64,6 +73,14 @@ public class InterruptibleInOutAnimator extends ValueAnimator { * direction and animate for a correspondingly shorter duration. */ public void animateOut() { - animate(mOriginalToValue, mOriginalFromValue); + animateTo(mOriginalFromValue); + } + + public void setTag(Object tag) { + mTag = tag; + } + + public Object getTag() { + return mTag; } } |