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

Commit d9064b4b authored by Massimo Carli's avatar Massimo Carli
Browse files

[34/n] Satisfy motion requirements for reachability

Letterbox Reachability animation need to use an
EMPHASIZED interpolator and a duration of 500ms.

Flag: com.android.window.flags.app_compat_refactoring
Bug: 389629565
Test: Manual

Change-Id: I53116f3284bbd3d640c3a72ef4ed45779d5529e7
parent a22bc30f
Loading
Loading
Loading
Loading
+46 −39
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import android.view.SurfaceControl.Transaction
import android.window.TransitionInfo
import android.window.TransitionRequestInfo
import android.window.WindowContainerTransaction
import com.android.app.animation.Interpolators
import com.android.internal.protolog.ProtoLog
import com.android.window.flags.Flags.appCompatRefactoring
import com.android.wm.shell.common.ShellExecutor
@@ -57,8 +58,12 @@ class LetterboxAnimationHandler @Inject constructor(
    companion object {
        @JvmStatic
        private val TAG = "LetterboxAnimationHandler"

        @JvmStatic
        private val ANIMATION_DURATION_MS = 500L

        @JvmStatic
        private val ANIMATION_DURATION = 400L
        private val ANIMATION_INTERPOLATOR = Interpolators.EMPHASIZED
    }

    private var boundsAnimator: ValueAnimator? = null
@@ -114,9 +119,10 @@ class LetterboxAnimationHandler @Inject constructor(
                finalX + startBounds.width(),
                finalY + startBounds.height()
            )
            boundsAnimator = ValueAnimator.ofObject(rectEvaluator, startBounds, endBounds)
                .setDuration(ANIMATION_DURATION)
            boundsAnimator?.addListener(object : Animator.AnimatorListener {
            ValueAnimator.ofObject(rectEvaluator, startBounds, endBounds)
                .setDuration(ANIMATION_DURATION_MS).apply {
                    setInterpolator { value -> ANIMATION_INTERPOLATOR.getInterpolation(value) }
                    addListener(object : Animator.AnimatorListener {
                        override fun onAnimationStart(animation: Animator) {
                        }

@@ -132,9 +138,9 @@ class LetterboxAnimationHandler @Inject constructor(
                        override fun onAnimationRepeat(animation: Animator) {
                        }
                    })
            boundsAnimator?.addUpdateListener { animation ->
                    addUpdateListener { animation ->
                        val rect =
                    animation.getAnimatedValue() as Rect
                            animation.animatedValue as Rect

                        for (c in info.changes) {
                            tx.setPosition(
@@ -155,7 +161,8 @@ class LetterboxAnimationHandler @Inject constructor(
                        for (c in info.changes) {
                            tx.show(c.leash).apply()
                        }
                boundsAnimator?.start()
                        start()
                    }
                }
            return true
        }