Сотовые уведомления. Как установить 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 растрового изображения largeIcon, какие размеры они должны быть? Я не вижу никаких упоминаний в документах или после чистки более широкой сети.

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

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

  • notification_large_icon_height
  • notification_large_icon_width

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

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

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

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