Merge "Use the correct drawable to badge user icon" into pi-dev

This commit is contained in:
TreeHugger Robot
2018-03-13 10:24:15 +00:00
committed by Android (Google) Code Review
3 changed files with 20 additions and 11 deletions

View File

@@ -2,7 +2,8 @@
android:width="36dp" android:width="36dp"
android:height="36dp" android:height="36dp"
android:viewportWidth="36.0" android:viewportWidth="36.0"
android:viewportHeight="36.0"> android:viewportHeight="36.0"
android:tint="?attr/colorControlNormal">
<path <path
android:pathData="M16.3,11.3h3.4v1.7h-3.4z" android:pathData="M16.3,11.3h3.4v1.7h-3.4z"
android:fillColor="#FFFFFF"/> android:fillColor="#FFFFFF"/>

View File

@@ -1,7 +1,6 @@
package com.android.settingslib; package com.android.settingslib;
import android.annotation.ColorInt; import android.annotation.ColorInt;
import android.content.ContentResolver;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.pm.PackageInfo; import android.content.pm.PackageInfo;
@@ -142,7 +141,7 @@ public class Utils {
public static Drawable getUserIcon(Context context, UserManager um, UserInfo user) { public static Drawable getUserIcon(Context context, UserManager um, UserInfo user) {
final int iconSize = UserIconDrawable.getSizeForList(context); final int iconSize = UserIconDrawable.getSizeForList(context);
if (user.isManagedProfile()) { if (user.isManagedProfile()) {
Drawable drawable = UserIconDrawable.getManagedUserBadgeDrawable(context); Drawable drawable = UserIconDrawable.getManagedUserDrawable(context);
drawable.setBounds(0, 0, iconSize, iconSize); drawable.setBounds(0, 0, iconSize, iconSize);
return drawable; return drawable;
} }

View File

@@ -16,6 +16,7 @@
package com.android.settingslib.drawable; package com.android.settingslib.drawable;
import android.annotation.DrawableRes;
import android.annotation.NonNull; import android.annotation.NonNull;
import android.app.admin.DevicePolicyManager; import android.app.admin.DevicePolicyManager;
import android.content.Context; import android.content.Context;
@@ -36,6 +37,7 @@ import android.graphics.RectF;
import android.graphics.Shader; import android.graphics.Shader;
import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.os.UserHandle;
import com.android.settingslib.R; import com.android.settingslib.R;
@@ -69,15 +71,23 @@ public class UserIconDrawable extends Drawable implements Drawable.Callback {
private float mBadgeMargin; 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 * @param context
* @return drawable containing just the badge * @return drawable containing just the badge
*/ */
public static Drawable getManagedUserBadgeDrawable(Context context) { public static Drawable getManagedUserDrawable(Context context) {
int displayDensity = context.getResources().getDisplayMetrics().densityDpi; 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( return context.getResources().getDrawableForDensity(
com.android.internal.R.drawable.ic_corp_user_badge, drawable, density, context.getTheme());
displayDensity, context.getTheme());
} }
/** /**
@@ -164,7 +174,8 @@ public class UserIconDrawable extends Drawable implements Drawable.Callback {
boolean isManaged = context.getSystemService(DevicePolicyManager.class) boolean isManaged = context.getSystemService(DevicePolicyManager.class)
.getProfileOwnerAsUser(userId) != null; .getProfileOwnerAsUser(userId) != null;
if (isManaged) { if (isManaged) {
badge = getManagedUserBadgeDrawable(context); badge = getDrawableForDisplayDensity(
context, com.android.internal.R.drawable.ic_corp_badge_case);
} }
return setBadge(badge); return setBadge(badge);
} }
@@ -322,7 +333,6 @@ public class UserIconDrawable extends Drawable implements Drawable.Callback {
mIntrinsicRadius, mIconPaint); mIntrinsicRadius, mIconPaint);
canvas.restoreToCount(saveId); canvas.restoreToCount(saveId);
} }
if (mFrameColor != null) { if (mFrameColor != null) {
mFramePaint.setColor(mFrameColor.getColorForState(getState(), Color.TRANSPARENT)); 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; final float borderRadius = mBadge.getBounds().width() * 0.5f + mBadgeMargin;
canvas.drawCircle(badgeLeft + mBadgeRadius, badgeTop + mBadgeRadius, canvas.drawCircle(badgeLeft + mBadgeRadius, badgeTop + mBadgeRadius,
borderRadius, mClearPaint); borderRadius, mClearPaint);
mBadge.draw(canvas); mBadge.draw(canvas);
} }
} }