Merge "Prevent the decor view to be visible again after exit animation finish." into sc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
ef355db3ec
@@ -382,14 +382,16 @@ public class StartingSurfaceDrawer {
|
|||||||
Slog.v(TAG, "Removing splash screen window for task: " + taskId);
|
Slog.v(TAG, "Removing splash screen window for task: " + taskId);
|
||||||
}
|
}
|
||||||
if (record.mContentView != null) {
|
if (record.mContentView != null) {
|
||||||
final HandleExitFinish exitFinish = new HandleExitFinish(record.mDecorView);
|
|
||||||
if (leash != null || playRevealAnimation) {
|
if (leash != null || playRevealAnimation) {
|
||||||
mSplashscreenContentDrawer.applyExitAnimation(record.mContentView,
|
mSplashscreenContentDrawer.applyExitAnimation(record.mContentView,
|
||||||
leash, frame, record.isEarlyExit(), exitFinish);
|
leash, frame, record.isEarlyExit(),
|
||||||
|
() -> removeWindowInner(record.mDecorView, true));
|
||||||
} else {
|
} else {
|
||||||
|
// TODO(183004107) Always hide decorView when playRevealAnimation is enabled
|
||||||
|
// from TaskOrganizerController#removeStartingWindow
|
||||||
// the SplashScreenView has been copied to client, skip default exit
|
// the SplashScreenView has been copied to client, skip default exit
|
||||||
// animation
|
// animation
|
||||||
exitFinish.run();
|
removeWindowInner(record.mDecorView, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -403,23 +405,13 @@ public class StartingSurfaceDrawer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class HandleExitFinish implements Runnable {
|
private void removeWindowInner(View decorView, boolean hideView) {
|
||||||
private View mDecorView;
|
if (hideView) {
|
||||||
|
decorView.setVisibility(View.GONE);
|
||||||
HandleExitFinish(View decorView) {
|
|
||||||
mDecorView = decorView;
|
|
||||||
}
|
}
|
||||||
|
final WindowManager wm = decorView.getContext().getSystemService(WindowManager.class);
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
if (mDecorView == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
final WindowManager wm = mDecorView.getContext().getSystemService(WindowManager.class);
|
|
||||||
if (wm != null) {
|
if (wm != null) {
|
||||||
wm.removeView(mDecorView);
|
wm.removeView(decorView);
|
||||||
}
|
|
||||||
mDecorView = null;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user