Do not darken scrims when unlocking with fp

Scrims would darken because notification panel would collapse.
Introduced a method to ignore the panel expansion.

Test: atest packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java
Test: unlock with fp from bouncer and AOD
Test: pull down QS after unlocking, look at scrims
Fixes: 74426737
Change-Id: I94f4a3f3b5ea1eed709c853d945e646cd3f41f78
This commit is contained in:
Lucas Dupin
2018-03-12 11:08:31 -07:00
parent 71120e1b20
commit 67f026331f
3 changed files with 33 additions and 0 deletions

View File

@@ -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() {
}

View File

@@ -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);

View File

@@ -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