am c8179e78: Merge "Improve transition out of recents" into jb-dev

* commit 'c8179e78052af3d68725e1160214a736f143f8a2':
  Improve transition out of recents
diff --git a/packages/SystemUI/res/layout-land/status_bar_recent_panel.xml b/packages/SystemUI/res/layout-land/status_bar_recent_panel.xml
index 869b164..8a21117 100644
--- a/packages/SystemUI/res/layout-land/status_bar_recent_panel.xml
+++ b/packages/SystemUI/res/layout-land/status_bar_recent_panel.xml
@@ -27,12 +27,6 @@
     systemui:recentItemLayout="@layout/status_bar_recent_item"
     >
 
-    <ImageView
-        android:id="@+id/recents_transition_placeholder_icon"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:visibility="invisible" />
-
     <FrameLayout
         android:id="@+id/recents_bg_protect"
         android:background="@drawable/status_bar_recents_background"
@@ -42,6 +36,12 @@
         android:clipToPadding="false"
         android:clipChildren="false">
 
+        <ImageView
+            android:id="@+id/recents_transition_placeholder_icon"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:visibility="invisible" />
+
         <com.android.systemui.recent.RecentsHorizontalScrollView android:id="@+id/recents_container"
             android:layout_width="wrap_content"
             android:layout_height="match_parent"
diff --git a/packages/SystemUI/res/layout-port/status_bar_recent_panel.xml b/packages/SystemUI/res/layout-port/status_bar_recent_panel.xml
index fc9fcf4..1d29c5a 100644
--- a/packages/SystemUI/res/layout-port/status_bar_recent_panel.xml
+++ b/packages/SystemUI/res/layout-port/status_bar_recent_panel.xml
@@ -27,12 +27,6 @@
     systemui:recentItemLayout="@layout/status_bar_recent_item"
     >
 
-    <ImageView
-        android:id="@+id/recents_transition_placeholder_icon"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:visibility="invisible" />
-
     <FrameLayout
         android:id="@+id/recents_bg_protect"
         android:background="@drawable/status_bar_recents_background"
@@ -40,6 +34,12 @@
         android:layout_height="match_parent"
         android:layout_alignParentBottom="true">
 
+        <ImageView
+            android:id="@+id/recents_transition_placeholder_icon"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:visibility="invisible" />
+
         <com.android.systemui.recent.RecentsVerticalScrollView
             android:id="@+id/recents_container"
             android:layout_width="match_parent"
diff --git a/packages/SystemUI/src/com/android/systemui/recent/Choreographer.java b/packages/SystemUI/src/com/android/systemui/recent/Choreographer.java
index a8c2020..ccdf038 100644
--- a/packages/SystemUI/src/com/android/systemui/recent/Choreographer.java
+++ b/packages/SystemUI/src/com/android/systemui/recent/Choreographer.java
@@ -102,12 +102,14 @@
             builder.with(noRecentAppsFadeAnim);
         }
 
-        Drawable background = mScrimView.getBackground();
-        if (background != null) {
-            Animator bgAnim = ObjectAnimator.ofInt(background,
-                "alpha", appearing ? 0 : 255, appearing ? 255 : 0);
-            bgAnim.setDuration(appearing ? SCRIM_DURATION : CLOSE_DURATION);
-            builder.with(bgAnim);
+        if (appearing) {
+            Drawable background = mScrimView.getBackground();
+            if (background != null) {
+                Animator bgAnim = ObjectAnimator.ofInt(background,
+                    "alpha", appearing ? 0 : 255, appearing ? 255 : 0);
+                bgAnim.setDuration(appearing ? SCRIM_DURATION : CLOSE_DURATION);
+                builder.with(bgAnim);
+            }
         }
         mContentAnim.addListener(this);
         if (mListener != null) {
diff --git a/packages/SystemUI/src/com/android/systemui/recent/RecentsPanelView.java b/packages/SystemUI/src/com/android/systemui/recent/RecentsPanelView.java
index feb1ac8..6785c29 100644
--- a/packages/SystemUI/src/com/android/systemui/recent/RecentsPanelView.java
+++ b/packages/SystemUI/src/com/android/systemui/recent/RecentsPanelView.java
@@ -469,7 +469,7 @@
             Display d = ((WindowManager)mContext.getSystemService(Context.WINDOW_SERVICE))
                 .getDefaultDisplay();
             if (!ActivityManager.isHighEndGfx(d)) {
-                mRecentsScrim.setBackgroundDrawable(null);
+                mRecentsScrim.setBackground(null);
             } else if (mRecentsScrim.getBackground() instanceof BitmapDrawable) {
                 // In order to save space, we make the background texture repeat in the Y direction
                 ((BitmapDrawable) mRecentsScrim.getBackground()).setTileModeY(TileMode.REPEAT);
diff --git a/services/java/com/android/server/wm/WindowManagerService.java b/services/java/com/android/server/wm/WindowManagerService.java
index c90c0c7..8c917c1 100755
--- a/services/java/com/android/server/wm/WindowManagerService.java
+++ b/services/java/com/android/server/wm/WindowManagerService.java
@@ -3221,28 +3221,23 @@
             // Entering app zooms out from the center of the thumbnail.
             float scaleW = thumbWidth / mAppDisplayWidth;
             float scaleH = thumbHeight / mAppDisplayHeight;
-            AnimationSet set = new AnimationSet(true);
             Animation scale = new ScaleAnimation(scaleW, 1, scaleH, 1,
                     computePivot(mNextAppTransitionStartX, scaleW),
                     computePivot(mNextAppTransitionStartY, scaleH));
             scale.setDuration(duration);
             scale.setFillBefore(true);
-            set.addAnimation(scale);
-            // Need to set an alpha animation on the entering app window
-            // in case it appears one frame before the thumbnail window
-            // (this solves flicker)
-            Animation alpha = new AlphaAnimation(0, 1);
-            alpha.setDuration(1);
-            alpha.setFillAfter(true);
-            set.addAnimation(alpha);
-            a = set;
             if (delayDuration > 0) {
-                a.setStartOffset(delayDuration);
+                scale.setStartOffset(delayDuration);
             }
+            a = scale;
         } else {
-            a = createExitAnimationLocked(transit, duration);
-            if (delayDuration > 0) {
-                a.setStartOffset(delayDuration);
+            if (delayed) {
+                a = new AlphaAnimation(1, 0);
+                a.setStartOffset(0);
+                a.setDuration(delayDuration - 50);
+                a.setBackgroundColor(0xFF000000);
+            } else {
+                a = createExitAnimationLocked(transit, duration);
             }
         }
         a.setFillAfter(true);