Decreasing notifications height on split shade lockscreen

Notifications were taking too much space, sometimes overlapping with other lockscreen elements under it.
The issue was caused by notifications position calculation on lockscreen not always taking into account different arrangement in split shade, where notifications are not under keyguard status.

Fixes: 200838082
Test: 1. KeyguardClockPositionAlgorithmTest
2. Have a lot of notifications and see if they overlap other lockscreen elements

Change-Id: Ibbee12a85dc27e33726d206684a2120a99cfc42f
This commit is contained in:
Michal Brzezinski
2021-10-28 18:38:32 +01:00
parent 2a482869f7
commit 13e61476e3
2 changed files with 42 additions and 5 deletions

View File

@@ -195,12 +195,21 @@ public class KeyguardClockPositionAlgorithm {
1.0f /* panelExpansion */, 1.0f /* darkAmount */);
result.clockAlpha = getClockAlpha(y);
result.stackScrollerPadding = getStackScrollerPadding(y);
result.stackScrollerPaddingExpanded = mBypassEnabled ? mUnlockedStackScrollerPadding
: getClockY(1.0f, mDarkAmount) + mKeyguardStatusHeight;
result.stackScrollerPaddingExpanded = getStackScrollerPaddingExpanded();
result.clockX = (int) interpolate(0, burnInPreventionOffsetX(), mDarkAmount);
result.clockScale = interpolate(getBurnInScale(), 1.0f, 1.0f - mDarkAmount);
}
private int getStackScrollerPaddingExpanded() {
if (mBypassEnabled) {
return mUnlockedStackScrollerPadding;
} else if (mIsSplitShade) {
return getClockY(1.0f, mDarkAmount);
} else {
return getClockY(1.0f, mDarkAmount) + mKeyguardStatusHeight;
}
}
private int getStackScrollerPadding(int clockYPosition) {
if (mBypassEnabled) {
return (int) (mUnlockedStackScrollerPadding + mOverStretchAmount);
@@ -212,8 +221,13 @@ public class KeyguardClockPositionAlgorithm {
}
public float getMinStackScrollerPadding() {
return mBypassEnabled ? mUnlockedStackScrollerPadding
: mMinTopMargin + mKeyguardStatusHeight;
if (mBypassEnabled) {
return mUnlockedStackScrollerPadding;
} else if (mIsSplitShade) {
return mMinTopMargin;
} else {
return mMinTopMargin + mKeyguardStatusHeight;
}
}
private int getExpandedPreferredClockY() {

View File

@@ -58,7 +58,6 @@ public class KeyguardClockPositionAlgorithmTest extends SysuiTestCase {
private KeyguardClockPositionAlgorithm.Result mClockPosition;
private MockitoSession mStaticMockSession;
private int mNotificationStackHeight;
private float mPanelExpansion;
private int mKeyguardStatusBarHeaderHeight;
@@ -263,6 +262,30 @@ public class KeyguardClockPositionAlgorithmTest extends SysuiTestCase {
assertThat(mClockPosition.stackScrollerPadding).isEqualTo(0);
}
@Test
public void notifPaddingExpandedAlignedWithClockInSplitShadeMode() {
givenLockScreen();
mIsSplitShade = true;
mKeyguardStatusHeight = 200;
// WHEN the position algorithm is run
positionClock();
// THEN the padding DOESN'T adjust for keyguard status height.
assertThat(mClockPosition.stackScrollerPaddingExpanded)
.isEqualTo(mClockPosition.clockYFullyDozing);
}
@Test
public void notifMinPaddingAlignedWithClockInSplitShadeMode() {
givenLockScreen();
mIsSplitShade = true;
mKeyguardStatusHeight = 200;
// WHEN the position algorithm is run
positionClock();
// THEN the padding DOESN'T adjust for keyguard status height.
assertThat(mClockPositionAlgorithm.getMinStackScrollerPadding())
.isEqualTo(mKeyguardStatusBarHeaderHeight);
}
@Test
public void notifPositionWithLargeClockOnLockScreen() {
// GIVEN on lock screen and clock has a nonzero height