From 1a6faf3d0625c0b0d565b6b7e3d207c587882659 Mon Sep 17 00:00:00 2001 From: Milton Wu Date: Thu, 26 Aug 2021 02:42:16 +0000 Subject: [PATCH] Align Keyguard statusBar margin padding to phone's Align Keyguard status bar magin and padding to phone's through adding missing layout factor privacy dot space to the edge of screen, and use status_bar_padding_end to repleace system_icons_keyguard_padding_end. Manually check layout for following cases 1. Check battery icon, battery percentage, wifi icon at the same status bar location between keyguard locked and unlocked with following scenarios. a. w/ or w/o battery percentage b. RTL or LTR 2. Check multi-user icon looks good. Test: atest SystemUITests Test: Manually check phone status bar and keyguard status bar Bug: 195670442 Change-Id: Id38b64117e952b13937d80e77260e8a8c2b76594 --- .../res/layout/keyguard_status_bar.xml | 2 +- .../phone/KeyguardStatusBarView.java | 48 +++++++++++-------- 2 files changed, 30 insertions(+), 20 deletions(-) diff --git a/packages/SystemUI/res/layout/keyguard_status_bar.xml b/packages/SystemUI/res/layout/keyguard_status_bar.xml index eb7638233efd4..850b017173084 100644 --- a/packages/SystemUI/res/layout/keyguard_status_bar.xml +++ b/packages/SystemUI/res/layout/keyguard_status_bar.xml @@ -30,7 +30,6 @@ android:id="@+id/status_icon_area" android:layout_width="wrap_content" android:layout_height="match_parent" - android:paddingEnd="@dimen/system_icons_keyguard_padding_end" android:paddingTop="@dimen/status_bar_padding_top" android:layout_alignParentEnd="true" android:gravity="center_vertical|end" > @@ -39,6 +38,7 @@ android:layout_height="match_parent" android:layout_weight="1" android:layout_marginStart="@dimen/system_icons_super_container_margin_start" + android:layout_marginEnd="@dimen/status_bar_padding_end" android:gravity="center_vertical|end"> diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java index e272d2713e2a9..55e0c9b979c90 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java @@ -96,7 +96,8 @@ public class KeyguardStatusBarView extends RelativeLayout implements private final UserManager mUserManager; private int mSystemIconsSwitcherHiddenExpandedMargin; - private int mSystemIconsBaseMargin; + private int mStatusBarPaddingEnd; + private int mMinDotWidth; private View mSystemIconsContainer; private TintedIconManager mIconManager; private List mBlockedIcons = new ArrayList<>(); @@ -157,14 +158,7 @@ public class KeyguardStatusBarView extends RelativeLayout implements mMultiUserAvatar.setLayoutParams(lp); // System icons - lp = (MarginLayoutParams) mSystemIconsContainer.getLayoutParams(); - lp.setMarginStart(getResources().getDimensionPixelSize( - R.dimen.system_icons_super_container_margin_start)); - mSystemIconsContainer.setLayoutParams(lp); - mSystemIconsContainer.setPaddingRelative(mSystemIconsContainer.getPaddingStart(), - mSystemIconsContainer.getPaddingTop(), - getResources().getDimensionPixelSize(R.dimen.system_icons_keyguard_padding_end), - mSystemIconsContainer.getPaddingBottom()); + updateSystemIconsLayoutParams(); // Respect font size setting. mCarrierLabel.setTextSize(TypedValue.COMPLEX_UNIT_PX, @@ -194,8 +188,10 @@ public class KeyguardStatusBarView extends RelativeLayout implements Resources res = getResources(); mSystemIconsSwitcherHiddenExpandedMargin = res.getDimensionPixelSize( R.dimen.system_icons_switcher_hidden_expanded_margin); - mSystemIconsBaseMargin = res.getDimensionPixelSize( - R.dimen.system_icons_super_container_avatarless_margin_end); + mStatusBarPaddingEnd = res.getDimensionPixelSize( + R.dimen.status_bar_padding_end); + mMinDotWidth = res.getDimensionPixelSize( + R.dimen.ongoing_appops_dot_min_padding); mCutoutSideNudge = getResources().getDimensionPixelSize( R.dimen.display_cutout_margin_consumption); mShowPercentAvailable = getContext().getResources().getBoolean( @@ -243,16 +239,24 @@ public class KeyguardStatusBarView extends RelativeLayout implements private void updateSystemIconsLayoutParams() { LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) mSystemIconsContainer.getLayoutParams(); - // If the avatar icon is gone, we need to have some end margin to display the system icons - // correctly. - int baseMarginEnd = mMultiUserAvatar.getVisibility() == View.GONE - ? mSystemIconsBaseMargin - : 0; + + int marginStart = getResources().getDimensionPixelSize( + R.dimen.system_icons_super_container_margin_start); + + // Use status_bar_padding_end to replace original + // system_icons_super_container_avatarless_margin_end to prevent different end alignment + // between PhoneStatusBarView and KeyguardStatusBarView + int baseMarginEnd = mStatusBarPaddingEnd; int marginEnd = mKeyguardUserSwitcherEnabled ? mSystemIconsSwitcherHiddenExpandedMargin : baseMarginEnd; - marginEnd = calculateMargin(marginEnd, mPadding.second); - if (marginEnd != lp.getMarginEnd()) { + + // Align PhoneStatusBar right margin/padding, only use + // 1. status bar layout: mPadding(consider round_corner + privacy dot) + // 2. icon container: R.dimen.status_bar_padding_end + + if (marginEnd != lp.getMarginEnd() || marginStart != lp.getMarginStart()) { + lp.setMarginStart(marginStart); lp.setMarginEnd(marginEnd); mSystemIconsContainer.setLayoutParams(lp); } @@ -287,7 +291,13 @@ public class KeyguardStatusBarView extends RelativeLayout implements mPadding = StatusBarWindowView.paddingNeededForCutoutAndRoundedCorner( mDisplayCutout, cornerCutoutMargins, mRoundedCornerPadding); - setPadding(mPadding.first, waterfallTop, mPadding.second, 0); + + // consider privacy dot space + final int minLeft = isLayoutRtl() ? Math.max(mMinDotWidth, mPadding.first) : mPadding.first; + final int minRight = isLayoutRtl() ? mPadding.second : + Math.max(mMinDotWidth, mPadding.second); + + setPadding(minLeft, waterfallTop, minRight, 0); } private boolean updateLayoutParamsNoCutout() {