位置: 编程技术 - 正文

Android-Universal-Image-Loader最新框架解析

编辑:rootadmin

推荐整理分享Android-Universal-Image-Loader最新框架解析,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

Android-Universal-Image-Loader(对应版本号1.9.4为最新版)原文作者:顾学武编辑整理:快码众包

目录1.个性的ImageLoader配置1.1.在哪儿配置以及如何配置2.各式缓存方式任你选择2.1.DiskCache 磁盘缓存2.2.MemoryCache内存缓存2.3.不要忘记缓存的清理3.网络图片获取想停就停4. 图像大小由你控制5. 注意事项6.下载地址

1.个性的ImageLoader配置

1.1.在哪儿配置以及如何配置

一般会在自己的Application子类的onCreate()方法中对ImageLoader进行配置

(1) ImageLoaderConfiguration各属性解释

l 偷懒点可以直接使用缺省的配置ImageLoaderConfiguration:

ImageLoaderConfiguration configuration = ImageLoaderConfiguration.createDefault(this);

l 也可以自定义ImageLoaderConfiguration:

ImageLoaderConfiguration类Field详解:

Filed名称Filed意义缺省默认&#;Builder中设置方法Int maxImageWidthForMemoryCacheInt maxImageHeightForMemoryCache内存缓存图片的最大宽高屏幕的宽高度memoryCacheExtraOptions(...)Int maxImageWidthForDiskCacheInt maxImageHeightForDiskCache磁盘缓存图片的最大宽高0,0discCacheExtraOptions(...)或者diskCacheExtraOptions(...)BitmapProcessor processorForDiskCache图片处理器,负责从磁盘缓存读取或写入前对图片进行处理nulldiscCacheExtraOptions(...)或者diskCacheExtraOptions(...)Executor taskExecutor缓存线程池DefaultConfigurationFactory.createExecutor(...);taskExecutor(...)Executor taskExecutorForCachedImages下载缓存图片的线程池DefaultConfigurationFactory.createExecutor(...);taskExecutorForCachedImages(...)Boolean customExecutor是否自定义线程池false无Boolean customExecutorForCachedImages是否自定义下载缓存图片的线程池false无Int threadPoolSize线程池数3threadPoolSize(...)Int threadPriority线程优先级Thread.NORM_PRIORITY - 2threadPriority(...)QueueProcessingType tasksProcessingType片下载和显示的工作队列排序QueueProcessingType.FIFOtasksProcessingOrder(...)MemoryCache memoryCache指定内存缓存的实现DefaultConfigurationFactory.createMemoryCache(...)memoryCache(...)DiskCache diskCache指定磁盘缓存的实现DefaultConfigurationFactory.createDiskCache(...);discCache(...)或者 diskCache(...)ImageDownloader downloader图片下载器,负责从图片的各个来源获取输入流imageDownloader(...)DefaultConfigurationFactory.createImageDownloader(context);ImageDecoder decoder图片解码器,负责将图片输入流InputStream转换为Bitmap对象DefaultConfigurationFactory.createImageDecoder(writeLogs);imageDecoder(...)DisplayImageOptions defaultDisplayImageOptions;缺省的图片显示的配置项DisplayImageOptions.createSimple();defaultDisplayImageOptions(...)ImageDownloader networkDeniedDownloader不允许访问网络的图片下载器networkDeniedDownloader = new NetworkDeniedImageDownloader(downloader);无ImageDownloader slowNetworkDownloader慢网络情况下的图片下载器slowNetworkDownloader = new SlowNetworkImageDownloader(downloader);无(2) DisplayImageOptions各属性解释

l 创建默认的DisplayImageOptions:

DisplayImageOptions option_0 = DisplayImageOptions.createSimple();

l 也可以自定义DisplayImageOptions:

DisplayImageOptions类Field详解

Filed名称Field意义缺省默认&#;Builder中设置方法int imageResOnLoadingDrawable imageOnLoading图片下载期间显示的图片0showStubImage(...)或者showImageOnLoading(...)int imageResForEmptyUriDrawable imageForEmptyUri空 uri 时的占位图片0showImageForEmptyUri(...)int imageResOnFailDrawable imageOnFail图片下载失败时展示图片showImageOnFail(...)boolean resetViewBeforeLoading在加载前是否重置 viewfalseresetViewBeforeLoading()或者resetViewBeforeLoading(...)boolean cacheInMemory是否启用内存缓存falsecacheInMemory()或者cacheInMemory(...)boolean cacheOnDisk是否启用磁盘缓存falsecacheOnDisc()或者cacheOnDisc(...)

或者cacheOnDisk(...)

ImageScaleType imageScaleType图片的缩放类型ImageScaleType.IN_SAMPLE_POWER_OF_2imageScaleType(ImageScaleType imageScaleTy)Options decodingOptions为 BitmapFactory.Options,用于BitmapFactory.decodeStream(imageStream, null, decodingOptions)得到图片尺寸等信息Options decodingOptions = new Options();bitmapConfig(Bitmap.Config bitmapConfig)decodingOptions(Options decodingOptions)int delayBeforeLoading设置在开始加载前的延迟时间,单位为毫秒0delayBeforeLoading(int delayInMillis)boolean considerExifParams是否考虑图片的 EXIF 信息(括机身、镜头型号、拍摄时间、相机快门次数)falseconsiderExifParams(...)Object extraForDownloader下载器需要的辅助信息nullextraForDownloader(Object extra)BitmapProcessor preProcessor缓存在内存之前的处理程序nullpreProcessor(...)BitmapProcessor postProcessor缓存在内存之后的处理程序nullpostProcessor(...)BitmapDisplayer displayer图片的显示方式DefaultConfigurationFactory.createBitmapDisplayer();displayer(...)Handler handlerhandler 对象,消息处理nullhandler(...)boolean isSyncLoading是否同步加载falsesyncLoading(...)

(3) 自定义配置总结:

1) Imageloader提供的缺省的ImageLoaderConfiguration和缺省的DisplayImageOptions已经基本可以满足我们正常的需求,如果没有特殊的需要可以不用再修改;2) ImageLoaderConfiguration的Builder中的diskCache()方法, diskCacheSize() 方法以及diskCacheFileCount()方法彼此功能重叠的,如果设置了其中一个,就不要再设置其他的了;

3) ImageLoaderConfiguration的Builder中的diskCache()方法 和 diskCacheFileNameGenerator()方法彼此功能重叠的,如果设置了其中一个,就不要再设置其他的了;

4) ImageLoaderConfiguration的Builder中的memoryCache() 方法和memoryCacheSize()方法 彼此功能重叠的,如果设置了其中一个,就不要再设置其他的了。

1.2.补充理解:三大关键对象关系

1) ImageLoader:

具体下载图片,缓存图片,显示图片的具体执行类,它有两个具体的方法displayImage(...)、loadImage(...),但是其实最终他们的实现都是displayImage(...)

2) ImageLoaderConfiguration:

图片缓存的全局配置,主要有线程类、缓存大小、磁盘大小、图片下载与解析、日志方面的配置

3) DisplayImageOptions:

指导每一个Imageloader根据网络图片的状态(空白、下载错误、正在下载)显示对应的图片,是否将缓存加载到磁盘上,下载完后对图片进行怎么样的处理

Android-Universal-Image-Loader最新框架解析

4) 三者关系的形象比喻:

这三者就像是公司执行机构、公司规章制度以及客户需求,ImageLoaderConfiguration就像一个公司的规章制度,里面规定了一个公司全局性的性质;ImageLoader就像是一个公司的执行机构,会给客户创造出客户想要的产品;DisplayImageOptions就像是每一个客户的具体需求,公司执行结构会根据这个需求最终决定如何生产那个产品。

2.各式缓存方式任你选择

2.1.DiskCache 磁盘缓存

1) UnlimitedDiscCache不限制缓存大小;2) UnlimitedDiscCache很简单它只是简单的继承了BaseDiscCache并未对BaseDiscCache做任何扩展;

3) LimitedAgeDiscCache限制缓存时间;

4) LimitedAgeDiscCache该类实现了在缓存中删除被加载超过规定时间的文件:满足以下条件的时候就从缓存中删除文件:系统当前时间-文件的最新修改时间 > maxFileAge;

2.2.MemoryCache内存缓存

1) 通过实现接口MemoryCacheAware <String,Bitmap>来实现自己的缓存

2) UsingFreqLimitedCache (最少被用到的对象会被删除)

3) UsingAgeLimitedCache (最早被添加的对象会被删除)

4) LargestLimitedCache (空间占用最大的对象会被删除)

5) FIFOLimitedCache (根据先进先出的原则上删除多余对象)2.3.不要忘记缓存的清理

一般要在整个应用结束的时候调用下面两个方法,分别情况内存缓存和磁盘缓存,提高用户体验 :

i. imageLoader.clearMemoryCache();

ii. imageLoader.clearDiskCache();

3. 网络图片获取想停就停

主要是用于GirdView,ListView加载图片的情况,因为这两个控件展示图片的时候会出现滑动操作,为了更友好的用户体验,可以设置GirdView,ListView的setOnScrollListener监听事件。

listView.setOnScrollListener(new PauseOnScrollListener(imageLoader, pauseOnScroll, pauseOnFling));gridView.setOnScrollListener(new PauseOnScrollListener(imageLoader, pauseOnScroll, pauseOnFling));

pauseOnScroll---是否在滑动过程中停止加载图片

pauseOnFling---是否在快速猛的滑动中停止加载图片

4.图像大小由你控制在ImageLoadingListener接口有以下几个状态监听,用于监听图片下载的不同状态:1) onLoadingStarted(String imageUri, View view);2) onLoadingFailed(String imageUri, View view, FailReason failReason);

3) onLoadingComplete(String imageUri, View view, Bitmap loadedImage):

在图片加载成功之后,可以对获取到的Bitmap进行各种大小设置,图形裁剪操作以及动画效果添加等,

最后再加图片展示到控件上。

4) onLoadingCancelled(String imageUri, View view)。

5.注意事项 使用了ImageLoader可以有效的避免程序加载图片出现OOM的情况,但是也不是百分之百的屏蔽这个问题,在有的时候,还是会出现,这个时候,我们 可以从下面几个思路去优化我们的ImageLoader1) 减少配置之中线程池的大小,(.threadPoolSize).推荐1-5;2) 使用.bitmapConfig(Bitmap.config.RGB_)代替ARGB_;

3) 使用.imageScaleType(ImageScaleType.IN_SAMPLE_INT)或者 try.imageScaleType(ImageScaleType.EXACTLY);

4) 避免使用RoundedBitmapDisplayer.他会创建新的ARGB_&#;式的Bitmap对象;

5) 使用.memoryCache(new WeakMemoryCache()),不要使用.cacheInMemory();

6.下载地址:

BaseAdapter初体验---(mooc) 数据适配器-BaseAdapter什么是数据适配器?-数据适配器的使用:1.降低程序耦合性2.容易扩展ListView的显示与缓存机制-需要才显示,显示完就回收到缓存eclip

android 屏幕适配方案第二版 项目已经分享到csdncode:项目主页:

Android回调事件传播-android学习之旅(四十五) 概念简介代码演示packagepeng.liu.test;importandroid.app.ActionBar;importandroid.app.Activity;importandroid.graphics.Color;importandroid.os.Bundle;importandroid.util.DisplayMetrics;importandroid

标签: Android-Universal-Image-Loader最新框架解析

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

上一篇:android图片压缩终极解决方案(android图片压缩库)

下一篇:BaseAdapter初体验---(mooc)(base adk)

  • 资产损失税前扣除及纳税调整明细表
  • 计算应纳税所得额时 不得扣除支出有哪些
  • 房地产企业销售现房是否预缴增值税
  • 购固定资产需要交什么税
  • 技术使用费所得税怎么算
  • 其他应付款包括哪些内容口诀
  • 保险服务保费会计分录
  • 跨境电商的钱怎么到账
  • 企业注销未抵扣完的进项税
  • 建筑业一般计税税率
  • 资本回收系数怎么求
  • 应交税金的期末余额怎么算
  • 营业外收入的核算内容主要有哪些
  • 上市公司发行股票可以自行销售吗
  • 年终奖和工资个人所得税计算器
  • 桂林军工企业单位有哪些
  • 生产型增值税与消费型增值税的区别在于是否允许企业
  • 普票每季度开多少免税
  • 经济法基础企业所得税好难
  • 建筑施工企业印花税计税依据
  • 特许权使用费怎么入账
  • 实收资本印花税最新规定
  • 只有专票没有普票
  • 事业单位事业收入和经营收入要上缴财政
  • 报销话费属于什么费用
  • 职工食堂对外经营合法吗
  • 增值税纳税申报表在哪里打印
  • 视同销售行为怎么进行财税处理?
  • 银行汇票超期退回怎么办
  • 短期投资是会计准则吗
  • 党费返还款怎么做分录
  • 苹果电脑使用u盘之前需要设置什么?
  • 收购发票哪一联做帐
  • 软件技术开发合同
  • php中strrev
  • Yii使用技巧大汇总
  • 开办费的具体内容有哪些
  • phpexcel读取excel
  • php模板之家官网
  • 企业所得税计算器在线计算
  • yolo v5超详细解析
  • 下载下来是php
  • 查询的命令
  • 什么是增值税举个例子
  • 国地税合并后工资仍然不一致
  • 网上变更财务负责人新负责人要确认吗
  • 房产税的计算器
  • 资产负债表固定资产清理
  • 个税手续费返还计入哪个科目
  • 普通发票被作废了还能报销吗
  • SQL SERVER 2008 CTE生成结点的FullPath
  • 电子发票应如何打印出来
  • 使用SQL语句创建一个名为:bookdb的数据库
  • 贷方是收入还是借方是收入
  • 记账凭证粘贴顺序银行回单
  • 工程预付款如何缴税
  • 库存商品坏账准备怎么算
  • 库存的周转天数
  • mysql5.7.32免安装教程
  • win2003出现各种硬件故障问题时的处理方法
  • linux配置ftp服务
  • 浏览器登录淘宝安全吗
  • dwm占用内存过高 进程处理
  • win7输入法图标不见了怎么恢复正常
  • centos建站教程
  • win7如何设置网络连接路由器
  • Unity3D游戏开发引擎
  • perl package
  • android事件分发流程图
  • Node.js中的construct
  • python数据结构教程
  • jquery与js
  • 浏览图片的软件叫什么
  • python写抢购教程
  • jQuery progressbar通过Ajax请求实现后台进度实时功能
  • 四川税务局发票下载
  • 四川增值税发票图片
  • 2016年小微企业所得税优惠政策文号
  • 农村墓地规划土地使用程序和规定
  • 税务总局在贯彻落实意见任务分工中
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设