web-dev-qa-db-fra.com

comment définir une image à partir de l'URL pour imageView

20
Shanaz K

MODIFIER:

Créez une classe qui s'étend AsyncTask

public class ImageLoadTask extends AsyncTask<Void, Void, Bitmap> {

    private String url;
    private ImageView imageView;

    public ImageLoadTask(String url, ImageView imageView) {
        this.url = url;
        this.imageView = imageView;
    }

    @Override
    protected Bitmap doInBackground(Void... params) {
        try {
            URL urlConnection = new URL(url);
            HttpURLConnection connection = (HttpURLConnection) urlConnection
                    .openConnection();
            connection.setDoInput(true);
            connection.connect();
            InputStream input = connection.getInputStream();
            Bitmap myBitmap = BitmapFactory.decodeStream(input);
            return myBitmap;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    @Override
    protected void onPostExecute(Bitmap result) {
        super.onPostExecute(result);
        imageView.setImageBitmap(result);
    }

}

Et appelez ceci comme new ImageLoadTask(url, imageView).execute();

Méthode directe:

Utilisez cette méthode et transmettez votre URL en tant que chaîne. Il retourne un bitmap. Définissez le bitmap sur votre ImageView.

public static Bitmap getBitmapFromURL(String src) {
    try {
        Log.e("src",src);
        URL url = new URL(src);
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setDoInput(true);
        connection.connect();
        InputStream input = connection.getInputStream();
        Bitmap myBitmap = BitmapFactory.decodeStream(input);
        Log.e("Bitmap","returned");
        return myBitmap;
    } catch (IOException e) {
        e.printStackTrace();
        Log.e("Exception",e.getMessage());
        return null;
    }
}

Et puis ceci à ImageView comme ceci:

imageView.setImageBitmap(getBitmapFromURL(url));

Et n'oubliez pas cette permission dans le manifeste.

<uses-permission Android:name="Android.permission.INTERNET" />

REMARQUE:

Essayez d'appeler cette méthode depuis un autre thread ou AsyncTask car nous effectuons des opérations de mise en réseau.

54
kalyan pvs

Vous pouvez également laisser la bibliothèque Picasso de Square se charger de tout:

Picasso
    .with(context)
    .load("http://...")
    .into(imageView);

En prime, vous obtenez la mise en cache, les transformations, etc.

29
ehnmark

Essayer:

URL newurl = new URL(photo_url_str); 
mIcon_val = BitmapFactory.decodeStream(newurl.openConnection() .getInputStream()); 
profile_photo.setImageBitmap(mIcon_val);

Plus de 

1) comment-charger-une-imageview-par-url-dans-Android .

2) Android-faire-une-image-à-une-url-égal-à-imageviews-image

8
My God

Utiliser Glide bibliothèque:

Glide.with(context)
  .load(new File(url)
  .diskCacheStrategy(DiskCacheStrategy.ALL)
  .into(imageView);
4
Priyanka

moyen facile d'utiliser Aquery bibliothèque, il permet d'obtenir une image de chargement direct à partir de l'URL

AQuery aq=new AQuery(this); // intsialze aquery
 aq.id(R.id.ImageView).image("http://www.vikispot.com/z/images/vikispot/Android-w.png");
1
Hussein Talib

Essayez la bibliothèque SimpleDraweeView

<com.facebook.drawee.view.SimpleDraweeView
        Android:id="@+id/badge_image"
        Android:layout_alignParentTop="true"
        Android:layout_centerHorizontal="true" />

et maintenant vous pouvez simplement faire:

 final Uri uri = Uri.parse(post.getImageUrl());
0

si vous faites un RecyclerView et utilisez un adaptateur, ce qui a fonctionné pour moi a été:

@Override
public void onBindViewHolder(ADAPTERVIEWHOLDER holder, int position) {
    MODEL model = LIST.get(position);
    holder.TEXTVIEW.setText(service.getTitle());
    holder.TEXTVIEW.setText(service.getDesc());

    Context context = holder.IMAGEVIEW.getContext();
    Picasso.with(context).load(model.getImage()).into(holder.IMAGEVIEW);
}
0
Andres Felipe