Merge "Update opacity of LightRevealScrim" into sc-dev

This commit is contained in:
Beverly Tai
2021-06-22 14:32:30 +00:00
committed by Android (Google) Code Review
4 changed files with 46 additions and 23 deletions

View File

@@ -1242,6 +1242,9 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump
pw.println(mDefaultScrimAlpha); pw.println(mDefaultScrimAlpha);
pw.print(" mExpansionFraction="); pw.print(" mExpansionFraction=");
pw.println(mPanelExpansion); pw.println(mPanelExpansion);
pw.print(" mState.getMaxLightRevealScrimAlpha=");
pw.println(mState.getMaxLightRevealScrimAlpha());
} }
public void setWallpaperSupportsAmbientMode(boolean wallpaperSupportsAmbientMode) { public void setWallpaperSupportsAmbientMode(boolean wallpaperSupportsAmbientMode) {

View File

@@ -197,7 +197,7 @@ public enum ScrimState {
} }
@Override @Override
public float getBehindAlpha() { public float getMaxLightRevealScrimAlpha() {
return mWallpaperSupportsAmbientMode && !mHasBackdrop ? 0f : 1f; return mWallpaperSupportsAmbientMode && !mHasBackdrop ? 0f : 1f;
} }
@@ -220,18 +220,11 @@ public enum ScrimState {
mBlankScreen = mDisplayRequiresBlanking; mBlankScreen = mDisplayRequiresBlanking;
mAnimationDuration = mWakeLockScreenSensorActive mAnimationDuration = mWakeLockScreenSensorActive
? ScrimController.ANIMATION_DURATION_LONG : ScrimController.ANIMATION_DURATION; ? ScrimController.ANIMATION_DURATION_LONG : ScrimController.ANIMATION_DURATION;
// Wake sensor will show the wallpaper, let's fade from black. Otherwise it will
// feel like the screen is flashing if the wallpaper is light.
if (mWakeLockScreenSensorActive && previousState == AOD) {
updateScrimColor(mScrimBehind, 1f /* alpha */, Color.BLACK);
}
} }
@Override @Override
public float getBehindAlpha() { public float getMaxLightRevealScrimAlpha() {
return mWakeLockScreenSensorActive ? ScrimController.WAKE_SENSOR_SCRIM_ALPHA return mWakeLockScreenSensorActive ? ScrimController.WAKE_SENSOR_SCRIM_ALPHA
: AOD.getBehindAlpha(); : AOD.getMaxLightRevealScrimAlpha();
} }
}, },
@@ -351,6 +344,10 @@ public enum ScrimState {
return mBehindAlpha; return mBehindAlpha;
} }
public float getMaxLightRevealScrimAlpha() {
return 1f;
}
public float getNotifAlpha() { public float getNotifAlpha() {
return mNotifAlpha; return mNotifAlpha;
} }

View File

@@ -4444,6 +4444,8 @@ public class StatusBar extends SystemUI implements DemoMode,
} else { } else {
mScrimController.transitionTo(ScrimState.UNLOCKED, mUnlockScrimCallback); mScrimController.transitionTo(ScrimState.UNLOCKED, mUnlockScrimCallback);
} }
updateLightRevealScrimVisibility();
Trace.endSection(); Trace.endSection();
} }
@@ -4894,6 +4896,7 @@ public class StatusBar extends SystemUI implements DemoMode,
return; return;
} }
mLightRevealScrim.setAlpha(mScrimController.getState().getMaxLightRevealScrimAlpha());
if (mFeatureFlags.useNewLockscreenAnimations() if (mFeatureFlags.useNewLockscreenAnimations()
&& (mDozeParameters.getAlwaysOn() || mDozeParameters.isQuickPickupEnabled())) { && (mDozeParameters.getAlwaysOn() || mDozeParameters.isQuickPickupEnabled())) {
mLightRevealScrim.setVisibility(View.VISIBLE); mLightRevealScrim.setVisibility(View.VISIBLE);

View File

@@ -312,6 +312,8 @@ public class ScrimControllerTest extends SysuiTestCase {
mScrimBehind, true, mScrimBehind, true,
mScrimForBubble, false mScrimForBubble, false
)); ));
assertEquals(1f, mScrimController.getState().getMaxLightRevealScrimAlpha(), 0f);
} }
@Test @Test
@@ -321,8 +323,9 @@ public class ScrimControllerTest extends SysuiTestCase {
assertScrimAlpha(Map.of( assertScrimAlpha(Map.of(
mScrimInFront, TRANSPARENT, mScrimInFront, TRANSPARENT,
mScrimBehind, OPAQUE, mScrimBehind, TRANSPARENT,
mNotificationsScrim, TRANSPARENT)); mNotificationsScrim, TRANSPARENT));
assertEquals(1f, mScrimController.getState().getMaxLightRevealScrimAlpha(), 0f);
assertScrimTinted(Map.of( assertScrimTinted(Map.of(
mScrimInFront, true, mScrimInFront, true,
@@ -340,6 +343,7 @@ public class ScrimControllerTest extends SysuiTestCase {
assertScrimAlpha(Map.of( assertScrimAlpha(Map.of(
mScrimInFront, TRANSPARENT, mScrimInFront, TRANSPARENT,
mScrimBehind, TRANSPARENT)); mScrimBehind, TRANSPARENT));
assertEquals(0f, mScrimController.getState().getMaxLightRevealScrimAlpha(), 0f);
// Pulsing notification should conserve AOD wallpaper. // Pulsing notification should conserve AOD wallpaper.
mScrimController.transitionTo(ScrimState.PULSING); mScrimController.transitionTo(ScrimState.PULSING);
@@ -348,6 +352,7 @@ public class ScrimControllerTest extends SysuiTestCase {
assertScrimAlpha(Map.of( assertScrimAlpha(Map.of(
mScrimInFront, TRANSPARENT, mScrimInFront, TRANSPARENT,
mScrimBehind, TRANSPARENT)); mScrimBehind, TRANSPARENT));
assertEquals(0f, mScrimController.getState().getMaxLightRevealScrimAlpha(), 0f);
} }
@Test @Test
@@ -359,7 +364,8 @@ public class ScrimControllerTest extends SysuiTestCase {
assertScrimAlpha(Map.of( assertScrimAlpha(Map.of(
mScrimInFront, TRANSPARENT, mScrimInFront, TRANSPARENT,
mScrimBehind, OPAQUE)); mScrimBehind, TRANSPARENT));
assertEquals(1f, mScrimController.getState().getMaxLightRevealScrimAlpha(), 0f);
assertScrimTinted(Map.of( assertScrimTinted(Map.of(
mScrimInFront, true, mScrimInFront, true,
@@ -378,7 +384,8 @@ public class ScrimControllerTest extends SysuiTestCase {
assertScrimAlpha(Map.of( assertScrimAlpha(Map.of(
mScrimInFront, TRANSPARENT, mScrimInFront, TRANSPARENT,
mScrimBehind, OPAQUE)); mScrimBehind, TRANSPARENT));
assertEquals(1f, mScrimController.getState().getMaxLightRevealScrimAlpha(), 0f);
assertScrimTinted(Map.of( assertScrimTinted(Map.of(
mScrimInFront, true, mScrimInFront, true,
@@ -403,13 +410,15 @@ public class ScrimControllerTest extends SysuiTestCase {
finishAnimationsImmediately(); finishAnimationsImmediately();
assertScrimAlpha(Map.of( assertScrimAlpha(Map.of(
mScrimInFront, SEMI_TRANSPARENT, mScrimInFront, SEMI_TRANSPARENT,
mScrimBehind, OPAQUE)); mScrimBehind, TRANSPARENT));
assertEquals(1f, mScrimController.getState().getMaxLightRevealScrimAlpha(), 0f);
// ... and that if we set it while we're in AOD, it does take immediate effect. // ... and that if we set it while we're in AOD, it does take immediate effect.
mScrimController.setAodFrontScrimAlpha(1f); mScrimController.setAodFrontScrimAlpha(1f);
assertScrimAlpha(Map.of( assertScrimAlpha(Map.of(
mScrimInFront, OPAQUE, mScrimInFront, OPAQUE,
mScrimBehind, OPAQUE)); mScrimBehind, TRANSPARENT));
assertEquals(1f, mScrimController.getState().getMaxLightRevealScrimAlpha(), 0f);
// ... and make sure we recall the previous front scrim alpha even if we transition away // ... and make sure we recall the previous front scrim alpha even if we transition away
// for a bit. // for a bit.
@@ -418,7 +427,8 @@ public class ScrimControllerTest extends SysuiTestCase {
finishAnimationsImmediately(); finishAnimationsImmediately();
assertScrimAlpha(Map.of( assertScrimAlpha(Map.of(
mScrimInFront, OPAQUE, mScrimInFront, OPAQUE,
mScrimBehind, OPAQUE)); mScrimBehind, TRANSPARENT));
assertEquals(1f, mScrimController.getState().getMaxLightRevealScrimAlpha(), 0f);
// ... and alpha updates should be completely ignored if always_on is off. // ... and alpha updates should be completely ignored if always_on is off.
// Passing it forward would mess up the wake-up transition. // Passing it forward would mess up the wake-up transition.
@@ -448,23 +458,28 @@ public class ScrimControllerTest extends SysuiTestCase {
finishAnimationsImmediately(); finishAnimationsImmediately();
assertScrimAlpha(Map.of( assertScrimAlpha(Map.of(
mScrimInFront, OPAQUE, mScrimInFront, OPAQUE,
mScrimBehind, OPAQUE)); mScrimBehind, TRANSPARENT));
assertEquals(1f, mScrimController.getState().getMaxLightRevealScrimAlpha(), 0f);
// ... but will take effect after docked // ... but will take effect after docked
when(mDockManager.isDocked()).thenReturn(true); when(mDockManager.isDocked()).thenReturn(true);
mScrimController.transitionTo(ScrimState.KEYGUARD); mScrimController.transitionTo(ScrimState.KEYGUARD);
mScrimController.setAodFrontScrimAlpha(0.5f); mScrimController.setAodFrontScrimAlpha(0.5f);
mScrimController.transitionTo(ScrimState.AOD); mScrimController.transitionTo(ScrimState.AOD);
finishAnimationsImmediately();
assertScrimAlpha(Map.of( assertScrimAlpha(Map.of(
mScrimInFront, SEMI_TRANSPARENT, mScrimInFront, SEMI_TRANSPARENT,
mScrimBehind, OPAQUE)); mScrimBehind, TRANSPARENT));
assertEquals(1f, mScrimController.getState().getMaxLightRevealScrimAlpha(), 0f);
// ... and that if we set it while we're in AOD, it does take immediate effect after docked. // ... and that if we set it while we're in AOD, it does take immediate effect after docked.
mScrimController.setAodFrontScrimAlpha(1f); mScrimController.setAodFrontScrimAlpha(1f);
finishAnimationsImmediately();
assertScrimAlpha(Map.of( assertScrimAlpha(Map.of(
mScrimInFront, OPAQUE, mScrimInFront, OPAQUE,
mScrimBehind, OPAQUE)); mScrimBehind, TRANSPARENT));
assertEquals(1f, mScrimController.getState().getMaxLightRevealScrimAlpha(), 0f);
// Reset value since enums are static. // Reset value since enums are static.
mScrimController.setAodFrontScrimAlpha(0f); mScrimController.setAodFrontScrimAlpha(0f);
@@ -480,7 +495,8 @@ public class ScrimControllerTest extends SysuiTestCase {
finishAnimationsImmediately(); finishAnimationsImmediately();
assertScrimAlpha(Map.of( assertScrimAlpha(Map.of(
mScrimInFront, TRANSPARENT, mScrimInFront, TRANSPARENT,
mScrimBehind, OPAQUE)); mScrimBehind, TRANSPARENT));
assertEquals(1f, mScrimController.getState().getMaxLightRevealScrimAlpha(), 0f);
mScrimController.transitionTo(ScrimState.PULSING); mScrimController.transitionTo(ScrimState.PULSING);
finishAnimationsImmediately(); finishAnimationsImmediately();
@@ -489,7 +505,8 @@ public class ScrimControllerTest extends SysuiTestCase {
// Pulse callback should have been invoked // Pulse callback should have been invoked
assertScrimAlpha(Map.of( assertScrimAlpha(Map.of(
mScrimInFront, TRANSPARENT, mScrimInFront, TRANSPARENT,
mScrimBehind, OPAQUE)); mScrimBehind, TRANSPARENT));
assertEquals(1f, mScrimController.getState().getMaxLightRevealScrimAlpha(), 0f);
assertScrimTinted(Map.of( assertScrimTinted(Map.of(
mScrimInFront, true, mScrimInFront, true,
@@ -503,13 +520,16 @@ public class ScrimControllerTest extends SysuiTestCase {
// Front scrim should be semi-transparent // Front scrim should be semi-transparent
assertScrimAlpha(Map.of( assertScrimAlpha(Map.of(
mScrimInFront, SEMI_TRANSPARENT, mScrimInFront, SEMI_TRANSPARENT,
mScrimBehind, OPAQUE)); mScrimBehind, TRANSPARENT));
assertEquals(1f, mScrimController.getState().getMaxLightRevealScrimAlpha(), 0f);
mScrimController.setWakeLockScreenSensorActive(true); mScrimController.setWakeLockScreenSensorActive(true);
finishAnimationsImmediately(); finishAnimationsImmediately();
assertScrimAlpha(Map.of( assertScrimAlpha(Map.of(
mScrimInFront, SEMI_TRANSPARENT, mScrimInFront, SEMI_TRANSPARENT,
mScrimBehind, SEMI_TRANSPARENT)); mScrimBehind, TRANSPARENT));
assertEquals(ScrimController.WAKE_SENSOR_SCRIM_ALPHA,
mScrimController.getState().getMaxLightRevealScrimAlpha(), 0f);
// Reset value since enums are static. // Reset value since enums are static.
mScrimController.setAodFrontScrimAlpha(0f); mScrimController.setAodFrontScrimAlpha(0f);