From 6ebba59aadb287105d4a4bdbf7d1c7851f4fe210 Mon Sep 17 00:00:00 2001 From: Selim Cinek Date: Tue, 31 May 2016 15:28:28 -0700 Subject: [PATCH] Fixes a few bugs on the keyguard with font density changes The reinflation of the system icons was not working correctly and all the paddings were of. Also the affordance icons were outdated and had to be reloaded. Change-Id: I3cf338d33a82c8be94d01561d7b7d9a37a563ad9 Fixes: 28968657 Fixes: 28672410 --- .../res/layout/keyguard_status_bar.xml | 6 +- packages/SystemUI/res/values/dimens.xml | 3 + .../phone/KeyguardBottomAreaView.java | 18 ++++++ .../phone/KeyguardStatusBarView.java | 57 ++++++++++++++++--- .../systemui/statusbar/phone/LockIcon.java | 23 +++++++- .../statusbar/phone/PhoneStatusBar.java | 2 +- 6 files changed, 96 insertions(+), 13 deletions(-) diff --git a/packages/SystemUI/res/layout/keyguard_status_bar.xml b/packages/SystemUI/res/layout/keyguard_status_bar.xml index b5f917a4e574b..a2dfc0dd115d5 100644 --- a/packages/SystemUI/res/layout/keyguard_status_bar.xml +++ b/packages/SystemUI/res/layout/keyguard_status_bar.xml @@ -27,7 +27,7 @@ @@ -43,7 +43,7 @@ android:layout_height="@dimen/status_bar_header_height" android:layout_toStartOf="@id/multi_user_switch" android:layout_alignWithParentIfMissing="true" - android:layout_marginStart="16dp" + android:layout_marginStart="@dimen/system_icons_super_container_margin_start" android:paddingEnd="@dimen/system_icons_keyguard_padding_end"> 40dp + + 16dp + -1px 416dp diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java index 8d74536c76431..772c76642b9eb 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java @@ -230,6 +230,24 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL mIndicationText.setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources().getDimensionPixelSize( com.android.internal.R.dimen.text_size_small_material)); + + ViewGroup.LayoutParams lp = mCameraImageView.getLayoutParams(); + lp.width = getResources().getDimensionPixelSize(R.dimen.keyguard_affordance_width); + lp.height = getResources().getDimensionPixelSize(R.dimen.keyguard_affordance_height); + mCameraImageView.setLayoutParams(lp); + mCameraImageView.setImageDrawable(mContext.getDrawable(R.drawable.ic_camera_alt_24dp)); + + lp = mLockIcon.getLayoutParams(); + lp.width = getResources().getDimensionPixelSize(R.dimen.keyguard_affordance_width); + lp.height = getResources().getDimensionPixelSize(R.dimen.keyguard_affordance_height); + mLockIcon.setLayoutParams(lp); + mLockIcon.update(true /* force */); + + lp = mLeftAffordanceView.getLayoutParams(); + lp.width = getResources().getDimensionPixelSize(R.dimen.keyguard_affordance_width); + lp.height = getResources().getDimensionPixelSize(R.dimen.keyguard_affordance_height); + mLeftAffordanceView.setLayoutParams(lp); + updateLeftAffordanceIcon(); } public void setActivityStarter(ActivityStarter activityStarter) { 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 e08b945493c98..7db2870620a02 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java @@ -58,6 +58,7 @@ public class KeyguardStatusBarView extends RelativeLayout private KeyguardUserSwitcher mKeyguardUserSwitcher; private int mSystemIconsSwitcherHiddenExpandedMargin; + private View mSystemIconsContainer; public KeyguardStatusBarView(Context context, AttributeSet attrs) { super(context, attrs); @@ -67,6 +68,7 @@ public class KeyguardStatusBarView extends RelativeLayout protected void onFinishInflate() { super.onFinishInflate(); mSystemIconsSuperContainer = findViewById(R.id.system_icons_super_container); + mSystemIconsContainer = findViewById(R.id.system_icons_container); mMultiUserSwitch = (MultiUserSwitch) findViewById(R.id.multi_user_switch); mMultiUserAvatar = (ImageView) findViewById(R.id.multi_user_avatar); mBatteryLevel = (TextView) findViewById(R.id.battery_level); @@ -79,17 +81,58 @@ public class KeyguardStatusBarView extends RelativeLayout protected void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); - // Respect font size setting. - mCarrierLabel.setTextSize(TypedValue.COMPLEX_UNIT_PX, - getResources().getDimensionPixelSize( - com.android.internal.R.dimen.text_size_small_material)); - mBatteryLevel.setTextSize(TypedValue.COMPLEX_UNIT_PX, - getResources().getDimensionPixelSize(R.dimen.battery_level_text_size)); - MarginLayoutParams lp = (MarginLayoutParams) mMultiUserAvatar.getLayoutParams(); lp.width = lp.height = getResources().getDimensionPixelSize( R.dimen.multi_user_avatar_keyguard_size); mMultiUserAvatar.setLayoutParams(lp); + + lp = (MarginLayoutParams) mMultiUserSwitch.getLayoutParams(); + lp.width = getResources().getDimensionPixelSize( + R.dimen.multi_user_switch_width_keyguard); + lp.setMarginEnd(getResources().getDimensionPixelSize( + R.dimen.multi_user_switch_keyguard_margin)); + mMultiUserSwitch.setLayoutParams(lp); + + lp = (MarginLayoutParams) mSystemIconsSuperContainer.getLayoutParams(); + lp.height = getResources().getDimensionPixelSize( + R.dimen.status_bar_header_height); + lp.setMarginStart(getResources().getDimensionPixelSize( + R.dimen.system_icons_super_container_margin_start)); + mSystemIconsSuperContainer.setLayoutParams(lp); + mSystemIconsSuperContainer.setPaddingRelative(mSystemIconsSuperContainer.getPaddingStart(), + mSystemIconsSuperContainer.getPaddingTop(), + getResources().getDimensionPixelSize(R.dimen.system_icons_keyguard_padding_end), + mSystemIconsSuperContainer.getPaddingBottom()); + + lp = (MarginLayoutParams) mSystemIconsContainer.getLayoutParams(); + lp.height = getResources().getDimensionPixelSize( + R.dimen.status_bar_height); + mSystemIconsContainer.setLayoutParams(lp); + + lp = (MarginLayoutParams) mBatteryLevel.getLayoutParams(); + lp.setMarginStart( + getResources().getDimensionPixelSize(R.dimen.header_battery_margin_keyguard)); + mBatteryLevel.setLayoutParams(lp); + mBatteryLevel.setPaddingRelative(mBatteryLevel.getPaddingStart(), + mBatteryLevel.getPaddingTop(), + getResources().getDimensionPixelSize(R.dimen.battery_level_padding_end), + mBatteryLevel.getPaddingBottom()); + mBatteryLevel.setTextSize(TypedValue.COMPLEX_UNIT_PX, + getResources().getDimensionPixelSize(R.dimen.battery_level_text_size)); + + // Respect font size setting. + mCarrierLabel.setTextSize(TypedValue.COMPLEX_UNIT_PX, + getResources().getDimensionPixelSize( + com.android.internal.R.dimen.text_size_small_material)); + lp = (MarginLayoutParams) mCarrierLabel.getLayoutParams(); + lp.setMarginStart( + getResources().getDimensionPixelSize(R.dimen.keyguard_carrier_text_margin)); + mCarrierLabel.setLayoutParams(lp); + + lp = (MarginLayoutParams) getLayoutParams(); + lp.height = getResources().getDimensionPixelSize( + R.dimen.status_bar_header_height_keyguard); + setLayoutParams(lp); } private void loadDimens() { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockIcon.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockIcon.java index 8e58d14a6e14f..ab5ee932f50dd 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockIcon.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockIcon.java @@ -17,6 +17,7 @@ package com.android.systemui.statusbar.phone; import android.content.Context; +import android.content.res.Configuration; import android.graphics.drawable.AnimatedVectorDrawable; import android.graphics.drawable.Drawable; import android.graphics.drawable.InsetDrawable; @@ -46,10 +47,11 @@ public class LockIcon extends KeyguardAffordanceView { private boolean mDeviceInteractive; private boolean mScreenOn; private boolean mLastScreenOn; - private final TrustDrawable mTrustDrawable; + private TrustDrawable mTrustDrawable; private final UnlockMethodCache mUnlockMethodCache; private AccessibilityController mAccessibilityController; private boolean mHasFingerPrintIcon; + private int mDensity; public LockIcon(Context context, AttributeSet attrs) { super(context, attrs); @@ -89,7 +91,24 @@ public class LockIcon extends KeyguardAffordanceView { update(); } + @Override + protected void onConfigurationChanged(Configuration newConfig) { + super.onConfigurationChanged(newConfig); + final int density = newConfig.densityDpi; + if (density != mDensity) { + mDensity = density; + mTrustDrawable.stop(); + mTrustDrawable = new TrustDrawable(getContext()); + setBackground(mTrustDrawable); + update(); + } + } + public void update() { + update(false /* force */); + } + + public void update(boolean force) { boolean visible = isShown() && KeyguardUpdateMonitor.getInstance(mContext).isDeviceInteractive(); if (visible) { @@ -103,7 +122,7 @@ public class LockIcon extends KeyguardAffordanceView { boolean useAdditionalPadding = anyFingerprintIcon; boolean trustHidden = anyFingerprintIcon; if (state != mLastState || mDeviceInteractive != mLastDeviceInteractive - || mScreenOn != mLastScreenOn) { + || mScreenOn != mLastScreenOn || force) { boolean isAnim = true; int iconRes = getAnimationResForTransition(mLastState, state, mLastDeviceInteractive, mDeviceInteractive, mLastScreenOn, mScreenOn); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java index 31fa3bf92ade9..1d3cb97c51278 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java @@ -997,7 +997,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, private void inflateSignalClusters() { SignalClusterView signalClusterView = reinflateSignalCluster(mStatusBarView); mIconController.setSignalCluster(signalClusterView); - reinflateSignalCluster(mKeyguardStatusView); + reinflateSignalCluster(mKeyguardStatusBar); } private SignalClusterView reinflateSignalCluster(View view) {