diff options
3 files changed, 21 insertions, 15 deletions
diff --git a/packages/SettingsLib/src/com/android/settingslib/drawable/CircleFramedDrawable.java b/packages/SettingsLib/src/com/android/settingslib/drawable/CircleFramedDrawable.java index 278b57da0c28..e5ea4467517b 100644 --- a/packages/SettingsLib/src/com/android/settingslib/drawable/CircleFramedDrawable.java +++ b/packages/SettingsLib/src/com/android/settingslib/drawable/CircleFramedDrawable.java @@ -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,8 +122,12 @@ public class CircleFramedDrawable extends Drawable { @Override public void setColorFilter(ColorFilter cf) { + if (mIconPaint == null) { + mIconPaint = new Paint(); + } + mIconPaint.setColorFilter(cf); } - + @Override public int getIntrinsicWidth() { return mSize; diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/UserDetailView.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/UserDetailView.java index fba7a22351e2..2ef693467d27 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/UserDetailView.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/UserDetailView.java @@ -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); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardUserSwitcher.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardUserSwitcher.java index 512d0f3910f8..5ec5ec662164 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardUserSwitcher.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardUserSwitcher.java @@ -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); |