diff options
author | Winson Chung <winsonc@google.com> | 2022-05-18 18:46:54 +0000 |
---|---|---|
committer | Winson Chung <winsonc@google.com> | 2022-05-18 18:46:54 +0000 |
commit | b6fa2ce486bb9ab7a4d8678a241ccff57b32d391 (patch) | |
tree | fba7591527f2272765f386e5006303bd70d5e700 /quickstep/src | |
parent | 2cf6edcf6d9af92ffa193d214ead6e39f86e2589 (diff) | |
download | Launcher3-b6fa2ce486bb9ab7a4d8678a241ccff57b32d391.tar.gz |
Ensure that we're animating the current live tasks when going back
- The other call to launch tasks animated doesn't work for the current
task you swiped from when in split.
http://recall/-/g6hkB0pXjyQSvfA8STqRAT/bKHWGjhf2yQVpmRkvn3aeD
Bug: 223750399
Test: Enter overview, swipe back
Test: Enter overview from split, swipe back
Change-Id: Icbe2944df2bb382e072c2890001d7eae505a7b04
Diffstat (limited to 'quickstep/src')
-rw-r--r-- | quickstep/src/com/android/launcher3/uioverrides/states/OverviewState.java | 2 | ||||
-rw-r--r-- | quickstep/src/com/android/quickstep/views/TaskView.java | 141 |
2 files changed, 75 insertions, 68 deletions
diff --git a/quickstep/src/com/android/launcher3/uioverrides/states/OverviewState.java b/quickstep/src/com/android/launcher3/uioverrides/states/OverviewState.java index 5f62749590..429f209e94 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/states/OverviewState.java +++ b/quickstep/src/com/android/launcher3/uioverrides/states/OverviewState.java @@ -133,7 +133,7 @@ public class OverviewState extends LauncherState { public void onBackPressed(Launcher launcher) { TaskView taskView = launcher.<RecentsView>getOverviewPanel().getRunningTaskView(); if (taskView != null) { - taskView.launchTaskAnimated(); + taskView.launchTasks(); } else { super.onBackPressed(launcher); } diff --git a/quickstep/src/com/android/quickstep/views/TaskView.java b/quickstep/src/com/android/quickstep/views/TaskView.java index b5971f2de6..d58bb7c719 100644 --- a/quickstep/src/com/android/quickstep/views/TaskView.java +++ b/quickstep/src/com/android/quickstep/views/TaskView.java @@ -618,73 +618,7 @@ public class TaskView extends FrameLayout implements Reusable { if (confirmSecondSplitSelectApp()) { return; } - RecentsView recentsView = getRecentsView(); - RemoteTargetHandle[] remoteTargetHandles = recentsView.mRemoteTargetHandles; - if (ENABLE_QUICKSTEP_LIVE_TILE.get() && isRunningTask() && remoteTargetHandles != null) { - if (!mIsClickableAsLiveTile) { - return; - } - - // Reset the minimized state since we force-toggled the minimized state when entering - // overview, but never actually finished the recents animation - SystemUiProxy.INSTANCE.get(getContext()).setSplitScreenMinimized(false); - - mIsClickableAsLiveTile = false; - RemoteAnimationTargets targets; - if (remoteTargetHandles.length == 1) { - targets = remoteTargetHandles[0].getTransformParams().getTargetSet(); - } else { - TransformParams topLeftParams = remoteTargetHandles[0].getTransformParams(); - TransformParams rightBottomParams = remoteTargetHandles[1].getTransformParams(); - RemoteAnimationTargetCompat[] apps = Stream.concat( - Arrays.stream(topLeftParams.getTargetSet().apps), - Arrays.stream(rightBottomParams.getTargetSet().apps)) - .toArray(RemoteAnimationTargetCompat[]::new); - RemoteAnimationTargetCompat[] wallpapers = Stream.concat( - Arrays.stream(topLeftParams.getTargetSet().wallpapers), - Arrays.stream(rightBottomParams.getTargetSet().wallpapers)) - .toArray(RemoteAnimationTargetCompat[]::new); - targets = new RemoteAnimationTargets(apps, wallpapers, - topLeftParams.getTargetSet().nonApps, - topLeftParams.getTargetSet().targetMode); - } - if (targets == null) { - // If the recents animation is cancelled somehow between the parent if block and - // here, try to launch the task as a non live tile task. - launchTaskAnimated(); - mIsClickableAsLiveTile = true; - return; - } - - AnimatorSet anim = new AnimatorSet(); - TaskViewUtils.composeRecentsLaunchAnimator( - anim, this, targets.apps, - targets.wallpapers, targets.nonApps, true /* launcherClosing */, - mActivity.getStateManager(), recentsView, - recentsView.getDepthController()); - anim.addListener(new AnimatorListenerAdapter() { - @Override - public void onAnimationStart(Animator animation) { - recentsView.runActionOnRemoteHandles( - (Consumer<RemoteTargetHandle>) remoteTargetHandle -> - remoteTargetHandle - .getTaskViewSimulator() - .setDrawsBelowRecents(false)); - } - - @Override - public void onAnimationEnd(Animator animator) { - if (mTask != null && mTask.key.displayId != getRootViewDisplayId()) { - launchTaskAnimated(); - } - mIsClickableAsLiveTile = true; - } - }); - anim.start(); - recentsView.onTaskLaunchedInLiveTileMode(); - } else { - launchTaskAnimated(); - } + launchTasks(); mActivity.getStatsLogManager().logger().withItemInfo(getItemInfo()) .log(LAUNCHER_TASK_LAUNCH_TAP); } @@ -782,6 +716,79 @@ public class TaskView extends FrameLayout implements Reusable { } /** + * Launch of the current task (both live and inactive tasks) with an animation. + */ + public void launchTasks() { + RecentsView recentsView = getRecentsView(); + RemoteTargetHandle[] remoteTargetHandles = recentsView.mRemoteTargetHandles; + if (ENABLE_QUICKSTEP_LIVE_TILE.get() && isRunningTask() && remoteTargetHandles != null) { + if (!mIsClickableAsLiveTile) { + return; + } + + // Reset the minimized state since we force-toggled the minimized state when entering + // overview, but never actually finished the recents animation + SystemUiProxy.INSTANCE.get(getContext()).setSplitScreenMinimized(false); + + mIsClickableAsLiveTile = false; + RemoteAnimationTargets targets; + if (remoteTargetHandles.length == 1) { + targets = remoteTargetHandles[0].getTransformParams().getTargetSet(); + } else { + TransformParams topLeftParams = remoteTargetHandles[0].getTransformParams(); + TransformParams rightBottomParams = remoteTargetHandles[1].getTransformParams(); + RemoteAnimationTargetCompat[] apps = Stream.concat( + Arrays.stream(topLeftParams.getTargetSet().apps), + Arrays.stream(rightBottomParams.getTargetSet().apps)) + .toArray(RemoteAnimationTargetCompat[]::new); + RemoteAnimationTargetCompat[] wallpapers = Stream.concat( + Arrays.stream(topLeftParams.getTargetSet().wallpapers), + Arrays.stream(rightBottomParams.getTargetSet().wallpapers)) + .toArray(RemoteAnimationTargetCompat[]::new); + targets = new RemoteAnimationTargets(apps, wallpapers, + topLeftParams.getTargetSet().nonApps, + topLeftParams.getTargetSet().targetMode); + } + if (targets == null) { + // If the recents animation is cancelled somehow between the parent if block and + // here, try to launch the task as a non live tile task. + launchTaskAnimated(); + mIsClickableAsLiveTile = true; + return; + } + + AnimatorSet anim = new AnimatorSet(); + TaskViewUtils.composeRecentsLaunchAnimator( + anim, this, targets.apps, + targets.wallpapers, targets.nonApps, true /* launcherClosing */, + mActivity.getStateManager(), recentsView, + recentsView.getDepthController()); + anim.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationStart(Animator animation) { + recentsView.runActionOnRemoteHandles( + (Consumer<RemoteTargetHandle>) remoteTargetHandle -> + remoteTargetHandle + .getTaskViewSimulator() + .setDrawsBelowRecents(false)); + } + + @Override + public void onAnimationEnd(Animator animator) { + if (mTask != null && mTask.key.displayId != getRootViewDisplayId()) { + launchTaskAnimated(); + } + mIsClickableAsLiveTile = true; + } + }); + anim.start(); + recentsView.onTaskLaunchedInLiveTileMode(); + } else { + launchTaskAnimated(); + } + } + + /** * See {@link TaskDataChanges} * @param visible If this task view will be visible to the user in overview or hidden */ |