From 9eb4610db728a051b6725d7efb76790e9e1f3520 Mon Sep 17 00:00:00 2001 From: Evan Laird Date: Thu, 8 Mar 2018 14:22:06 -0500 Subject: [PATCH] Update battery saver colors to make them more obvious Use colorError for the plus symbol (when in status bar) and always draw the fill as colorError when below 15% Test: turn on systemUI demo mode adb shell am broadcast -a "com.android.systemui.demo" -e command battery -e plugged false adb shell am broadcast -a "com.android.systemui.demo" -e command battery -e powersave true # verify that the plus sign is red adb shell am broadcast -a "com.android.systemui.demo" -e command battery -e level 15 # verify that the fill color is red and the plus stays red Change-Id: I9898c3d56372bad822aeff021a470958ed3908a6 Fixes: 71873178 --- .../res/color/batterymeter_plus_color.xml | 18 +++++++++++++ .../graph/BatteryMeterDrawableBase.java | 25 +++++++++++-------- .../systemui/qs/tiles/BatterySaverTile.java | 1 + 3 files changed, 33 insertions(+), 11 deletions(-) create mode 100644 packages/SettingsLib/res/color/batterymeter_plus_color.xml diff --git a/packages/SettingsLib/res/color/batterymeter_plus_color.xml b/packages/SettingsLib/res/color/batterymeter_plus_color.xml new file mode 100644 index 0000000000000..949bedeb8ac47 --- /dev/null +++ b/packages/SettingsLib/res/color/batterymeter_plus_color.xml @@ -0,0 +1,18 @@ + + + + + diff --git a/packages/SettingsLib/src/com/android/settingslib/graph/BatteryMeterDrawableBase.java b/packages/SettingsLib/src/com/android/settingslib/graph/BatteryMeterDrawableBase.java index 4fe9d56a4179e..e2f279a92796c 100644 --- a/packages/SettingsLib/src/com/android/settingslib/graph/BatteryMeterDrawableBase.java +++ b/packages/SettingsLib/src/com/android/settingslib/graph/BatteryMeterDrawableBase.java @@ -54,6 +54,7 @@ public class BatteryMeterDrawableBase extends Drawable { private int mLevel = -1; private boolean mCharging; private boolean mPowerSaveEnabled; + private boolean mPowerSaveAsColorError = true; private boolean mShowPercent; private static final boolean SINGLE_DIGIT_PERCENT = false; @@ -150,7 +151,8 @@ public class BatteryMeterDrawableBase extends Drawable { mBoltPaint.setColor(Utils.getDefaultColor(mContext, R.color.batterymeter_bolt_color)); mBoltPoints = loadPoints(res, R.array.batterymeter_bolt_points); - mPlusPaint = new Paint(mBoltPaint); + mPlusPaint = new Paint(Paint.ANTI_ALIAS_FLAG); + mPlusPaint.setColor(Utils.getDefaultColor(mContext, R.color.batterymeter_plus_color)); mPlusPoints = loadPoints(res, R.array.batterymeter_plus_points); mIntrinsicWidth = context.getResources().getDimensionPixelSize(R.dimen.battery_width); @@ -195,6 +197,10 @@ public class BatteryMeterDrawableBase extends Drawable { postInvalidate(); } + protected void setPowerSaveAsColorError(boolean asError) { + mPowerSaveAsColorError = asError; + } + // an approximation of View.postInvalidate() protected void postInvalidate() { unscheduleSelf(this::invalidateSelf); @@ -254,10 +260,6 @@ public class BatteryMeterDrawableBase extends Drawable { } private int getColorForLevel(int percent) { - // If we are in power save mode, always use the normal color. - if (mPowerSaveEnabled) { - return mIconTint; - } int thresh, color = 0; for (int i = 0; i < mColors.length; i += 2) { thresh = mColors[i]; @@ -279,7 +281,6 @@ public class BatteryMeterDrawableBase extends Drawable { mIconTint = fillColor; mFramePaint.setColor(backgroundColor); mBoltPaint.setColor(fillColor); - mPlusPaint.setColor(fillColor); mChargeColor = fillColor; invalidateSelf(); } @@ -392,14 +393,16 @@ public class BatteryMeterDrawableBase extends Drawable { mPlusFrame.top + mPlusPoints[1] * mPlusFrame.height()); } - float boltPct = (mPlusFrame.bottom - levelTop) / (mPlusFrame.bottom - mPlusFrame.top); - boltPct = Math.min(Math.max(boltPct, 0), 1); - if (boltPct <= BOLT_LEVEL_THRESHOLD) { - // draw the bolt if opaque + float fillPct = (mPlusFrame.bottom - levelTop) / (mPlusFrame.bottom - mPlusFrame.top); + fillPct = Math.min(Math.max(fillPct, 0), 1); + if (fillPct <= BOLT_LEVEL_THRESHOLD) { + // draw the plus if opaque c.drawPath(mPlusPath, mPlusPaint); } else { - // otherwise cut the bolt out of the overall shape mShapePath.op(mPlusPath, Path.Op.DIFFERENCE); + if (mPowerSaveAsColorError) { + c.drawPath(mPlusPath, mPlusPaint); + } } } diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/BatterySaverTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/BatterySaverTile.java index 95504edf2e105..89f86c539b747 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/BatterySaverTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/BatterySaverTile.java @@ -129,6 +129,7 @@ public class BatterySaverTile extends QSTileImpl implements super.setBatteryLevel(MAX_BATTERY); setPowerSave(true); setCharging(false); + setPowerSaveAsColorError(false); } @Override