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