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

Commit 8d2d80ee authored by András Klöczl's avatar András Klöczl Committed by Automerger Merge Worker
Browse files

Merge "Fix quick settings user switcher avatar shape issue." into rvc-dev am:...

Merge "Fix quick settings user switcher avatar shape issue." into rvc-dev am: 8652415a am: 5f6eeb58

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/12048551

Change-Id: Ia581d51159f495f3762deeee7ab7daa9dda6932e
parents 7b5aeaa7 5f6eeb58
Loading
Loading
Loading
Loading
+15 −11
Original line number Diff line number Diff line
@@ -41,7 +41,7 @@ public class CircleFramedDrawable extends Drawable {

    private final Bitmap mBitmap;
    private final int mSize;
    private final Paint mPaint;
    private Paint mIconPaint;

    private float mScale;
    private Rect mSrcRect;
@@ -75,18 +75,18 @@ public class CircleFramedDrawable extends Drawable {
        canvas.drawColor(0, PorterDuff.Mode.CLEAR);

        // opaque circle matte
        mPaint = new Paint();
        mPaint.setAntiAlias(true);
        mPaint.setColor(Color.BLACK);
        mPaint.setStyle(Paint.Style.FILL);
        canvas.drawPath(fillPath, mPaint);
        Paint paint = new Paint();
        paint.setAntiAlias(true);
        paint.setColor(Color.BLACK);
        paint.setStyle(Paint.Style.FILL);
        canvas.drawPath(fillPath, paint);

        // mask in the icon where the bitmap is opaque
        mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
        canvas.drawBitmap(icon, cropRect, circleRect, mPaint);
        paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
        canvas.drawBitmap(icon, cropRect, circleRect, paint);

        // prepare paint for frame drawing
        mPaint.setXfermode(null);
        paint.setXfermode(null);

        mScale = 1f;

@@ -100,7 +100,7 @@ public class CircleFramedDrawable extends Drawable {
        final float pad = (mSize - inside) / 2f;

        mDstRect.set(pad, pad, mSize - pad, mSize - pad);
        canvas.drawBitmap(mBitmap, mSrcRect, mDstRect, null);
        canvas.drawBitmap(mBitmap, mSrcRect, mDstRect, mIconPaint);
    }

    public void setScale(float scale) {
@@ -122,6 +122,10 @@ public class CircleFramedDrawable extends Drawable {

    @Override
    public void setColorFilter(ColorFilter cf) {
        if (mIconPaint == null) {
            mIconPaint = new Paint();
        }
        mIconPaint.setColorFilter(cf);
    }

    @Override
+3 −2
Original line number Diff line number Diff line
@@ -21,7 +21,6 @@ import static com.android.systemui.statusbar.policy.UserSwitcherController.USER_

import android.content.Context;
import android.content.Intent;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.LayerDrawable;
import android.util.AttributeSet;
@@ -33,6 +32,7 @@ import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.UiEventLogger;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settingslib.RestrictedLockUtils;
import com.android.settingslib.drawable.CircleFramedDrawable;
import com.android.systemui.R;
import com.android.systemui.qs.PseudoGridView;
import com.android.systemui.qs.QSUserSwitcherEvent;
@@ -100,7 +100,8 @@ public class UserDetailView extends PseudoGridView {
            if (item.picture == null) {
                v.bind(name, getDrawable(mContext, item).mutate(), item.resolveId());
            } else {
                Drawable drawable = new BitmapDrawable(v.getResources(), item.picture);
                int avatarSize = (int) v.getResources().getDimension(R.dimen.qs_framed_avatar_size);
                Drawable drawable = new CircleFramedDrawable(item.picture, avatarSize);
                drawable.setColorFilter(
                        item.isSwitchToEnabled ? null : getDisabledUserAvatarColorFilter());
                v.bind(name, drawable, item.info.id);
+3 −2
Original line number Diff line number Diff line
@@ -24,7 +24,6 @@ import android.animation.AnimatorListenerAdapter;
import android.animation.ObjectAnimator;
import android.content.Context;
import android.database.DataSetObserver;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.LayerDrawable;
import android.util.AttributeSet;
@@ -36,6 +35,7 @@ import android.view.ViewStub;
import android.widget.FrameLayout;

import com.android.settingslib.animation.AppearAnimationUtils;
import com.android.settingslib.drawable.CircleFramedDrawable;
import com.android.systemui.Dependency;
import com.android.systemui.Interpolators;
import com.android.systemui.R;
@@ -288,7 +288,8 @@ public class KeyguardUserSwitcher {
            if (item.picture == null) {
                v.bind(name, getDrawable(mContext, item).mutate(), item.resolveId());
            } else {
                Drawable drawable = new BitmapDrawable(v.getResources(), item.picture);
                int avatarSize = (int) v.getResources().getDimension(R.dimen.kg_framed_avatar_size);
                Drawable drawable = new CircleFramedDrawable(item.picture, avatarSize);
                drawable.setColorFilter(
                        item.isSwitchToEnabled ? null : getDisabledUserAvatarColorFilter());
                v.bind(name, drawable, item.info.id);