Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit da2819ed authored by Vinit Nayak's avatar Vinit Nayak
Browse files

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
Merged-In: I831476b4ffb582fecbd166525ceea33623e66bdd
parent 19aeae3e
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -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];
+10 −0
Original line number Diff line number Diff line
@@ -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]
        ));
    }
}