From 334ebcea1bd4c211b288878881610c5191cb30b3 Mon Sep 17 00:00:00 2001 From: Aaron Liu Date: Thu, 20 Jul 2023 15:14:36 -0700 Subject: [PATCH] Fix user switcher flicker. User switcher flickers when bouncer shows scrimmed. This is because when the bouncer hides, the alpha of the view is considered to be 1f. When we are showing the bouncer, we are asynchronously inflating the view and waiting for this operation to complete to start the appear animation. In order to fix this, we reset the view before making this async call to ensure that the view alpha is 0f. It will be set to 1f in #appear. Fixes: 290355544 Test: test pattern, pin, password back button and success. Change-Id: I1680d66336b5b6d5d1065c85ac4b09ca56e12d7a Merged-In: I1680d66336b5b6d5d1065c85ac4b09ca56e12d7a (cherry picked from commit dc072507d0f52deb7e23ca5618816dbf18952204) --- .../src/com/android/keyguard/KeyguardSecurityContainer.java | 2 ++ .../systemui/keyguard/ui/binder/KeyguardBouncerViewBinder.kt | 2 ++ 2 files changed, 4 insertions(+) diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java index 841b5b3a1e82a..b2d8113a40284 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java @@ -1192,6 +1192,8 @@ public class KeyguardSecurityContainer extends ConstraintLayout { }); mPopup.show(); }); + + mUserSwitcherViewGroup.setAlpha(0f); } @Override diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardBouncerViewBinder.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardBouncerViewBinder.kt index c1aefc7bcbd73..bdce7d4fc9d71 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardBouncerViewBinder.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardBouncerViewBinder.kt @@ -112,6 +112,8 @@ object KeyguardBouncerViewBinder { viewModel.isShowing.collect { isShowing -> view.visibility = if (isShowing) View.VISIBLE else View.INVISIBLE if (isShowing) { + // Reset security container because these views are not reinflated. + securityContainerController.reset() securityContainerController.reinflateViewFlipper { // Reset Security Container entirely. securityContainerController.onBouncerVisibilityChanged(