convertire l'immagine di risorse disegnabili in bitmap


172

Sto cercando di utilizzare l'immagine Notification.Builder.setLargeIcon(bitmap)che utilizza un'immagine bitmap. Ho l'immagine che voglio usare nella mia cartella disegnabile, quindi come posso convertirla in bitmap?

Risposte:


406

Probabilmente intendi Notification.Builder.setLargeIcon(Bitmap), vero? :)

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

Questo è un ottimo metodo per convertire le immagini delle risorse in Android Bitmap.


2
Perché non premere il pulsante "Modifica" e risolvere la domanda? (Più un suggerimento per il futuro - l'ho già fatto per questo ... Suggerirei di modificare la tua risposta per non criticare i loro errori di battitura. Non lo sto facendo per te.) In un'altra nota, +1 per avere un risposta funzionante :)
ArtOfWarfare

1
Non penso che sia giusto come risposta generale , almeno non da quando Android ha iniziato a supportare i disegni a disegno.
roberto tomás,

dopo aver implementato la soluzione sto ottenendo questo ...... 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:...
Bhuro,

44
Drawable myDrawable = getResources().getDrawable(R.drawable.logo);
Bitmap myLogo = ((BitmapDrawable) myDrawable).getBitmap();

Poiché l'API 22 getResources().getDrawable()è obsoleta, possiamo utilizzare la seguente soluzione.

Drawable vectorDrawable = VectorDrawableCompat.create(getResources(), R.drawable.logo,  getContext().getTheme());
Bitmap myLogo = ((BitmapDrawable) vectorDrawable).getBitmap();

1
Mi dice che bitmapDrawable non può essere risolto in un tipo

Ciao @ 20Cents ti è provato stackoverflow.com/questions/18218938/...
AndyW

Premi ctrl + maiusc + O se stai ricevendo non può essere risolto in un tipo per bitmapDrawable. Saluti!
portfoliobuilder

Purtroppo in questo modo si blocca la mia app!
Fahad Alduraibi,

getDrawable è deprecato
Junior Mayhé l'

13
Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.my_drawable);

Context può essere la tua corrente Activity .


2
e per drawable vettoriali?
roberto tomás,

9

Ecco un altro modo per convertire risorse Drawable in Bitmap in Android:

Drawable drawable = getResources().getDrawable(R.drawable.input);
Bitmap bitmap = ((BitmapDrawable)drawable).getBitmap();

2
In cosa differisce la tua dalla soluzione AndyW? è lo stesso!
Fahad Alduraibi,

6

Innanzitutto creare un'immagine bitmap

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

ora imposta bitmap nell'icona del Generatore di notifiche ....

Notification.Builder.setLargeIcon(bmp);

0

Nella res/drawablecartella,

1. Creane uno nuovo Drawable Resources.

2. Immettere il nome del file.

Un nuovo file verrà creato all'interno della res/drawablecartella.

Sostituisci questo codice all'interno del file appena creato e sostituiscilo ic_action_backcon il tuo nome di file disegnabile.

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

Ora, è possibile utilizzarlo con Resource ID, R.id.filename.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.