conversion d'une image de ressource dessinable en bitmap


172

J'essaye d'utiliser le Notification.Builder.setLargeIcon(bitmap)qui prend une image bitmap. J'ai l'image que je souhaite utiliser dans mon dossier pouvant être dessiné, comment puis-je la convertir en bitmap?

Réponses:


406

Vous voulez probablement dire Notification.Builder.setLargeIcon(Bitmap), non? :)

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

C'est une excellente méthode pour convertir des images de ressources en Android Bitmap.


2
Pourquoi ne pas cliquer sur le bouton "Modifier" et résoudre la question? (Plus une suggestion pour l'avenir - je l'ai déjà fait pour celui-ci ... Je suggère de modifier votre réponse pour ne pas critiquer leurs fautes de frappe. Je ne le fais pas pour vous.) Sur une autre note, +1 pour avoir un réponse de travail :)
ArtOfWarfare

1
Je ne pense pas que ce soit une réponse générale - du moins pas depuis qu'Android a commencé à prendre en charge les dessins vectoriels.
roberto tomás

après avoir implémenté la solution... 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:...
j'obtiens

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

Étant donné que l'API 22 getResources().getDrawable()est obsolète, nous pouvons donc utiliser la solution suivante.

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

1
Il me dit que bitmapDrawable ne peut pas être résolu en un type

Salut @ 20Cents avez-vous essayé stackoverflow.com/questions/18218938/…
AndyW

Appuyez simplement sur ctrl + shift + O si vous ne pouvez pas être résolu en un type pour bitmapDrawable. À votre santé!
portfoliobuilder

Malheureusement, cette manière plante mon application!
Fahad Alduraibi

getDrawable est obsolète
Junior Mayhé

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

Contextpeut être votre courant Activity.


2
et pour les dessins vectoriels?
roberto tomás

9

Voici une autre façon de convertir une ressource Drawable en Bitmap dans Android:

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

2
En quoi la vôtre est-elle différente de la solution AndyW? c'est le même!
Fahad Alduraibi

6

Créer d'abord une image bitmap

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

définissez maintenant le bitmap dans l'icône de Notification Builder ....

Notification.Builder.setLargeIcon(bmp);

0

Dans le res/drawabledossier,

1. Créez un nouveau Drawable Resources.

2. Entrez le nom du fichier.

Un nouveau fichier sera créé dans le res/drawabledossier.

Remplacez ce code dans le fichier nouvellement créé et remplacez-le ic_action_backpar votre nom de fichier pouvant être dessiné.

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

Maintenant, vous pouvez l' utiliser avec l' ID de ressources, R.id.filename.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.