2D Recents: Fix issues with thumbnail scaling transitions
Draw the task view header again, make sure it is visible through the whole transition, and that it scales as appropriate. Bug: 33752154 Test: Checked/screencasted app -> recents -> app transitions. Change-Id: I9b87183cba51d5469ea9d45181bccfafeb85cff2
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user