From 8c091c7d6b1d64d686317c6e8b36345bcadfa84f Mon Sep 17 00:00:00 2001 From: Aaron Liu Date: Thu, 13 Oct 2022 18:43:49 -0700 Subject: [PATCH] [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 --- .../KeyguardSecurityViewTransition.kt | 33 +++++++------------ 1 file changed, 11 insertions(+), 22 deletions(-) diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityViewTransition.kt b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityViewTransition.kt index 9eb2c118abac7..c9128e5881ccf 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityViewTransition.kt +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityViewTransition.kt @@ -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 - ) } } }