Merge "Fix split shade issues when going from portrait expanded quick settings" into tm-dev

This commit is contained in:
Nick Chameyev
2022-03-22 10:12:45 +00:00
committed by Android (Google) Code Review
3 changed files with 20 additions and 6 deletions

View File

@@ -199,7 +199,7 @@ public class ScrimDrawable extends Drawable {
drawConcave(canvas);
} else if (mCornerRadiusEnabled && mCornerRadius > 0) {
canvas.drawRoundRect(getBounds().left, getBounds().top, getBounds().right,
getBounds().bottom + mCornerRadius,
getBounds().bottom,
/* x radius*/ mCornerRadius, /* y radius*/ mCornerRadius, mPaint);
} else {
canvas.drawRect(getBounds().left, getBounds().top, getBounds().right,

View File

@@ -689,7 +689,8 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable
boolean showFooterView = (showDismissView || mController.getVisibleNotificationCount() > 0)
&& mIsCurrentUserSetup // see: b/193149550
&& mStatusBarState != StatusBarState.KEYGUARD
&& mQsExpansionFraction != 1
// quick settings don't affect notifications when not in full screen
&& (mQsExpansionFraction != 1 || !mQsFullScreen)
&& !mScreenOffAnimationController.shouldHideNotificationsFooter()
&& !mIsRemoteInputActive;
boolean showHistory = mController.isHistoryEnabled();
@@ -799,6 +800,9 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable
y = (int) (mAmbientState.getStackY() + mKeyguardNotificationAvailableSpace);
drawDebugInfo(canvas, y, Color.RED, /* label= */
"mAmbientState.getStackY() + mKeyguardNotificationAvailableSpace = " + y);
drawDebugInfo(canvas, mRoundedRectClippingBottom, Color.DKGRAY,
/* label= */ "mRoundedRectClippingBottom) = " + y);
}
private void drawDebugInfo(Canvas canvas, int y, int color, String label) {
@@ -1311,7 +1315,7 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable
if (mOnStackYChanged != null) {
mOnStackYChanged.accept(listenerNeedsAnimation);
}
if (mQsExpansionFraction <= 0 && !shouldSkipHeightUpdate()) {
if ((mQsExpansionFraction <= 0 || !mQsFullScreen) && !shouldSkipHeightUpdate()) {
final float endHeight = updateStackEndHeight();
updateStackHeight(endHeight, fraction);
}

View File

@@ -1098,6 +1098,8 @@ public class NotificationPanelViewController extends PanelViewController {
if (splitNotificationShadeChanged) {
updateClockAppearance();
updateQsState();
mNotificationStackScrollLayoutController.updateFooter();
}
}
@@ -2348,7 +2350,7 @@ public class NotificationPanelViewController extends PanelViewController {
private int calculateBottomQsClippingBound(int top) {
if (mShouldUseSplitNotificationShade) {
return top + mNotificationStackScrollLayoutController.getHeight()
- mSplitShadeNotificationsScrimMarginBottom;
+ mSplitShadeNotificationsScrimMarginBottom;
} else {
return getView().getBottom();
}
@@ -2466,7 +2468,12 @@ public class NotificationPanelViewController extends PanelViewController {
// be visible, otherwise you can see the bounds once swiping up to see bouncer
mScrimController.setNotificationsBounds(0, 0, 0, 0);
} else {
mScrimController.setNotificationsBounds(left, top, right, bottom);
// Increase the height of the notifications scrim when not in split shade
// (e.g. portrait tablet) so the rounded corners are not visible at the bottom,
// in this case they are rendered off-screen
final int notificationsScrimBottom =
mShouldUseSplitNotificationShade ? bottom : bottom + radius;
mScrimController.setNotificationsBounds(left, top, right, notificationsScrimBottom);
}
if (mShouldUseSplitNotificationShade) {
@@ -2476,10 +2483,13 @@ public class NotificationPanelViewController extends PanelViewController {
}
mScrimController.setScrimCornerRadius(radius);
// Convert global clipping coordinates to local ones,
// relative to NotificationStackScrollLayout
int nsslLeft = left - mNotificationStackScrollLayoutController.getLeft();
int nsslRight = right - mNotificationStackScrollLayoutController.getLeft();
int nsslTop = top - mNotificationStackScrollLayoutController.getTop();
int nsslBottom = bottom;
int nsslBottom = bottom - mNotificationStackScrollLayoutController.getTop();
int bottomRadius = mShouldUseSplitNotificationShade ? radius : 0;
mNotificationStackScrollLayoutController.setRoundedClippingBounds(
nsslLeft, nsslTop, nsslRight, nsslBottom, radius, bottomRadius);