convertir imagen de recurso dibujable en mapa de bits

172

Estoy tratando de usar el Notification.Builder.setLargeIcon(bitmap) que toma una imagen de mapa de bits. Tengo la imagen que quiero usar en mi carpeta dibujable, entonces, ¿cómo convierto eso en mapa de bits?

tyczj
fuente

Respuestas:

406

Probablemente quieras decir Notification.Builder.setLargeIcon(Bitmap), ¿verdad? :)

Bitmap largeIcon = BitmapFactory.decodeResource(getResources(), R.drawable.large_icon);
notBuilder.setLargeIcon(largeIcon);

Este es un gran método para convertir imágenes de recursos en Android Bitmaps.

poitroae
fuente
2
¿Por qué no presionar el botón "Editar" y solucionar la pregunta? (Más una sugerencia para el futuro, ya lo hice para este ... Sugeriría editar su respuesta para no criticar sus errores tipográficos. No lo haré por usted). En otra nota, +1 por tener un respuesta de trabajo :)
ArtOfWarfare
1
No creo que esto sea correcto como respuesta general , al menos no desde que Android comenzó a admitir dibujos vectoriales.
roberto tomás
después de implementar la solución... E/CommitToConfigurationOperation: Malformed snapshot token (size): ... E/NotificationService: Not posting notification with icon==0: Notification(pri=0 contentView=null vibrate=null sound=content://settings/system/notification_sound defaults=0x0 flags=0x10 color=0x00000000 vis=PRIVATE) ... E/NotificationService: WARNING: In a future release this will crash the app:...
obtengo
44
Drawable myDrawable = getResources().getDrawable(R.drawable.logo);
Bitmap myLogo = ((BitmapDrawable) myDrawable).getBitmap();

Como API 22 getResources().getDrawable()está en desuso, podemos usar la siguiente solución.

Drawable vectorDrawable = VectorDrawableCompat.create(getResources(), R.drawable.logo,  getContext().getTheme());
Bitmap myLogo = ((BitmapDrawable) vectorDrawable).getBitmap();
AndyW
fuente
1
Me dice que bitmapDrawable no se puede resolver a un tipo
Hola @ 20Cents, ¿intentaste stackoverflow.com/questions/18218938/…?
AndyW
Simplemente presione ctrl + shift + O si está recibiendo no se puede resolver a un tipo de bitmapDrawable. ¡Salud!
portfoliobuilder
Desafortunadamente, esta forma bloquea mi aplicación!
Fahad Alduraibi
getDrawable está en desuso
Junior Mayhé
13
Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.my_drawable);

Contextpuede ser su actual Activity.

aromero
fuente
2
y para dibujos vectoriales?
roberto tomás
9

Aquí hay otra forma de convertir recursos extraíbles en mapas de bits en Android:

Drawable drawable = getResources().getDrawable(R.drawable.input);
Bitmap bitmap = ((BitmapDrawable)drawable).getBitmap();
Ramkailash
fuente
2
¿En qué se diferencia la suya de la solución AndyW? ¡es lo mismo!
Fahad Alduraibi
6

Primero cree una imagen de mapa de bits

Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.image);

ahora establezca el mapa de bits en el icono del generador de notificaciones ...

Notification.Builder.setLargeIcon(bmp);
Ravi Makvana
fuente
0

En la res/drawablecarpeta,

1. Crea una nueva Drawable Resources.

2. Ingrese el nombre del archivo.

Se creará un nuevo archivo dentro de la res/drawablecarpeta.

Reemplace este código dentro del archivo recién creado y reemplace ic_action_back con su nombre de archivo dibujable.

<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/ic_action_back"
    android:tint="@color/color_primary_text" />

Ahora, se puede usar con la identificación de recursos, R.id.filename.

Mohammedsalim Shivani
fuente