diff options
| author | 2018-05-18 17:24:52 -0700 | |
|---|---|---|
| committer | 2018-05-21 10:14:23 -0700 | |
| commit | 69bda6014fd5a4c70a99906675cfdc394a275376 (patch) | |
| tree | 0b715a02003eef021c9dd0ee851ac80cc9a76441 | |
| parent | 6f67f7d89a0e783d5555e098309a426ba21cd450 (diff) | |
Keep scrim black when "always on" is off
The first frame when waking up is expensive and we
need a black scrim hiding what was left behind.
Bug: 78022321
Test: atest packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java
Change-Id: I99e2b7960daf2cbe51bec6aee4b15c74d532078c
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java | 12 | ||||
| -rw-r--r-- | packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java | 10 |
2 files changed, 20 insertions, 2 deletions
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 ae93d986ea36..9ba0880b3748 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java @@ -450,10 +450,18 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, OnCo } /** - * Sets the front alpha while in AOD. + * Sets the front scrim opacity in AOD so it's not as bright. + * <p> + * Displays usually don't support multiple dimming settings when in low power mode. + * The workaround is to modify the front scrim opacity when in AOD, so it's not as + * bright when you're at the movies or lying down on bed. + * <p> + * This value will be lost during transitions and only updated again after the the + * device is dozing when the light sensor is on. */ public void setAodFrontScrimAlpha(float alpha) { - if (mState == ScrimState.AOD && mCurrentInFrontAlpha != alpha) { + if (mState == ScrimState.AOD && mDozeParameters.getAlwaysOn() + && mCurrentInFrontAlpha != alpha) { mCurrentInFrontAlpha = alpha; scheduleUpdate(); } 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 4e047901fb50..a2a866e79af3 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 @@ -184,6 +184,16 @@ public class ScrimControllerTest extends SysuiTestCase { mScrimController.finishAnimationsImmediately(); assertScrimVisibility(VISIBILITY_FULLY_OPAQUE, VISIBILITY_FULLY_OPAQUE); + // ... and alpha updates should be completely ignored if always_on is off. + // Passing it forward would mess up the wake-up transition. + mAlwaysOnEnabled = false; + mScrimController.transitionTo(ScrimState.UNLOCKED); + mScrimController.transitionTo(ScrimState.AOD); + mScrimController.finishAnimationsImmediately(); + mScrimController.setAodFrontScrimAlpha(0.3f); + Assert.assertEquals(ScrimState.AOD.getFrontAlpha(), mScrimInFront.getViewAlpha(), 0.001f); + Assert.assertNotEquals(0.3f, mScrimInFront.getViewAlpha(), 0.001f); + // Reset value since enums are static. mScrimController.setAodFrontScrimAlpha(0f); } |