Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java +11 −2 Original line number Diff line number Diff line Loading @@ -1021,15 +1021,24 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump boolean aodWallpaperTimeout = (mState == ScrimState.AOD || mState == ScrimState.PULSING) && mWallpaperVisibilityTimedOut; // We also want to hide FLAG_SHOW_WHEN_LOCKED activities under the scrim. boolean occludedKeyguard = (mState == ScrimState.PULSING || mState == ScrimState.AOD) boolean hideFlagShowWhenLockedActivities = (mState == ScrimState.PULSING || mState == ScrimState.AOD) && mKeyguardOccluded; if (aodWallpaperTimeout || occludedKeyguard) { if (aodWallpaperTimeout || hideFlagShowWhenLockedActivities) { mBehindAlpha = 1; } // Prevent notification scrim flicker when transitioning away from keyguard. if (mKeyguardStateController.isKeyguardGoingAway()) { mNotificationsAlpha = 0; } // Prevent flickering for activities above keyguard and quick settings in keyguard. if (mKeyguardOccluded && (mState == ScrimState.KEYGUARD || mState == ScrimState.SHADE_LOCKED)) { mBehindAlpha = 0; mNotificationsAlpha = 0; } setScrimAlpha(mScrimInFront, mInFrontAlpha); setScrimAlpha(mScrimBehind, mBehindAlpha); setScrimAlpha(mNotificationsScrim, mNotificationsAlpha); Loading packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java +18 −0 Original line number Diff line number Diff line Loading @@ -1460,6 +1460,24 @@ public class ScrimControllerTest extends SysuiTestCase { .isEqualTo(ScrimState.KEYGUARD.getBehindTint()); } @Test public void testHidesScrimFlickerInActivity() { mScrimController.setKeyguardOccluded(true); mScrimController.transitionTo(ScrimState.KEYGUARD); finishAnimationsImmediately(); assertScrimAlpha(Map.of( mScrimInFront, TRANSPARENT, mScrimBehind, TRANSPARENT, mNotificationsScrim, TRANSPARENT)); mScrimController.transitionTo(ScrimState.SHADE_LOCKED); finishAnimationsImmediately(); assertScrimAlpha(Map.of( mScrimInFront, TRANSPARENT, mScrimBehind, TRANSPARENT, mNotificationsScrim, TRANSPARENT)); } private void assertAlphaAfterExpansion(ScrimView scrim, float expectedAlpha, float expansion) { mScrimController.setRawPanelExpansionFraction(expansion); finishAnimationsImmediately(); Loading Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java +11 −2 Original line number Diff line number Diff line Loading @@ -1021,15 +1021,24 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump boolean aodWallpaperTimeout = (mState == ScrimState.AOD || mState == ScrimState.PULSING) && mWallpaperVisibilityTimedOut; // We also want to hide FLAG_SHOW_WHEN_LOCKED activities under the scrim. boolean occludedKeyguard = (mState == ScrimState.PULSING || mState == ScrimState.AOD) boolean hideFlagShowWhenLockedActivities = (mState == ScrimState.PULSING || mState == ScrimState.AOD) && mKeyguardOccluded; if (aodWallpaperTimeout || occludedKeyguard) { if (aodWallpaperTimeout || hideFlagShowWhenLockedActivities) { mBehindAlpha = 1; } // Prevent notification scrim flicker when transitioning away from keyguard. if (mKeyguardStateController.isKeyguardGoingAway()) { mNotificationsAlpha = 0; } // Prevent flickering for activities above keyguard and quick settings in keyguard. if (mKeyguardOccluded && (mState == ScrimState.KEYGUARD || mState == ScrimState.SHADE_LOCKED)) { mBehindAlpha = 0; mNotificationsAlpha = 0; } setScrimAlpha(mScrimInFront, mInFrontAlpha); setScrimAlpha(mScrimBehind, mBehindAlpha); setScrimAlpha(mNotificationsScrim, mNotificationsAlpha); Loading
packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java +18 −0 Original line number Diff line number Diff line Loading @@ -1460,6 +1460,24 @@ public class ScrimControllerTest extends SysuiTestCase { .isEqualTo(ScrimState.KEYGUARD.getBehindTint()); } @Test public void testHidesScrimFlickerInActivity() { mScrimController.setKeyguardOccluded(true); mScrimController.transitionTo(ScrimState.KEYGUARD); finishAnimationsImmediately(); assertScrimAlpha(Map.of( mScrimInFront, TRANSPARENT, mScrimBehind, TRANSPARENT, mNotificationsScrim, TRANSPARENT)); mScrimController.transitionTo(ScrimState.SHADE_LOCKED); finishAnimationsImmediately(); assertScrimAlpha(Map.of( mScrimInFront, TRANSPARENT, mScrimBehind, TRANSPARENT, mNotificationsScrim, TRANSPARENT)); } private void assertAlphaAfterExpansion(ScrimView scrim, float expectedAlpha, float expansion) { mScrimController.setRawPanelExpansionFraction(expansion); finishAnimationsImmediately(); Loading