diff --git a/services/java/com/android/server/wm/WindowManagerService.java b/services/java/com/android/server/wm/WindowManagerService.java index cfb10a0dc5abf..55d2e5dc2cb06 100644 --- a/services/java/com/android/server/wm/WindowManagerService.java +++ b/services/java/com/android/server/wm/WindowManagerService.java @@ -8407,6 +8407,20 @@ public class WindowManagerService extends IWindowManager.Stub && !mWallpaperTarget.mWinAnimator.isDummyAnimation() ? null : mWallpaperTarget; + // If there is a wallpaper target and the target is neither opening nor closing, then + // there exists an app on top of the wallpaper target that has a translucent + // background. + // If the pending transition is an exit, we should add the wallpaper target to the list + // of opening apps so that the translucent app on top of it will animate correctly. + final AppWindowToken wallpaperTargetAppToken = + mWallpaperTarget != null ? mWallpaperTarget.mAppToken : null; + if (wallpaperTargetAppToken != null + && !mClosingApps.contains(wallpaperTargetAppToken) + && !mOpeningApps.contains(wallpaperTargetAppToken) + && (transit & AppTransition.TRANSIT_EXIT_MASK) != 0) { + mOpeningApps.add(wallpaperTargetAppToken); + NN++; + } mInnerFields.mWallpaperMayChange = false; // The top-most window will supply the layout params,