Merge "Use alpha instead of invisible for views below shelf to skip redraw" into sc-dev am: 27a1fdb018 am: 34644987c6

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15331191

Change-Id: Ie703fdd8884320d7c21878ad43943cac0392a8b0
This commit is contained in:
Lyn Han
2021-07-20 05:09:31 +00:00
committed by Automerger Merge Worker

View File

@@ -154,15 +154,21 @@ public class StackScrollAlgorithm {
shelf.updateState(algorithmState, ambientState);
// After the shelf has updated its yTranslation,
// explicitly hide views below the shelf to skip rendering them in the hardware layer.
// After the shelf has updated its yTranslation, explicitly set alpha=0 for view below shelf
// to skip rendering them in the hardware layer. We do not set them invisible because that
// runs invalidate & onDraw when these views return onscreen, which is more expensive.
final float shelfTop = shelf.getViewState().yTranslation;
for (ExpandableView view : algorithmState.visibleChildren) {
if (view instanceof ExpandableNotificationRow) {
ExpandableNotificationRow row = (ExpandableNotificationRow) view;
if (row.isHeadsUp() || row.isHeadsUpAnimatingAway()) {
continue;
}
}
final float viewTop = view.getViewState().yTranslation;
if (viewTop >= shelfTop) {
view.getViewState().hidden = true;
view.getViewState().alpha = 0;
}
}
}