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实现无图模式相关推荐

  1. locust入门 -6 无图模式和分布式执行

    无图模式 无图模式即不通过UI界面进行执行locust测试用例.locust提供了命令参数,我们只需要在执行时添加一个--headless标签即可 "Disable the web inte ...

  2. Android设置webView无图模式

    代码示例: webSetting.setBlockNetworkImage(true); // 设置无图模式

  3. locust入门 —— 无图模式和分布式执行

    无图模式 无图模式即不通过UI界面进行执行locust测试用例.locust提供了命令参数,我们只需要在执行时添加一个--headless标签即可 " Disable the web int ...

  4. 计算机学院研发第二轮考核-------浏览器之无图模式

    要让浏览器实现无图模式也是一件比较简单的事情.之前的博客也有提到WebSetting的一些方法,用来加载js,图片等的一些方法,无图模式就是利用该方法来进行设置的. 这时候就需要用到一个中间变量.通过 ...

  5. Mac系统Safari浏览器启动无图模式

    有的时候我们用热点上网,图片的出现会消耗大量的流量,这时候就需要启动无图模式不加载图片. 步骤:启动Safari浏览器->偏好设置->高级->勾选"在菜单栏中显示" ...

  6. iOS: UIWebView 中不加载图片(即浏览器常见的无图模式)

    写到关于UIWebView不加载图片时,查了很多资料, 关于js,关于oc,在stackoverflow 等 并没有找到合适的答案, 最终觉得还是应该回归传统 用js代码, stringByEvalu ...

  7. PC端浏览器如何设置无图模式

    以谷歌浏览器为例,注意有些浏览器并不支持该功能. 1)打开自定义与控制 2)选择设置 3)查看左边状态栏,选择高级设置-->隐私设置和安全性 4)选择内容设置 5)图片 6)选择不显示任何图片, ...

  8. chrome如何进入无图模式?

    chrom只显示文字不显示图片 隐私和安全-图片 可以设置所有网站都不显示图片 自定义指定网站不允许显示图片

  9. Python爬虫配置Selenium库+设置无图无头属性

    出一个最新windows下配置selenium全环境的教程~ 本文会手把手教你配置环境,并带你写第一个selenium爬虫程序 环境配置 1.安装Selenium库 Python和Anaconda-P ...

最新文章

  1. 一名毕业三年的女程序媛面试头条经验,重难点整理
  2. python练手程序_100个python练手小程序
  3. power bi可视化表_滚动器可视化功能,用于Power BI Desktop中的股价变动
  4. 数据全生命周期管理应用平台的组成
  5. php中对数组进行转码,php实现转码的方式(支持数组类型转码)
  6. 服务器版dll修复工具,dll修复工具
  7. ubuntu正确安装显卡驱动的姿势
  8. 关于target is null for setProperty的问题总结
  9. Android适配 - 桌面快捷方式
  10. 语义分割工具EISeg
  11. 金蝶 系统服务器繁忙,金蝶登录时提示云服务器繁忙
  12. EOS区块链常见错误编码代码汇总
  13. js,jquery常用拼接html方法,js,jquery拼接字符串
  14. 被掰弯的线性函数,海王一样的logstic
  15. opencv、opencv_contrib及cuda联合编译详细教程
  16. [转帖]nginx1.17.2版本源码安装
  17. kindle导出电子书pc_使用Kindle for PC在计算机上阅读Kindle电子书
  18. 【vue3 Api - watchEffect 的讲解 使用】- 侦听响应式数据执行副作用(effect)函数
  19. HTML+CSS+JavaScript实现的动态爱心,超简单直接用!
  20. 一位20多年SE“骨灰级老炮”,告诉你售前工程师能力分级的真相

热门文章

  1. SIFT特征提取实现地理位置的标注
  2. ifstream seekg 问题
  3. 注销共享服务器登录,登录和注销 - Power BI | Microsoft Docs
  4. php编程日均增长率计算,2018年事业单位职业测重要知识点:年均增长率的计算...
  5. 【计算机毕业设计】java基于jsp的学生考勤系统
  6. LEADTOOLS如何加载,保存和拆分注释
  7. RHEL7关闭virbr0
  8. 电脑重装系统后微信如何恢复之前的所有聊天记录。
  9. 【C/C++面试必备】面向对象与面向过程的区别
  10. MATLAB读取nc文件,并绘制南海水深图