diff options
| author | 2021-03-31 12:56:38 +0000 | |
|---|---|---|
| committer | 2021-03-31 12:56:38 +0000 | |
| commit | ef355db3ecb4a2e93bb7dfb68465943d30c0a285 (patch) | |
| tree | 7e5a3a8a325f69853fc97a53416ae7ff0091e294 | |
| parent | 79b3f0520ca00332bb55ce00baa7c94feb70af2d (diff) | |
| parent | e697b8176c1776ca95012b2998434b6c08117a06 (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.java | 30 | 
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);          }      }  |