Wie verwendet man ein per URL referenziertes Bild in einer ImageView
?
Antworten
Zu viele Anzeigen?Ich habe kürzlich ein Thema gefunden aquí , da ich etwas ähnliches für eine Listenansicht mit Bildern machen muss, aber das Prinzip ist einfach, wie man in der ersten dort gezeigten Beispielklasse (von jleedev) lesen kann. Sie erhalten den Input Stream des Bildes (aus dem Web)
private InputStream fetch(String urlString) throws MalformedURLException, IOException {
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpGet request = new HttpGet(urlString);
HttpResponse response = httpClient.execute(request);
return response.getEntity().getContent();
}
Dann speichern Sie das Bild als Drawable und können es an die ImageView übergeben (über setImageDrawable). Schauen Sie sich den gesamten Thread im oberen Codeschnipsel noch einmal an.
InputStream is = fetch(urlString);
Drawable drawable = Drawable.createFromStream(is, "src");
Viele gute Informationen in hier ... Ich habe vor kurzem eine Klasse namens SmartImageView, die zu arbeiten scheint wirklich gut so weit gefunden. Sehr einfach zu integrieren und zu verwenden.
http://loopj.com/Android-smart-image-view/
https://github.com/loopj/Android-smart-image-view
アップデイト : Ich habe ein Buch geschrieben Blogbeitrag darüber Dort finden Sie Hilfe bei der Verwendung von SmartImageView.
2ND UPDATE : Ich verwende dafür jetzt immer Picasso (siehe oben) und kann es nur empfehlen :)
Dies ist eine späte Antwort, wie oben vorgeschlagen AsyncTask
wird und nachdem ich ein wenig gegoogelt habe, habe ich eine weitere Möglichkeit für dieses Problem gefunden.
Drawable drawable = Drawable.createFromStream((InputStream) new URL("url").getContent(), "src");
imageView.setImageDrawable(drawable);
Hier ist die vollständige Funktion:
public void loadMapPreview () {
//start a background thread for networking
new Thread(new Runnable() {
public void run(){
try {
//download the drawable
final Drawable drawable = Drawable.createFromStream((InputStream) new URL("url").getContent(), "src");
//edit the view in the UI thread
imageView.post(new Runnable() {
public void run() {
imageView.setImageDrawable(drawable);
}
});
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
}
Vergessen Sie nicht, die folgenden Berechtigungen in Ihrem AndroidManifest.xml
um auf das Internet zuzugreifen.
<uses-permission android:name="android.permission.INTERNET" />
Ich habe das selbst ausprobiert und bisher noch keine Probleme gehabt.
Dies wird Ihnen helfen...
Definieren Sie die Bildansicht und laden Sie das Bild in diese .....
Imageview i = (ImageView) vv.findViewById(R.id.img_country);
i.setImageBitmap(DownloadFullFromUrl(url));
Definieren Sie dann diese Methode:
public Bitmap DownloadFullFromUrl(String imageFullURL) {
Bitmap bm = null;
try {
URL url = new URL(imageFullURL);
URLConnection ucon = url.openConnection();
InputStream is = ucon.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);
ByteArrayBuffer baf = new ByteArrayBuffer(50);
int current = 0;
while ((current = bis.read()) != -1) {
baf.append((byte) current);
}
bm = BitmapFactory.decodeByteArray(baf.toByteArray(), 0,
baf.toByteArray().length);
} catch (IOException e) {
Log.d("ImageManager", "Error: " + e);
}
return bm;
}