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

Commit 8c091c7d authored by Aaron Liu's avatar Aaron Liu
Browse files

[Bouncer] Add better way to determine inflection.

It seems that the scenario test failed because it could never reach the
threshold to determine whether the element should fade back in on the
other side. I found a way more elegant approach here.

This is confirmed to fix the scenario test and is way better.

Fixes: 253470463
Test: atest
Change-Id: I5c1d1260d3c9d343fd38ee1ff6e3c72edf161dea
parent 2689585c
Loading
Loading
Loading
Loading
+11 −22
Original line number Diff line number Diff line
@@ -109,12 +109,13 @@ class KeyguardSecurityViewTransition : Transition() {
            object : AnimatorListenerAdapter() {
                override fun onAnimationEnd(animation: Animator) {
                    runningSecurityShiftAnimator = null
                    if (shouldRestoreLayerType) {
                        v.setLayerType(View.LAYER_TYPE_NONE, /* paint= */ null)
                    }
                }
            }
        )

        var finishedFadingOutNonSecurityView = false

        runningSecurityShiftAnimator.addUpdateListener { animation: ValueAnimator ->
            val switchPoint = SECURITY_SHIFT_ANIMATION_FADE_OUT_PROPORTION
            val isFadingOut = animation.animatedFraction < switchPoint
@@ -153,6 +154,13 @@ class KeyguardSecurityViewTransition : Transition() {
                        startRect.right + currentTranslation,
                        startRect.bottom
                    )
                } else {
                    v.setLeftTopRightBottom(
                        startRect.left,
                        startRect.top,
                        startRect.right,
                        startRect.bottom
                    )
                }
            } else {
                // And in again over the remaining (100-X)%.
@@ -175,32 +183,13 @@ class KeyguardSecurityViewTransition : Transition() {
                        endRect.right - translationRemaining,
                        endRect.bottom
                    )
                }
            }
            if (animation.animatedFraction == 1.0f && shouldRestoreLayerType) {
                v.setLayerType(View.LAYER_TYPE_NONE, /* paint= */ null)
            }

            // For views that are not the security view flipper, we do not want to apply
            // an x translation animation. Instead, we want to fade out, move to final position and
            // then fade in.
            if (v !is KeyguardSecurityViewFlipper) {
                // Opacity goes close to 0 but does not fully get to 0.
                if (opacity - 0.001f < 0f) {
                } else {
                    v.setLeftTopRightBottom(
                        endRect.left,
                        endRect.top,
                        endRect.right,
                        endRect.bottom
                    )
                    finishedFadingOutNonSecurityView = true
                } else if (!finishedFadingOutNonSecurityView) {
                    v.setLeftTopRightBottom(
                        startRect.left,
                        startRect.top,
                        startRect.right,
                        startRect.bottom
                    )
                }
            }
        }