Merge "[Scrim] Remove notif scrim flicker on unlock" into tm-dev

This commit is contained in:
Aaron Liu
2022-04-19 14:41:17 +00:00
committed by Android (Google) Code Review
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();