summaryrefslogtreecommitdiffstats
path: root/src/com/android/launcher2/InterruptibleInOutAnimator.java
diff options
context:
space:
mode:
authorJoe Onorato <joeo@google.com>2010-10-10 11:26:02 -0700
committerPatrick Dubroy <dubroy@google.com>2010-10-13 12:01:04 -0700
commit4be866d3a1665aa2098cb5d38d535b1ad1aab6d6 (patch)
tree2013e9ad151f31aecae8af27a0a213438549fdb2 /src/com/android/launcher2/InterruptibleInOutAnimator.java
parentb0b2e6f588367cf40a4270cca81af7d78f8e382e (diff)
downloadandroid_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.java29
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;
}
}