博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
阅读量:6510 次
发布时间:2019-06-24

本文共 1646 字,大约阅读时间需要 5 分钟。

基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)

本案例是基于Volley网络库实现的加载多种网络图片,目前包括GIF动态图片、圆形图片、普通图片,还有待完善,欢迎提意见,或者一起完成。

前言

对于Volley,我相信我们都使用过,它也是Google推荐的网络加载框架,性能优秀。另外,我们也知道Volley可以加载网络图片,正常情况下,可以使用ImageRequest的用法、ImageLoader的用法和NetworkImageView的用法来加载网络图片。但是,有时候我们项目中加载图片可能需要不同的需求,所以我就在这基础上修改完成了加载多样化的网络图片的功能。当然现在Glide加载图片也是非常的好,Google也推荐了。

图片描述

1、修改ImageLoad与ImageRequeat

Volley中图片请求操作主要与ImageLoad与ImageRequeat这两个文件有关系,但是其中返回的是Bitmap对象,我们要修给使得返回缓冲区的ByteBuffer流。如下:

public interface ImageCache {        ByteBuffer getBitmap(String url);        void putBitmap(String url, ByteBuffer bitmap);    }

2、基于LruCache实现内存缓存

具体的写法与Volley使用ImageLoad时缓存类似

public class LruImageCache extends LruCache
implements ImageLoader.ImageCache { public LruImageCache(int maxSize) { super(maxSize); } @Override protected int sizeOf(String key, ByteBuffer value) { return value.capacity(); } @Override public ByteBuffer getBitmap(String url) { return get(url); } @Override public void putBitmap(String url, ByteBuffer bitmap) { put(url, bitmap); }}

3、新建一个AsyncTask从缓存中数据流到UI显示图片

主要判断是否为GIF图片,如果是则加载,另外还要判断是否为圆形图片,如果是则加载

// 判断是否为GIF图片,如果是则加载            if ( LoadGif.isGif(mImageView, bytes) )                return;            Bitmap image = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);            //判断是否为圆形图片,如果是则加载            if(isCircle){                mImageView.setImageBitmap(LoadGif.toRoundBitmap(image));            }else{                mImageView.setImageBitmap(image);            }

4、感谢

最后,要感谢koral--本文的GIF图片显示库,就是这位大神的。

Gif图片加载采用koral--实现的 ,此库底层使用C库进行Gif的编解码,效率和显示效果方面都非常棒。

转载地址:http://pydfo.baihongyu.com/

你可能感兴趣的文章
Mysql
查看>>
跨越企业的“中等收入陷阱”
查看>>
Android 开发者必知的开发资源
查看>>
luogu P1280 尼克的任务 序列DP
查看>>
sys.check_constraints
查看>>
眠眠interview Question
查看>>
RPC-client异步收发核心细节?
查看>>
#define WIN32_LEAN_AND_MEAN 的作用
查看>>
仿余额宝数字跳动效果 TextCounter
查看>>
你必须知道的.net学习总结
查看>>
Axure8.0 网页 or App 鼠标滚动效果
查看>>
大家好,新年快乐。
查看>>
基于multisim的fm调制解调_苹果开始自研蜂窝网调制解调器 最快2024年能用上?
查看>>
mupdf不支持x64_Window权限维持(七):安全支持提供者
查看>>
labview如何弹出提示窗口_LabVIEW开发者必读的问答汇总,搞定疑难杂症全靠它了!...
查看>>
hikariconfig mysql_HikariConfig配置解析
查看>>
mysql批量数据多次查询数据库_mysql数据库批量操作
查看>>
jquery 乱码 传参_jquery获取URL中参数解决中文乱码问题的两种方法
查看>>
JDBC_MySQL_jdbc连接mysql_MySQL
查看>>
zcu106 固化_xilinx zcu106 vcu demo
查看>>