Downscale user icon when used for user switcher, bouncer and user chip bar
Bug: b/261849183 Test: atest KeyguardSecurityContainerControllerTest Test: manual debugging - verify while debugging that the assets scaled to the dimensions requested Change-Id: If7e5f302631420e798d9be078d1d3d5a1c58f662
This commit is contained in:
@@ -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);
|
||||
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user