diff --git a/quickstep/src/com/android/quickstep/ActivityControlHelper.java b/quickstep/src/com/android/quickstep/ActivityControlHelper.java index 52a6dd5fe5..202d8fc371 100644 --- a/quickstep/src/com/android/quickstep/ActivityControlHelper.java +++ b/quickstep/src/com/android/quickstep/ActivityControlHelper.java @@ -243,9 +243,8 @@ public interface ActivityControlHelper { if (wasVisible) { DeviceProfile dp = activity.getDeviceProfile(); long accuracy = 2 * Math.max(dp.widthPx, dp.heightPx); - activity.getStateManager().goToState(startState, false); callback.accept(activity.getStateManager() - .createAnimationToNewWorkspace(endState, accuracy)); + .createAnimationToNewWorkspace(startState, endState, accuracy)); return; } diff --git a/src/com/android/launcher3/LauncherStateManager.java b/src/com/android/launcher3/LauncherStateManager.java index 05c515bf42..7b32913347 100644 --- a/src/com/android/launcher3/LauncherStateManager.java +++ b/src/com/android/launcher3/LauncherStateManager.java @@ -296,6 +296,24 @@ public class LauncherStateManager { } } + /** + * Creates a {@link AnimatorPlaybackController} that can be used for a controlled + * state transition. The UI is force-set to fromState before creating the controller. + * @param fromState the initial state for the transition. + * @param state the final state for the transition. + * @param duration intended duration for normal playback. Use higher duration for better + * accuracy. + */ + public AnimatorPlaybackController createAnimationToNewWorkspace( + LauncherState fromState, LauncherState state, long duration) { + mConfig.reset(); + for (StateHandler handler : getStateHandlers()) { + handler.setState(fromState); + } + + return createAnimationToNewWorkspace(state, duration); + } + /** * Creates a {@link AnimatorPlaybackController} that can be used for a controlled * state transition.