Merge "Fix heads-up notification clipping in split shade" into tm-qpr-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
d2cb23038f
@@ -3041,11 +3041,23 @@ public final class NotificationPanelViewController {
|
||||
// relative to NotificationStackScrollLayout
|
||||
int nsslLeft = left - mNotificationStackScrollLayoutController.getLeft();
|
||||
int nsslRight = right - mNotificationStackScrollLayoutController.getLeft();
|
||||
int nsslTop = top - mNotificationStackScrollLayoutController.getTop();
|
||||
int nsslTop = getNotificationsClippingTopBounds(top);
|
||||
int nsslBottom = bottom - mNotificationStackScrollLayoutController.getTop();
|
||||
int bottomRadius = mSplitShadeEnabled ? radius : 0;
|
||||
int topRadius = mSplitShadeEnabled && mExpandingFromHeadsUp ? 0 : radius;
|
||||
mNotificationStackScrollLayoutController.setRoundedClippingBounds(
|
||||
nsslLeft, nsslTop, nsslRight, nsslBottom, radius, bottomRadius);
|
||||
nsslLeft, nsslTop, nsslRight, nsslBottom, topRadius, bottomRadius);
|
||||
}
|
||||
|
||||
private int getNotificationsClippingTopBounds(int qsTop) {
|
||||
if (mSplitShadeEnabled && mExpandingFromHeadsUp) {
|
||||
// in split shade nssl has extra top margin so clipping at top 0 is not enough, we need
|
||||
// to set top clipping bound to negative value to allow HUN to go up to the top edge of
|
||||
// the screen without clipping.
|
||||
return -mAmbientState.getStackTopMargin();
|
||||
} else {
|
||||
return qsTop - mNotificationStackScrollLayoutController.getTop();
|
||||
}
|
||||
}
|
||||
|
||||
private float getQSEdgePosition() {
|
||||
|
||||
@@ -1383,7 +1383,7 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable
|
||||
if (height < minExpansionHeight) {
|
||||
mClipRect.left = 0;
|
||||
mClipRect.right = getWidth();
|
||||
mClipRect.top = 0;
|
||||
mClipRect.top = getNotificationsClippingTopBound();
|
||||
mClipRect.bottom = (int) height;
|
||||
height = minExpansionHeight;
|
||||
setRequestedClipBounds(mClipRect);
|
||||
@@ -1444,6 +1444,17 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable
|
||||
notifyAppearChangedListeners();
|
||||
}
|
||||
|
||||
private int getNotificationsClippingTopBound() {
|
||||
if (isHeadsUpTransition()) {
|
||||
// HUN in split shade can go higher than bottom of NSSL when swiping up so we want
|
||||
// to give it extra clipping margin. Because clipping has rounded corners, we also
|
||||
// need to account for that corner clipping.
|
||||
return -mAmbientState.getStackTopMargin() - mCornerRadius;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
private void notifyAppearChangedListeners() {
|
||||
float appear;
|
||||
float expandAmount;
|
||||
@@ -1482,7 +1493,6 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable
|
||||
public void updateClipping() {
|
||||
boolean clipped = mRequestedClipBounds != null && !mInHeadsUpPinnedMode
|
||||
&& !mHeadsUpAnimatingAway;
|
||||
boolean clipToOutline = false;
|
||||
if (mIsClipped != clipped) {
|
||||
mIsClipped = clipped;
|
||||
}
|
||||
@@ -1498,7 +1508,7 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable
|
||||
setClipBounds(null);
|
||||
}
|
||||
|
||||
setClipToOutline(clipToOutline);
|
||||
setClipToOutline(false);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user