Android Volley框架的使用(3)
2024-08-26 05:22:19
4. 加载图片
在实际应用中,经常需要从网络上下载并显示图片。Volley也提供了从网络下载图片的几种方法,这里主要介绍两种方法:ImageRequest和ImageLoader。
(1) ImageRequest
ImageRequest和StringRequest、JsonObjectRequest类似,都继承自Request,使用方法也差不多。
private void imageRequest(){
ImageRequest imageRequest = new ImageRequest(
"http://tech.cnr.cn/techit/201411/W020141113510671880058.jpg",
new Response.Listener<Bitmap>() {
@Override
public void onResponse(Bitmap response) {
imgView.setImageBitmap(response);
}
}, 0, 0, Config.RGB_565, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
imgView.setImageResource(R.drawable.ic_launcher);
}
});
mQueue.add(imageRequest);
}
首先创建一个ImageRequest,构造函数的参数包括图片的URL,下载图片成功的回调函数(这里把下载的图片通过一个ImageView控件显示出来),图片显示的长和宽(这里都设置为0,则按照图片原来的大小显示),图片显示的质量,下载图片失败的回调函数(这里显示一张默认图片)。运行结果如下所示:
(2) ImageLoader
有时从网上下载图片需要很长的时间,在下载的过程中显示一张图片会比较好,ImageLoader就能够实现这个功能。ImageLoader不是继承自Request的,和前面几个Request的使用略有不同,需要先定义ImageLoader和ImageListener,然后调用ImageLoader的get()方法来获取图片。
定义ImageLoader:
ImageLoader imageLoader = new ImageLoader(mQueue, new ImageCache() {
@Override
public void putBitmap(String url, Bitmap bitmap) {
} @Override
public Bitmap getBitmap(String url) {
return null;
}
});
其中mQueue是请求队列。
定义ImageListener:
ImageListener listener = ImageLoader.getImageListener(imgView,
R.drawable.ic_launcher, R.drawable.ic_launcher);
其中imgView是显示图片的控件,后面两个参数分别是下载图片过程中显示的图片和下载失败显示的图片,这里为了简单,设置的是同一张图片。
最后,使用ImageLoader的get()方法来下载图片。
imageLoader.get("http://tech.cnr.cn/techit/201411/W020141113510671880058.jpg",
listener, 400, 200);
参数包括图片的URL、ImageListener,图片显示的长和宽。运行结果如下:
最新文章
- EF MySql 配置文件
- easyui from 缓存问题处理
- GitHub官方介绍(中文翻译)
- VS2013_QT255开发相关技巧理解心得
- Android AIDL 一探究竟
- 最简单的基于FFmpeg的移动端例子:IOS 推流器
- Candy Sharing Game(hdoj1034)
- 57. Spring 自定义properties升级篇【从零开始学Spring Boot】
- 白学jquery Mobile《构建跨平台APP:jQuery Mobile移动应用实战》串行4(场景变化)
- 关于datagrid中控件利用js调用后台方法事件的问题
- 为 pip install 设置 socks5 代理
- DLNA流媒体设置
- Unix中共享信息方式
- 2018.12.31 NOIP训练 czy的后宫6(线性dp)
- nginx “403 Forbidden” 错误的原因及解决办法
- js匹配日期和时间的正则表达式
- BLE pairing vs. bonding
- 使用navicat for sqlserver 把excel中的数据导入到sqlserver数据库
- median(NOIP模拟赛Round 3)
- Apache Flink vs Apache Spark——感觉二者是互相抄袭啊 看谁的好就抄过来 Flink支持在runtime中的有环数据流,这样表示机器学习算法更有效而且更有效率