diff options
| author | 2022-01-04 13:45:27 +0000 | |
|---|---|---|
| committer | 2022-01-04 13:45:27 +0000 | |
| commit | 5a2d06b5f10203d952d1990a1f9154bd05e52fa5 (patch) | |
| tree | b97f551e7d568eb2f356bc664e86f2d26e4ef80f | |
| parent | 8f2f9a2ff1614daa8657292d29767a37becd3efa (diff) | |
| parent | 2a6d584947820c92a9786f07689bea9d8ba73360 (diff) | |
Merge changes I76ea8651,I76a84b4f into sc-v2-dev
* changes:
Fixing keyguard user switcher height after collapsing
Accounting for user switcher on split shade lock screen
5 files changed, 61 insertions, 14 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardClockPositionAlgorithm.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardClockPositionAlgorithm.java index 7ca8652e1b3c..732e5f0343a2 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardClockPositionAlgorithm.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardClockPositionAlgorithm.java @@ -57,8 +57,7 @@ public class KeyguardClockPositionAlgorithm { private int mUserSwitchPreferredY; /** - * Minimum top margin to avoid overlap with status bar, lock icon, or multi-user switcher - * avatar. + * Minimum top margin to avoid overlap with status bar or multi-user switcher avatar. */ private int mMinTopMargin; @@ -203,7 +202,7 @@ public class KeyguardClockPositionAlgorithm { if (mBypassEnabled) { return mUnlockedStackScrollerPadding; } else if (mIsSplitShade) { - return getClockY(1.0f, mDarkAmount); + return getClockY(1.0f, mDarkAmount) + mUserSwitchHeight; } else { return getClockY(1.0f, mDarkAmount) + mKeyguardStatusHeight; } @@ -213,7 +212,7 @@ public class KeyguardClockPositionAlgorithm { if (mBypassEnabled) { return (int) (mUnlockedStackScrollerPadding + mOverStretchAmount); } else if (mIsSplitShade) { - return Math.max(0, clockYPosition - mSplitShadeTopNotificationsMargin); + return clockYPosition - mSplitShadeTopNotificationsMargin + mUserSwitchHeight; } else { return clockYPosition + mKeyguardStatusHeight; } @@ -223,7 +222,7 @@ public class KeyguardClockPositionAlgorithm { if (mBypassEnabled) { return mUnlockedStackScrollerPadding; } else if (mIsSplitShade) { - return Math.max(mSplitShadeTargetTopMargin, mMinTopMargin); + return mSplitShadeTargetTopMargin + mUserSwitchHeight; } else { return mMinTopMargin + mKeyguardStatusHeight; } @@ -231,7 +230,7 @@ public class KeyguardClockPositionAlgorithm { private int getExpandedPreferredClockY() { if (mIsSplitShade) { - return Math.max(mSplitShadeTargetTopMargin, mMinTopMargin); + return mSplitShadeTargetTopMargin; } else { return mMinTopMargin; } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java index 5eb35ac74732..33c4109b3426 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java @@ -1303,8 +1303,11 @@ public class NotificationPanelViewController extends PanelViewController { mKeyguardStatusViewController.displayClock(LARGE); } updateKeyguardStatusViewAlignment(true /* animate */); - int userIconHeight = mKeyguardQsUserSwitchController != null + int userSwitcherHeight = mKeyguardQsUserSwitchController != null ? mKeyguardQsUserSwitchController.getUserIconHeight() : 0; + if (mKeyguardUserSwitcherController != null) { + userSwitcherHeight = mKeyguardUserSwitcherController.getHeight(); + } float expandedFraction = mUnlockedScreenOffAnimationController.isScreenOffAnimationPlaying() ? 1.0f : getExpandedFraction(); @@ -1324,7 +1327,7 @@ public class NotificationPanelViewController extends PanelViewController { mStatusBarHeaderHeightKeyguard, expandedFraction, mKeyguardStatusViewController.getLockscreenHeight(), - userIconHeight, + userSwitcherHeight, userSwitcherPreferredY, darkamount, mOverStretchAmount, bypassEnabled, getUnlockedStackScrollerPadding(), diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardUserSwitcherController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardUserSwitcherController.java index 43b2061ecd32..8e4778e15de7 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardUserSwitcherController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardUserSwitcherController.java @@ -245,6 +245,10 @@ public class KeyguardUserSwitcherController extends ViewController<KeyguardUserS return mUserSwitcherController.isSimpleUserSwitcher(); } + public int getHeight() { + return mListView.getHeight(); + } + /** * @param animate if the transition should be animated * @return true if the switcher state changed diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardUserSwitcherListView.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardUserSwitcherListView.java index cd8894cae684..850a4b499562 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardUserSwitcherListView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardUserSwitcherListView.java @@ -97,9 +97,12 @@ public class KeyguardUserSwitcherListView extends AlphaOptimizedLinearLayout { } else { // Update clickable state immediately so that the menu feels more responsive userItemViews[i].setClickable(open); - // Before running the animation, ensure visibility is set correctly - userItemViews[i].updateVisibilities(animate || open /* showItem */, - true /* showTextName */, false /* animate */); + // when opening we need to make views visible beforehand so they can be animated + if (open) { + userItemViews[i].updateVisibilities(true /* showItem */, + true /* showTextName */, false /* animate */); + } + } } @@ -117,6 +120,13 @@ public class KeyguardUserSwitcherListView extends AlphaOptimizedLinearLayout { setClipChildren(true); setClipToPadding(true); mAnimating = false; + if (!open) { + // after closing we hide children so that height of this view is correct + for (int i = 1; i < userItemViews.length; i++) { + userItemViews[i].updateVisibilities(false /* showItem */, + true /* showTextName */, false /* animate */); + } + } }); } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardClockPositionAlgorithmTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardClockPositionAlgorithmTest.java index 11826954baee..1827c7f0c0a6 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardClockPositionAlgorithmTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardClockPositionAlgorithmTest.java @@ -62,6 +62,7 @@ public class KeyguardClockPositionAlgorithmTest extends SysuiTestCase { private float mPanelExpansion; private int mKeyguardStatusBarHeaderHeight; private int mKeyguardStatusHeight; + private int mUserSwitchHeight; private float mDark; private float mQsExpansion; private int mCutoutTopInset = 0; @@ -264,8 +265,7 @@ public class KeyguardClockPositionAlgorithmTest extends SysuiTestCase { @Test public void clockPositionedDependingOnMarginInSplitShade() { - when(mResources.getDimensionPixelSize(R.dimen.keyguard_split_shade_top_margin)) - .thenReturn(400); + setSplitShadeTopMargin(400); mClockPositionAlgorithm.loadDimens(mResources); givenLockScreen(); mIsSplitShade = true; @@ -291,6 +291,32 @@ public class KeyguardClockPositionAlgorithmTest extends SysuiTestCase { } @Test + public void notifPaddingAccountsForMultiUserSwitcherInSplitShade() { + setSplitShadeTopMargin(100); + mUserSwitchHeight = 150; + mClockPositionAlgorithm.loadDimens(mResources); + givenLockScreen(); + mIsSplitShade = true; + // WHEN the position algorithm is run + positionClock(); + // THEN the notif padding is split shade top margin + user switch height + assertThat(mClockPosition.stackScrollerPadding).isEqualTo(250); + } + + @Test + public void clockDoesntAccountForMultiUserSwitcherInSplitShade() { + setSplitShadeTopMargin(100); + mUserSwitchHeight = 150; + mClockPositionAlgorithm.loadDimens(mResources); + givenLockScreen(); + mIsSplitShade = true; + // WHEN the position algorithm is run + positionClock(); + // THEN clockY = split shade top margin + assertThat(mClockPosition.clockY).isEqualTo(100); + } + + @Test public void notifPaddingExpandedAlignedWithClockInSplitShadeMode() { givenLockScreen(); mIsSplitShade = true; @@ -495,6 +521,11 @@ public class KeyguardClockPositionAlgorithmTest extends SysuiTestCase { assertThat(mClockPosition.clockY).isEqualTo(mCutoutTopInset); } + private void setSplitShadeTopMargin(int value) { + when(mResources.getDimensionPixelSize(R.dimen.keyguard_split_shade_top_margin)) + .thenReturn(value); + } + private void givenHighestBurnInOffset() { when(BurnInHelperKt.getBurnInOffset(anyInt(), anyBoolean())).then(returnsFirstArg()); } @@ -529,7 +560,7 @@ public class KeyguardClockPositionAlgorithmTest extends SysuiTestCase { mKeyguardStatusBarHeaderHeight, mPanelExpansion, mKeyguardStatusHeight, - 0 /* userSwitchHeight */, + mUserSwitchHeight, 0 /* userSwitchPreferredY */, mDark, ZERO_DRAG, |