diff --git a/quickstep/src/com/android/quickstep/TaskViewUtils.java b/quickstep/src/com/android/quickstep/TaskViewUtils.java index b7252bc772..67de4b1679 100644 --- a/quickstep/src/com/android/quickstep/TaskViewUtils.java +++ b/quickstep/src/com/android/quickstep/TaskViewUtils.java @@ -22,6 +22,8 @@ import static android.view.WindowManager.TRANSIT_OPEN; import static android.view.WindowManager.TRANSIT_TO_FRONT; import static com.android.launcher3.LauncherAnimUtils.VIEW_ALPHA; +import static com.android.launcher3.LauncherAnimUtils.VIEW_TRANSLATE_X; +import static com.android.launcher3.LauncherAnimUtils.VIEW_TRANSLATE_Y; import static com.android.launcher3.LauncherState.BACKGROUND_APP; import static com.android.launcher3.LauncherState.NORMAL; import static com.android.launcher3.QuickstepTransitionManager.ANIMATION_DELAY_NAV_FADE_IN; @@ -330,6 +332,17 @@ public final class TaskViewUtils { Matrix localMti = new Matrix(); localMt.invert(localMti); mti[i] = localMti; + + // Translations for child thumbnails also get scaled as the parent taskView scales + // Add inverse scaling to keep translations the same + float translationY = ttv.getTranslationY(); + float translationX = ttv.getTranslationX(); + float fullScreenScale = + topMostSimulators[i].getTaskViewSimulator().getFullScreenScale(); + out.addFloat(ttv, VIEW_TRANSLATE_Y, translationY, + translationY / fullScreenScale, TOUCH_RESPONSE_INTERPOLATOR); + out.addFloat(ttv, VIEW_TRANSLATE_X, translationX, + translationX / fullScreenScale, TOUCH_RESPONSE_INTERPOLATOR); } Matrix[] k0i = new Matrix[matrixSize]; diff --git a/src/com/android/launcher3/Utilities.java b/src/com/android/launcher3/Utilities.java index b10256e53d..d7e84f0306 100644 --- a/src/com/android/launcher3/Utilities.java +++ b/src/com/android/launcher3/Utilities.java @@ -723,4 +723,14 @@ public final class Utilities { } return options; } + + /** Logs the Scale and Translate properties of a matrix. Ignores skew and perspective. */ + public static void logMatrix(String label, Matrix matrix) { + float[] matrixValues = new float[9]; + matrix.getValues(matrixValues); + Log.d(label, String.format("%s: %s\nscale (x,y) = (%f, %f)\ntranslate (x,y) = (%f, %f)", + label, matrix, matrixValues[Matrix.MSCALE_X], matrixValues[Matrix.MSCALE_Y], + matrixValues[Matrix.MTRANS_X], matrixValues[Matrix.MTRANS_Y] + )); + } }