Wie verwendet man ein per URL referenziertes Bild in einer ImageView
?
Antworten
Zu viele Anzeigen?Desde Android-Entwickler :
// show The Image in a ImageView
new DownloadImageTask((ImageView) findViewById(R.id.imageView1))
.execute("http://java.sogeti.nl/JavaBlog/wp-content/uploads/2009/04/android_icon_256.png");
public void onClick(View v) {
startActivity(new Intent(this, IndexActivity.class));
finish();
}
private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
ImageView bmImage;
public DownloadImageTask(ImageView bmImage) {
this.bmImage = bmImage;
}
protected Bitmap doInBackground(String... urls) {
String urldisplay = urls[0];
Bitmap mIcon11 = null;
try {
InputStream in = new java.net.URL(urldisplay).openStream();
mIcon11 = BitmapFactory.decodeStream(in);
} catch (Exception e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
return mIcon11;
}
protected void onPostExecute(Bitmap result) {
bmImage.setImageBitmap(result);
}
}
Stellen Sie sicher, dass Sie die folgenden Berechtigungen in Ihrem AndroidManifest.xml
um auf das Internet zuzugreifen.
<uses-permission android:name="android.permission.INTERNET" />
1. Picasso ermöglicht das problemlose Laden von Bildern in Ihrer Anwendung - oft in einer einzigen Codezeile!
Gradle verwenden:
implementation 'com.squareup.picasso:picasso:(insert latest version)'
Nur eine Zeile Code!
Picasso.get().load("http://i.imgur.com/DvpvklR.png").into(imageView);
2. Gleiten Eine Bibliothek zum Laden und Zwischenspeichern von Bildern für Android mit Schwerpunkt auf reibungslosem Scrollen
Gradle verwenden:
repositories {
mavenCentral()
google()
}
dependencies {
implementation 'com.github.bumptech.glide:glide:4.11.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0'
}
// For a simple view:
Glide.with(this).load("http://i.imgur.com/DvpvklR.png").into(imageView);
3. Fresko ist ein leistungsstarkes System zur Anzeige von Bildern in Android-Anwendungen. Fresco kümmert sich um das Laden und Anzeigen von Bildern, sodass Sie sich nicht darum kümmern müssen.
Sie müssen das Bild zunächst herunterladen
public static Bitmap loadBitmap(String url) {
Bitmap bitmap = null;
InputStream in = null;
BufferedOutputStream out = null;
try {
in = new BufferedInputStream(new URL(url).openStream(), IO_BUFFER_SIZE);
final ByteArrayOutputStream dataStream = new ByteArrayOutputStream();
out = new BufferedOutputStream(dataStream, IO_BUFFER_SIZE);
copy(in, out);
out.flush();
final byte[] data = dataStream.toByteArray();
BitmapFactory.Options options = new BitmapFactory.Options();
//options.inSampleSize = 1;
bitmap = BitmapFactory.decodeByteArray(data, 0, data.length,options);
} catch (IOException e) {
Log.e(TAG, "Could not load Bitmap from: " + url);
} finally {
closeStream(in);
closeStream(out);
}
return bitmap;
}
Dann verwenden Sie Imageview.setImageBitmap, um die Bitmap in der ImageView zu setzen
Ich habe eine Klasse geschrieben, um dies zu handhaben, da es ein wiederkehrender Bedarf in meinen verschiedenen Projekten zu sein scheint:
https://github.com/koush/UrlImageViewHelper
UrlImageViewHelper füllt eine ImageView mit einem Bild, das unter einer einer URL gefunden wurde.
Das Beispiel macht ein Google Image Suche und lädt/zeigt die Ergebnisse asynchron.
UrlImageViewHelper wird automatisch herunter, speichert und zwischenspeichert alle Bild-Urls der BitmapDrawables. Doppelte Urls werden nicht zweimal in den Speicher doppelt geladen. Bitmap-Speicher wird verwaltet mit Hilfe einer schwachen Referenz-Hashtabelle verwaltet, Sobald das Bild also nicht mehr nicht mehr verwendet wird, wird es automatisch automatisch entsorgt.
- See previous answers
- Weitere Antworten anzeigen