Сотовые уведомления - Как установить LargeIcon на правильный размер? - PullRequest
44 голосов
/ 28 августа 2011

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

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();

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

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

Ответы [ 2 ]

61 голосов
/ 28 августа 2011

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

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

60 голосов
/ 21 января 2013

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

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); 

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

...