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?

tyczj
la source

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.

poitroae
la source
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();
AndyW
la source
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.

aromero
la source
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();
Ramkailash
la source
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);
Ravi Makvana
la source
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.

Mohammedsalim Shivani
la source