summaryrefslogtreecommitdiff
path: root/quickstep/src
diff options
context:
space:
mode:
authorWinson Chung <winsonc@google.com>2022-05-18 18:46:54 +0000
committerWinson Chung <winsonc@google.com>2022-05-18 18:46:54 +0000
commitb6fa2ce486bb9ab7a4d8678a241ccff57b32d391 (patch)
treefba7591527f2272765f386e5006303bd70d5e700 /quickstep/src
parent2cf6edcf6d9af92ffa193d214ead6e39f86e2589 (diff)
downloadLauncher3-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.java2
-rw-r--r--quickstep/src/com/android/quickstep/views/TaskView.java141
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
*/