diff options
| author | 2024-05-08 11:26:14 +0000 | |
|---|---|---|
| committer | 2024-05-08 11:26:14 +0000 | |
| commit | e567a85cf2d0b377abfc997a7b1c6e9fc5872d75 (patch) | |
| tree | 096b38008a5566c079562eb29f099851fcf40143 | |
| parent | 560a882b05104f47878163caf6752cc7c93a0a43 (diff) | |
| parent | 157b3afa93cdaf9b72cec1511953e5c5c632c87d (diff) | |
Merge "Fix empty notif view flicker on keyguard" into main
2 files changed, 23 insertions, 2 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithm.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithm.java index e980794d23dd..d0cebae40c5a 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithm.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithm.java @@ -169,6 +169,14 @@ public class StackScrollAlgorithm { } } + // On the final call to {@link #resetViewState}, the alpha is set back to 1f but + // ambientState.isExpansionChanging() is now false. This causes a flicker on the + // EmptyShadeView after the shade is collapsed. Make sure the empty shade view + // isn't visible unless the shade is expanded. + if (view instanceof EmptyShadeView && ambientState.getExpansionFraction() == 0f) { + viewState.setAlpha(0f); + } + // For EmptyShadeView if on keyguard, we need to control the alpha to create // a nice transition when the user is dragging down the notification panel. if (view instanceof EmptyShadeView && ambientState.isOnKeyguard()) { diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithmTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithmTest.kt index 82725d656bb9..a6fb7187ff5f 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithmTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithmTest.kt @@ -394,8 +394,20 @@ class StackScrollAlgorithmTest : SysuiTestCase() { } @Test + fun resetViewStates_shadeCollapsed_emptyShadeViewBecomesTransparent() { + ambientState.expansionFraction = 0f + stackScrollAlgorithm.initView(context) + hostView.removeAllViews() + hostView.addView(emptyShadeView) + + stackScrollAlgorithm.resetViewStates(ambientState, /* speedBumpIndex= */ 0) + + assertThat(emptyShadeView.viewState.alpha).isEqualTo(0f) + } + + @Test fun resetViewStates_isOnKeyguard_emptyShadeViewBecomesOpaque() { - ambientState.setStatusBarState(StatusBarState.SHADE) + ambientState.setStatusBarState(StatusBarState.KEYGUARD) ambientState.fractionToShade = 0.25f stackScrollAlgorithm.initView(context) hostView.removeAllViews() @@ -403,7 +415,8 @@ class StackScrollAlgorithmTest : SysuiTestCase() { stackScrollAlgorithm.resetViewStates(ambientState, /* speedBumpIndex= */ 0) - assertThat(emptyShadeView.viewState.alpha).isEqualTo(1f) + val expected = getContentAlpha(ambientState.fractionToShade) + assertThat(emptyShadeView.viewState.alpha).isEqualTo(expected) } @Test |