Sie sollten das wirklich nicht verwenden, da es den UI-Thread blockiert. Diese Bibliothek übernimmt das Threading und Herunterladen für Sie: github.com/koush/UrlImageViewHelper
koush
16
Nicht, wenn Sie diesen Block auf einem separaten Thread abzüglich der setImageBitmap ausführen
Jonathan
Es funktioniert in Miniaturansichten und auf Bildansicht. Ich habe dsplaying dailog verwendet, aber es öffnet sich nach 10 Sekunden
Prasad
4
@koush - Dieser Code wäre in Ordnung, wenn er in einen eingeschlossen wäre AsyncTask.
Greg Brown
2
Sie sollten alle Netzwerkoperationen in einem separaten Thread ausführen. Wenn die Bitmap geladen wurde, können Sie ImageView.post () oder Handler.post ()
Volodymyr Shalashenko
310
Die oben akzeptierte Antwort ist großartig, wenn Sie das Bild basierend auf einem Klick auf eine Schaltfläche laden. Wenn Sie es jedoch in einer neuen Aktivität ausführen, wird die Benutzeroberfläche für ein oder zwei Sekunden eingefroren. Als ich mich umsah, stellte ich fest, dass eine einfache Asynctask dieses Problem beseitigte.
So verwenden Sie eine Asynctask, um diese Klasse am Ende Ihrer Aktivität hinzuzufügen:
Ich mag diese Lösung, Sie sollten nur Code für onPostExecute bereinigen, da sein Körper aus ist.
Sofija
das ist toll. @Sofija was meintest du mit Aufräumen? Was ist, wenn Sie eine unbekannte Anzahl von Bildern haben?
5er
@ 5er Ich hatte einige der Klammern in der ursprünglichen Antwort fehl am Platz. Ich habe es seitdem aufgeräumt, damit Sie es so verwenden können, wie es ist.
Kyle Clegg
Nicht zu vergessen, dass wir auch die Berechtigung im Manifest hinzufügen müssen: <Verwendungsberechtigung android: name = "android.permission.INTERNET" />
mike20132013
1
Dies ist großartig zum Lernen / Hacken (upvoted), aber für jede Produktion sollten Sie eine Imageloader-Bibliothek verwenden, es gibt so viele da draußen. Mein Favorit ist Universal Image Loader, Picasso usw.
AmeyaB
31
versuchen Sie es picasssoschön und endet in einer Aussage
Picasso, Glide sind auch meine Favoriten. Die Aussage von Glide ist Picasso ziemlich ähnlich, mit einer deutlichen Verbesserung der Cache-Größe.
Anhtuannd
Dies sollte die neue Antwort sein, obwohl es immer schön ist zu wissen, wie man es alleine macht. Großartiger Artikel, der beide Möglichkeiten erklärt: medium.com/@crossphd/…
Martin Jäkel
9
Versuchen Sie dies, fügen Sie picasso lib jar Datei hinzu
UrlImageViewHelper füllt eine ImageView mit einem Bild, das unter einer URL gefunden wird. UrlImageViewHelper lädt automatisch alle Bild-URLs der BitmapDrawables herunter, speichert sie und speichert sie zwischen. Doppelte URLs werden nicht zweimal in den Speicher geladen. Der Bitmap-Speicher wird mithilfe einer schwachen Referenz-Hash-Tabelle verwaltet. Sobald das Bild nicht mehr von Ihnen verwendet wird, wird der Müll automatisch gesammelt.
Der folgende Code zeigt Ihnen, wie Sie ImageView mithilfe von RxAndroid aus einer URL-Zeichenfolge festlegen. Fügen Sie zunächst die RxAndroid-Bibliothek 2.0 hinzu
1) Verwenden der Glide-Bibliothek Dies ist der beste Weg, um ein Bild von einer URL zu laden, da beim Versuch, dieselbe URL beim zweiten Mal anzuzeigen, diese von catch angezeigt wird, um die App-Leistung zu verbessern
Antworten:
quelle
AsyncTask
.Die oben akzeptierte Antwort ist großartig, wenn Sie das Bild basierend auf einem Klick auf eine Schaltfläche laden. Wenn Sie es jedoch in einer neuen Aktivität ausführen, wird die Benutzeroberfläche für ein oder zwei Sekunden eingefroren. Als ich mich umsah, stellte ich fest, dass eine einfache Asynctask dieses Problem beseitigte.
So verwenden Sie eine Asynctask, um diese Klasse am Ende Ihrer Aktivität hinzuzufügen:
Rufen Sie von Ihrer onCreate () -Methode aus Folgendes auf:
Vergessen Sie nicht, die unten stehende Berechtigung in Ihre Manifestdatei aufzunehmen
Funktioniert super für mich. :) :)
quelle
versuchen Sie es
picassso
schön und endet in einer AussageTutorial: https://youtu.be/DxRqxsEPc2s
quelle
Versuchen Sie dies, fügen Sie picasso lib jar Datei hinzu
quelle
Nehmen Sie in Ihrer Aktivität imageview & set resource imageDownload (url, yourImageview);
quelle
UrlImageViewHelper füllt eine ImageView mit einem Bild, das unter einer URL gefunden wird. UrlImageViewHelper lädt automatisch alle Bild-URLs der BitmapDrawables herunter, speichert sie und speichert sie zwischen. Doppelte URLs werden nicht zweimal in den Speicher geladen. Der Bitmap-Speicher wird mithilfe einer schwachen Referenz-Hash-Tabelle verwaltet. Sobald das Bild nicht mehr von Ihnen verwendet wird, wird der Müll automatisch gesammelt.
UrlImageViewHelper.setUrlDrawable (imageView, "http://example.com/image.png");
https://github.com/koush/UrlImageViewHelper
quelle
Basierend auf dieser Antwort schreibe ich meinen eigenen Lader.
Mit Ladeeffekt und Erscheinungseffekt:
Berechtigung hinzufügen
Und ausführen:
quelle
Hier ist ein Beispielcode für die Anzeige des Bildes von der URL.
quelle
Beste Methode, die ich versucht habe, anstatt Bibliotheken zu verwenden
quelle
Internetberechtigung im Manifest hinzufügen
als Methode wie unten erstellen,
Fügen Sie dies nun in Ihre onCreate-Methode ein.
Das funktioniert bei mir.
quelle
Der folgende Code zeigt Ihnen, wie Sie ImageView mithilfe von RxAndroid aus einer URL-Zeichenfolge festlegen. Fügen Sie zunächst die RxAndroid-Bibliothek 2.0 hinzu
Verwenden Sie jetzt setImageFromUrl, um das Bild festzulegen.
quelle
Es gibt zwei Möglichkeiten:
1) Verwenden der Glide-Bibliothek Dies ist der beste Weg, um ein Bild von einer URL zu laden, da beim Versuch, dieselbe URL beim zweiten Mal anzuzeigen, diese von catch angezeigt wird, um die App-Leistung zu verbessern
Abhängigkeit:
implementation 'com.github.bumptech.glide:glide:4.10.0'
2) Verwenden von Stream. Hier möchten Sie eine Bitmap aus dem URL-Bild erstellen
quelle
Bitte schön
quelle
ivdpfirst
?Versuche dies:
quelle
quelle
Für mich ist Fresco die beste unter den anderen Bibliotheken.
Nur Setup Fresko und dann einfach die imageURI wie folgt festgelegt:
In dieser Antwort werden einige der Vorteile von Fresco erläutert.
quelle