diff options
author | Adam Cohen <adamcohen@google.com> | 2014-11-18 17:53:44 -0800 |
---|---|---|
committer | Adam Cohen <adamcohen@google.com> | 2014-11-18 18:18:26 -0800 |
commit | 08072c05bf9c760acff653545a795a0fae4bd917 (patch) | |
tree | 01f0394df71640a55fb0143931215e5d28003756 /src | |
parent | 7c39e2380f3406f897b2f0abffcb8267d2212482 (diff) | |
download | android_packages_apps_Trebuchet-08072c05bf9c760acff653545a795a0fae4bd917.tar.gz android_packages_apps_Trebuchet-08072c05bf9c760acff653545a795a0fae4bd917.tar.bz2 android_packages_apps_Trebuchet-08072c05bf9c760acff653545a795a0fae4bd917.zip |
Prevent multiple workspace state animators from being started
-> Probably an issue with the way we're wrapping ViewPropertyAnimator
which can lead to us acting like it's valid to have multiple
instances of a VPA. In reality I think this is very problematic.
-> For now, we can just make sure the previous animation is canceled
if it hasn't yet completed.
Bug 18428886
Change-Id: I097eec08ec68ed098e68866fb5eda72734c51b00
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/launcher3/Workspace.java | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java index 2b520c5f4..8bd799198 100644 --- a/src/com/android/launcher3/Workspace.java +++ b/src/com/android/launcher3/Workspace.java @@ -283,6 +283,7 @@ public class Workspace extends SmoothPagedView private float[] mNewAlphas; private int mLastChildCount = -1; private float mTransitionProgress; + private Animator mStateAnimator = null; float mOverScrollEffect = 0f; @@ -2243,6 +2244,13 @@ public class Workspace extends SmoothPagedView AnimatorSet anim = animated ? LauncherAnimUtils.createAnimatorSet() : null; + // We only want a single instance of a workspace animation to be running at once, so + // we cancel any incomplete transition. + if (mStateAnimator != null) { + mStateAnimator.cancel(); + } + mStateAnimator = anim; + final State oldState = mState; final boolean oldStateIsNormal = (oldState == State.NORMAL); final boolean oldStateIsSpringLoaded = (oldState == State.SPRING_LOADED); @@ -2440,6 +2448,12 @@ public class Workspace extends SmoothPagedView anim.play(hotseatAlpha); anim.play(pageIndicatorAlpha); anim.setStartDelay(delay); + anim.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + mStateAnimator = null; + } + }); } else { overviewPanel.setAlpha(finalOverviewPanelAlpha); AlphaUpdateListener.updateVisibility(overviewPanel); |