Ответ 1
У нас не было возможности проверить его, но API 11 представил следующие размеры:
Должна иметь возможность использовать их для масштабирования изображения, прежде чем устанавливать его в уведомлении.
Мне любопытно, почему метод 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, какие размеры они должны быть? Я не вижу упоминания в документах или после очистки более широкого веб-сайта.
У нас не было возможности проверить его, но API 11 представил следующие размеры:
Должна иметь возможность использовать их для масштабирования изображения, прежде чем устанавливать его в уведомлении.
Я использовал размеры большого значка уведомления для создания масштабированного растрового изображения
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);
И затем я установил большой значок с этим масштабированным битом.