summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jorim Jaggi <jjaggi@google.com> 2016-03-26 00:06:05 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2016-03-26 00:06:07 +0000
commit3c8a10fb92b51e3d677482d725479c24a2c7faee (patch)
tree3732f1f0e107fe6a797074913d9b6b92d6e04ec5
parentd26ee111720aebcad486dd1a37b5338040a4f915 (diff)
parent0907200095ec73e71c6520580a9b82126058ddf2 (diff)
Merge "Fix thumbnail disalignment on curved paths" into nyc-dev
-rw-r--r--services/core/java/com/android/server/wm/AppTransition.java32
-rw-r--r--services/core/java/com/android/server/wm/WindowSurfacePlacer.java2
2 files changed, 26 insertions, 8 deletions
diff --git a/services/core/java/com/android/server/wm/AppTransition.java b/services/core/java/com/android/server/wm/AppTransition.java
index 62fa013e1ee6..15a269138658 100644
--- a/services/core/java/com/android/server/wm/AppTransition.java
+++ b/services/core/java/com/android/server/wm/AppTransition.java
@@ -881,7 +881,7 @@ public class AppTransition implements Dump {
* when a thumbnail is specified with the pending animation override.
*/
Animation createThumbnailAspectScaleAnimationLocked(Rect appRect, @Nullable Rect contentInsets,
- Bitmap thumbnailHeader, final int taskId) {
+ Bitmap thumbnailHeader, final int taskId, int orientation) {
Animation a;
final int thumbWidthI = thumbnailHeader.getWidth();
final float thumbWidth = thumbWidthI > 0 ? thumbWidthI : 1;
@@ -890,12 +890,30 @@ public class AppTransition implements Dump {
float scaleW = appWidth / thumbWidth;
getNextAppTransitionStartRect(taskId, mTmpRect);
- final float toY = mTmpRect.height() / 2 * (scaleW - 1f) + appRect.top;
- final float fromY = mTmpRect.top;
- final float toX = mTmpRect.width() / 2 * (scaleW - 1f) + appRect.left;
- final float fromX = mTmpRect.left;
- final float pivotX = mTmpRect.width() / 2;
- final float pivotY = mTmpRect.height() / 2;
+ final float fromX;
+ final float fromY;
+ final float toX;
+ final float toY;
+ final float pivotX;
+ final float pivotY;
+ if (orientation == Configuration.ORIENTATION_PORTRAIT) {
+ fromX = mTmpRect.left;
+ fromY = mTmpRect.top;
+
+ // For the curved translate animation to work, the pivot points needs to be at the
+ // same absolute position as the one from the real surface.
+ toX = mTmpRect.width() / 2 * (scaleW - 1f) + appRect.left;
+ toY = appRect.height() / 2 * (1 - 1 / scaleW) + appRect.top;
+ pivotX = mTmpRect.width() / 2;
+ pivotY = appRect.height() / 2 / scaleW;
+ } else {
+ pivotX = 0;
+ pivotY = 0;
+ fromX = mTmpRect.left;
+ fromY = mTmpRect.top;
+ toX = appRect.left;
+ toY = appRect.top;
+ }
final long duration = getAspectScaleDuration();
final Interpolator interpolator = getAspectScaleInterpolator();
if (mNextAppTransitionScaleUp) {
diff --git a/services/core/java/com/android/server/wm/WindowSurfacePlacer.java b/services/core/java/com/android/server/wm/WindowSurfacePlacer.java
index 5ff061387314..3b0081d6376f 100644
--- a/services/core/java/com/android/server/wm/WindowSurfacePlacer.java
+++ b/services/core/java/com/android/server/wm/WindowSurfacePlacer.java
@@ -1582,7 +1582,7 @@ class WindowSurfacePlacer {
// synchronize its thumbnail surface with the surface for the
// open/close animation (only on the way down)
anim = mService.mAppTransition.createThumbnailAspectScaleAnimationLocked(appRect,
- insets, thumbnailHeader, taskId);
+ insets, thumbnailHeader, taskId, mService.mCurConfiguration.orientation);
openingAppAnimator.thumbnailForceAboveLayer = Math.max(openingLayer, closingLayer);
openingAppAnimator.deferThumbnailDestruction =
!mService.mAppTransition.isNextThumbnailTransitionScaleUp();