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?

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.


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

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.


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

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

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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.