diff options
author | Jon Miranda <jonmiranda@google.com> | 2018-02-15 11:32:25 -0800 |
---|---|---|
committer | Jon Miranda <jonmiranda@google.com> | 2018-02-20 06:48:31 -0800 |
commit | 8b08a1fd81ce267b7b13d07bf2ea1b7b9dbbb63f (patch) | |
tree | cd83a07fd3be74dfb8601e6798a4f79b13a092dd /src | |
parent | 5f72d3b8b6bfb5a721c93339ee4239b1f5504b19 (diff) | |
download | android_packages_apps_Trebuchet-8b08a1fd81ce267b7b13d07bf2ea1b7b9dbbb63f.tar.gz android_packages_apps_Trebuchet-8b08a1fd81ce267b7b13d07bf2ea1b7b9dbbb63f.tar.bz2 android_packages_apps_Trebuchet-8b08a1fd81ce267b7b13d07bf2ea1b7b9dbbb63f.zip |
Cancel existing launcher animation earlier to prevent unnecessary AllApps animation.
Prior to this change:
* User presses home before opening app transition finishes
* Close app transition starts
* AllAppsTransitionController#mProgress = 1.3 (starts offscreen)
* Launcher#onNewIntent makes call to AllAppsTransitionController#setStateWithAnimation
* targetProgress != mProgress (1 != 1.3), so it runs an animator that looks odd
ie. fast duration, only AllApps animates compared to expected full closing app transition
Change-Id: I755787aebf637675cb9aae23fc5784f5a5b6c811
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/launcher3/LauncherStateManager.java | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/src/com/android/launcher3/LauncherStateManager.java b/src/com/android/launcher3/LauncherStateManager.java index e0b84bf46..170fcd707 100644 --- a/src/com/android/launcher3/LauncherStateManager.java +++ b/src/com/android/launcher3/LauncherStateManager.java @@ -175,6 +175,7 @@ public class LauncherStateManager { mConfig.reset(); if (!animated) { + preOnStateTransitionStart(); onStateTransitionStart(state); for (StateHandler handler : getStateHandlers()) { handler.setState(state); @@ -231,6 +232,8 @@ public class LauncherStateManager { protected AnimatorSet createAnimationToNewWorkspaceInternal(final LauncherState state, AnimatorSetBuilder builder, final Runnable onCompleteRunnable) { + preOnStateTransitionStart(); + for (StateHandler handler : getStateHandlers()) { builder.startTag(handler); handler.setStateWithAnimation(state, builder, mConfig); @@ -269,6 +272,15 @@ public class LauncherStateManager { return mConfig.mCurrentAnimation; } + private void preOnStateTransitionStart() { + // If we are still animating to launcher from an app, + // finish it and let this state animation take over. + LauncherAppTransitionManager transitionManager = mLauncher.getAppTransitionManager(); + if (transitionManager != null) { + transitionManager.finishLauncherAnimation(); + } + } + private void onStateTransitionStart(LauncherState state) { mState.onStateDisabled(mLauncher); mState = state; @@ -279,13 +291,6 @@ public class LauncherStateManager { // Only disable clipping if needed, otherwise leave it as previous value. mLauncher.getWorkspace().setClipChildren(false); } - - // If we are still animating to launcher from an app, - // finish it and let this state animation take over. - LauncherAppTransitionManager transitionManager = mLauncher.getAppTransitionManager(); - if (transitionManager != null) { - transitionManager.finishLauncherAnimation(); - } } private void onStateTransitionEnd(LauncherState state) { |