位置: 编程技术 - 正文

一个方便的图片加载框架——ImageViewEx(一个方便的世界作文)

发布时间:2024-02-27

推荐整理分享一个方便的图片加载框架——ImageViewEx(一个方便的世界作文),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:一个方便的图片怎么画,一个方便的世界作文,方便的图像,一个方便的图片大全,方便的图标,一个方便的图片表情包,一个方便的图片大全,一个方便的图片怎么画,内容如对您有帮助,希望把文章链接给更多的朋友!

我的博客: lib,用起来非常的简单,和 picasso 或者谷歌的 Volley 等都一样,只需要一行代码就能完成图片加载的逻辑。

项目地址:ImageViewEx

项目效果:

二、使用

先给出使用方法:首先在布局文件中加入如下代码:

如果是要使用圆形或者圆角的图片,只需要将 ImageViewEx 改成 RoundImageView 就可以了。

在 Java 代码中,这样写就可以了

三、 原理

先给出类关系图

一个方便的图片加载框架——ImageViewEx(一个方便的世界作文)

使用方式非常简单,现在大概来分析一下这个框架的原理:

框架的加载方式主要还是通过 http 请求的 get 方式拿到图片,然后将其保存在 SD 卡中,将 SD 卡中的图片转化为 Bitmap 对象,通过 LruMemoryCache 缓存方式存到内存中。并将其加载到对应 View 上去。

主要类就是 ImageViewEx 和 ImageLoader 了

1、 ImageViewEx.java

这个类的主要功能就是设置加载时的默认图片,调用ImageLoader 类的loadImageAsync进行加载图片,对加载完成后的回调进行处理。都在loadImage(url)中体现了:

2、 ImageLoader.java

使用最大运行内存的十六分之一作为 LruMemoryCache 的缓存大小,如果超过了这个大小,系统会自动将其释放掉。

在加载的过程中,线程池可以开启的最多任务数为 MAX_BLOCK_QUEUE_SIZE 个,balanceTasks()这个方法,保证了队列的最大任务数:

在内部类 LocalTask 中进行加载的逻辑,主要看 run() 方法,先根据 url 拿到 SD 卡中的存储路径pathName,将 pathName 解析成 Bitmap 对象,如果不为 null 表示 SD 卡中有该图片,直接取 SD 卡中的图片,否则删除这个文件,并通过 HttpRequestGet 去下载该图片,下载完成后会回调 requestFinished 方法,并调用 notifySuccess 方法,注意,不管成功还是失败,都需要将其从任务队列 mTaskQueue 中删除。

3、 HttpRequestGet.java

get 请求成功后,创建文件路径,将请求到的数据存储到文件中,通知回调成功或者失败的结果。

4、 RoundImageView.java

这个类就比较简单了,继承自 ImageViewEx,功能是 设置圆形图片,主要就是重写了 onDraw(canvas); 方法,在这个方法里调用了 Canvas 的 drawRoundRect 方法。注意,如果要设置成圆角图片 则需要调用 setConer(x,y); 如果不调用表示圆形图片:

基本的就是这样,框架其实很简单,将其抽取出来作为一个框架来用的话,还是很方便的。对了如果要显示下载进度,只需要调用 HttpGetProgressCallback 接口就可以了,这个可以自己去封装,我就不搞了,哈哈,后期如果有这个需求可以考虑加上。嗯。。。后面再更新吧。

KopDB 框架学习2——源码分析 我的博客:

android自定义属性三部曲 我们在开发中经常需要为了保持应用在不同的移动设备平台下显示统一的UI风格,毕竟各个平台厂商针对界面风格进行自定义导致UI风格千变万化。所以

android TabHost小结 转载:TabHost是整个Tab的容器,包括两部分,TabWidget和FrameLayout。TabWidget就是每个tab的标签,FrameLayout则是tab内容。1、如果我们使用extendsTabAcitivty,如同Li

标签: 一个方便的世界作文

本文链接地址:https://www.jiuchutong.com/biancheng/385944.html 转载请保留说明!

上一篇:android数据存储读取1:SharedPreferences(对比IOS)(android数据存储与访问的方式有)

下一篇:KopDB 框架学习2——源码分析(kraken框架)

  • 什么是转登记纳税人
  • 企业账号变更
  • 单位边际贡献和边际贡献一样吗
  • 个人购买商业保险怎么抵扣个税
  • 异地提供建筑服务
  • 交易性金融资产借贷方向
  • 如何计算非居民用电量
  • 员工年终福利发什么
  • 已经抵扣的发票可以取消抵扣吗
  • 出售固定资产要做收入吗
  • 出口转内销进项转出
  • 劳务派遣企业的规上企业认定标准
  • 开票软件安装6位地区编号填什么
  • 企业间借款利息账务处理
  • 企业注销后资金处理
  • 公司哪些发票可以抵税
  • 长期未收回的应收账款企业所得税
  • 代垫资金的代购是什么
  • 残疾人就业保障金是什么意思啊
  • 文档自动填写怎么弄
  • 原始股东减持要交多少税
  • 银行承兑汇票和银行汇票的区别
  • 预计负债的计量,如何确定最佳估计数
  • php如何防止表单重复提交
  • executor进程
  • 商业折扣影响税费吗
  • 浅谈php技术
  • 电脑语言栏不见了,打不出汉字
  • 建筑设备出租并配备人员
  • 增值税发票作废了税钱退还吗
  • 出差午餐补助公职出差
  • 出租个人住房怎样交税
  • php处理数组的函数
  • php图片识别处理归类
  • thinkphp 快速入门
  • 口腔门诊提供免费服务有哪些?
  • vue+java+mysql
  • mysql表中数据
  • 正则表达式除去指定字母
  • 垃圾清运费进入会计什么科目
  • 销项税比进项税多怎么办
  • 投资别人公司的注意事项
  • python卡方分布随机数
  • 一般纳税人接受的下列服务中不得抵扣进项税额的有
  • 账面成本与账面余额
  • 初学access收获心得
  • 金融企业往来支出属于什么科目
  • 高温补贴纳税
  • 高新企业研发收入占总收入比例怎么算
  • 退回投标保证金在投诉阶段怎么办
  • 培训费发票属于哪个税目
  • 已认证发票退回的流程
  • 小规模纳税人增值税账务处理
  • 支付安全生产费会计科目
  • 久期缺口计算公式解析
  • 支付劳务费需要什么原始凭证
  • 计提资产减值是好事还是坏事
  • 通过T-SQL语句实现数据库备份与还原的代码
  • mysql语句group by
  • winxp更新到win10
  • fedora最新版本
  • 苹果电脑安装了双系统怎么恢复苹果系统
  • win7系统怎么禁用数字签名
  • 笔记本w8系统怎么取消开机密码
  • windows8_os
  • 怎样判断滚动和滑动
  • Node.js中的全局变量有哪些
  • 加快构建新发展格局,着力推动高质量发展心得体会
  • nodejs fs.open
  • js 图像
  • 浅谈jquery中next与siblings的区别
  • websocket npm
  • 使用jquery实现的项目
  • 超清晰的壁纸
  • android开发从入门到精通(项目案例版)
  • jquery 触发点击
  • 手游炫酷
  • 青岛新农合网上缴费时间
  • 什么是城建税的纳税义务人
  • 深圳市国家税务局
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号