Improves overview split adjacent launch animation
* Translation gets scaled along with the parent, so the secondary thumbnailView which has a translate on it gets exaggerated as the parent goes to fullscreen scale. * Now we inversely scale translationX/Y properties, however it seems like the interpolation is still slighly off at the beginning of the animation (or maybe some other value, such as pivot, etc) Bug: 260814999 Test: Manually slowed down animation and observed Change-Id: I831476b4ffb582fecbd166525ceea33623e66bdd
This commit is contained in:
@@ -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];
|
||||
|
||||
@@ -768,4 +768,14 @@ public final class Utilities {
|
||||
public static float getYVelocity(VelocityTracker velocityTracker, MotionEvent event) {
|
||||
return getYVelocity(velocityTracker, event, -1 /* ACTIVE_POINTER_ID */);
|
||||
}
|
||||
|
||||
/** 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]
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user