UniversalImageLoader实现无图模式

来源:互联网 发布:搜狐影音for mac 编辑:程序博客网 时间:2024/04/30 03:32

UniversalImageLoader这个就不用过多介绍了,一个强大的图片加载工具。但是原生的并没有提供直接设置无图模式的方法,只提供了暂停(onPause)方法。那么我们就通过修改其源代码,为其添加无图模式的功能。


当然通过引入原始JAR包是改不了源码的,我们需要下载原始项目,以项目依赖的方式引入到工程中。gitHub上面其作者的源码应该是eclipse写的,我引入到as上面没成功,这儿我找的1.9.2版本的。https://github.com/SeniorZhai/UniversalImageLoader.git


引入as就不用多说了。先找到关键代码。在ImageLoader方法中,找到displayImage方法,在里面找到LoadAndDisplayImageTask,这个就是加载本地缓存和网络下载图片的任务了;


我们马上打开,在run方法中寻找关键代码。bmp = tryLoadBitmap()就是主要的加载和显示图片的方法了。在这句话前面,我们看到先去读取了内存缓存。我们期望的无图模式是不让其加载网络数据,为用户省流量,所以我们不能在这里做手脚,需要在读取磁盘缓存后,开始网络加载前加入我们的判断逻辑。


进入tryLoadBitmap方法中,很清晰就可以看见先读取了磁盘缓存,然后才尝试网络加载图片。这里有两个方法进行网络加载图片,如下图,所以我们只需要在这两个方法的前面判断无图模式就OK了。


因为ImageLoader是一个单例,所以在其中新定义一个成员变量,来标记当前处于无图模式

private boolean forbidNotwork; //无图模式
为其设置get和set方法,然后在应用设置页就只需要调用ImageLoader.getInstances.setForbidNetWork(true)就行了。


剩下的就很简单了,在上图两个被红圈圈住的方法前面判断ImageLoader的标识位,为true就跳过不执行,就不会网络加载图片。




0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 婆婆说娘家坏话怎么办 在婆家太老实怎么办 两岁宝宝吃夜奶怎么办 2岁宝宝还喝夜奶怎么办 两岁宝宝喝夜奶怎么办 戒奶孩子哭闹怎么办 宝宝戒奶哭闹怎么办 宝宝叼奶头睡觉怎么办 3岁宝宝喝夜奶怎么办 戒奶期间有奶结怎么办 孩子断奶一直哭怎么办 突然喜欢咬指甲怎么办 孩子喜欢咬指甲怎么办 小孩喜欢咬指甲怎么办 宝宝喜欢咬指甲怎么办 婴儿含奶睡觉怎么办 宝宝2岁还吃母乳怎么办 宝宝总抠屁眼怎么办 一年级的孩子厌学怎么办 孩子就是不说话怎么办 感觉自己反应慢怎么办 小学生数学基础不好怎么办 数学考差了怎么办 孩子考试成绩差该怎么办 大学高数听不懂怎么办 遇上自私的父母怎么办 小孩一年级数学不好怎么办 数学考试考不好怎么办 孩子奥数学不好怎么办 孩子下笔太重怎么办 小孩子写字太重怎么办 经常对小孩发火怎么办 对小孩发火后悔怎么办 小孩子不喜欢学数学怎么办? 孩子心里素质差怎么办 三年级语文太差怎么办 宝宝一年级很笨怎么办 一年级孩子太笨怎么办 孩子学习脑子笨怎么办 四年级孩子数学差怎么办 中考考不好了怎么办