Apps für Android programmieren leicht gemacht!
Bild in ImageView herunterladen

Bild in ImageView herunterladen

In diesem Artikel wollen wir uns nun einmal mit der Thematik des Bilddownloads beschäftigen.
Wir wollen also ein Bild aus dem Internet herunterladen und in einem ImageView anzeigen.

Stellen wir uns einfach mal vor, dass wir dynamisch ein Bild in einer News App anzeigen lassen wollen.
Die Bilder ändern sich stetig und sie fest mit in die App zu integrieren ist keine Option. Also bleibt nur eine weitere Möglichkeit. Wir laden die Bilder aus dem Internet auf das Handy und zeigen die Bilder dann in einem ImageView an.

Also benötigen wir als Erstes ein ImageView. Ich gebe diesem einfach mal die ID „titelbild“ und füge es auf die Startseite der App ein.

<ImageView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/titelbild"
        android:layout_alignParentTop="true"
        android:adjustViewBounds="true"
        android:cropToPadding="true"
        android:scaleType="fitCenter" />

 

Wir benötigen natürlich noch ein Titelbild.
Wir können ja einfach das Beitragsbild dieses Artikels verwenden.

Bild in ImageView herunterladen
Bild in ImageView herunterladen – Unser Titelbild, für dieses Beispiel.

Der Link zu diesem Titelbild lautet: https://droid-lernen.de/uploads/Bild-in-ImageView-herunterladen.png

 

Die Funktion:

Beginnen wir damit eine Funktion zu schreiben, welcher ein URL übergeben wird, die das Bild, unter diesem URL, herunterlädt und in ein ImageView verpackt.
Zwingend erforderlich ist hierbei ein Hintergrundprozess (AsyncTask), da sich die App sonst bis zum Laden des Bildes aufhängt.
Es handelt sich zwar um eine Klasse, doch können wir diese wie eine normale Funktion behandeln und in eine bereits bestehende Klasse einfügen (wie eine normale Methode).

private class LadeTitelbild extends AsyncTask<String, String, Bitmap> {
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
    }
    protected Bitmap doInBackground(String... args) {
        Bitmap bitmap = null;
        try {
            bitmap = BitmapFactory.decodeStream((InputStream) new URL(args[0]).getContent());
        } catch (Exception e) {
            e.printStackTrace();
        }
        return bitmap;
    }
    protected void onPostExecute(Bitmap image) {
        if(image != null){
            titelbild.setImageBitmap(image);
        }
    }
}

 

Der Aufruf:

Da wir nun unsere Funktion erstellt haben, welche das Bild vom URL herunterlädt und in ein ImageView steckt, benötigen wir anschließend den Funktionsaufruf.
Dieser erfolgt genau so:

// Lade das erste Bild
new LadeTitelbild().execute(" https://droid-lernen.de/uploads/Bild-in-ImageView-herunterladen.png");

 

Vorarbeit:

Was bis dato noch fehlt ist die Definierung unseres ImageViews „titelbild“.
Wir müssen dazu eine globale Variable „titelbild“ erstellen. Global deshalb, weil unser Hintergrundprozess auf diese Variable zugreifen muss.
Wir schreiben also in unsere Klasse, aber nicht in eine der Methoden:

ImageView titelbild;

 

Zu guter Letzt müssen wir die Variable „titelbild“ noch mit dem genauen ImageView beschreiben.
Bisher haben wir zwar eine Variable, auf die unsere Funktion zugreifen kann, aber dort steht ja noch nichts drin.
In unserem Beispiel schreiben wir innerhalb der Methode „onCreate“:

// Element vorbereiten
titelbild = (ImageView) findViewById(R.id.titelbild);

 

Berechtigung:

Zusätzlich zu unserer Programmierung benötigt unsere App selbstverständlich noch die Berechtigung eine Verbindung ins Internet aufbauen zu dürfen. Verständlich, wenn wir ein Bild auf dem Internet herunterladen wollen, um es in einem ImageView anzuzeigen.
Wir müssen dazu in der Datei „AndroidManifest.xml“, zu finden im Ordner „manifests“, eine Zeile hinzufügen:

<manifest ... >
    [...]

    <!-- Diesee Zeile an der entsprechenden Stelle einfügen -->
    <uses-permission android:name="android.permission.INTERNET"></uses-permission>

    <application ... >
        [...]
    </applikation>
</manifest>

 

Fertige App:

Bild in ImageView herunterladen
So sieht unsere fertige App, zum Thema Bild in ImageView herunterladen aus.

 

Bild in ImageView herunterladen - Source Code


Lade dir hier den fertigen und kompletten Source Code zum Artikel herunter.

DownloadLizenzbedingungen

Marvin

Ich bin 23 Jahre jung und studiere zurzeit Wirtschaftsinformatik an der Georg-August-Universität in Göttingen. Ich bin ein Mensch, der sich neben der Programmierung noch für tausend andere Dinge interessiert, die mal mehr und mal weniger verrückt sind. Vor allem aber bin ich Feuer und Flamme mit der Programmierung von eigenen kleinen Apps und Programmen, die mein Leben bereichern.

Kommentar hinzufügen

*Pflichtfeld