Use alpha instead of invisible for views below shelf to skip redraw
Also skip this for heads up notifications Fixes: 193912541 Test: treehugger Change-Id: I3c81611696f7918a0f18d4c503b80a6b78ed2c43
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user