Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cae46e71 authored by Evan Laird's avatar Evan Laird Committed by Jay Aliomer
Browse files

Default dual tone alpha set to 0.3

In the event where a user of ThemedBatteryDrawable does not set the
foreground / background colors explicitly, but rather uses a color
filter, just set a default alpha for the background paint.

Test: manual; set theme to any dualtone icon pack and visit settings
battery page
Bug: 162901879

Change-Id: If9becd40fbebeba15f3714e012623d3da61a7efe
parent 06c050ca
Loading
Loading
Loading
Loading
+33 −0
Original line number Original line Diff line number Diff line
@@ -14,6 +14,9 @@ import android.content.res.Resources;
import android.content.res.TypedArray;
import android.content.res.TypedArray;
import android.graphics.Bitmap;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.graphics.Color;
import android.graphics.ColorFilter;
import android.graphics.ColorMatrix;
import android.graphics.ColorMatrixColorFilter;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.Drawable;
import android.location.LocationManager;
import android.location.LocationManager;
@@ -302,6 +305,36 @@ public class Utils {
        return drawable;
        return drawable;
    }
    }


    /**
    * Create a color matrix suitable for a ColorMatrixColorFilter that modifies only the color but
    * preserves the alpha for a given drawable
    * @param color
    * @return a color matrix that uses the source alpha and given color
    */
    public static ColorMatrix getAlphaInvariantColorMatrixForColor(@ColorInt int color) {
        int r = Color.red(color);
        int g = Color.green(color);
        int b = Color.blue(color);

        ColorMatrix cm = new ColorMatrix(new float[] {
                0, 0, 0, 0, r,
                0, 0, 0, 0, g,
                0, 0, 0, 0, b,
                0, 0, 0, 1, 0 });

        return cm;
    }

    /**
     * Create a ColorMatrixColorFilter to tint a drawable but retain its alpha characteristics
     *
     * @return a ColorMatrixColorFilter which changes the color of the output but is invariant on
     * the source alpha
     */
    public static ColorFilter getAlphaInvariantColorFilterForColor(@ColorInt int color) {
        return new ColorMatrixColorFilter(getAlphaInvariantColorMatrixForColor(color));
    }

    /**
    /**
     * Determine whether a package is a "system package", in which case certain things (like
     * Determine whether a package is a "system package", in which case certain things (like
     * disabling notifications or disabling the package altogether) should be disallowed.
     * disabling notifications or disabling the package altogether) should be disallowed.
+2 −1
Original line number Original line Diff line number Diff line
@@ -108,6 +108,7 @@ open class ThemedBatteryDrawable(private val context: Context, frameColor: Int)


    private val fillColorStrokePaint = Paint(Paint.ANTI_ALIAS_FLAG).also { p ->
    private val fillColorStrokePaint = Paint(Paint.ANTI_ALIAS_FLAG).also { p ->
        p.color = frameColor
        p.color = frameColor
        p.alpha = 255
        p.isDither = true
        p.isDither = true
        p.strokeWidth = 5f
        p.strokeWidth = 5f
        p.style = Paint.Style.STROKE
        p.style = Paint.Style.STROKE
@@ -145,7 +146,7 @@ open class ThemedBatteryDrawable(private val context: Context, frameColor: Int)
    // Only used if dualTone is set to true
    // Only used if dualTone is set to true
    private val dualToneBackgroundFill = Paint(Paint.ANTI_ALIAS_FLAG).also { p ->
    private val dualToneBackgroundFill = Paint(Paint.ANTI_ALIAS_FLAG).also { p ->
        p.color = frameColor
        p.color = frameColor
        p.alpha = 255
        p.alpha = 85 // ~0.3 alpha by default
        p.isDither = true
        p.isDither = true
        p.strokeWidth = 0f
        p.strokeWidth = 0f
        p.style = Paint.Style.FILL_AND_STROKE
        p.style = Paint.Style.FILL_AND_STROKE