diff --git a/packages/SystemUI/src/com/android/systemui/recents/RecentsImpl.java b/packages/SystemUI/src/com/android/systemui/recents/RecentsImpl.java index 0e42a54c98da1..4cfdc3d1f4177 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/RecentsImpl.java +++ b/packages/SystemUI/src/com/android/systemui/recents/RecentsImpl.java @@ -733,11 +733,7 @@ public class RecentsImpl implements ActivityOptions.OnAnimationFinishedListener Task toTask = new Task(); TaskViewTransform toTransform = getThumbnailTransitionTransform(stackView, toTask, windowOverrideRect); - // When using a grid layout, the header is already visible on screen at the target - // location, making it unnecessary to draw it in the transition thumbnail. - Bitmap thumbnail = stackView.useGridLayout() - ? mThumbTransitionBitmapCache.createAshmemBitmap() - : drawThumbnailTransitionBitmap(toTask, toTransform, + Bitmap thumbnail = drawThumbnailTransitionBitmap(toTask, toTransform, mThumbTransitionBitmapCache); if (thumbnail != null) { RectF toTaskRect = toTransform.rect; diff --git a/services/core/java/com/android/server/wm/AppTransition.java b/services/core/java/com/android/server/wm/AppTransition.java index 24f9eb705a3b2..d8e0b0b84281e 100644 --- a/services/core/java/com/android/server/wm/AppTransition.java +++ b/services/core/java/com/android/server/wm/AppTransition.java @@ -925,9 +925,9 @@ public class AppTransition implements Dump { float scaleW = appWidth / thumbWidth; getNextAppTransitionStartRect(taskId, mTmpRect); final float fromX; - final float fromY; + float fromY; final float toX; - final float toY; + float toY; final float pivotX; final float pivotY; if (shouldScaleDownThumbnailTransition(uiMode, orientation)) { @@ -940,6 +940,12 @@ public class AppTransition implements Dump { toY = appRect.height() / 2 * (1 - 1 / scaleW) + appRect.top; pivotX = mTmpRect.width() / 2; pivotY = appRect.height() / 2 / scaleW; + if (mGridLayoutRecentsEnabled) { + // In the grid layout, the header is displayed above the thumbnail instead of + // overlapping it. + fromY -= thumbHeightI; + toY -= thumbHeightI * scaleW; + } } else { pivotX = 0; pivotY = 0; @@ -988,7 +994,10 @@ public class AppTransition implements Dump { // This AnimationSet uses the Interpolators assigned above. AnimationSet set = new AnimationSet(false); set.addAnimation(scale); - set.addAnimation(alpha); + if (!mGridLayoutRecentsEnabled) { + // In the grid layout, the header should be shown for the whole animation. + set.addAnimation(alpha); + } set.addAnimation(translate); set.addAnimation(clipAnim); a = set; @@ -1007,7 +1016,10 @@ public class AppTransition implements Dump { // This AnimationSet uses the Interpolators assigned above. AnimationSet set = new AnimationSet(false); set.addAnimation(scale); - set.addAnimation(alpha); + if (!mGridLayoutRecentsEnabled) { + // In the grid layout, the header should be shown for the whole animation. + set.addAnimation(alpha); + } set.addAnimation(translate); a = set;