Merge "Increase default user icon size."
This commit is contained in:
@@ -46,11 +46,21 @@ public class UserIcons {
|
||||
* Converts a given drawable to a bitmap.
|
||||
*/
|
||||
public static Bitmap convertToBitmap(Drawable icon) {
|
||||
return convertToBitmapAtSize(icon, icon.getIntrinsicWidth(), icon.getIntrinsicHeight());
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts a given drawable to a bitmap, with width and height equal to the default icon size.
|
||||
*/
|
||||
public static Bitmap convertToBitmapAtUserIconSize(Resources res, Drawable icon) {
|
||||
int size = res.getDimensionPixelSize(R.dimen.user_icon_size);
|
||||
return convertToBitmapAtSize(icon, size, size);
|
||||
}
|
||||
|
||||
private static Bitmap convertToBitmapAtSize(Drawable icon, int width, int height) {
|
||||
if (icon == null) {
|
||||
return null;
|
||||
}
|
||||
final int width = icon.getIntrinsicWidth();
|
||||
final int height = icon.getIntrinsicHeight();
|
||||
Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
|
||||
Canvas canvas = new Canvas(bitmap);
|
||||
icon.setBounds(0, 0, width, height);
|
||||
|
||||
@@ -991,4 +991,7 @@
|
||||
<dimen name="secondary_rounded_corner_radius_adjustment">0px</dimen>
|
||||
<dimen name="secondary_rounded_corner_radius_top_adjustment">0px</dimen>
|
||||
<dimen name="secondary_rounded_corner_radius_bottom_adjustment">0px</dimen>
|
||||
|
||||
<!-- Default size for user icons (a.k.a. avatar images) -->
|
||||
<dimen name="user_icon_size">190dp</dimen>
|
||||
</resources>
|
||||
|
||||
@@ -545,6 +545,7 @@
|
||||
<java-symbol type="dimen" name="immersive_mode_cling_width" />
|
||||
<java-symbol type="dimen" name="accessibility_magnification_indicator_width" />
|
||||
<java-symbol type="dimen" name="circular_display_mask_thickness" />
|
||||
<java-symbol type="dimen" name="user_icon_size" />
|
||||
|
||||
<java-symbol type="string" name="add_account_button_label" />
|
||||
<java-symbol type="string" name="addToDictionary" />
|
||||
|
||||
@@ -22,8 +22,6 @@
|
||||
<!-- The translation for disappearing security views after having solved them. -->
|
||||
<dimen name="disappear_y_translation">-32dp</dimen>
|
||||
|
||||
<dimen name="circle_avatar_size">190dp</dimen>
|
||||
|
||||
<!-- Height of a user icon view -->
|
||||
<dimen name="user_icon_view_height">24dp</dimen>
|
||||
<!-- User spinner -->
|
||||
|
||||
@@ -144,7 +144,7 @@ public class Utils {
|
||||
* Returns a circular icon for a user.
|
||||
*/
|
||||
public static Drawable getUserIcon(Context context, UserManager um, UserInfo user) {
|
||||
final int iconSize = UserIconDrawable.getSizeForList(context);
|
||||
final int iconSize = UserIconDrawable.getDefaultSize(context);
|
||||
if (user.isManagedProfile()) {
|
||||
Drawable drawable = UserIconDrawable.getManagedUserDrawable(context);
|
||||
drawable.setBounds(0, 0, iconSize, iconSize);
|
||||
|
||||
@@ -31,8 +31,6 @@ import android.graphics.Rect;
|
||||
import android.graphics.RectF;
|
||||
import android.graphics.drawable.Drawable;
|
||||
|
||||
import com.android.settingslib.R;
|
||||
|
||||
/**
|
||||
* Converts the user avatar icon to a circularly clipped one.
|
||||
* TODO: Move this to an internal framework class and share with the one in Keyguard.
|
||||
@@ -49,9 +47,9 @@ public class CircleFramedDrawable extends Drawable {
|
||||
|
||||
public static CircleFramedDrawable getInstance(Context context, Bitmap icon) {
|
||||
Resources res = context.getResources();
|
||||
float iconSize = res.getDimension(R.dimen.circle_avatar_size);
|
||||
int iconSize = res.getDimensionPixelSize(com.android.internal.R.dimen.user_icon_size);
|
||||
|
||||
CircleFramedDrawable instance = new CircleFramedDrawable(icon, (int) iconSize);
|
||||
CircleFramedDrawable instance = new CircleFramedDrawable(icon, iconSize);
|
||||
return instance;
|
||||
}
|
||||
|
||||
|
||||
@@ -49,8 +49,6 @@ import androidx.annotation.RequiresApi;
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
import androidx.core.os.BuildCompat;
|
||||
|
||||
import com.android.settingslib.R;
|
||||
|
||||
/**
|
||||
* Converts the user avatar icon to a circularly clipped one with an optional badge and frame
|
||||
*/
|
||||
@@ -120,8 +118,9 @@ public class UserIconDrawable extends Drawable implements Drawable.Callback {
|
||||
* @param context
|
||||
* @return size in pixels
|
||||
*/
|
||||
public static int getSizeForList(Context context) {
|
||||
return (int) context.getResources().getDimension(R.dimen.circle_avatar_size);
|
||||
public static int getDefaultSize(Context context) {
|
||||
return context.getResources()
|
||||
.getDimensionPixelSize(com.android.internal.R.dimen.user_icon_size);
|
||||
}
|
||||
|
||||
public UserIconDrawable() {
|
||||
|
||||
@@ -16,19 +16,17 @@
|
||||
|
||||
package com.android.settingslib.users;
|
||||
|
||||
import android.annotation.NonNull;
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.content.res.Resources;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.BitmapFactory;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.net.Uri;
|
||||
import android.util.Log;
|
||||
import android.widget.ImageView;
|
||||
|
||||
import com.android.internal.util.UserIcons;
|
||||
import com.android.settingslib.R;
|
||||
import com.android.settingslib.drawable.CircleFramedDrawable;
|
||||
import com.android.settingslib.utils.ThreadUtils;
|
||||
|
||||
@@ -114,10 +112,10 @@ public class EditUserPhotoController {
|
||||
private void onDefaultIconSelected(int tintColor) {
|
||||
try {
|
||||
ThreadUtils.postOnBackgroundThread(() -> {
|
||||
Resources res = mActivity.getResources();
|
||||
Drawable drawable =
|
||||
UserIcons.getDefaultUserIconInColor(mActivity.getResources(), tintColor);
|
||||
Bitmap bitmap = convertToBitmap(drawable,
|
||||
(int) mActivity.getResources().getDimension(R.dimen.circle_avatar_size));
|
||||
UserIcons.getDefaultUserIconInColor(res, tintColor);
|
||||
Bitmap bitmap = UserIcons.convertToBitmapAtUserIconSize(res, drawable);
|
||||
|
||||
ThreadUtils.postOnMainThread(() -> onPhotoProcessed(bitmap));
|
||||
}).get();
|
||||
@@ -126,14 +124,6 @@ public class EditUserPhotoController {
|
||||
}
|
||||
}
|
||||
|
||||
private static Bitmap convertToBitmap(@NonNull Drawable icon, int size) {
|
||||
Bitmap bitmap = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888);
|
||||
Canvas canvas = new Canvas(bitmap);
|
||||
icon.setBounds(0, 0, size, size);
|
||||
icon.draw(canvas);
|
||||
return bitmap;
|
||||
}
|
||||
|
||||
private void onPhotoCropped(final Uri data) {
|
||||
ThreadUtils.postOnBackgroundThread(() -> {
|
||||
InputStream imageStream = null;
|
||||
|
||||
@@ -19,6 +19,7 @@ package com.android.systemui.user;
|
||||
import android.app.Dialog;
|
||||
import android.content.Context;
|
||||
import android.content.pm.UserInfo;
|
||||
import android.content.res.Resources;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.UserManager;
|
||||
|
||||
@@ -70,10 +71,12 @@ public class UserCreator {
|
||||
}
|
||||
|
||||
Drawable newUserIcon = userIcon;
|
||||
Resources res = mContext.getResources();
|
||||
if (newUserIcon == null) {
|
||||
newUserIcon = UserIcons.getDefaultUserIcon(mContext.getResources(), user.id, false);
|
||||
newUserIcon = UserIcons.getDefaultUserIcon(res, user.id, false);
|
||||
}
|
||||
mUserManager.setUserIcon(user.id, UserIcons.convertToBitmap(newUserIcon));
|
||||
mUserManager.setUserIcon(
|
||||
user.id, UserIcons.convertToBitmapAtUserIconSize(res, newUserIcon));
|
||||
|
||||
userCreationProgressDialog.dismiss();
|
||||
successCallback.accept(user);
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.internal.util;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import android.content.res.Resources;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.drawable.Drawable;
|
||||
|
||||
import androidx.test.InstrumentationRegistry;
|
||||
|
||||
import com.android.internal.R;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.junit.runners.JUnit4;
|
||||
|
||||
@RunWith(JUnit4.class)
|
||||
public class UserIconsTest {
|
||||
|
||||
@Test
|
||||
public void convertToBitmapAtUserIconSize_sizeIsCorrect() {
|
||||
Resources res = InstrumentationRegistry.getTargetContext().getResources();
|
||||
Drawable icon = UserIcons.getDefaultUserIcon(res, 0, true);
|
||||
Bitmap bitmap = UserIcons.convertToBitmapAtUserIconSize(res, icon);
|
||||
int expectedSize = res.getDimensionPixelSize(R.dimen.user_icon_size);
|
||||
|
||||
assertThat(bitmap.getWidth()).isEqualTo(expectedSize);
|
||||
assertThat(bitmap.getHeight()).isEqualTo(expectedSize);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user