UniversalImageLoader实现无图模式
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就跳过不执行,就不会网络加载图片。
UniversalImageLoader实现无图模式相关推荐
- locust入门 -6 无图模式和分布式执行
无图模式 无图模式即不通过UI界面进行执行locust测试用例.locust提供了命令参数,我们只需要在执行时添加一个--headless标签即可 "Disable the web inte ...
- Android设置webView无图模式
代码示例: webSetting.setBlockNetworkImage(true); // 设置无图模式
- locust入门 —— 无图模式和分布式执行
无图模式 无图模式即不通过UI界面进行执行locust测试用例.locust提供了命令参数,我们只需要在执行时添加一个--headless标签即可 " Disable the web int ...
- 计算机学院研发第二轮考核-------浏览器之无图模式
要让浏览器实现无图模式也是一件比较简单的事情.之前的博客也有提到WebSetting的一些方法,用来加载js,图片等的一些方法,无图模式就是利用该方法来进行设置的. 这时候就需要用到一个中间变量.通过 ...
- Mac系统Safari浏览器启动无图模式
有的时候我们用热点上网,图片的出现会消耗大量的流量,这时候就需要启动无图模式不加载图片. 步骤:启动Safari浏览器->偏好设置->高级->勾选"在菜单栏中显示" ...
- iOS: UIWebView 中不加载图片(即浏览器常见的无图模式)
写到关于UIWebView不加载图片时,查了很多资料, 关于js,关于oc,在stackoverflow 等 并没有找到合适的答案, 最终觉得还是应该回归传统 用js代码, stringByEvalu ...
- PC端浏览器如何设置无图模式
以谷歌浏览器为例,注意有些浏览器并不支持该功能. 1)打开自定义与控制 2)选择设置 3)查看左边状态栏,选择高级设置-->隐私设置和安全性 4)选择内容设置 5)图片 6)选择不显示任何图片, ...
- chrome如何进入无图模式?
chrom只显示文字不显示图片 隐私和安全-图片 可以设置所有网站都不显示图片 自定义指定网站不允许显示图片
- Python爬虫配置Selenium库+设置无图无头属性
出一个最新windows下配置selenium全环境的教程~ 本文会手把手教你配置环境,并带你写第一个selenium爬虫程序 环境配置 1.安装Selenium库 Python和Anaconda-P ...
最新文章
- 一名毕业三年的女程序媛面试头条经验,重难点整理
- python练手程序_100个python练手小程序
- power bi可视化表_滚动器可视化功能,用于Power BI Desktop中的股价变动
- 数据全生命周期管理应用平台的组成
- php中对数组进行转码,php实现转码的方式(支持数组类型转码)
- 服务器版dll修复工具,dll修复工具
- ubuntu正确安装显卡驱动的姿势
- 关于target is null for setProperty的问题总结
- Android适配 - 桌面快捷方式
- 语义分割工具EISeg
- 金蝶 系统服务器繁忙,金蝶登录时提示云服务器繁忙
- EOS区块链常见错误编码代码汇总
- js,jquery常用拼接html方法,js,jquery拼接字符串
- 被掰弯的线性函数,海王一样的logstic
- opencv、opencv_contrib及cuda联合编译详细教程
- [转帖]nginx1.17.2版本源码安装
- kindle导出电子书pc_使用Kindle for PC在计算机上阅读Kindle电子书
- 【vue3 Api - watchEffect 的讲解 使用】- 侦听响应式数据执行副作用(effect)函数
- HTML+CSS+JavaScript实现的动态爱心,超简单直接用!
- 一位20多年SE“骨灰级老炮”,告诉你售前工程师能力分级的真相
热门文章
- SIFT特征提取实现地理位置的标注
- ifstream seekg 问题
- 注销共享服务器登录,登录和注销 - Power BI | Microsoft Docs
- php编程日均增长率计算,2018年事业单位职业测重要知识点:年均增长率的计算...
- 【计算机毕业设计】java基于jsp的学生考勤系统
- LEADTOOLS如何加载,保存和拆分注释
- RHEL7关闭virbr0
- 电脑重装系统后微信如何恢复之前的所有聊天记录。
- 【C/C++面试必备】面向对象与面向过程的区别
- MATLAB读取nc文件,并绘制南海水深图