summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java68
1 files changed, 45 insertions, 23 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java
index ab08865c8bef..5477c19261d1 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java
@@ -119,6 +119,7 @@ import java.util.Collections;
import java.util.Comparator;
import java.util.HashSet;
import java.util.List;
+import java.util.Set;
import java.util.function.BiConsumer;
import java.util.function.Consumer;
@@ -726,36 +727,57 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable
}
if (DEBUG) {
- int y = mTopPadding;
- mDebugPaint.setColor(Color.RED);
- canvas.drawLine(0, y, getWidth(), y, mDebugPaint);
+ onDrawDebug(canvas);
+ }
+ }
- y = getLayoutHeight();
- mDebugPaint.setColor(Color.YELLOW);
- canvas.drawLine(0, y, getWidth(), y, mDebugPaint);
+ /** Used to track the Y positions that were already used to draw debug text labels. */
+ private static final Set<Integer> DEBUG_TEXT_USED_Y_POSITIONS =
+ DEBUG ? new HashSet<>() : Collections.emptySet();
- y = (int) mMaxLayoutHeight;
- mDebugPaint.setColor(Color.MAGENTA);
- canvas.drawLine(0, y, getWidth(), y, mDebugPaint);
+ private void onDrawDebug(Canvas canvas) {
+ DEBUG_TEXT_USED_Y_POSITIONS.clear();
- if (mKeyguardBottomPadding >= 0) {
- y = getHeight() - (int) mKeyguardBottomPadding;
- mDebugPaint.setColor(Color.GRAY);
- canvas.drawLine(0, y, getWidth(), y, mDebugPaint);
- }
+ int y = mTopPadding;
+ drawDebugInfo(canvas, y, Color.RED, /* label= */ "mTopPadding");
- y = getHeight() - getEmptyBottomMargin();
- mDebugPaint.setColor(Color.GREEN);
- canvas.drawLine(0, y, getWidth(), y, mDebugPaint);
+ y = getLayoutHeight();
+ drawDebugInfo(canvas, y, Color.YELLOW, /* label= */ "getLayoutHeight()");
+
+ y = (int) mMaxLayoutHeight;
+ drawDebugInfo(canvas, y, Color.MAGENTA, /* label= */ "mMaxLayoutHeight");
+
+ if (mKeyguardBottomPadding >= 0) {
+ y = getHeight() - (int) mKeyguardBottomPadding;
+ drawDebugInfo(canvas, y, Color.GRAY,
+ /* label= */ "getHeight() - mKeyguardBottomPadding");
+ }
- y = (int) (mAmbientState.getStackY());
- mDebugPaint.setColor(Color.CYAN);
- canvas.drawLine(0, y, getWidth(), y, mDebugPaint);
+ y = getHeight() - getEmptyBottomMargin();
+ drawDebugInfo(canvas, y, Color.GREEN, /* label= */ "getHeight() - getEmptyBottomMargin()");
+
+ y = (int) (mAmbientState.getStackY());
+ drawDebugInfo(canvas, y, Color.CYAN, /* label= */ "mAmbientState.getStackY()");
+
+ y = (int) (mAmbientState.getStackY() + mAmbientState.getStackHeight());
+ drawDebugInfo(canvas, y, Color.BLUE,
+ /* label= */ "mAmbientState.getStackY() + mAmbientState.getStackHeight()");
+ }
+
+ private void drawDebugInfo(Canvas canvas, int y, int color, String label) {
+ mDebugPaint.setColor(color);
+ canvas.drawLine(/* startX= */ 0, /* startY= */ y, /* stopX= */ getWidth(), /* stopY= */ y,
+ mDebugPaint);
+ canvas.drawText(label, /* x= */ 0, /* y= */ computeDebugYTextPosition(y), mDebugPaint);
+ }
- y = (int) (mAmbientState.getStackY() + mAmbientState.getStackHeight());
- mDebugPaint.setColor(Color.BLUE);
- canvas.drawLine(0, y, getWidth(), y, mDebugPaint);
+ private int computeDebugYTextPosition(int lineY) {
+ int textY = lineY;
+ while (DEBUG_TEXT_USED_Y_POSITIONS.contains(textY)) {
+ textY = (int) (textY + mDebugPaint.getTextSize());
}
+ DEBUG_TEXT_USED_Y_POSITIONS.add(textY);
+ return textY;
}
@ShadeViewRefactor(RefactorComponent.DECORATOR)