Merge "Improve exit transition for task close case" into tm-qpr-dev am: 2e07598039
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/22162082 Change-Id: I033ea8e7f017588e685e81ec03044b3681216a2b Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -727,6 +727,10 @@ public final class SplitLayout implements DisplayInsetsController.OnInsetsChange
|
|||||||
getRefBounds2(mTempRect);
|
getRefBounds2(mTempRect);
|
||||||
t.setPosition(leash2, mTempRect.left, mTempRect.top)
|
t.setPosition(leash2, mTempRect.left, mTempRect.top)
|
||||||
.setWindowCrop(leash2, mTempRect.width(), mTempRect.height());
|
.setWindowCrop(leash2, mTempRect.width(), mTempRect.height());
|
||||||
|
// Make right or bottom side surface always higher than left or top side to avoid weird
|
||||||
|
// animation when dismiss split. e.g. App surface fling above on decor surface.
|
||||||
|
t.setLayer(leash1, 1);
|
||||||
|
t.setLayer(leash2, 2);
|
||||||
|
|
||||||
if (mImePositionProcessor.adjustSurfaceLayoutForIme(
|
if (mImePositionProcessor.adjustSurfaceLayoutForIme(
|
||||||
t, dividerLeash, leash1, leash2, dimLayer1, dimLayer2)) {
|
t, dividerLeash, leash1, leash2, dimLayer1, dimLayer2)) {
|
||||||
|
|||||||
@@ -220,12 +220,20 @@ class StageTaskListener implements ShellTaskOrganizer.TaskListener {
|
|||||||
mCallbacks.onNoLongerSupportMultiWindow();
|
mCallbacks.onNoLongerSupportMultiWindow();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
mChildrenTaskInfo.put(taskInfo.taskId, taskInfo);
|
if (taskInfo.topActivity == null && mChildrenTaskInfo.contains(taskInfo.taskId)
|
||||||
|
&& mChildrenTaskInfo.get(taskInfo.taskId).topActivity != null) {
|
||||||
|
// If top activity become null, it means the task is about to vanish, we use this
|
||||||
|
// signal to remove it from children list earlier for smooth dismiss transition.
|
||||||
|
mChildrenTaskInfo.remove(taskInfo.taskId);
|
||||||
|
mChildrenLeashes.remove(taskInfo.taskId);
|
||||||
|
} else {
|
||||||
|
mChildrenTaskInfo.put(taskInfo.taskId, taskInfo);
|
||||||
|
}
|
||||||
mCallbacks.onChildTaskStatusChanged(taskInfo.taskId, true /* present */,
|
mCallbacks.onChildTaskStatusChanged(taskInfo.taskId, true /* present */,
|
||||||
taskInfo.isVisible);
|
taskInfo.isVisible);
|
||||||
if (!ENABLE_SHELL_TRANSITIONS) {
|
if (!ENABLE_SHELL_TRANSITIONS && mChildrenLeashes.contains(taskInfo.taskId)) {
|
||||||
updateChildTaskSurface(
|
updateChildTaskSurface(taskInfo, mChildrenLeashes.get(taskInfo.taskId),
|
||||||
taskInfo, mChildrenLeashes.get(taskInfo.taskId), false /* firstAppeared */);
|
false /* firstAppeared */);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
throw new IllegalArgumentException(this + "\n Unknown task: " + taskInfo
|
throw new IllegalArgumentException(this + "\n Unknown task: " + taskInfo
|
||||||
|
|||||||
Reference in New Issue
Block a user