Télécharger l'image pour imageview sur Android
J'ai vu cette question: android comment télécharger une 1mb image fichier et mettre à ImageView
Elle ne résout pas mon problème, car il ne montre comment afficher le bitmap après vous l'avez déjà.
Je suis en train de télécharger une image à partir d'une URL en faire une affiche avec une ImageView sur un appareil Android. Je ne suis pas sûr de la façon de le faire.
J'ai regardé un peu sur internet, c'est le code que j'ai pour l'instant:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//Set local image
ImageView image = (ImageView) findViewById(R.id.test_image);
image.setImageResource(R.drawable.test2);
//Prepare to download image
URL url;
InputStream in;
//BufferedInputStream buf;
try {
url = new URL("http://i.imgur.com/CQzlM.jpg");
in = url.openStream();
out = new BufferedOutputStream(new FileOutputStream("testImage.jpg"));
int i;
while ((i = in.read()) != -1) {
out.write(i);
}
out.close();
in.close();
buf = new BufferedInputStream(in);
Bitmap bMap = BitmapFactory.decodeStream(buf);
image.setImageBitmap(bMap);
if (in != null) {
in.close();
}
if (buf != null) {
buf.close();
}
} catch (Exception e) {
Log.e("Error reading file", e.toString());
}
}
Si vous avez trouvé une réponse, vous devez l'accepter. De cette façon, d'autres utilisateurs savent qu'il fonctionne. Bonne chance!
OriginalL'auteur Koen027 | 2011-12-07
Vous devez vous connecter pour publier un commentaire.
Le code serait probablement travailler, alltough vous téléchargez votre image sur votre thread principal. Cela signifie que lorsqu'il prend plus de 5 secondes pour le téléchargement, il vous sera présenté avec le célèbre ANR dialogue, et que votre application va se planter...
Vous devez télécharger votre image dans un thread d'arrière-plan, et d'afficher le résultat de retour à votre thread principal. De retour dans le thread principal, vous pouvez mettre à jour votre imageview avec l'image téléchargée.
Voici un exemple:
N'oubliez pas d'ajouter la permission.INTERNET à votre manifeste, si pas, vous obtiendrez un message d'erreur...
Tant pis, j'ai modifié un peu le code et ça a fonctionné. Dans la fonction setImage, j'ai changé la seule ligne à:
mImageView.setImageDrawable(drawable);
Yar, désolé pour l'attente. Oublié après la tester.
fonction setBackgoundDrawable est obsolète changé à setBackground à la place.
OriginalL'auteur Entreco