Подтвердить что ты не робот

Сотовые уведомления. Как установить largeIcon в нужный размер?

Мне любопытно, почему метод setLargeIcon в Notification.Builder принимает только Bitmap, без перегрузки для предоставления идентификатора ресурса. Возможно, это было сделано по соображениям производительности, но кажется странным, поскольку setSmallIcon принимает идентификатор res drawable.

Notification.Builder builder = new Notification.Builder(application);
// ....
builder.setLargeIcon(iconBitmap);  // Requires a Bitmap
builder.setSmallIcon(iconResId);   // Requires a drawable resource ID
Notification notification = builder.getNotification();

К сожалению, предоставленное растровое изображение не масштабируется в уведомлении, поэтому Bitmap должен быть предоставлен точно правильный размер для представления уведомлений.

Предполагая, что мне нужно предоставить версии xhdpi, hdpi, mdpi и ldpi большого растрового изображения Icon, какие размеры они должны быть? Я не вижу упоминания в документах или после очистки более широкого веб-сайта.

4b9b3361

Ответ 1

У нас не было возможности проверить его, но API 11 представил следующие размеры:

Должна иметь возможность использовать их для масштабирования изображения, прежде чем устанавливать его в уведомлении.

Ответ 2

Я использовал размеры большого значка уведомления для создания масштабированного растрового изображения

BitmapDrawable contactPicDrawable = (BitmapDrawable) ContactsUtils.getContactPic(mContext, contactId);
Bitmap contactPic = contactPicDrawable.getBitmap();

Resources res = mContext.getResources();
int height = (int) res.getDimension(android.R.dimen.notification_large_icon_height);
int width = (int) res.getDimension(android.R.dimen.notification_large_icon_width);
contactPic = Bitmap.createScaledBitmap(contactPic, width, height, false); 

И затем я установил большой значок с этим масштабированным битом.