diff --git a/core/res/res/drawable/ic_corp_user_badge.xml b/core/res/res/drawable/ic_corp_user_badge.xml index 6a0d9025684d3..a08f2d4845e1f 100644 --- a/core/res/res/drawable/ic_corp_user_badge.xml +++ b/core/res/res/drawable/ic_corp_user_badge.xml @@ -2,7 +2,8 @@ android:width="36dp" android:height="36dp" android:viewportWidth="36.0" - android:viewportHeight="36.0"> + android:viewportHeight="36.0" + android:tint="?attr/colorControlNormal"> diff --git a/packages/SettingsLib/src/com/android/settingslib/Utils.java b/packages/SettingsLib/src/com/android/settingslib/Utils.java index 61e113b3e3991..56a242aea6a1b 100644 --- a/packages/SettingsLib/src/com/android/settingslib/Utils.java +++ b/packages/SettingsLib/src/com/android/settingslib/Utils.java @@ -1,7 +1,6 @@ package com.android.settingslib; import android.annotation.ColorInt; -import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.content.pm.PackageInfo; @@ -142,7 +141,7 @@ public class Utils { public static Drawable getUserIcon(Context context, UserManager um, UserInfo user) { final int iconSize = UserIconDrawable.getSizeForList(context); if (user.isManagedProfile()) { - Drawable drawable = UserIconDrawable.getManagedUserBadgeDrawable(context); + Drawable drawable = UserIconDrawable.getManagedUserDrawable(context); drawable.setBounds(0, 0, iconSize, iconSize); return drawable; } diff --git a/packages/SettingsLib/src/com/android/settingslib/drawable/UserIconDrawable.java b/packages/SettingsLib/src/com/android/settingslib/drawable/UserIconDrawable.java index 7f469b5e74971..54d1aba09ae38 100644 --- a/packages/SettingsLib/src/com/android/settingslib/drawable/UserIconDrawable.java +++ b/packages/SettingsLib/src/com/android/settingslib/drawable/UserIconDrawable.java @@ -16,6 +16,7 @@ package com.android.settingslib.drawable; +import android.annotation.DrawableRes; import android.annotation.NonNull; import android.app.admin.DevicePolicyManager; import android.content.Context; @@ -36,6 +37,7 @@ import android.graphics.RectF; import android.graphics.Shader; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; +import android.os.UserHandle; import com.android.settingslib.R; @@ -69,15 +71,23 @@ public class UserIconDrawable extends Drawable implements Drawable.Callback { private float mBadgeMargin; /** - * Gets the system default managed-user badge as a drawable + * Gets the system default managed-user badge as a drawable. This drawable is tint-able. + * For badging purpose, consider + * {@link android.content.pm.PackageManager#getUserBadgedDrawableForDensity(Drawable, UserHandle, Rect, int)}. + * * @param context * @return drawable containing just the badge */ - public static Drawable getManagedUserBadgeDrawable(Context context) { - int displayDensity = context.getResources().getDisplayMetrics().densityDpi; + public static Drawable getManagedUserDrawable(Context context) { + return getDrawableForDisplayDensity + (context, com.android.internal.R.drawable.ic_corp_user_badge); + } + + private static Drawable getDrawableForDisplayDensity( + Context context, @DrawableRes int drawable) { + int density = context.getResources().getDisplayMetrics().densityDpi; return context.getResources().getDrawableForDensity( - com.android.internal.R.drawable.ic_corp_user_badge, - displayDensity, context.getTheme()); + drawable, density, context.getTheme()); } /** @@ -164,7 +174,8 @@ public class UserIconDrawable extends Drawable implements Drawable.Callback { boolean isManaged = context.getSystemService(DevicePolicyManager.class) .getProfileOwnerAsUser(userId) != null; if (isManaged) { - badge = getManagedUserBadgeDrawable(context); + badge = getDrawableForDisplayDensity( + context, com.android.internal.R.drawable.ic_corp_badge_case); } return setBadge(badge); } @@ -322,7 +333,6 @@ public class UserIconDrawable extends Drawable implements Drawable.Callback { mIntrinsicRadius, mIconPaint); canvas.restoreToCount(saveId); } - if (mFrameColor != null) { mFramePaint.setColor(mFrameColor.getColorForState(getState(), Color.TRANSPARENT)); } @@ -343,7 +353,6 @@ public class UserIconDrawable extends Drawable implements Drawable.Callback { final float borderRadius = mBadge.getBounds().width() * 0.5f + mBadgeMargin; canvas.drawCircle(badgeLeft + mBadgeRadius, badgeTop + mBadgeRadius, borderRadius, mClearPaint); - mBadge.draw(canvas); } }