webentwicklung-frage-antwort-db.com.de

Android: Wie kann ein Bild programmgesteuert aus einer URL auf ein Bildansicht festgelegt werden?

Ich habe eine Image-URL von meiner Rest-API. Jetzt möchte ich es auf eine Bildansicht setzen, wenn die Aktivität geladen wird. Im Folgenden wird beschrieben, wie ich die Bohne von der restlichen API bekomme und dann die URL herausbekomme.

Message message=new Message();
String imageUrl=message.getImageUrl();

Ich erhalte ein Nachrichtenobjekt aus meiner Datenbank und die Bild-URL ist in das Nachrichtenobjekt eingeschlossen.

Dann habe ich Url-Objekt verwendet, um diese Bild-URL zu erhalten.

URL url = null;
try {
     url = new URL(imageUrl);
     Bitmap bmp = BitmapFactory.decodeStream(url.openConnection().getInputStream());
     contentImageView.setImageBitmap(bmp);
} catch (Exception e) {
     e.printStackTrace();
}

Ich habe die obigen Codes verwendet, um ein Bild in ein Bildansichtobjekt zu laden, das contentImageView ist.

Trotzdem kann ich dieses Bild nicht in die Bildansicht laden. Nichts wird geladen.

irgendwelche Ideen?

5
Barrier

Am einfachsten geht es mit Picasso oder Glide:

Picasso.with(getContext()).load(imgUrl).fit().into(contentImageView);

sie können Picasso-Bibliothek in Ihrem Gradle hinzufügen: compile 'com.squareup.picasso:picasso:2.5.2'

10
Mohammad Zarei

Bitte versuchen Sie diese Funktion, um bitmap zu erhalten.

public Bitmap getBitmapfromUrl(String imageUrl)
{
    try
    {
        URL url = new URL(imageUrl);
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setDoInput(true);
        connection.connect();
        InputStream input = connection.getInputStream();
        Bitmap bitmap = BitmapFactory.decodeStream(input);
        return bitmap;

    } catch (Exception e)
    {
        // TODO Auto-generated catch block
        e.printStackTrace();
        return null;

    }
}
3
Ratilal Chopda

Verwenden Sie die Glide- oder Picasa-Bibliothek für eine effiziente Leistung

Abhängigkeiten

compile 'com.github.bumptech.glide:glide:3.7.0'

Beispielcode

  Glide.with(this)
                .load(url)
                .diskCacheStrategy(DiskCacheStrategy.NONE)
                .skipMemoryCache(true)
                .into(imageview);

Verweise: Glide offizielle Dokumente https://github.com/bumptech/glide

2
Keerthivasan

Wenn Sie es ohne Bibliotheken tun wollen:

  1. Wenn Sie ein Bitmap-Bild im Speicher haben

    setImageBitmap (Bitmap bm) // Legt eine Bitmap als Inhalt dieser ImageView fest.

  2. Wenn Sie ein Bild in einem gezeichneten Ordner haben

    setImageResource (int resId) // Legt ein Drawable als Inhalt dieser ImageView fest.

Referenz: https://developer.Android.com/reference/Android/widget/ImageView.html

1
Yogesh