OSDN Git Service

Fix bad animation when pressing Home with translucent activity
authorChong Zhang <chz@google.com>
Mon, 2 May 2016 23:36:41 +0000 (16:36 -0700)
committerChong Zhang <chz@google.com>
Mon, 2 May 2016 23:38:33 +0000 (16:38 -0700)
Force a setAppVisibility if the previous app was translucent, so that
the resumed app is added to the opening app list. Otherwise opening
app list is empty and the transition can't be set up correctly.

bug: 28463843
Change-Id: I7f8e28d0f804c799a429743df6fc501c06d62f21

services/core/java/com/android/server/am/ActivityStack.java

index 21fc4d8..7486c72 100644 (file)
@@ -2327,8 +2327,20 @@ final class ActivityStack {
             if (DEBUG_SWITCH) Slog.v(TAG_SWITCH, "Resume running: " + next
                     + " stopped=" + next.stopped + " visible=" + next.visible);
 
+            // If the previous activity is translucent, force a visibility update of
+            // the next activity, so that it's added to WM's opening app list, and
+            // transition animation can be set up properly.
+            // For example, pressing Home button with a translucent activity in focus.
+            // Launcher is already visible in this case. If we don't add it to opening
+            // apps, maybeUpdateTransitToWallpaper() will fail to identify this as a
+            // TRANSIT_WALLPAPER_OPEN animation, and run some funny animation.
+            final boolean lastActivityTranslucent = lastStack != null
+                    && (!lastStack.mFullscreen
+                    || (lastStack.mLastPausedActivity != null
+                    && !lastStack.mLastPausedActivity.fullscreen));
+
             // This activity is now becoming visible.
-            if (!next.visible || next.stopped) {
+            if (!next.visible || next.stopped || lastActivityTranslucent) {
                 mWindowManager.setAppVisibility(next.appToken, true);
             }