desktop-exploded-view: Implement the close button and its behavior

Flag: com.android.launcher3.enable_desktop_exploded_view
Test: Manual + newly added tapl tests in a following CL
Bug: 353965691

Change-Id: Iba4603b84928885b1d50f5551adbacbd31e98cc3
This commit is contained in:
Xiaoqian Dai
2025-02-01 03:06:08 +00:00
parent aa0f606b9c
commit 6aca9bedd5
11 changed files with 164 additions and 47 deletions
@@ -676,11 +676,11 @@ public abstract class RecentsView<
MAIN_EXECUTOR,
apkRemoved -> {
if (apkRemoved) {
dismissTask(taskId);
dismissTask(taskId, /*animate=*/true, /*removeTask=*/false);
} else {
mModel.isTaskRemoved(taskKey.id, taskRemoved -> {
if (taskRemoved) {
dismissTask(taskId);
dismissTask(taskId, /*animate=*/true, /*removeTask=*/false);
}
}, RecentsFilterState.getFilter(mFilterState.getPackageNameToFilter()));
}
@@ -4627,17 +4627,27 @@ public abstract class RecentsView<
}
@UiThread
private void dismissTask(int taskId) {
public void dismissTask(int taskId, boolean animate, boolean removeTask) {
TaskView taskView = getTaskViewByTaskId(taskId);
if (taskView == null) {
Log.d(TAG, "dismissTask: " + taskId + ", no associated TaskView");
return;
}
Log.d(TAG, "dismissTask: " + taskId);
dismissTask(taskView, true /* animate */, false /* removeTask */);
if (enableDesktopExplodedView() && taskView instanceof DesktopTaskView desktopTaskView) {
desktopTaskView.removeTaskFromExplodedView(taskId, animate);
if (removeTask) {
ActivityManagerWrapper.getInstance().removeTask(taskId);
}
} else {
dismissTaskView(taskView, animate, removeTask);
}
}
public void dismissTask(TaskView taskView, boolean animateTaskView, boolean removeTask) {
/** Dismisses the entire [taskView]. */
public void dismissTaskView(TaskView taskView, boolean animateTaskView, boolean removeTask) {
PendingAnimation pa = new PendingAnimation(DISMISS_TASK_DURATION);
createTaskDismissAnimation(pa, taskView, animateTaskView, removeTask, DISMISS_TASK_DURATION,
false /* dismissingForSplitSelection*/);
@@ -4653,7 +4663,7 @@ public abstract class RecentsView<
private void dismissCurrentTask() {
TaskView taskView = getNextPageTaskView();
if (taskView != null) {
dismissTask(taskView, true /*animateTaskView*/, true /*removeTask*/);
dismissTaskView(taskView, true /*animateTaskView*/, true /*removeTask*/);
}
}