diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java index 71376a553cdf5..f8b4e0768ceba 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java @@ -126,6 +126,7 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, private float mExpansionFraction = 1f; private boolean mDarkenWhileDragging; + private boolean mExpansionAffectsAlpha = true; protected boolean mAnimateChange; private boolean mUpdatePending; private boolean mTracking; @@ -381,6 +382,10 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, } private void applyExpansionToAlpha() { + if (!mExpansionAffectsAlpha) { + return; + } + if (mState == ScrimState.UNLOCKED) { // Darken scrim as you pull down the shade when unlocked float behindFraction = getInterpolatedFraction(); @@ -912,6 +917,10 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, mScreenOn = false; } + public void setExpansionAffectsAlpha(boolean expansionAffectsAlpha) { + mExpansionAffectsAlpha = expansionAffectsAlpha; + } + public interface Callback { default void onStart() { } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java index a305bfc7b0ab6..5c7752401b83a 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java @@ -3688,6 +3688,7 @@ public class StatusBar extends SystemUI implements DemoMode, public void finishKeyguardFadingAway() { mKeyguardFadingAway = false; mKeyguardMonitor.notifyKeyguardDoneFading(); + mScrimController.setExpansionAffectsAlpha(true); } // TODO: Move this to NotificationLockscreenUserManager. @@ -4618,6 +4619,10 @@ public class StatusBar extends SystemUI implements DemoMode, final boolean wakeAndUnlocking = mFingerprintUnlockController.getMode() == FingerprintUnlockController.MODE_WAKE_AND_UNLOCK; + // Do not animate the scrim expansion when it's triggered by the fingerprint sensor. + mScrimController.setExpansionAffectsAlpha(mFingerprintUnlockController.getMode() + != FingerprintUnlockController.MODE_UNLOCK); + if (mBouncerShowing) { mScrimController.transitionTo( mIsOccluded ? ScrimState.BOUNCER_OCCLUDED : ScrimState.BOUNCER); diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java index bfa469eba99fa..6fbc0d710cc44 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java @@ -205,6 +205,25 @@ public class ScrimControllerTest extends SysuiTestCase { assertScrimVisibility(VISIBILITY_FULLY_TRANSPARENT, VISIBILITY_SEMI_TRANSPARENT); } + @Test + public void panelExpansionAffectsAlpha() { + mScrimController.setPanelExpansion(0f); + mScrimController.setPanelExpansion(0.5f); + mScrimController.transitionTo(ScrimState.UNLOCKED); + mScrimController.finishAnimationsImmediately(); + + final float scrimAlpha = mScrimBehind.getViewAlpha(); + mScrimController.setExpansionAffectsAlpha(false); + mScrimController.setPanelExpansion(0.8f); + Assert.assertEquals("Scrim opacity shouldn't change when setExpansionAffectsAlpha " + + "is false", scrimAlpha, mScrimBehind.getViewAlpha(), 0.01f); + + mScrimController.setExpansionAffectsAlpha(true); + mScrimController.setPanelExpansion(0.1f); + Assert.assertNotEquals("Scrim opacity should change when setExpansionAffectsAlpha " + + "is true", scrimAlpha, mScrimBehind.getViewAlpha(), 0.01f); + } + @Test public void transitionToUnlockedFromAod() { // Simulate unlock with fingerprint