2013-05-30 2 views
-1

Je travaille sur un projet où j'ai besoin d'afficher des boutons d'image avec des images enregistrées dans la carte SD ou à partir d'une URL. Comment puis-je faire ceci? Ou quelle est la meilleure pratique? L'objectif est de changer l'image sur le bouton en remplaçant seulement le fichier dans la carte SD. Il y a d'autres solutions si je ne sais pas quelles images seront affichées dans le futur? THXAfficher le bouton image de la source externe

Répondre

0

Voici comment charger une image à partir d'une URL dans un objet Drawable:

InputStream is = (InputStream) new URL("http://my.url/path/to/image").getContent(); 
Drawable buttonBg = Drawable.createFromStream(is, null); 

mis Ensuite, comme l'arrière-plan:

button.setBackgroundDrawable(buttonBg); 

ou API 16+ utilisation:

button.setBackground(buttonBg); 

Si vous voulez lire à partir d'un fichier, utilisez un FileInputStream comme ceci:

FileInputStream fis = openFileInput("/my/path/to/image"); 
Drawable buttonBg= Drawable.createFromStream(fis, null); 
+0

Eh bien je vais avoir des problèmes ... Si j'entoure l'URL du flux d'entrée avec try/catch (sinon je reçois une erreur), la variable createFromStream n'est pas initialisée ... J'ai essayé d'initialiser . – user2438300

0

@carmex Résolu:



    ImageButton box1 = (ImageButton)findViewById(R.id.box1); 
    Drawable drawable = GetImg("path/to/image.jpg"); 
    box1.setBackground(drawable); 


    private Drawable GetImg(String url) 
    { 
    try 
    { 
     InputStream is = (InputStream) new URL(url).getContent(); 
     Drawable d = Drawable.createFromStream(is, "src name"); 
     return d; 
    } 
    catch (Exception e) 
    { 
    System.out.println("Err="+e); return null; 
    } 
    } 

Thx beaucoup.