diff options
| author | Tony Mak <tonymak@google.com> | 2017-11-23 16:57:08 +0800 |
|---|---|---|
| committer | Tony Mak <tonymak@google.com> | 2017-11-28 07:47:19 +0000 |
| commit | 213955e5622dd444ce2ada0f6de7dd92cc044dcb (patch) | |
| tree | 2f5efb1daa04ad5c21d3021d1dcf7a6e42cf743f | |
| parent | 4769d2febc6ccf3ec2f9dc053798c13d513c6d45 (diff) | |
Fix user color overlay is not applied
Resource overlay is now done in runtime with non-system resources object.
Amend getDefaultUserIcon to take resources object as parameter.
BUG: 69355037
Test: Factory reset, verify that overlayed color is used in multiple
places, including keyguard, the bar under quick settings and Settings app.
Change-Id: I20b0527bdcb2eb38e8bea6a05f53eea1edcba932
6 files changed, 17 insertions, 9 deletions
diff --git a/core/java/android/app/ApplicationPackageManager.java b/core/java/android/app/ApplicationPackageManager.java index 0eafdec6bb0f..cd50531a327f 100644 --- a/core/java/android/app/ApplicationPackageManager.java +++ b/core/java/android/app/ApplicationPackageManager.java @@ -2476,7 +2476,8 @@ public class ApplicationPackageManager extends PackageManager { if (itemInfo.showUserIcon != UserHandle.USER_NULL) { Bitmap bitmap = getUserManager().getUserIcon(itemInfo.showUserIcon); if (bitmap == null) { - return UserIcons.getDefaultUserIcon(itemInfo.showUserIcon, /* light= */ false); + return UserIcons.getDefaultUserIcon( + mContext.getResources(), itemInfo.showUserIcon, /* light= */ false); } return new BitmapDrawable(bitmap); } diff --git a/core/java/com/android/internal/util/UserIcons.java b/core/java/com/android/internal/util/UserIcons.java index daf745ff6a2c..bfe43237da58 100644 --- a/core/java/com/android/internal/util/UserIcons.java +++ b/core/java/com/android/internal/util/UserIcons.java @@ -61,17 +61,19 @@ public class UserIcons { * Returns a default user icon for the given user. * * Note that for guest users, you should pass in {@code UserHandle.USER_NULL}. + * + * @param resources resources object to fetch user icon / color. * @param userId the user id or {@code UserHandle.USER_NULL} for a non-user specific icon * @param light whether we want a light icon (suitable for a dark background) */ - public static Drawable getDefaultUserIcon(int userId, boolean light) { + public static Drawable getDefaultUserIcon(Resources resources, int userId, boolean light) { int colorResId = light ? R.color.user_icon_default_white : R.color.user_icon_default_gray; if (userId != UserHandle.USER_NULL) { // Return colored icon instead colorResId = USER_ICON_COLORS[userId % USER_ICON_COLORS.length]; } - Drawable icon = Resources.getSystem().getDrawable(R.drawable.ic_account_circle, null).mutate(); - icon.setColorFilter(Resources.getSystem().getColor(colorResId, null), Mode.SRC_IN); + Drawable icon = resources.getDrawable(R.drawable.ic_account_circle, null).mutate(); + icon.setColorFilter(resources.getColor(colorResId, null), Mode.SRC_IN); icon.setBounds(0, 0, icon.getIntrinsicWidth(), icon.getIntrinsicHeight()); return icon; } diff --git a/packages/SettingsLib/src/com/android/settingslib/Utils.java b/packages/SettingsLib/src/com/android/settingslib/Utils.java index 218616929e0d..eb338427b225 100644 --- a/packages/SettingsLib/src/com/android/settingslib/Utils.java +++ b/packages/SettingsLib/src/com/android/settingslib/Utils.java @@ -105,7 +105,8 @@ public class Utils { } } return new UserIconDrawable(iconSize).setIconDrawable( - UserIcons.getDefaultUserIcon(user.id, /* light= */ false)).bake(); + UserIcons.getDefaultUserIcon(context.getResources(), user.id, /* light= */ false)) + .bake(); } /** Formats a double from 0.0..100.0 with an option to round **/ diff --git a/packages/SettingsLib/src/com/android/settingslib/drawer/UserAdapter.java b/packages/SettingsLib/src/com/android/settingslib/drawer/UserAdapter.java index b27d8235563a..8a09df2849c9 100644 --- a/packages/SettingsLib/src/com/android/settingslib/drawer/UserAdapter.java +++ b/packages/SettingsLib/src/com/android/settingslib/drawer/UserAdapter.java @@ -64,7 +64,8 @@ public class UserAdapter implements SpinnerAdapter, ListAdapter { if (um.getUserIcon(userId) != null) { icon = new BitmapDrawable(context.getResources(), um.getUserIcon(userId)); } else { - icon = UserIcons.getDefaultUserIcon(userId, /* light= */ false); + icon = UserIcons.getDefaultUserIcon( + context.getResources(), userId, /* light= */ false); } } this.mIcon = encircle(context, icon); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserInfoControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserInfoControllerImpl.java index 527addf11da5..f5ae88b1788d 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserInfoControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserInfoControllerImpl.java @@ -154,7 +154,9 @@ public class UserInfoControllerImpl implements UserInfoController { avatar = new UserIconDrawable(avatarSize) .setIcon(rawAvatar).setBadgeIfManagedUser(mContext, userId).bake(); } else { - avatar = UserIcons.getDefaultUserIcon(isGuest? UserHandle.USER_NULL : userId, + avatar = UserIcons.getDefaultUserIcon( + context.getResources(), + isGuest? UserHandle.USER_NULL : userId, lightIcon); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java index 700c01a55ad6..b9cc6f97760d 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java @@ -747,7 +747,8 @@ public class UserSwitcherController { if (item.isAddUser) { return context.getDrawable(R.drawable.ic_add_circle_qs); } - Drawable icon = UserIcons.getDefaultUserIcon(item.resolveId(), /* light= */ false); + Drawable icon = UserIcons.getDefaultUserIcon( + context.getResources(), item.resolveId(), /* light= */ false); if (item.isGuest) { icon.setColorFilter(Utils.getColorAttr(context, android.R.attr.colorForeground), Mode.SRC_IN); @@ -957,7 +958,7 @@ public class UserSwitcherController { } int id = user.id; Bitmap icon = UserIcons.convertToBitmap(UserIcons.getDefaultUserIcon( - id, /* light= */ false)); + mContext.getResources(), id, /* light= */ false)); mUserManager.setUserIcon(id, icon); switchToUserId(id); } |
