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

Commit 3acc0df0 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: 14102381 am: 94d3e7af

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

Change-Id: I3aeab0bbe832993955af1641c318acbccc992cf5
parents e35f3991 94d3e7af
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);