From c181e3d04cea546919d27363b9b6b8cecb0aa7ae Mon Sep 17 00:00:00 2001 From: Caitlin Shkuratov Date: Fri, 11 Nov 2022 19:33:08 +0000 Subject: [PATCH] [Dock Defend] Cache the density in the drawable so we don't re-fetch it constantly. Bug: 255625888 Test: verified density got updated each time display size changed Change-Id: I8cbb9ffe0e3ef18dc43fe13749b7584eb83640e1 --- .../systemui/battery/AccessorizedBatteryDrawable.kt | 13 +++++++++---- .../android/systemui/battery/BatteryMeterView.java | 1 + 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/battery/AccessorizedBatteryDrawable.kt b/packages/SystemUI/src/com/android/systemui/battery/AccessorizedBatteryDrawable.kt index a91100a8856e4..b52ddc1dbc42a 100644 --- a/packages/SystemUI/src/com/android/systemui/battery/AccessorizedBatteryDrawable.kt +++ b/packages/SystemUI/src/com/android/systemui/battery/AccessorizedBatteryDrawable.kt @@ -57,6 +57,8 @@ class AccessorizedBatteryDrawable( private var shieldLeftOffsetScaled = SHIELD_LEFT_OFFSET private var shieldTopOffsetScaled = SHIELD_TOP_OFFSET + private var density = context.resources.displayMetrics.density + private val dualTone = context.resources.getBoolean(com.android.internal.R.bool.config_batterymeterDualTone) @@ -126,8 +128,7 @@ class AccessorizedBatteryDrawable( } else { BATTERY_HEIGHT } - // TODO(b/255625888): Cache the density so we don't have to re-fetch. - return (height * context.resources.displayMetrics.density).toInt() + return (height * density).toInt() } override fun getIntrinsicWidth(): Int { @@ -137,8 +138,7 @@ class AccessorizedBatteryDrawable( } else { BATTERY_WIDTH } - // TODO(b/255625888): Cache the density so we don't have to re-fetch. - return (width * context.resources.displayMetrics.density).toInt() + return (width * density).toInt() } override fun draw(c: Canvas) { @@ -195,6 +195,11 @@ class AccessorizedBatteryDrawable( mainBatteryDrawable.setColors(fgColor, bgColor, singleToneColor) } + /** Notifies this drawable that the density might have changed. */ + fun notifyDensityChanged() { + density = context.resources.displayMetrics.density + } + private fun loadPaths() { val shieldPathString = context.resources.getString(R.string.config_batterymeterShieldPath) shieldPath.set(PathParser.createPathFromPathData(shieldPathString)) diff --git a/packages/SystemUI/src/com/android/systemui/battery/BatteryMeterView.java b/packages/SystemUI/src/com/android/systemui/battery/BatteryMeterView.java index 1ab8453c61157..03d999f697d07 100644 --- a/packages/SystemUI/src/com/android/systemui/battery/BatteryMeterView.java +++ b/packages/SystemUI/src/com/android/systemui/battery/BatteryMeterView.java @@ -179,6 +179,7 @@ public class BatteryMeterView extends LinearLayout implements DarkReceiver { protected void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); updatePercentView(); + mDrawable.notifyDensityChanged(); } public void setColorsFromContext(Context context) {