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?

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.


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

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.


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

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

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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.