diff options
-rw-r--r-- | services/core/java/com/android/server/wm/WindowStateAnimator.java | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/wm/WindowStateAnimator.java b/services/core/java/com/android/server/wm/WindowStateAnimator.java index b163abf9f20e..d2ea64c89a98 100644 --- a/services/core/java/com/android/server/wm/WindowStateAnimator.java +++ b/services/core/java/com/android/server/wm/WindowStateAnimator.java @@ -915,10 +915,15 @@ class WindowStateAnimator { if (attachedTransformation != null) { tmpMatrix.postConcat(attachedTransformation.getMatrix()); } - tmpMatrix.postTranslate(frame.left + mWin.mXOffset, frame.top + mWin.mYOffset); if (appTransformation != null) { tmpMatrix.postConcat(appTransformation.getMatrix()); } + + // The translation that applies the position of the window needs to be applied at the + // end in case that other translations include scaling. Otherwise the scaling will + // affect this translation. But it needs to be set before the screen rotation animation + // so the pivot point is at the center of the screen for all windows. + tmpMatrix.postTranslate(frame.left + mWin.mXOffset, frame.top + mWin.mYOffset); if (screenAnimation) { tmpMatrix.postConcat(screenRotationAnimation.getEnterTransformation().getMatrix()); } |