From 3dcd79ecb39af92b94ac7f41558c2743a51f0596 Mon Sep 17 00:00:00 2001 From: Michael Jurka Date: Thu, 31 May 2012 07:50:33 -0700 Subject: Preventing stutter at beginning of All Apps animation Bug: 6579204 Change-Id: I6e4eec80726a469d51494564933fe213bfdf47d3 --- src/com/android/launcher2/Launcher.java | 50 ++++++++++++++++++++------------- 1 file changed, 31 insertions(+), 19 deletions(-) (limited to 'src/com/android') diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java index 9dc1fe4be..9fbf50ef0 100644 --- a/src/com/android/launcher2/Launcher.java +++ b/src/com/android/launcher2/Launcher.java @@ -2403,32 +2403,37 @@ public final class Launcher extends Activity observer = null; } + final AnimatorSet stateAnimation = mStateAnimation; + final Runnable startAnimRunnable = new Runnable() { + public void run() { + // Check that mStateAnimation hasn't changed while + // we waited for a layout/draw pass + if (mStateAnimation != stateAnimation) + return; + setPivotsForZoom(toView, scale); + dispatchOnLauncherTransitionStart(fromView, animated, false); + dispatchOnLauncherTransitionStart(toView, animated, false); + mWorkspace.post(new Runnable() { + public void run() { + // Check that mStateAnimation hasn't changed while + // we waited for a layout/draw pass + if (mStateAnimation != stateAnimation) + return; + mStateAnimation.start(); + } + }); + } + }; if (delayAnim) { - final AnimatorSet stateAnimation = mStateAnimation; final OnGlobalLayoutListener delayedStart = new OnGlobalLayoutListener() { public void onGlobalLayout() { - mWorkspace.post(new Runnable() { - public void run() { - // Check that mStateAnimation hasn't changed while - // we waited for a layout pass - if (mStateAnimation == stateAnimation) { - // Need to update pivots for zoom if layout changed - setPivotsForZoom(toView, scale); - dispatchOnLauncherTransitionStart(fromView, animated, false); - dispatchOnLauncherTransitionStart(toView, animated, false); - mStateAnimation.start(); - } - } - }); + mWorkspace.post(startAnimRunnable); observer.removeOnGlobalLayoutListener(this); } }; observer.addOnGlobalLayoutListener(delayedStart); } else { - setPivotsForZoom(toView, scale); - dispatchOnLauncherTransitionStart(fromView, animated, false); - dispatchOnLauncherTransitionStart(toView, animated, false); - mStateAnimation.start(); + startAnimRunnable.run(); } } else { toView.setTranslationX(0.0f); @@ -2539,7 +2544,14 @@ public final class Launcher extends Activity } dispatchOnLauncherTransitionStart(fromView, animated, true); dispatchOnLauncherTransitionStart(toView, animated, true); - mStateAnimation.start(); + final Animator stateAnimation = mStateAnimation; + mWorkspace.post(new Runnable() { + public void run() { + if (stateAnimation != mStateAnimation) + return; + mStateAnimation.start(); + } + }); } else { fromView.setVisibility(View.GONE); dispatchOnLauncherTransitionPrepare(fromView, animated, true); -- cgit v1.2.3