From 4506fcf4666d18f3ffd3a1ddd0713bc3d2ca5335 Mon Sep 17 00:00:00 2001 From: Selim Cinek Date: Thu, 3 Jun 2021 21:22:58 +0200 Subject: [PATCH] Removed logic that sized the view before the shelf Since the shelf is positioned algorithmically, it can simply clip the view instead of forcing the height. This leads to less artificatial animations and avoids flickers that may happen if the height isn't correct. Bug: 172289889 Test: expand shade with notifications, observe normal clipping, no hole Change-Id: I8efae53ba934cdf8553812c513f2de0cc23e1d6c --- .../stack/StackScrollAlgorithm.java | 29 ++----------------- 1 file changed, 2 insertions(+), 27 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 86465b6f6b1ab..3db66b6c597b1 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 @@ -258,16 +258,14 @@ public class StackScrollAlgorithm { } } - // Save (height of view before shelf, index of first view in shelf) from when shade is fully + // Save the index of first view in shelf from when shade is fully // expanded. Consider updating these states in updateContentView instead so that we don't // have to recalculate in every frame. float currentY = -scrollY; if (!ambientState.isOnKeyguard()) { currentY += mNotificationScrimPadding; } - float previousY = 0; state.firstViewInShelf = null; - state.viewHeightBeforeShelf = -1; for (int i = 0; i < state.visibleChildren.size(); i++) { final ExpandableView view = state.visibleChildren.get(i); @@ -285,17 +283,8 @@ public class StackScrollAlgorithm { && !(view instanceof FooterView) && state.firstViewInShelf == null) { state.firstViewInShelf = view; - // There might be a section gap right before the shelf. - // Limit the height of the view before the shelf so that it does not include - // a gap and become taller than it normally is. - state.viewHeightBeforeShelf = Math.min(getMaxAllowedChildHeight(view), - ambientState.getStackEndHeight() - - ambientState.getShelf().getIntrinsicHeight() - - mPaddingBetweenElements - - previousY); } } - previousY = currentY; currentY = currentY + getMaxAllowedChildHeight(view) + mPaddingBetweenElements; @@ -452,16 +441,7 @@ public class StackScrollAlgorithm { } // Clip height of view right before shelf. - float maxViewHeight = getMaxAllowedChildHeight(view); - if (ambientState.isExpansionChanging() - && algorithmState.viewHeightBeforeShelf != -1) { - final int indexOfFirstViewInShelf = algorithmState.visibleChildren.indexOf( - algorithmState.firstViewInShelf); - if (i == indexOfFirstViewInShelf - 1) { - maxViewHeight = algorithmState.viewHeightBeforeShelf; - } - } - viewState.height = (int) (maxViewHeight * expansionFraction); + viewState.height = (int) (getMaxAllowedChildHeight(view) * expansionFraction); } algorithmState.mCurrentYPosition += viewState.height @@ -734,11 +714,6 @@ public class StackScrollAlgorithm { */ public ExpandableView firstViewInShelf; - /** - * Height of view right before the shelf. - */ - public float viewHeightBeforeShelf; - /** * The children from the host view which are not gone. */