diff options
| author | 2015-10-14 13:57:55 -0700 | |
|---|---|---|
| committer | 2015-10-15 09:25:23 -0700 | |
| commit | efd3d1b41f5c9ced2b6eed4ab6f95a267bcde9f2 (patch) | |
| tree | b108dbc26aa71efb5775c8855bd3aa14f4383306 | |
| parent | b3a54f91fde6121b8bf07b57931fc5455be3ba42 (diff) | |
Fix misaligned from and to recents animation.
Because of the small translation that accounts for the status bar, the
animating window gets cropped at the beginning of from recents and at
the end of to recents animation.
Change-Id: I36878c6ff84903db05335890b03199878174c5af
| -rw-r--r-- | services/core/java/com/android/server/wm/AppTransition.java | 28 | ||||
| -rw-r--r-- | services/core/java/com/android/server/wm/WindowStateAnimator.java | 2 |
2 files changed, 12 insertions, 18 deletions
diff --git a/services/core/java/com/android/server/wm/AppTransition.java b/services/core/java/com/android/server/wm/AppTransition.java index cc51d204e98d..9f44fea94d4a 100644 --- a/services/core/java/com/android/server/wm/AppTransition.java +++ b/services/core/java/com/android/server/wm/AppTransition.java @@ -760,26 +760,24 @@ public class AppTransition implements Dump { a = createAspectScaledThumbnailEnterNonFullscreenAnimationLocked( containingFrame, surfaceInsets, taskId); } else { + mTmpFromClipRect.set(containingFrame); + // exclude top screen decor (status bar) region from the source clip. + mTmpFromClipRect.top = contentInsets.top; // App window scaling up to become full screen + mTmpToClipRect.set(containingFrame); if (orientation == Configuration.ORIENTATION_PORTRAIT) { // In portrait, we scale the width and clip to the top/left square scale = thumbWidth / appWidth; scaledTopDecor = (int) (scale * contentInsets.top); int unscaledThumbHeight = (int) (thumbHeight / scale); - mTmpFromClipRect.set(containingFrame); - mTmpFromClipRect.bottom = (mTmpFromClipRect.top + unscaledThumbHeight); - mTmpToClipRect.set(containingFrame); + mTmpFromClipRect.bottom = mTmpFromClipRect.top + unscaledThumbHeight; } else { // In landscape, we scale the height and clip to the top/left square scale = thumbHeight / (appHeight - contentInsets.top); scaledTopDecor = (int) (scale * contentInsets.top); int unscaledThumbWidth = (int) (thumbWidth / scale); - mTmpFromClipRect.set(containingFrame); - mTmpFromClipRect.right = (mTmpFromClipRect.left + unscaledThumbWidth); - mTmpToClipRect.set(containingFrame); + mTmpFromClipRect.right = mTmpFromClipRect.left + unscaledThumbWidth; } - // exclude top screen decor (status bar) region from the source clip. - mTmpFromClipRect.top = contentInsets.top; mNextAppTransitionInsets.set(contentInsets); @@ -821,25 +819,23 @@ public class AppTransition implements Dump { } case THUMBNAIL_TRANSITION_EXIT_SCALE_DOWN: { // App window scaling down from full screen + mTmpFromClipRect.set(containingFrame); + mTmpToClipRect.set(containingFrame); + // exclude top screen decor (status bar) region from the destination clip. + mTmpToClipRect.top = contentInsets.top; if (orientation == Configuration.ORIENTATION_PORTRAIT) { // In portrait, we scale the width and clip to the top/left square scale = thumbWidth / appWidth; scaledTopDecor = (int) (scale * contentInsets.top); int unscaledThumbHeight = (int) (thumbHeight / scale); - mTmpFromClipRect.set(containingFrame); - mTmpToClipRect.set(containingFrame); - mTmpToClipRect.bottom = (mTmpToClipRect.top + unscaledThumbHeight); + mTmpToClipRect.bottom = mTmpToClipRect.top + unscaledThumbHeight; } else { // In landscape, we scale the height and clip to the top/left square scale = thumbHeight / (appHeight - contentInsets.top); scaledTopDecor = (int) (scale * contentInsets.top); int unscaledThumbWidth = (int) (thumbWidth / scale); - mTmpFromClipRect.set(containingFrame); - mTmpToClipRect.set(containingFrame); - mTmpToClipRect.right = (mTmpToClipRect.left + unscaledThumbWidth); + mTmpToClipRect.right = mTmpToClipRect.left + unscaledThumbWidth; } - // exclude top screen decor (status bar) region from the destination clip. - mTmpToClipRect.top = contentInsets.top; mNextAppTransitionInsets.set(contentInsets); diff --git a/services/core/java/com/android/server/wm/WindowStateAnimator.java b/services/core/java/com/android/server/wm/WindowStateAnimator.java index 3c897fa519b8..191360426e94 100644 --- a/services/core/java/com/android/server/wm/WindowStateAnimator.java +++ b/services/core/java/com/android/server/wm/WindowStateAnimator.java @@ -1190,8 +1190,6 @@ class WindowStateAnimator { mDtDy = tmpFloats[Matrix.MSCALE_Y]; float x = tmpFloats[Matrix.MTRANS_X]; float y = tmpFloats[Matrix.MTRANS_Y]; - int w = frame.width(); - int h = frame.height(); mWin.mShownPosition.set((int) x, (int) y); // Now set the alpha... but because our current hardware |