获取网络图片的几种方式

原创 2016年08月30日 09:59:06

     获取网络图片是Android中常用的功能,除了随着应用网络请求框架的不同,获取网络图片的代码也就不同。自己总结了几种方式:

     (1)使用HttpUrlConnection方式请求网络,这种方式不适用于多个图片下载的场景

        new Thread(new Runnable() {

@Override
public void run() {

try {
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection)
url.openConnection();
conn.setRequestMethod("GET");
conn.setReadTimeout(2000);
conn.connect();
if (conn.getResponseCode() == 200) {
InputStream is = conn.getInputStream();
//解析数据流 解析成图片
Bitmap bitmap = BitmapFactory.decodeStream(is);
Message message = myHandler.obtainMessage();
message.obj = bitmap;
myHandler.sendMessage(message);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).start();


             private Handler myHandler = new Handler() {
public void handleMessage(Message msg) {
if (msg.obj != null) {
Bitmap bitmap = (Bitmap) msg.obj;
image1.setImageBitmap(bitmap);
}
};
};

  (2)使用volley方式  volley方式用到的主要的核心类是ImageRequest

      1.创建请求队列(一个页面创建一个就OK)

      2.创建进行图片请求的对象

      3.把图片请求加入到请求队列当中

     RequestQueue queue = Volley.newRequestQueue(MainActivity.this);

     ImageRequest imageRequest = new ImageRequest(path, new Listener<Bitmap>() {


@Override
public void onResponse(Bitmap response) {
image.setImageBitmap(response);
}
}, 0, 0, Config.ARGB_8888, new ErrorListener() {


@Override
public void onErrorResponse(VolleyError error) {
image.setImageResource(R.drawable.ic_launcher);
}
});
queue.add(imageRequest);

 (3)使用ImageLoader进行图片请求

           1.创建请求队列

           2.创建ImageLoader

           3.使用ImageLoader获取图片

   RequestQueue   queue = Volley.newRequestQueue(context);

   ImageCache imageCache = new ImageCache() {

@Override
public void putBitmap(String url, Bitmap bitmap) {

}

@Override
public Bitmap getBitmap(String url) {
return null;
}
};

   ImageLoader imageLoader = new ImageLoader(queue,imageCache);

   ImageListener imageListener = ImageLoader.getImageListener(image1, R.drawable.ic_launcher,            R.drawable.ic_launcher);

   imageLoader.get(path,imageListener);

(4)使用Volley里面的NetWorkImageView,这个控件继承了ImageView的所有属性,结合了ImageLoader

  private NetworkImageView image;

  image  = (NetworkImageView) findViewById(R.id.image);

  ImageCache imageCache2 = new ImageCache() {

@Override
public void putBitmap(String url, Bitmap bitmap) {
// TODO Auto-generated method stub

}

@Override
public Bitmap getBitmap(String url) {
// TODO Auto-generated method stub
return null;
}
};
ImageLoader imageLoader2 = new ImageLoader(queue, imageCache2);
image.setDefaultImageResId(0);
image.setErrorImageResId(R.drawable.ic_launcher);

image.setImageUrl(path, imageLoader2);

  (5)使用Picasso获取图片,一句代码

       Picasso.with(MainActivity.this).load(path).centerCrop().resize(targetWidth, targetHeight).into(image1);

     

相关文章推荐

本地获取图片的几种常用方式和网络获取图片

前言通常,我们从本地获取图片的方式用得最多的莫过于[UIImage imageNamed:]了,方便、快速、易用,但是有着它的缺陷,那就是不宜获取太大的图片,所以,本文主要浅析一下几种常见的本地获取图...

Android几种加载网络图片的方式(附带源码Demo)

我们在android项目中经常会接触到加载网络图片的情况,这里向大家展示几种最为常见访问网络图片的几种方式。...
  • mkosto
  • mkosto
  • 2016年07月07日 10:57
  • 180

从WebView获取图片的几种方式

微信在浏览网页的时候,我们可以选择长按图片,然后会弹出对话框,询问我们要做什么——保存啊,收藏啊什么的。恰好项目中要用到这个功能,就小做了一番研究, 各种找资料看博客浏览源码,总结了几种方式,特此记录...
  • sollian
  • sollian
  • 2017年01月05日 15:53
  • 1880

从word导出图片的几种方式

  • 2013年05月24日 23:15
  • 120KB
  • 下载

Silverlight-获取网络数据源的几种方式

1跨域验证

Android用到的几种网络请求方式

  • 2014年09月04日 16:46
  • 4KB
  • 下载

ImageView以流的方式获取网络图片

Android平台有3种网络接口可以使用,它们分别是:java.net.*(标准java接口)、org.apache(Apache接口)和android.net.*(Android网络接口)。本文将使...

http编程系列2:http协议GET方式获取网络图片

获取网络图片是我们经常遇到的问题,下面我们来分享一下GET方式获取网络图片的使用方法。 这个例子实现的是从指定的网址上下载图片,然后存放在PC机的指定位置上。这里使用的是GET方式和JAVA接口。 ...

Android几种加载网络图片的方法Demo

  • 2016年07月07日 14:33
  • 3.76MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:获取网络图片的几种方式
举报原因:
原因补充:

(最多只允许输入30个字)