如何从url为imageView设置图像

时间:2013-09-23 07:15:04

标签: android url imageview

10 个答案:

答案 0 :(得分:55)

修改

创建一个扩展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);
    }

}

并将其称为new ImageLoadTask(url, imageView).execute();

直接法:

使用此方法并将您的网址作为字符串传递。它返回一个位图。将位图设置为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;
    }
}

然后这就像ImageView一样:

imageView.setImageBitmap(getBitmapFromURL(url));

并且不要忘记maffst中的这个许可。

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

注意:

尝试从另一个线程或AsyncTask调用此方法,因为我们正在执行网络操作。

答案 1 :(得分:30)

你也可以让Square的Picasso图书馆解决这个问题:

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

作为奖励,您可以获得缓存,转换等。

答案 2 :(得分:8)

尝试:

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

更多来自

1)how-to-load-an-imageview-by-url-in-android

2)android-make-an-image-at-a-url-equal-to-imageviews-image

答案 3 :(得分:4)

使用Glide库:

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

答案 4 :(得分:1)

使用Aquery库的简便方法有助于从网址

直接加载图片
AQuery aq=new AQuery(this); // intsialze aquery
 aq.id(R.id.ImageView).image("http://www.vikispot.com/z/images/vikispot/android-w.png");

答案 5 :(得分:1)

您可以使用PicassoGlide

Picasso.with(context)
   .load(your_url)
   .into(imageView);


Glide.with(context)
   .load(your_url)
   .into(imageView);

答案 6 :(得分:0)

尝试使用SimpleDraweeView库

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

现在你可以做到:

SELECT s.id FROM movies_status s, movies_status_movies m, movies_status_list_base u WHERE s.id = m.movies_status_id AND s.id = u.movies_status_id AND m.movie_id = :movieId AND u.list_base_id = :userId

答案 7 :(得分:0)

如果您正在制作RecyclerView并使用适配器,那对我有用的是:

@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);
}

答案 8 :(得分:0)

使用最新版的毕加索(撰写本文时为2.71828),with方法已被弃用。

所以正确的方法是-

Picasso.get().load("https://<image-url>").into(imageView);

其中imageView是要将图像加载到的ImageView

答案 9 :(得分:-2)

试试这个:

ImageView imageview = (ImageView)findViewById(R.id.your_imageview_id);
Bitmap bmp = BitmapFactory.decodeFile(new java.net.URL(your_url).openStream());  
imageview.setImageBitmap(bmp);

您也可以尝试这样做:Android-Universal-Image-Loader,以便有效地从URL

加载您的图片