Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a91988bc authored by Lyn Han's avatar Lyn Han Committed by Android Build Coastguard Worker
Browse files

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
(cherry picked from commit ef12c7a2)
parent 143febbf
Loading
Loading
Loading
Loading
+10 −4
Original line number Original line Diff line number Diff line
@@ -154,15 +154,21 @@ public class StackScrollAlgorithm {


        shelf.updateState(algorithmState, ambientState);
        shelf.updateState(algorithmState, ambientState);


        // After the shelf has updated its yTranslation,
        // After the shelf has updated its yTranslation, explicitly set alpha=0 for view below shelf
        // explicitly hide views below the shelf to skip rendering them in the hardware layer.
        // 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;
        final float shelfTop = shelf.getViewState().yTranslation;


        for (ExpandableView view : algorithmState.visibleChildren) {
        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;
            final float viewTop = view.getViewState().yTranslation;

            if (viewTop >= shelfTop) {
            if (viewTop >= shelfTop) {
                view.getViewState().hidden = true;
                view.getViewState().alpha = 0;
            }
            }
        }
        }
    }
    }