[Scrim] Remove notif scrim flicker on unlock

We just keep notif scrim alpha to 0 when we are on keyguard and we are
not transitioning to full shade. This will prevent the notification
shade from showing when tracking on the lockscreen.

Bug: 201040592
Test: Manual on devices of multiple form factors:
	Launch notif from LS - portrait and landscape
	Launch UserSwitcher From LS - portrait and landscape
	Show pin bouncer in LS
	Swipe to unlock - portrait and landscape

Change-Id: I0cfa7cd40b69c5c9ea7eeb708f1a073f307918cb
This commit is contained in:
Aaron Liu
2022-04-18 17:29:07 +00:00
parent d248c68122
commit 99b958d581
2 changed files with 17 additions and 1 deletions

View File

@@ -850,7 +850,11 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump
// At the end of a launch animation over the lockscreen, the state is either KEYGUARD or
// SHADE_LOCKED and this code is called. We have to set the notification alpha to 0
// otherwise there is a flicker to its previous value.
if (mKeyguardOccluded) {
boolean hideNotificationScrim = (mState == ScrimState.KEYGUARD
&& mTransitionToFullShadeProgress == 0
&& mQsExpansion == 0
&& !mClipsQsScrim);
if (mKeyguardOccluded || hideNotificationScrim) {
mNotificationsAlpha = 0;
}
if (mUnOcclusionAnimationRunning && mState == ScrimState.KEYGUARD) {

View File

@@ -1270,6 +1270,7 @@ public class ScrimControllerTest extends SysuiTestCase {
@Test
public void notificationAlpha_unnocclusionAnimating_bouncerActive_usesKeyguardNotifAlpha() {
when(mStatusBarKeyguardViewManager.isBouncerInTransit()).thenReturn(true);
mScrimController.setClipsQsScrim(true);
mScrimController.transitionTo(ScrimState.KEYGUARD);
mScrimController.setUnocclusionAnimationRunning(true);
@@ -1312,6 +1313,7 @@ public class ScrimControllerTest extends SysuiTestCase {
@Test
public void notificationAlpha_inKeyguardState_bouncerActive_usesInvertedBouncerInterpolator() {
when(mStatusBarKeyguardViewManager.isBouncerInTransit()).thenReturn(true);
mScrimController.setClipsQsScrim(true);
mScrimController.transitionTo(ScrimState.KEYGUARD);
@@ -1331,6 +1333,7 @@ public class ScrimControllerTest extends SysuiTestCase {
@Test
public void notificationAlpha_inKeyguardState_bouncerNotActive_usesInvertedShadeInterpolator() {
when(mStatusBarKeyguardViewManager.isBouncerInTransit()).thenReturn(false);
mScrimController.setClipsQsScrim(true);
mScrimController.transitionTo(ScrimState.KEYGUARD);
@@ -1478,6 +1481,15 @@ public class ScrimControllerTest extends SysuiTestCase {
mNotificationsScrim, TRANSPARENT));
}
@Test
public void notificationAlpha_inKeyguardState_bouncerNotActive_clipsQsScrimFalse() {
mScrimController.setClipsQsScrim(false);
mScrimController.transitionTo(ScrimState.KEYGUARD);
float expansion = 0.8f;
assertAlphaAfterExpansion(mNotificationsScrim, 0f, expansion);
}
private void assertAlphaAfterExpansion(ScrimView scrim, float expectedAlpha, float expansion) {
mScrimController.setRawPanelExpansionFraction(expansion);
finishAnimationsImmediately();