diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java index 58634af5430ab..a98ec58dc94c4 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java @@ -1024,6 +1024,10 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump if (aodWallpaperTimeout || occludedKeyguard) { mBehindAlpha = 1; } + // Prevent notification scrim flicker when transitioning away from keyguard. + if (mKeyguardStateController.isKeyguardGoingAway()) { + mNotificationsAlpha = 0; + } setScrimAlpha(mScrimInFront, mInFrontAlpha); setScrimAlpha(mScrimBehind, mBehindAlpha); setScrimAlpha(mNotificationsScrim, mNotificationsAlpha); diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java index 08f14aec132e1..81a5f11b15534 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java @@ -1360,6 +1360,15 @@ public class ScrimControllerTest extends SysuiTestCase { )); } + @Test + public void keyguardGoingAwayUpdateScrims() { + when(mKeyguardStateController.isKeyguardGoingAway()).thenReturn(true); + mScrimController.updateScrims(); + finishAnimationsImmediately(); + assertThat(mNotificationsScrim.getViewAlpha()).isEqualTo(TRANSPARENT); + } + + private void assertAlphaAfterExpansion(ScrimView scrim, float expectedAlpha, float expansion) { mScrimController.setRawPanelExpansionFraction(expansion); finishAnimationsImmediately();