获取网络图片的几种方式
来源:互联网 发布:python抢电影票 编辑:程序博客网 时间:2024/05/22 08:25
获取网络图片是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);
- 获取网络图片的几种方式
- 网络获取图片操作的几种方式
- 本地获取图片的几种常用方式和网络获取图片
- Android获取图片的几种方式
- Android 中获取图片资源的几种方式
- 从WebView获取图片的几种方式
- Android 获取图片资源的几种方式
- Silverlight-获取网络数据源的几种方式
- Android从网络上获取图片的两种方式
- 获取网络图片之---三种方式
- 从网络上获取图片的两种方式讲解:thread+handle和AsyncTask方式
- Android几种加载网络图片的方式(附带源码Demo)
- CSS 定位图片的几种方式
- CSS 定位图片的几种方式
- Flex加载图片的几种方式
- 图片的几种处理方式
- Android绘制图片的几种方式
- JfreeChart生成图片的几种方式
- linux常用命令
- [李景山php]每天laravel-20161026|TranslationServiceProvider.php
- java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/HBaseConfiguration
- RandamName随机点名
- 身份证实名认证
- 获取网络图片的几种方式
- html5解决大文件断点续传
- C#中Console.WriteLine(),Console.Write()的用法
- 学习jsp必须的基础知识
- java项目之——坦克大战25
- MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)
- 0830-0914 开源项目/app通信/mac软件收集/Reveal软件调试程序/APP监测更新
- JavaScript实现拖拽预览,AJAX小文件上传
- Ubuntu14.04安装mysql5.7