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

Commit e966da69 authored by Johannes Gallmann's avatar Johannes Gallmann Committed by Android (Google) Code Review
Browse files

Merge "Make BackAnimationSpec respect DisplayMetrics changes" into main

parents 6ff93760 5e50b562
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -711,7 +711,6 @@ private class AnimatedDialog(
        dialog.setDismissOverride(this::onDialogDismissed)

        if (featureFlags.isPredictiveBackQsDialogAnim) {
            // TODO(b/265923095) Improve animations for QS dialogs on configuration change
            dialog.registerAnimationOnBackInvoked(targetView = dialogContentWithBackground)
        }

+12 −11
Original line number Diff line number Diff line
@@ -37,7 +37,7 @@ fun interface BackAnimationSpec {

/** Create a [BackAnimationSpec] from [displayMetrics] and design specs. */
fun BackAnimationSpec.Companion.createFloatingSurfaceAnimationSpec(
    displayMetrics: DisplayMetrics,
    displayMetricsProvider: () -> DisplayMetrics,
    maxMarginXdp: Float,
    maxMarginYdp: Float,
    minScale: Float,
@@ -45,6 +45,8 @@ fun BackAnimationSpec.Companion.createFloatingSurfaceAnimationSpec(
    translateYEasing: Interpolator = Interpolators.LINEAR,
    scaleEasing: Interpolator = Interpolators.STANDARD_DECELERATE,
): BackAnimationSpec {
    return BackAnimationSpec { backEvent, progressY, result ->
        val displayMetrics = displayMetricsProvider()
        val screenWidthPx = displayMetrics.widthPixels
        val screenHeightPx = displayMetrics.heightPixels

@@ -56,7 +58,6 @@ fun BackAnimationSpec.Companion.createFloatingSurfaceAnimationSpec(
        val maxTranslationY = maxTranslationYByScale - maxMarginYPx
        val minScaleReversed = 1f - minScale

    return BackAnimationSpec { backEvent, progressY, result ->
        val direction = if (backEvent.swipeEdge == BackEvent.EDGE_LEFT) 1 else -1
        val progressX = backEvent.progress

+8 −8
Original line number Diff line number Diff line
@@ -23,10 +23,10 @@ import android.util.DisplayMetrics
 * https://carbon.googleplex.com/predictive-back-for-apps/pages/st-1-dismiss-app
 */
fun BackAnimationSpec.Companion.dismissAppForSysUi(
    displayMetrics: DisplayMetrics,
    displayMetricsProvider: () -> DisplayMetrics,
): BackAnimationSpec =
    BackAnimationSpec.createFloatingSurfaceAnimationSpec(
        displayMetrics = displayMetrics,
        displayMetricsProvider = displayMetricsProvider,
        maxMarginXdp = 8f,
        maxMarginYdp = 8f,
        minScale = 0.8f,
@@ -37,10 +37,10 @@ fun BackAnimationSpec.Companion.dismissAppForSysUi(
 * https://carbon.googleplex.com/predictive-back-for-apps/pages/st-2-cross-task
 */
fun BackAnimationSpec.Companion.crossTaskForSysUi(
    displayMetrics: DisplayMetrics,
    displayMetricsProvider: () -> DisplayMetrics,
): BackAnimationSpec =
    BackAnimationSpec.createFloatingSurfaceAnimationSpec(
        displayMetrics = displayMetrics,
        displayMetricsProvider = displayMetricsProvider,
        maxMarginXdp = 8f,
        maxMarginYdp = 8f,
        minScale = 0.8f,
@@ -51,10 +51,10 @@ fun BackAnimationSpec.Companion.crossTaskForSysUi(
 * https://carbon.googleplex.com/predictive-back-for-apps/pages/st-3-inner-area-dismiss
 */
fun BackAnimationSpec.Companion.innerAreaDismissForSysUi(
    displayMetrics: DisplayMetrics,
    displayMetricsProvider: () -> DisplayMetrics,
): BackAnimationSpec =
    BackAnimationSpec.createFloatingSurfaceAnimationSpec(
        displayMetrics = displayMetrics,
        displayMetricsProvider = displayMetricsProvider,
        maxMarginXdp = 0f,
        maxMarginYdp = 0f,
        minScale = 0.9f,
@@ -65,10 +65,10 @@ fun BackAnimationSpec.Companion.innerAreaDismissForSysUi(
 * https://carbon.googleplex.com/predictive-back-for-apps/pages/st-4-floating-system-surfaces
 */
fun BackAnimationSpec.Companion.floatingSystemSurfacesForSysUi(
    displayMetrics: DisplayMetrics,
    displayMetricsProvider: () -> DisplayMetrics,
): BackAnimationSpec =
    BackAnimationSpec.createFloatingSurfaceAnimationSpec(
        displayMetrics = displayMetrics,
        displayMetricsProvider = displayMetricsProvider,
        maxMarginXdp = 8f,
        maxMarginYdp = 8f,
        minScale = 0.9f,
+1 −1
Original line number Diff line number Diff line
@@ -39,7 +39,7 @@ fun Dialog.registerAnimationOnBackInvoked(
    targetView: View,
    backAnimationSpec: BackAnimationSpec =
        BackAnimationSpec.floatingSystemSurfacesForSysUi(
            displayMetrics = targetView.resources.displayMetrics,
            displayMetricsProvider = { targetView.resources.displayMetrics },
        ),
) {
    targetView.registerOnBackInvokedCallbackOnViewAttached(
+1 −1
Original line number Diff line number Diff line
@@ -27,7 +27,7 @@ class BackAnimationSpecTest : SysuiTestCase() {
        val maxY = 14.0f
        val minScale = 0.9f

        val backAnimationSpec = BackAnimationSpec.floatingSystemSurfacesForSysUi(displayMetrics)
        val backAnimationSpec = BackAnimationSpec.floatingSystemSurfacesForSysUi { displayMetrics }

        assertBackTransformation(
            backAnimationSpec = backAnimationSpec,
Loading