Fix bug with views disappearing after dragging.
diff --git a/src/com/android/launcher2/Workspace.java b/src/com/android/launcher2/Workspace.java
index 08e0460..ddf441a 100644
--- a/src/com/android/launcher2/Workspace.java
+++ b/src/com/android/launcher2/Workspace.java
@@ -1172,28 +1172,29 @@
             duration *= mQuintEaseOutInterpolator.getInterpolation(dist / maxDist);
         }
 
-        // Lazy initialize the animation
-        if (mDropAnim == null) {
-            mDropAnim = new ValueAnimator();
-            mDropAnim.setInterpolator(mQuintEaseOutInterpolator);
-
-            // The view is invisible during the animation; we render it manually.
-            mDropAnim.addListener(new AnimatorListenerAdapter() {
-                public void onAnimationStart(Animator animation) {
-                    // Set this here so that we don't render it until the animation begins
-                    mDropView = view;
-                }
-
-                public void onAnimationEnd(Animator animation) {
-                    if (mDropView != null) {
-                        mDropView.setVisibility(View.VISIBLE);
-                        mDropView = null;
-                    }
-                }
-            });
-        } else {
-            mDropAnim.end(); // Make sure it's not already running
+        if (mDropAnim != null) {
+            // This should really be end(), but that will not be called synchronously,
+            // so instead we use LauncherAnimatorListenerAdapter.onAnimationEndOrCancel()
+            // and call cancel() here.
+            mDropAnim.cancel();
         }
+        mDropAnim = new ValueAnimator();
+        mDropAnim.setInterpolator(mQuintEaseOutInterpolator);
+
+        // The view is invisible during the animation; we render it manually.
+        mDropAnim.addListener(new LauncherAnimatorListenerAdapter() {
+            public void onAnimationStart(Animator animation) {
+                // Set this here so that we don't render it until the animation begins
+                mDropView = view;
+            }
+
+            public void onAnimationEndOrCancel(Animator animation) {
+                if (mDropView != null) {
+                    mDropView.setVisibility(View.VISIBLE);
+                    mDropView = null;
+                }
+            }
+        });
 
         mDropAnim.setDuration(duration);
         mDropAnim.setFloatValues(0.0f, 1.0f);