From e87032cd757ab2479e018dfb8bc335abfdfe6913 Mon Sep 17 00:00:00 2001 From: Anthony Chen Date: Tue, 9 Feb 2016 07:42:25 -0800 Subject: [PATCH] Scale phone state icons. The status bar icons can all be optionally scaled by the scale factor in dimens. The phone stat icons had not been updated to include this scaling logic. Also allow the spacing between the icons in the mobile signal group to be adjusted. Change-Id: I12b35d462599f8a0747477fb280a974ffa77d01c --- packages/SystemUI/res/values/dimens.xml | 7 ++++ .../systemui/statusbar/SignalClusterView.java | 32 +++++++++++++++++-- 2 files changed, 36 insertions(+), 3 deletions(-) diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml index ee61e00225a60..52fcae1f6474e 100644 --- a/packages/SystemUI/res/values/dimens.xml +++ b/packages/SystemUI/res/values/dimens.xml @@ -528,6 +528,13 @@ 0dp + + 0dp + + + 0dp + 2dp diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterView.java b/packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterView.java index 9aa5ea0c30321..444916acb69d8 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterView.java @@ -90,6 +90,8 @@ public class SignalClusterView View mWifiSignalSpacer; LinearLayout mMobileSignalGroup; + private final int mMobileSignalGroupEndPadding; + private final int mMobileDataIconStartPadding; private final int mWideTypeIconStartPadding; private final int mSecondaryTelephonyPadding; private final int mEndPadding; @@ -113,6 +115,10 @@ public class SignalClusterView super(context, attrs, defStyle); Resources res = getResources(); + mMobileSignalGroupEndPadding = + res.getDimensionPixelSize(R.dimen.mobile_signal_group_end_padding); + mMobileDataIconStartPadding = + res.getDimensionPixelSize(R.dimen.mobile_data_icon_start_padding); mWideTypeIconStartPadding = res.getDimensionPixelSize(R.dimen.wide_type_icon_start_padding); mSecondaryTelephonyPadding = res.getDimensionPixelSize(R.dimen.secondary_telephony_padding); mEndPadding = res.getDimensionPixelSize(R.dimen.signal_cluster_battery_padding); @@ -206,6 +212,10 @@ public class SignalClusterView for (PhoneState state : mPhoneStates) { mMobileSignalGroup.addView(state.mMobileGroup); } + + int endPadding = mMobileSignalGroup.getChildCount() > 0 ? mMobileSignalGroupEndPadding : 0; + mMobileSignalGroup.setPaddingRelative(0, 0, endPadding, 0); + TunerService.get(mContext).addTunable(this, StatusBarIconController.ICON_BLACKLIST); apply(); @@ -577,9 +587,11 @@ public class SignalClusterView // When this isn't next to wifi, give it some extra padding between the signals. mMobileGroup.setPaddingRelative(isSecondaryIcon ? mSecondaryTelephonyPadding : 0, 0, 0, 0); - mMobile.setPaddingRelative(mIsMobileTypeIconWide ? mWideTypeIconStartPadding : 0, + mMobile.setPaddingRelative( + mIsMobileTypeIconWide ? mWideTypeIconStartPadding : mMobileDataIconStartPadding, 0, 0, 0); - mMobileDark.setPaddingRelative(mIsMobileTypeIconWide ? mWideTypeIconStartPadding : 0, + mMobileDark.setPaddingRelative( + mIsMobileTypeIconWide ? mWideTypeIconStartPadding : mMobileDataIconStartPadding, 0, 0, 0); if (DEBUG) Log.d(TAG, String.format("mobile: %s sig=%d typ=%d", @@ -592,12 +604,19 @@ public class SignalClusterView private void updateAnimatableIcon(ImageView view, int resId) { maybeStopAnimatableDrawable(view); - view.setImageResource(resId); + setIconForView(view, resId); maybeStartAnimatableDrawable(view); } private void maybeStopAnimatableDrawable(ImageView view) { Drawable drawable = view.getDrawable(); + + // Check if the icon has been scaled. If it has retrieve the actual drawable out of the + // wrapper. + if (drawable instanceof ScalingDrawableWrapper) { + drawable = ((ScalingDrawableWrapper) drawable).getDrawable(); + } + if (drawable instanceof Animatable) { Animatable ad = (Animatable) drawable; if (ad.isRunning()) { @@ -608,6 +627,13 @@ public class SignalClusterView private void maybeStartAnimatableDrawable(ImageView view) { Drawable drawable = view.getDrawable(); + + // Check if the icon has been scaled. If it has retrieve the actual drawable out of the + // wrapper. + if (drawable instanceof ScalingDrawableWrapper) { + drawable = ((ScalingDrawableWrapper) drawable).getDrawable(); + } + if (drawable instanceof Animatable) { Animatable ad = (Animatable) drawable; if (!ad.isRunning()) {