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

Commit 7df0b178 authored by Alex Chau's avatar Alex Chau
Browse files

Respect Drawable's alpha when drawing UserBadgeDrawable's background

- Before this fix, the badge's background is always solid even when Drawable's alpha is 0. This caused a white dot to appear in Overview for the splash icon.
- Applied alpha to the paint when drawing UserBadgeDrawable's background

Fix: 316576459
Test: Quick switch / Swipe down with out of orientation thumbnail show splash correctly
Test: Rotate in Overview doens't cause white dot to appear for work profile icons
Test: UserBadgeDrawableTest
Flag: EXEMPT bugfix
Change-Id: I8b8e52aba12a1c7d048a9b9d4dd2a556f6788eba
parent 164d7d46
Loading
Loading
Loading
Loading
+12 −4
Original line number Diff line number Diff line
@@ -30,9 +30,11 @@ import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.DrawableWrapper;

import androidx.annotation.ColorInt;
import androidx.annotation.NonNull;
import androidx.annotation.VisibleForTesting;
import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
import androidx.core.graphics.ColorUtils;

/**
 * A drawable used for drawing user badge. It draws a circle around the actual badge,
@@ -47,7 +49,8 @@ public class UserBadgeDrawable extends DrawableWrapper {
    private static final float SHADOW_RADIUS = 11.5f;
    private static final float SHADOW_OFFSET_Y = 0.25f;

    private static final int SHADOW_COLOR = 0x11000000;
    @VisibleForTesting
    static final int SHADOW_COLOR = 0x11000000;

    private final Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);

@@ -90,10 +93,10 @@ public class UserBadgeDrawable extends DrawableWrapper {
            canvas.translate(b.left, b.top);
            canvas.scale(b.width() / VIEWPORT_SIZE, b.height() / VIEWPORT_SIZE);

            mPaint.setColor(SHADOW_COLOR);
            mPaint.setColor(blendDrawableAlpha(SHADOW_COLOR));
            canvas.drawCircle(CENTER, CENTER + SHADOW_OFFSET_Y, SHADOW_RADIUS, mPaint);

            mPaint.setColor(mBgColor);
            mPaint.setColor(blendDrawableAlpha(mBgColor));
            canvas.drawCircle(CENTER, CENTER, BG_RADIUS, mPaint);

            canvas.restoreToCount(saveCount);
@@ -101,6 +104,11 @@ public class UserBadgeDrawable extends DrawableWrapper {
        super.draw(canvas);
    }

    private @ColorInt int blendDrawableAlpha(@ColorInt int color) {
        int alpha = (int) (Color.valueOf(color).alpha() * getAlpha());
        return ColorUtils.setAlphaComponent(color, alpha);
    }

    @Override
    public void setColorFilter(@Nullable ColorFilter filter) {
        if (filter == null) {