From 738cfc91053fc888397ec2d139e0798f8c95b3ca Mon Sep 17 00:00:00 2001 From: Michael Jurka Date: Fri, 19 Oct 2012 14:56:47 +0200 Subject: [PATCH] Fixing wallpaper flash when going in/out of Recents Bug: 7372516 Bug: 7216872 Change-Id: I2a2308a85caf9f2ad2d382c709e5f8867bd060be --- packages/SystemUI/AndroidManifest.xml | 2 +- .../recents_launch_from_launcher_enter.xml | 6 ---- .../recents_launch_from_launcher_exit.xml | 2 +- ...per_recents_launch_from_launcher_enter.xml | 35 +++++++++++++++++++ ...aper_recents_launch_from_launcher_exit.xml | 28 +++++++++++++++ packages/SystemUI/res/values/styles.xml | 18 ++++++++++ .../systemui/statusbar/BaseStatusBar.java | 6 ++-- .../server/wm/WindowManagerService.java | 11 ++++-- 8 files changed, 94 insertions(+), 14 deletions(-) create mode 100644 packages/SystemUI/res/anim/wallpaper_recents_launch_from_launcher_enter.xml create mode 100644 packages/SystemUI/res/anim/wallpaper_recents_launch_from_launcher_exit.xml diff --git a/packages/SystemUI/AndroidManifest.xml b/packages/SystemUI/AndroidManifest.xml index f0e5a870cb61e..de599b498c66d 100644 --- a/packages/SystemUI/AndroidManifest.xml +++ b/packages/SystemUI/AndroidManifest.xml @@ -109,7 +109,7 @@ diff --git a/packages/SystemUI/res/anim/recents_launch_from_launcher_enter.xml b/packages/SystemUI/res/anim/recents_launch_from_launcher_enter.xml index 73ae9f2a25ee1..1135bc097fcfd 100644 --- a/packages/SystemUI/res/anim/recents_launch_from_launcher_enter.xml +++ b/packages/SystemUI/res/anim/recents_launch_from_launcher_enter.xml @@ -18,7 +18,6 @@ --> - diff --git a/packages/SystemUI/res/anim/recents_launch_from_launcher_exit.xml b/packages/SystemUI/res/anim/recents_launch_from_launcher_exit.xml index becc9d0b4fe6f..fa28cf42eee92 100644 --- a/packages/SystemUI/res/anim/recents_launch_from_launcher_exit.xml +++ b/packages/SystemUI/res/anim/recents_launch_from_launcher_exit.xml @@ -19,7 +19,7 @@ + android:zAdjustment="top"> + + + + + + diff --git a/packages/SystemUI/res/anim/wallpaper_recents_launch_from_launcher_exit.xml b/packages/SystemUI/res/anim/wallpaper_recents_launch_from_launcher_exit.xml new file mode 100644 index 0000000000000..fa28cf42eee92 --- /dev/null +++ b/packages/SystemUI/res/anim/wallpaper_recents_launch_from_launcher_exit.xml @@ -0,0 +1,28 @@ + + + + + + diff --git a/packages/SystemUI/res/values/styles.xml b/packages/SystemUI/res/values/styles.xml index 18c1c3400323d..1a59d6c765a48 100644 --- a/packages/SystemUI/res/values/styles.xml +++ b/packages/SystemUI/res/values/styles.xml @@ -16,6 +16,24 @@ + + + + + diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java index 577b1f4f1e2c7..c547cea288bd8 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java @@ -485,10 +485,8 @@ public abstract class BaseStatusBar extends SystemUI implements | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); if (firstTask == null) { - ActivityOptions opts = ActivityOptions.makeCustomAnimation(mContext, - R.anim.recents_launch_from_launcher_enter, - R.anim.recents_launch_from_launcher_exit); - mContext.startActivityAsUser(intent, opts.toBundle(), new UserHandle( + // The correct window animation will be applied via the activity's style + mContext.startActivityAsUser(intent, new UserHandle( UserHandle.USER_CURRENT)); } else { Bitmap first = firstTask.getThumbnail(); diff --git a/services/java/com/android/server/wm/WindowManagerService.java b/services/java/com/android/server/wm/WindowManagerService.java index e74b6db063399..945d65c9f93b7 100755 --- a/services/java/com/android/server/wm/WindowManagerService.java +++ b/services/java/com/android/server/wm/WindowManagerService.java @@ -3385,8 +3385,15 @@ public class WindowManagerService extends IWindowManager.Stub } else { // Exiting app if (scaleUp) { - // noop animation - a = new AlphaAnimation(1, 0); + if (transit == WindowManagerPolicy.TRANSIT_WALLPAPER_INTRA_OPEN) { + // Fade out while bringing up selected activity. This keeps the + // current activity from showing through a launching wallpaper + // activity. + a = new AlphaAnimation(1, 0); + } else { + // noop animation + a = new AlphaAnimation(1, 1); + } a.setDuration(duration); } else { float scaleW = thumbWidth / displayInfo.appWidth;