Merge "Make default user icons retrievable as cached bitmaps"

This commit is contained in:
Zoltan Szatmary-Ban
2015-03-13 09:28:45 +00:00
committed by Android (Google) Code Review
2 changed files with 24 additions and 6 deletions

View File

@@ -67,6 +67,7 @@ import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager; import android.telephony.TelephonyManager;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log; import android.util.Log;
import android.util.SparseArray;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
@@ -133,6 +134,8 @@ public final class Utils {
private static final int SECONDS_PER_HOUR = 60 * 60; private static final int SECONDS_PER_HOUR = 60 * 60;
private static final int SECONDS_PER_DAY = 24 * 60 * 60; private static final int SECONDS_PER_DAY = 24 * 60 * 60;
private static SparseArray<Bitmap> sDarkDefaultUserBitmapCache = new SparseArray<Bitmap>();
/** /**
* Finds a matching activity for a preference's intent. If a matching * Finds a matching activity for a preference's intent. If a matching
* activity is not found, it will remove the preference. * activity is not found, it will remove the preference.
@@ -1083,4 +1086,22 @@ public final class Utils {
return (sm.getStorageBytesUntilLow(context.getFilesDir()) < 0); return (sm.getStorageBytesUntilLow(context.getFilesDir()) < 0);
} }
/**
* Returns a default user icon (as a {@link Bitmap}) for the given user.
*
* Note that for guest users, you should pass in {@code UserHandle.USER_NULL}.
* @param userId the user id or {@code UserHandle.USER_NULL} for a non-user specific icon
*/
public static Bitmap getDefaultUserIconAsBitmap(int userId) {
Bitmap bitmap = null;
// Try finding the corresponding bitmap in the dark bitmap cache
bitmap = sDarkDefaultUserBitmapCache.get(userId);
if (bitmap == null) {
bitmap = UserIcons.convertToBitmap(UserIcons.getDefaultUserIcon(userId, false));
// Save it to cache
sDarkDefaultUserBitmapCache.put(userId, bitmap);
}
return bitmap;
}
} }

View File

@@ -872,8 +872,7 @@ public class UserSettings extends SettingsPreferenceFragment
for (int userId : values[0]) { for (int userId : values[0]) {
Bitmap bitmap = mUserManager.getUserIcon(userId); Bitmap bitmap = mUserManager.getUserIcon(userId);
if (bitmap == null) { if (bitmap == null) {
bitmap = UserIcons.convertToBitmap(UserIcons.getDefaultUserIcon(userId, bitmap = Utils.getDefaultUserIconAsBitmap(userId);
/* light= */ false));
} }
mUserIcons.append(userId, bitmap); mUserIcons.append(userId, bitmap);
} }
@@ -889,15 +888,13 @@ public class UserSettings extends SettingsPreferenceFragment
} }
private void assignDefaultPhoto(UserInfo user) { private void assignDefaultPhoto(UserInfo user) {
Bitmap bitmap = UserIcons.convertToBitmap(UserIcons.getDefaultUserIcon(user.id, Bitmap bitmap = Utils.getDefaultUserIconAsBitmap(user.id);
/* light= */ false));
mUserManager.setUserIcon(user.id, bitmap); mUserManager.setUserIcon(user.id, bitmap);
} }
private Drawable getEncircledDefaultIcon() { private Drawable getEncircledDefaultIcon() {
if (mDefaultIconDrawable == null) { if (mDefaultIconDrawable == null) {
mDefaultIconDrawable = encircle(UserIcons.convertToBitmap( mDefaultIconDrawable = encircle(Utils.getDefaultUserIconAsBitmap(UserHandle.USER_NULL));
UserIcons.getDefaultUserIcon(UserHandle.USER_NULL, /* light= */ false)));
} }
return mDefaultIconDrawable; return mDefaultIconDrawable;
} }