From f24312876b097e25cec922edbb58334ed234dcd7 Mon Sep 17 00:00:00 2001 From: Patrick Dubroy Date: Tue, 2 Nov 2010 14:46:20 -0700 Subject: Fix bug with views disappearing after dragging. --- src/com/android/launcher2/Workspace.java | 41 ++++++++++++++++---------------- 1 file changed, 21 insertions(+), 20 deletions(-) (limited to 'src/com/android') 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 @@ public class Workspace extends SmoothPagedView 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; - } + 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); - public void onAnimationEnd(Animator animation) { - if (mDropView != null) { - mDropView.setVisibility(View.VISIBLE); - mDropView = null; - } + // 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; } - }); - } else { - mDropAnim.end(); // Make sure it's not already running - } + } + }); mDropAnim.setDuration(duration); mDropAnim.setFloatValues(0.0f, 1.0f); -- cgit v1.1