From 3a0c58ae578174047767c82c88faebf8a9a7be94 Mon Sep 17 00:00:00 2001 From: Evan Laird Date: Tue, 2 Apr 2019 12:56:00 -0400 Subject: [PATCH] DO NOT MERGE Turn off LAYER_TYPE_SOFTWARE on BatteryMeterView We still need to save a layer for the BlendMode.CLEAR paint to do the right thing. But with this we can save just the layer needed to draw the battery instead of the whole battery meter view. Test: visual Bug: 130536257 Change-Id: I9d5844440250ccd9174e6c001e051c9adf62a2d0 (cherry picked from commit b4c703b8e30e50fa451171be563c556704db5ef4) --- .../com/android/settingslib/graph/ThemedBatteryDrawable.kt | 2 ++ .../SystemUI/src/com/android/systemui/BatteryMeterView.java | 4 ---- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/SettingsLib/src/com/android/settingslib/graph/ThemedBatteryDrawable.kt b/packages/SettingsLib/src/com/android/settingslib/graph/ThemedBatteryDrawable.kt index 239b1d464ea36..eff02d24431e8 100644 --- a/packages/SettingsLib/src/com/android/settingslib/graph/ThemedBatteryDrawable.kt +++ b/packages/SettingsLib/src/com/android/settingslib/graph/ThemedBatteryDrawable.kt @@ -173,6 +173,7 @@ open class ThemedBatteryDrawable(private val context: Context, frameColor: Int) } override fun draw(c: Canvas) { + c.saveLayer(null, null) unifiedPath.reset() levelPath.reset() levelRect.set(fillRect) @@ -243,6 +244,7 @@ open class ThemedBatteryDrawable(private val context: Context, frameColor: Int) // And draw the plus sign on top of the fill c.drawPath(scaledPlus, errorPaint) } + c.restore() } private fun batteryColorForLevel(level: Int): Int { diff --git a/packages/SystemUI/src/com/android/systemui/BatteryMeterView.java b/packages/SystemUI/src/com/android/systemui/BatteryMeterView.java index 329b001a0a7cd..7985dfc75ad47 100644 --- a/packages/SystemUI/src/com/android/systemui/BatteryMeterView.java +++ b/packages/SystemUI/src/com/android/systemui/BatteryMeterView.java @@ -180,10 +180,6 @@ public class BatteryMeterView extends LinearLayout implements setClipChildren(false); setClipToPadding(false); Dependency.get(ConfigurationController.class).observe(viewAttachLifecycle(this), this); - - // Needed for PorderDuff.Mode.CLEAR operations to work properly, but redraws don't happen - // enough to justify a hardware layer. - setLayerType(LAYER_TYPE_SOFTWARE, null); } private void setupLayoutTransition() {