Notificaciones Honeycomb - ¿Cómo configurar LargeIcon en el tamaño correcto?


Me encuentro curioso por qué el método setLargeIcon en la Notificación.Builder solo acepta un mapa de bits, sin sobrecarga para proporcionar un id de recurso. Tal vez se hizo por razones de rendimiento, pero parece extraño ya que setSmallIcon acepta un id de elemento de diseño res.

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

Lamentablemente, el mapa de bits proporcionado no se escala en la notificación, por lo que el mapa de bits debe proporcionarse exactamente del tamaño correcto para la vista de notificación.

Asumiendo que necesito proporcionar versiones xhdpi, hdpi, mdpi y ldpi de el mapa de bits de LargeIcon, ¿qué tamaños necesitan ser? No puedo ver ninguna mención en los documentos, o después de recorrer la red más amplia.

Author: Ollie C, 2011-08-28

2 answers

Aún no ha tenido la oportunidad de comprobarlo, pero API 11 introdujo las siguientes dimensiones públicas:

Debería poder usarlos para escalar su imagen antes de configurarla en la notificación.

 60
Author: crafty,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-08-28 17:04:30

Usé las dimensiones del icono grande de la notificación para crear un mapa de bits escalado

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

Y luego establezco el icono grande con este bitamp escalado.

 60
Author: toobsco42,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-01-21 18:38:02