summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Wei Sheng Shih <wilsonshih@google.com> 2021-03-31 12:56:38 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2021-03-31 12:56:38 +0000
commitef355db3ecb4a2e93bb7dfb68465943d30c0a285 (patch)
tree7e5a3a8a325f69853fc97a53416ae7ff0091e294
parent79b3f0520ca00332bb55ce00baa7c94feb70af2d (diff)
parente697b8176c1776ca95012b2998434b6c08117a06 (diff)
Merge "Prevent the decor view to be visible again after exit animation finish." into sc-dev
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/StartingSurfaceDrawer.java30
1 files changed, 11 insertions, 19 deletions
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/StartingSurfaceDrawer.java b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/StartingSurfaceDrawer.java
index 1302314d4c5a..29a144fe9808 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/StartingSurfaceDrawer.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/StartingSurfaceDrawer.java
@@ -382,14 +382,16 @@ public class StartingSurfaceDrawer {
Slog.v(TAG, "Removing splash screen window for task: " + taskId);
}
if (record.mContentView != null) {
- final HandleExitFinish exitFinish = new HandleExitFinish(record.mDecorView);
if (leash != null || playRevealAnimation) {
mSplashscreenContentDrawer.applyExitAnimation(record.mContentView,
- leash, frame, record.isEarlyExit(), exitFinish);
+ leash, frame, record.isEarlyExit(),
+ () -> removeWindowInner(record.mDecorView, true));
} else {
+ // TODO(183004107) Always hide decorView when playRevealAnimation is enabled
+ // from TaskOrganizerController#removeStartingWindow
// the SplashScreenView has been copied to client, skip default exit
// animation
- exitFinish.run();
+ removeWindowInner(record.mDecorView, false);
}
}
}
@@ -403,23 +405,13 @@ public class StartingSurfaceDrawer {
}
}
- private static class HandleExitFinish implements Runnable {
- private View mDecorView;
-
- HandleExitFinish(View decorView) {
- mDecorView = decorView;
+ private void removeWindowInner(View decorView, boolean hideView) {
+ if (hideView) {
+ decorView.setVisibility(View.GONE);
}
-
- @Override
- public void run() {
- if (mDecorView == null) {
- return;
- }
- final WindowManager wm = mDecorView.getContext().getSystemService(WindowManager.class);
- if (wm != null) {
- wm.removeView(mDecorView);
- }
- mDecorView = null;
+ final WindowManager wm = decorView.getContext().getSystemService(WindowManager.class);
+ if (wm != null) {
+ wm.removeView(decorView);
}
}