Konvertieren eines zeichnbaren Ressourcenbildes in eine Bitmap

172

Ich versuche das zu verwenden Notification.Builder.setLargeIcon(bitmap), das ein Bitmap-Bild nimmt. Ich habe das Bild, das ich verwenden möchte, in meinem Zeichenordner. Wie konvertiere ich es in eine Bitmap?

tyczj
quelle

Antworten:

406

Du meinst wahrscheinlich Notification.Builder.setLargeIcon(Bitmap), richtig? :) :)

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

Dies ist eine großartige Methode zum Konvertieren von Ressourcenbildern in Android-Bilder Bitmap.

Poitroae
quelle
2
Warum nicht auf die Schaltfläche "Bearbeiten" klicken und die Frage beheben? (Eher ein Vorschlag für die Zukunft - ich habe es bereits für diesen gemacht ... Ich würde vorschlagen, Ihre Antwort zu bearbeiten, um ihre Tippfehler nicht zu kritisieren. Ich mache es nicht für Sie.) In einem anderen Punkt +1 für a Arbeitsantwort :)
ArtOfWarfare
1
Ich denke nicht, dass dies als allgemeine Antwort richtig ist - zumindest nicht, seit Android damit begonnen hat, Vektor-Drawables zu unterstützen.
Roberto Tomás
Nach der Implementierung der Lösung bekomme ich diese ...... 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();

Da API 22 getResources().getDrawable()veraltet ist, können wir die folgende Lösung verwenden.

Drawable vectorDrawable = VectorDrawableCompat.create(getResources(), R.drawable.logo,  getContext().getTheme());
Bitmap myLogo = ((BitmapDrawable) vectorDrawable).getBitmap();
AndyW
quelle
1
Es sagt mir, dass bitmapDrawable nicht in einen Typ aufgelöst werden kann
Hallo @ 20Cents haben Sie versucht, stackoverflow.com/questions/18218938/…
AndyW
Drücken Sie einfach Strg + Umschalt + O, wenn der Empfang nicht in einen Typ für bitmapDrawable aufgelöst werden kann. Prost!
Portfoliobuilder
Leider stürzt auf diese Weise meine App ab!
Fahad Alduraibi
getDrawable ist veraltet
Junior Mayhé
13
Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.my_drawable);

Contextkann dein aktueller sein Activity.

Aromero
quelle
2
und für Vektorzeichnungen?
Roberto Tomás
9

Hier ist eine andere Möglichkeit, Drawable-Ressourcen in Android in Bitmap zu konvertieren:

Drawable drawable = getResources().getDrawable(R.drawable.input);
Bitmap bitmap = ((BitmapDrawable)drawable).getBitmap();
Ramkailash
quelle
2
Wie unterscheidet sich Ihre von der AndyW-Lösung? es ist das Gleiche!
Fahad Alduraibi
6

Erstellen Sie zuerst ein Bitmap-Bild

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

Stellen Sie jetzt die Bitmap im Notification Builder-Symbol ein.

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

Im res/drawableOrdner,

1. Erstellen Sie eine neue Drawable Resources.

2. Geben Sie den Dateinamen ein.

Im Ordner wird eine neue Datei erstellt res/drawable.

Ersetzen Sie diesen Code in der neu erstellten Datei und ersetzen Sie ihn ic_action_backdurch Ihren zeichnungsfähigen Dateinamen.

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

Jetzt können Sie es mit der Ressourcen-ID verwenden R.id.filename.

Mohammedsalim Shivani
quelle