3. fresco ist ein leistungsstarkes System zum Anzeigen von Bildern in Android-Anwendungen . Fresco kümmert sich um das Laden und Anzeigen von Bildern, sodass Sie dies nicht tun müssen.
Wenn die URL also localhost ist, bedeutet dies, dass sich das Image wie xampp in der lokalen Serverdatenbank des Entwicklungssystems befindet und das Image dennoch von der url = abgerufen werden kann.
Blackjack
2
@blackjack - localhost aus der App wäre das Smartphone selbst. Um auf Ihr Entwicklungssystem zugreifen zu können, müssen sich das Smartphone und Ihr Entwicklungssystem im selben Netzwerk befinden und Sie müssen die IP-Adresse Ihres Entwicklungssystems in diesem Netzwerk verwenden.
Ridcully
1
Ist es möglich, mit Picasso ein Bild auf die Schaltfläche zu laden?
Mahdi
1
@chiragkyada Ich versuche mit diesem Code Picasso.with (Kontext) .load (URL) .into (button_view); aber es zeigt Fehler für: in (button_view)
Mahdi
1
Ich denke, dies sollte die akzeptierte Antwort sein
Du hast Recht. Aber nur diese 3 Zeilen helfen, das Problem zu lösen. URL newurl = neue URL (photo_url_str); mIcon_val = BitmapFactory.decodeStream (newurl.openConnection () .getInputStream ()); profile_photo.setImageBitmap (mIcon_val); Danke für deine Antwort.
Praveen
2
Für URL - importiere java.net.URL; private static final int IO_BUFFER_SIZE = 4 * 1024; Was war der letzte?
UrlImageViewHelper füllt eine ImageView mit einem Bild, das unter einer URL gefunden wird.
Das Beispiel führt eine Google Bildsuche durch und lädt / zeigt die Ergebnisse asynchron an.
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.
Dies sollte mit AsyncTask wie oben beschrieben erfolgen
B-GangsteR
63
Die oben akzeptierte Antwort ist großartig, wenn Sie das Bild basierend auf einem Schaltflächenklick laden. Wenn Sie es jedoch in einer neuen Aktivität ausführen, friert es die Benutzeroberfläche für ein oder zwei Sekunden ein. Als ich mich umsah, stellte ich fest, dass eine einfache Asynctask dieses Problem beseitigte.
Um eine Asynctask zu verwenden, fügen Sie diese Klasse am Ende Ihrer Aktivität hinzu:
Das Ergebnis ist eine schnell geladene Aktivität und eine Bildansicht, die je nach Netzwerkgeschwindigkeit des Benutzers einen Sekundenbruchteil später angezeigt wird.
Schöne Probe, aber ich glaube nicht, dass dies threadsicher ist. Ich versuche, es in einem asynchronen onPostExecute zu verwenden, aber das onPostExecute kann manchmal enden, bevor der Rückruf empfangen wird und ein Nullbild gerendert wird.
Jimmy
Dies verwaltet seinen eigenen Thread. Lassen Sie Ihre ASyncTask nach Abschluss der gewünschten URL mit der gewünschten URL an die Benutzeroberfläche zurückrufen. Auf diese Weise haben Sie keine Threads, die Threads erzeugen.
Die beste moderne Bibliothek für eine solche Aufgabe ist meiner Meinung nach Picasso by Square. Es ermöglicht das Laden eines Bildes in eine ImageView per URL mit einem Einzeiler:
Ich habe kürzlich hier einen Thread gefunden , da ich für eine Listenansicht mit Bildern etwas Ähnliches tun muss, aber das Prinzip ist einfach, wie Sie in der ersten dort gezeigten Beispielklasse lesen können (von jleedev). Sie erhalten den Eingabestream des Bildes (aus dem Web)
Anschließend speichern Sie das Bild als Drawable und können es an die ImageView übergeben (über setImageDrawable). Schauen Sie sich noch einmal aus dem oberen Code-Snippet den gesamten Thread an.
Ich habe DefaultHttpClient nicht in meinem Projekt.
Stepan Yakovenko
8
Viele gute Infos hier ... Ich habe kürzlich eine Klasse namens SmartImageView gefunden, die bisher sehr gut zu funktionieren scheint. Sehr einfach zu integrieren und zu verwenden.
Dies ist eine späte Antwort, wie oben vorgeschlagen AsyncTask, und nachdem ich ein bisschen gegoogelt habe, habe ich einen weiteren Weg für dieses Problem gefunden.
Drawable drawable = Drawable.createFromStream((InputStream) new URL("url").getContent(), "src");
imageView.setImageDrawable(drawable);
Hier ist die komplette Funktion:
publicvoid loadMapPreview (){//start a background thread for networkingnewThread(newRunnable(){publicvoid run(){try{//download the drawablefinalDrawable drawable =Drawable.createFromStream((InputStream)new URL("url").getContent(),"src");//edit the view in the UI thread
imageView.post(newRunnable(){publicvoid run(){
imageView.setImageDrawable(drawable);}});}catch(IOException e){
e.printStackTrace();}}}).start();}
Vergessen Sie nicht, die folgenden Berechtigungen hinzuzufügen, AndroidManifest.xmlum auf das Internet zuzugreifen.
Das ist eigentlich sehr schön für Minimalismus! Denken Sie daran, dass eine zusätzliche Ausführung erforderlich ist, Threadda der UI-Thread keine Netzwerkoperationen zulässt.
CreativeCreatorormaybenot
6
imageView.setImageBitmap(BitmapFactory.decodeStream(imageUrl.openStream()));//try/catch IOException and MalformedURLException outside
Versuchen Sie es auf diese Weise und hoffen Sie, dass dies Ihnen bei der Lösung Ihres Problems hilft.
Hier erkläre ich, wie die externe Bibliothek "AndroidQuery" zum Laden von Bildern von URL / Server auf asynchrone Weise verwendet wird, wobei auch geladene Bilder in Gerätedateien oder Cache-Bereiche zwischengespeichert werden.
Laden Sie hier die Bibliothek "AndroidQuery" herunter
Kopieren Sie diese JAR-Datei in den Projektbibliotheksordner und fügen Sie sie hinzu
publicclassMainActivityextendsActivity{privateAQuery aQuery;@Overrideprotectedvoid onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
aQuery =newAQuery(this);
aQuery.id(R.id.imageFromUrl).progress(R.id.pbrLoadImage).image("http://itechthereforeiam.com/wp-content/uploads/2013/11/android-gone-packing.jpg",true,true);}}Note:Here I just implemented common method to load image from url/server but you can use various types of method which can be provided by"AndroidQuery"to load your image easily.
Antworten:
Vom Android-Entwickler :
Stellen Sie sicher, dass Sie die folgenden Berechtigungen für den
AndroidManifest.xml
Zugriff auf das Internet festgelegt haben.quelle
1. Picasso ermöglicht das problemlose Laden von Bildern in Ihre Anwendung - häufig in einer Codezeile!
Verwenden Sie Gradle:
Nur eine Codezeile!
2. Glide Eine Bibliothek zum Laden und Zwischenspeichern von Bildern für Android, die sich auf reibungsloses Scrollen konzentriert
Verwenden Sie Gradle:
// Für eine einfache Ansicht:
3. fresco ist ein leistungsstarkes System zum Anzeigen von Bildern in Android-Anwendungen . Fresco kümmert sich um das Laden und Anzeigen von Bildern, sodass Sie dies nicht tun müssen.
Erste Schritte mit Fresco
quelle
Sie müssen zuerst das Bild herunterladen
Verwenden Sie dann die Imageview.setImageBitmap, um die Bitmap in der ImageView festzulegen
quelle
Ich habe eine Klasse geschrieben, um damit umzugehen, da es in meinen verschiedenen Projekten ein wiederkehrendes Bedürfnis zu sein scheint:
https://github.com/koush/UrlImageViewHelper
quelle
Wie auch immer, die Leute bitten meinen Kommentar, ihn als Antwort zu posten. Ich poste.
quelle
Die oben akzeptierte Antwort ist großartig, wenn Sie das Bild basierend auf einem Schaltflächenklick laden. Wenn Sie es jedoch in einer neuen Aktivität ausführen, friert es die Benutzeroberfläche für ein oder zwei Sekunden ein. Als ich mich umsah, stellte ich fest, dass eine einfache Asynctask dieses Problem beseitigte.
Um eine Asynctask zu verwenden, fügen Sie diese Klasse am Ende Ihrer Aktivität hinzu:
Rufen Sie von Ihrer onCreate () -Methode aus Folgendes auf:
Das Ergebnis ist eine schnell geladene Aktivität und eine Bildansicht, die je nach Netzwerkgeschwindigkeit des Benutzers einen Sekundenbruchteil später angezeigt wird.
quelle
Sie können diese LoadingImageView-Ansicht auch verwenden, um ein Bild von einer URL zu laden:
http://blog.blundellapps.com/imageview-with-loading-spinner/
Nachdem Sie die Klassendatei über diesen Link hinzugefügt haben, können Sie eine URL-Bildansicht instanziieren:
in xml:
In Code:
Und aktualisieren Sie es mit:
quelle
quelle
Hallo, ich habe den einfachsten Code, versuche dies
main.xml
Versuche dies
quelle
Die beste moderne Bibliothek für eine solche Aufgabe ist meiner Meinung nach Picasso by Square. Es ermöglicht das Laden eines Bildes in eine ImageView per URL mit einem Einzeiler:
quelle
Ich habe kürzlich hier einen Thread gefunden , da ich für eine Listenansicht mit Bildern etwas Ähnliches tun muss, aber das Prinzip ist einfach, wie Sie in der ersten dort gezeigten Beispielklasse lesen können (von jleedev). Sie erhalten den Eingabestream des Bildes (aus dem Web)
Anschließend speichern Sie das Bild als Drawable und können es an die ImageView übergeben (über setImageDrawable). Schauen Sie sich noch einmal aus dem oberen Code-Snippet den gesamten Thread an.
quelle
Viele gute Infos hier ... Ich habe kürzlich eine Klasse namens SmartImageView gefunden, die bisher sehr gut zu funktionieren scheint. Sehr einfach zu integrieren und zu verwenden.
http://loopj.com/android-smart-image-view/
https://github.com/loopj/android-smart-image-view
UPDATE : Am Ende habe ich einen Blog-Beitrag darüber geschrieben. Lesen Sie daher die Hilfe zur Verwendung von SmartImageView.
2. UPDATE : Ich benutze jetzt immer Picasso dafür (siehe oben) und kann es nur empfehlen. :) :)
quelle
Dies ist eine späte Antwort, wie oben vorgeschlagen
AsyncTask
, und nachdem ich ein bisschen gegoogelt habe, habe ich einen weiteren Weg für dieses Problem gefunden.Drawable drawable = Drawable.createFromStream((InputStream) new URL("url").getContent(), "src");
imageView.setImageDrawable(drawable);
Hier ist die komplette Funktion:
Vergessen Sie nicht, die folgenden Berechtigungen hinzuzufügen,
AndroidManifest.xml
um auf das Internet zuzugreifen.<uses-permission android:name="android.permission.INTERNET" />
Ich habe es selbst versucht und habe noch kein Problem.
quelle
Thread
da der UI-Thread keine Netzwerkoperationen zulässt.quelle
Das wird dir helfen...
Definieren Sie die Bildansicht und laden Sie das Bild hinein .....
Dann definieren Sie diese Methode:
quelle
quelle
Version mit Ausnahmebehandlung und asynchroner Aufgabe:
quelle
quelle
Eine einfache und saubere Möglichkeit, dies zu tun, ist die Verwendung der Open-Source-Bibliothek Prime .
quelle
Dieser Code ist getestet, er funktioniert vollständig.
quelle
Arbeiten für imageView in einem beliebigen Container, z. B. Listenansicht-Rasteransicht, normales Layout
quelle
Versuchen Sie es auf diese Weise und hoffen Sie, dass dies Ihnen bei der Lösung Ihres Problems hilft.
Hier erkläre ich, wie die externe Bibliothek "AndroidQuery" zum Laden von Bildern von URL / Server auf asynchrone Weise verwendet wird, wobei auch geladene Bilder in Gerätedateien oder Cache-Bereiche zwischengespeichert werden.
activity_main.xml
MainActivity.java
quelle
Android Query kann das für Sie und vieles mehr erledigen (wie Cache und Ladevorgang).
Schauen Sie sich hier an .
Ich denke, das ist der beste Ansatz.
quelle