Aller au contenu

Transformer un PNG de la carte SD vers un int de ressource. Possible??


Profete162

Recommended Posts

Bonjour à tous,

J'utilise pour le moment certaines fonctions qui demandent comme paramètre un int de ressource. Cela fonctionne donc très bien quand je mets R.drawable.mypicture.

Maintenant, mon problème est le suivant: cette fonction est bloquée et figée: comme paramètre, je ne peux lui mettre qu'un entier!

Désireux de mettre une ressource personnalisée depuis la carte SD, j'aimerais savoir si je peux transformer un fichier PNG de la carte mémoire vers un entier de type Ressources et l'utiliser ensuite comme un élément du répertoire "drawable"?

Ou alors, dois-je me concentrer vers la solution B) oublier cette fonction et trouver une alternative?

Merci pour vos avis éclairés.

Lien vers le commentaire
Partager sur d’autres sites

Je ne pense pas que ce soit possible, les ressources sont des identifiants générés au moment de la compilation par l'environnement de développement et référencent forcément un élément qui fait partie de l'apk.

Quelle est exactement la méthode qui te posent problème ? en général la plupart des méthode qui demandent un int de ressource ont un équivalent qui prend un objet créé programmatiquement.

Lien vers le commentaire
Partager sur d’autres sites

En fait ma question vient d'ici: https://www.frandroid.com/forum/viewtopic.php?id=5766

(mais je pense que cette question en intéressera plus d'un et mérite son sujet)

et la méthode ets celle ci:

i.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,Intent.ShortcutIconResource.fromContext
    (getBaseContext(),R.drawable.myicon)); //l'icone qui m'intéresse

Le but est de permettre à l'utilisateur de skinner toutes mes applis en mettant une activité de skin ou l'utilisateur choisit son icone et valide. Je crée alors un raccourci avec icône perso sur le bureau. Je pense que cela devrait être inclu de base dans Android et que tous les développeurs devraient le faire.

Modifié par Profete162
Lien vers le commentaire
Partager sur d’autres sites

Si on se réfère à http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/LauncherShortcuts.html

on tombe sur ceci dans les commentaires de private void setupShortcut() :

*

*

{@link android.content.Intent#EXTRA_SHORTCUT_INTENT} The shortcut intent.

*

{@link android.content.Intent#EXTRA_SHORTCUT_NAME} The text that will be displayed with

* the shortcut.

*

{@link android.content.Intent#EXTRA_SHORTCUT_ICON} The shortcut's icon, if provided as a

* bitmap, or {@link android.content.Intent#EXTRA_SHORTCUT_ICON_RESOURCE} if provided as

* a drawable resource.

*

*

* If you use a simple drawable resource, note that you must wrapper it using

* {@link android.content.Intent.ShortcutIconResource}, as shown below. This is required so

* that the launcher can access resources that are stored in your application's .apk file. If

* you return a bitmap, such as a thumbnail, you can simply put the bitmap into the extras

* bundle using {@link android.content.Intent#EXTRA_SHORTCUT_ICON}.

J'en déduis que tu peux directement coller ton bitmap dans la méthode sans te prendre la tête avec les id de ressources.

Modifié par Nivek
Lien vers le commentaire
Partager sur d’autres sites

nivek a raison...dans ton cas il ne faut pas faire:

i.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,Intent.ShortcutIconResource.fromContext
    (getBaseContext(),R.drawable.myicon))

Mais

//récupérer le png en drawable
Drawable toto = Drawable.createFromPath("/sdcard/toto.png");

//convertir le Drawable en Bitmap
Bitmap bmp = Bitmap.createBitmap(32,32,Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bmp);
toto.setBounds(0,0,32,32);
toto.draw(canvas);

//et créer l'intent
i.putExtra(Intent.EXTRA_SHORTCUT_ICON,bmp)

arf d'ailleurs je viens de voir que ça fait crasher mon home perso....je me demande bien la tête que va avoir le bitmap en Uri :s

Modifié par popolbx
Lien vers le commentaire
Partager sur d’autres sites

Oui, en fait, j'ai été chercher la complication là ou c'était tout simple!

En fait, je m'étais fixé sur le fait que je ne savais pas ce qu'était un parcelable, et en fait, je pouvais mettre directement le bmp!

dans la doc, j'ai vu comme parametre intent et parcelable... J'ai donc pas pensé à mettre direct un bmp!

Désolé pour le dérangement!

Modifié par Profete162
Lien vers le commentaire
Partager sur d’autres sites

Rejoignez la conversation

Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.

Invité
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...