Add user button UX update

Visually align all add user/guest icons between settings and
systemui. Both areas may tint and size the icons slightly differently.

Fixes: 219078700
Test: visual, use the multiple users settings page
Change-Id: Ic88d5b2197f402f130d6cfeb94bdb2bb1b6aa58c
diff --git a/res/values/colors.xml b/res/values/colors.xml
index fef8419..f972e29 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -205,4 +205,7 @@
 
     <!-- Battery error text color -->
     <color name="battery_info_error_color_black">@*android:color/primary_text_default_material_light</color>
+
+    <!-- Background for multiple user settings page avatars -->
+    <color name="user_avatar_color_bg">?androidprv:attr/colorSurface</color>
 </resources>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 4f2dd93..635bd82 100755
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -134,6 +134,7 @@
     <dimen name="avatar_length">48dp</dimen>
     <dimen name="avatar_margin_top">56dp</dimen>
     <dimen name="avatar_margin_end">24dp</dimen>
+    <dimen name="multiple_users_avatar_size">20dp</dimen>
 
     <!-- Homepage title -->
     <dimen name="homepage_title_margin_bottom">8dp</dimen>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index d845dfd..ba71503 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -13625,7 +13625,7 @@
     <!-- Title for default print service main switch. [CHAR LIMIT=50] -->
     <string name="default_print_service_main_switch_title">Use print service</string>
     <!-- Title for multiple users main switch. [CHAR LIMIT=50] -->
-    <string name="multiple_users_main_switch_title">Use multiple users</string>
+    <string name="multiple_users_main_switch_title">Enable multiple users</string>
     <!-- Title for wireless debugging main switch. [CHAR LIMIT=50] -->
     <string name="wireless_debugging_main_switch_title">Use wireless debugging</string>
     <!-- Title for graphics driver main switch. [CHAR LIMIT=50] -->
diff --git a/res/xml/user_settings.xml b/res/xml/user_settings.xml
index d5e61d0..ab54989 100644
--- a/res/xml/user_settings.xml
+++ b/res/xml/user_settings.xml
@@ -40,13 +40,11 @@
     <com.android.settingslib.RestrictedPreference
         android:key="user_add"
         android:title="@string/user_add_user_or_profile_menu"
-        android:icon="@drawable/ic_add_40dp"
         android:order="20"/>
 
     <com.android.settingslib.RestrictedPreference
         android:key="supervised_user_add"
         android:title="@*android:string/supervised_user_creation_label"
-        android:icon="@*android:drawable/ic_add_supervised_user"
         android:order="25"/>
 
     <com.android.settingslib.RestrictedSwitchPreference
diff --git a/src/com/android/settings/users/UserSettings.java b/src/com/android/settings/users/UserSettings.java
index 64a65a4..45829f4 100644
--- a/src/com/android/settings/users/UserSettings.java
+++ b/src/com/android/settings/users/UserSettings.java
@@ -16,6 +16,8 @@
 
 package com.android.settings.users;
 
+import static com.android.settingslib.Utils.getColorAttrDefaultColor;
+
 import android.app.Activity;
 import android.app.ActivityManager;
 import android.app.Dialog;
@@ -31,7 +33,9 @@
 import android.content.res.Resources;
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
+import android.graphics.BlendMode;
 import android.graphics.drawable.Drawable;
+import android.graphics.drawable.LayerDrawable;
 import android.net.Uri;
 import android.os.AsyncTask;
 import android.os.Bundle;
@@ -46,6 +50,7 @@
 import android.text.TextUtils;
 import android.util.Log;
 import android.util.SparseArray;
+import android.view.Gravity;
 import android.view.Menu;
 import android.view.MenuInflater;
 import android.view.MenuItem;
@@ -1123,7 +1128,8 @@
                 && WizardManagerHelper.isDeviceProvisioned(context)
                 && mUserCaps.mUserSwitcherEnabled) {
             mAddGuest.setVisible(true);
-            mAddGuest.setIcon(getEncircledDefaultIcon());
+            Drawable icon = context.getDrawable(R.drawable.ic_account_circle);
+            mAddGuest.setIcon(centerAndTint(icon));
             mAddGuest.setSelectable(true);
             if (mGuestUserAutoCreated && mGuestCreationScheduled.get()) {
                 mAddGuest.setTitle(com.android.settingslib.R.string.user_guest);
@@ -1140,11 +1146,15 @@
 
     private void updateAddUser(Context context) {
         updateAddUserCommon(context, mAddUser, mUserCaps.mCanAddRestrictedProfile);
+        Drawable icon = context.getDrawable(R.drawable.ic_account_circle_filled);
+        mAddUser.setIcon(centerAndTint(icon));
     }
 
     private void updateAddSupervisedUser(Context context) {
         if (!TextUtils.isEmpty(mConfigSupervisedUserCreationPackage)) {
             updateAddUserCommon(context, mAddSupervisedUser, false);
+            Drawable icon = context.getDrawable(R.drawable.ic_add_supervised_user);
+            mAddSupervisedUser.setIcon(centerAndTint(icon));
         } else {
             mAddSupervisedUser.setVisible(false);
         }
@@ -1162,6 +1172,7 @@
                             || (canAddRestrictedProfile
                             && mUserManager.canAddMoreUsers(UserManager.USER_TYPE_FULL_RESTRICTED));
             addUser.setEnabled(canAddMoreUsers && !mAddingUser && canSwitchUserNow());
+
             if (!canAddMoreUsers) {
                 addUser.setSummary(
                         getString(R.string.user_add_max_count, getRealUsersCount()));
@@ -1177,6 +1188,20 @@
         }
     }
 
+    private Drawable centerAndTint(Drawable icon) {
+        icon.setTintBlendMode(BlendMode.SRC_IN);
+        icon.setTint(getColorAttrDefaultColor(getContext(), android.R.attr.textColorPrimary));
+
+        Drawable bg = getContext().getDrawable(R.drawable.user_avatar_bg).mutate();
+        LayerDrawable ld = new LayerDrawable(new Drawable[] {bg, icon});
+        int size = getContext().getResources().getDimensionPixelSize(
+                R.dimen.multiple_users_avatar_size);
+        ld.setLayerSize(1, size, size);
+        ld.setLayerGravity(1, Gravity.CENTER);
+
+        return ld;
+    }
+
     /**
      * @return number of non-guest non-managed users
      */