Merge "Downscale user icon when used for user switcher, bouncer and user chip bar" into udc-dev

This commit is contained in:
Brad Hinegardner
2023-04-25 16:14:53 +00:00
committed by Android (Google) Code Review
2 changed files with 22 additions and 6 deletions

View File

@@ -54,6 +54,7 @@ import android.graphics.Canvas;
import android.graphics.Rect;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.Icon;
import android.graphics.drawable.LayerDrawable;
import android.os.UserManager;
import android.provider.Settings;
@@ -1022,11 +1023,15 @@ public class KeyguardSecurityContainer extends ConstraintLayout {
mUserSwitcherController.removeUserSwitchCallback(mUserSwitchCallback);
}
private Drawable findUserIcon(int userId) {
private Drawable findLargeUserIcon(int userId) {
Bitmap userIcon = UserManager.get(mView.getContext()).getUserIcon(userId);
if (userIcon != null) {
return CircleFramedDrawable.getInstance(mView.getContext(),
userIcon);
int iconSize =
mResources.getDimensionPixelSize(R.dimen.bouncer_user_switcher_icon_size);
return CircleFramedDrawable.getInstance(
mView.getContext(),
Icon.scaleDownIfNecessary(userIcon, iconSize, iconSize)
);
}
return UserIcons.getDefaultUserIcon(mResources, userId, false);
@@ -1085,7 +1090,7 @@ public class KeyguardSecurityContainer extends ConstraintLayout {
return;
}
final String currentUserName = mUserSwitcherController.getCurrentUserName();
Drawable userIcon = findUserIcon(currentUser.info.id);
Drawable userIcon = findLargeUserIcon(currentUser.info.id);
((ImageView) mView.findViewById(R.id.user_icon)).setImageDrawable(userIcon);
mUserSwitcher.setText(currentUserName);

View File

@@ -26,6 +26,7 @@ import android.content.IntentFilter
import android.content.pm.UserInfo
import android.graphics.drawable.BitmapDrawable
import android.graphics.drawable.Drawable
import android.graphics.drawable.Icon
import android.os.RemoteException
import android.os.UserHandle
import android.os.UserManager
@@ -762,8 +763,18 @@ constructor(
}
// TODO(b/246631653): cache the bitmaps to avoid the background work to fetch them.
// TODO(b/246631653): downscale the bitmaps to R.dimen.max_avatar_size if requested.
val userIcon = withContext(backgroundDispatcher) { manager.getUserIcon(userId) }
val userIcon = withContext(backgroundDispatcher) {
manager.getUserIcon(userId)
?.let { bitmap ->
val iconSize =
applicationContext
.resources
.getDimensionPixelSize(R.dimen.bouncer_user_switcher_icon_size)
Icon.scaleDownIfNecessary(bitmap, iconSize, iconSize)
}
}
if (userIcon != null) {
return BitmapDrawable(userIcon)
}