Merge "User Switcher: Prevent flickering for user switch." into tm-dev am: f139385025
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17260686 Change-Id: Ieee56bc53de091a72bcbaa348b739dbb78b0f631 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -1021,15 +1021,24 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump
|
|||||||
boolean aodWallpaperTimeout = (mState == ScrimState.AOD || mState == ScrimState.PULSING)
|
boolean aodWallpaperTimeout = (mState == ScrimState.AOD || mState == ScrimState.PULSING)
|
||||||
&& mWallpaperVisibilityTimedOut;
|
&& mWallpaperVisibilityTimedOut;
|
||||||
// We also want to hide FLAG_SHOW_WHEN_LOCKED activities under the scrim.
|
// 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;
|
&& mKeyguardOccluded;
|
||||||
if (aodWallpaperTimeout || occludedKeyguard) {
|
if (aodWallpaperTimeout || hideFlagShowWhenLockedActivities) {
|
||||||
mBehindAlpha = 1;
|
mBehindAlpha = 1;
|
||||||
}
|
}
|
||||||
// Prevent notification scrim flicker when transitioning away from keyguard.
|
// Prevent notification scrim flicker when transitioning away from keyguard.
|
||||||
if (mKeyguardStateController.isKeyguardGoingAway()) {
|
if (mKeyguardStateController.isKeyguardGoingAway()) {
|
||||||
mNotificationsAlpha = 0;
|
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(mScrimInFront, mInFrontAlpha);
|
||||||
setScrimAlpha(mScrimBehind, mBehindAlpha);
|
setScrimAlpha(mScrimBehind, mBehindAlpha);
|
||||||
setScrimAlpha(mNotificationsScrim, mNotificationsAlpha);
|
setScrimAlpha(mNotificationsScrim, mNotificationsAlpha);
|
||||||
|
|||||||
@@ -1460,6 +1460,24 @@ public class ScrimControllerTest extends SysuiTestCase {
|
|||||||
.isEqualTo(ScrimState.KEYGUARD.getBehindTint());
|
.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) {
|
private void assertAlphaAfterExpansion(ScrimView scrim, float expectedAlpha, float expansion) {
|
||||||
mScrimController.setRawPanelExpansionFraction(expansion);
|
mScrimController.setRawPanelExpansionFraction(expansion);
|
||||||
finishAnimationsImmediately();
|
finishAnimationsImmediately();
|
||||||
|
|||||||
Reference in New Issue
Block a user