From 30c7d9614ac450793643fe88deccaa741ec88b9d Mon Sep 17 00:00:00 2001 From: Lucas Dupin Date: Wed, 6 May 2020 19:49:25 -0700 Subject: [PATCH] Recompute scrim alpha when enabling expansion Fixes: 152786931 Test: atest ScrimControllerTest Change-Id: I73a4c37af0a024c6886c88a7c51c7c29e13c0218 --- .../statusbar/phone/ScrimController.java | 43 +++++++++++-------- 1 file changed, 25 insertions(+), 18 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 c5901398a54b0..33997b9a5735f 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java @@ -440,24 +440,7 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, OnCo if (!(relevantState && mExpansionAffectsAlpha)) { return; } - applyExpansionToAlpha(); - if (mUpdatePending) { - return; - } - setOrAdaptCurrentAnimation(mScrimBehind); - setOrAdaptCurrentAnimation(mScrimInFront); - setOrAdaptCurrentAnimation(mScrimForBubble); - dispatchScrimState(mScrimBehind.getViewAlpha()); - - // Reset wallpaper timeout if it's already timeout like expanding panel while PULSING - // and docking. - if (mWallpaperVisibilityTimedOut) { - mWallpaperVisibilityTimedOut = false; - DejankUtils.postAfterTraversal(() -> { - mTimeTicker.schedule(mDozeParameters.getWallpaperAodDuration(), - AlarmTimeout.MODE_IGNORE_IF_SCHEDULED); - }); - } + applyAndDispatchExpansion(); } } @@ -513,6 +496,27 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, OnCo } } + private void applyAndDispatchExpansion() { + applyExpansionToAlpha(); + if (mUpdatePending) { + return; + } + setOrAdaptCurrentAnimation(mScrimBehind); + setOrAdaptCurrentAnimation(mScrimInFront); + setOrAdaptCurrentAnimation(mScrimForBubble); + dispatchScrimState(mScrimBehind.getViewAlpha()); + + // Reset wallpaper timeout if it's already timeout like expanding panel while PULSING + // and docking. + if (mWallpaperVisibilityTimedOut) { + mWallpaperVisibilityTimedOut = false; + DejankUtils.postAfterTraversal(() -> { + mTimeTicker.schedule(mDozeParameters.getWallpaperAodDuration(), + AlarmTimeout.MODE_IGNORE_IF_SCHEDULED); + }); + } + } + /** * Sets the given drawable as the background of the scrim that shows up behind the * notifications. @@ -1006,6 +1010,9 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, OnCo public void setExpansionAffectsAlpha(boolean expansionAffectsAlpha) { mExpansionAffectsAlpha = expansionAffectsAlpha; + if (expansionAffectsAlpha) { + applyAndDispatchExpansion(); + } } public void setKeyguardOccluded(boolean keyguardOccluded) {