diff options
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java | 29 | ||||
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java | 6 |
2 files changed, 29 insertions, 6 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java index acacc8fbb917..033c4fbed6f7 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java @@ -40,6 +40,7 @@ import android.os.UserHandle; import android.service.notification.StatusBarNotification; import android.text.TextUtils; import android.util.AttributeSet; +import android.util.DisplayMetrics; import android.util.FloatProperty; import android.util.Log; import android.util.Property; @@ -73,7 +74,10 @@ public class StatusBarIconView extends AnimatedImageView implements StatusIconDi * want to scale them (in a way that doesn't require an asset dump) down 2dp. So * 17dp * (15 / 17) = 15dp, the new height. */ - private static final float SYSTEM_ICON_SCALE = 15.f / 17.f; + private static final float SYSTEM_ICON_DESIRED_HEIGHT = 15f; + private static final float SYSTEM_ICON_INTRINSIC_HEIGHT = 17f; + private static final float SYSTEM_ICON_SCALE = + SYSTEM_ICON_DESIRED_HEIGHT / SYSTEM_ICON_INTRINSIC_HEIGHT; private final int ANIMATION_DURATION_FAST = 100; public static final int STATE_ICON = 0; @@ -202,8 +206,25 @@ public class StatusBarIconView extends AnimatedImageView implements StatusIconDi updatePivot(); } + // Makes sure that all icons are scaled to the same height (15dp). If we cannot get a height + // for the icon, it uses the default SCALE (15f / 17f) which is the old behavior private void updateIconScaleForSystemIcons() { - mIconScale = SYSTEM_ICON_SCALE; + float iconHeight = getIconHeightInDps(); + if (iconHeight != 0) { + mIconScale = SYSTEM_ICON_DESIRED_HEIGHT / iconHeight; + } else { + mIconScale = SYSTEM_ICON_SCALE; + } + } + + private float getIconHeightInDps() { + Drawable d = getDrawable(); + if (d != null) { + return ((float) getDrawable().getIntrinsicHeight() * DisplayMetrics.DENSITY_DEFAULT) + / mDensity; + } else { + return SYSTEM_ICON_INTRINSIC_HEIGHT; + } } public float getIconScaleFullyDark() { @@ -221,8 +242,8 @@ public class StatusBarIconView extends AnimatedImageView implements StatusIconDi if (density != mDensity) { mDensity = density; reloadDimens(); - maybeUpdateIconScaleDimens(); updateDrawable(); + maybeUpdateIconScaleDimens(); } boolean nightMode = (newConfig.uiMode & Configuration.UI_MODE_NIGHT_MASK) == Configuration.UI_MODE_NIGHT_YES; @@ -305,6 +326,8 @@ public class StatusBarIconView extends AnimatedImageView implements StatusIconDi if (!updateDrawable(false /* no clear */)) return false; // we have to clear the grayscale tag since it may have changed setTag(R.id.icon_is_grayscale, null); + // Maybe set scale based on icon height + maybeUpdateIconScaleDimens(); } if (!levelEquals) { setImageLevel(icon.iconLevel); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java index 27368deac847..50e406f5936e 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java @@ -86,7 +86,7 @@ public class PhoneStatusBarPolicy private static final String TAG = "PhoneStatusBarPolicy"; private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG); - public static final int LOCATION_STATUS_ICON_ID = R.drawable.stat_sys_location; + public static final int LOCATION_STATUS_ICON_ID = PrivacyType.TYPE_LOCATION.getIconId(); private final String mSlotCast; private final String mSlotHotspot; @@ -230,10 +230,10 @@ public class PhoneStatusBarPolicy mIconController.setIconVisibility(mSlotDataSaver, false); // privacy items - mIconController.setIcon(mSlotMicrophone, R.drawable.stat_sys_mic_none, + mIconController.setIcon(mSlotMicrophone, PrivacyType.TYPE_MICROPHONE.getIconId(), PrivacyType.TYPE_MICROPHONE.getName(mContext)); mIconController.setIconVisibility(mSlotMicrophone, false); - mIconController.setIcon(mSlotCamera, R.drawable.stat_sys_camera, + mIconController.setIcon(mSlotCamera, PrivacyType.TYPE_CAMERA.getIconId(), PrivacyType.TYPE_CAMERA.getName(mContext)); mIconController.setIconVisibility(mSlotCamera, false); mIconController.setIcon(mSlotLocation, LOCATION_STATUS_ICON_ID, |