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

Commit d64e6ed0 authored by Lyn Han's avatar Lyn Han Committed by Automerger Merge Worker
Browse files

Merge "Use alpha instead of invisible for views below shelf to skip redraw"...

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

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

Change-Id: Ie703fdd8884320d7c21878ad43943cac0392a8b0
parents fa493561 34644987
Loading
Loading
Loading
Loading
+10 −4
Original line number Diff line number Diff line
@@ -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;
            }
        }
    }