diff options
| -rw-r--r-- | packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java | 13 | ||||
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/user/domain/interactor/UserInteractor.kt | 15 |
2 files changed, 22 insertions, 6 deletions
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java index 78021ad21a77..b19cc8cd4d35 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java @@ -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); diff --git a/packages/SystemUI/src/com/android/systemui/user/domain/interactor/UserInteractor.kt b/packages/SystemUI/src/com/android/systemui/user/domain/interactor/UserInteractor.kt index 0ec1a214660c..c2922c4d6f34 100644 --- a/packages/SystemUI/src/com/android/systemui/user/domain/interactor/UserInteractor.kt +++ b/packages/SystemUI/src/com/android/systemui/user/domain/interactor/UserInteractor.kt @@ -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) } |