570 Stimmen

Wie lädt man eine ImageView per URL in Android?

Wie verwendet man ein per URL referenziertes Bild in einer ImageView ?

9voto

Djumaka Punkte 492

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");

8voto

Ben Jakuben Punkte 3137

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 :)

8voto

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.

6voto

yingted Punkte 9406
imageView.setImageBitmap(BitmapFactory.decodeStream(imageUrl.openStream()));//try/catch IOException and MalformedURLException outside

5voto

Mitul Goti Punkte 2567

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;
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X