Merge "Fixed an issue where heads up notifications would overlap" into qt-r1-dev

This commit is contained in:
TreeHugger Robot
2019-07-19 00:09:53 +00:00
committed by Android (Google) Code Review
2 changed files with 11 additions and 9 deletions

View File

@@ -83,6 +83,11 @@ public class SectionHeaderView extends ActivatableNotificationView {
bindContents();
}
@Override
public boolean isTransparent() {
return true;
}
/** Must be called whenever the UI mode changes (i.e. when we enter night mode). */
void onUiModeChanged() {
updateBackgroundColors();

View File

@@ -159,15 +159,13 @@ public class StackScrollAlgorithm {
float drawStart = !ambientState.isOnKeyguard() ? ambientState.getTopPadding()
+ ambientState.getStackTranslation() + ambientState.getExpandAnimationTopChange()
: 0;
float previousNotificationEnd = 0;
float previousNotificationStart = 0;
float clipStart = 0;
int childCount = algorithmState.visibleChildren.size();
for (int i = 0; i < childCount; i++) {
ExpandableView child = algorithmState.visibleChildren.get(i);
ExpandableViewState state = child.getViewState();
if (!child.mustStayOnScreen() || state.headsUpIsVisible) {
previousNotificationEnd = Math.max(drawStart, previousNotificationEnd);
previousNotificationStart = Math.max(drawStart, previousNotificationStart);
clipStart = Math.max(drawStart, clipStart);
}
float newYTranslation = state.yTranslation;
float newHeight = state.height;
@@ -175,10 +173,10 @@ public class StackScrollAlgorithm {
boolean isHeadsUp = (child instanceof ExpandableNotificationRow)
&& ((ExpandableNotificationRow) child).isPinned();
if (mClipNotificationScrollToTop
&& !state.inShelf && newYTranslation < previousNotificationEnd
&& (!isHeadsUp || ambientState.isShadeExpanded())) {
&& (!state.inShelf || isHeadsUp)
&& newYTranslation < clipStart) {
// The previous view is overlapping on top, clip!
float overlapAmount = previousNotificationEnd - newYTranslation;
float overlapAmount = clipStart - newYTranslation;
state.clipTopAmount = (int) overlapAmount;
} else {
state.clipTopAmount = 0;
@@ -187,8 +185,7 @@ public class StackScrollAlgorithm {
if (!child.isTransparent()) {
// Only update the previous values if we are not transparent,
// otherwise we would clip to a transparent view.
previousNotificationEnd = newNotificationEnd;
previousNotificationStart = newYTranslation;
clipStart = Math.max(clipStart, isHeadsUp ? newYTranslation : newNotificationEnd);
}
}
}