关于imageloader的一些理解
来源:互联网 发布:mac 鼠标 触摸板 编辑:程序博客网 时间:2024/05/22 16:41
Android-Universal-Image-Loader是一个开源的UI组件程序,该项目的目的是提供一个可重复使用的仪器为异步图像加载,缓存和显示。
最近翻了很多网上的博客,自己总结一下:
Image-Loader三大组件DisplayImageOptions、ImageLoader、ImageLoaderConfiguration
三者的关系
ImageLoaderConfiguration是针对图片缓存的全局配置,主要有线程类、缓存大小、磁盘大小、图片下载与解析、日志方面的配置。
ImageLoader是具体下载图片,缓存图片,显示图片的具体执行类,它有两个具体的方法displayImage(...)、loadImage(...),但是其实最终他们的实现都是displayImage(...)。
DisplayImageOptions用于指导每一个Imageloader根据网络图片的状态(空白、下载错误、正在下载)显示对应的图片,是否将缓存加载到磁盘上,下载完后对图片进行怎么样的处理。
DisplayImageOptions
用于设置图片显示的类。
1.此类的功能:
1 //设置图片在下载期间显示的图片 2 showStubImage(R.drawable.ic_launcher) 3 4 //设置图片Uri为空或是错误的时候显示的图片 5 showImageForEmptyUri(R.drawable.ic_empty) 6 7 //设置图片加载/解码过程中错误时候显示的图片 8 showImageOnFail(R.drawable.ic_error) 9 10 //设置图片在下载前是否重置,复位11 resetViewBeforeLoading()12 13 //设置下载的图片是否缓存在内存中14 cacheInMemory()15 16 //设置下载的图片是否缓存在SD卡中17 cacheOnDisc()18 19 //设置图片的解码类型20 bitmapConfig(Bitmap.Config.RGB_565)21 22 //设置图片的解码配置23 decodingOptions(android.graphics.BitmapFactory.Options decodingOptions)24 25 //设置图片下载前的延迟26 delayBeforeLoading(int delayInMillis) 27 28 //设置额外的内容给ImageDownloader29 extraForDownloader(Object extra)30 31 //设置图片加入缓存前,对bitmap进行设置32 preProcessor(BitmapProcessor preProcessor)33 34 //设置显示前的图片,显示后这个图片一直保留在缓存中35 postProcessor(BitmapProcessor postProcessor) 36 37 //设置图片以如何的编码方式显示38 imageScaleType(ImageScaleType imageScaleType)
2.此类的两种创建方式:
/** * DisplayImageOptions 创建的两种方式。 */ // 创建默认的DisplayImageOptions DisplayImageOptions option_0 = DisplayImageOptions.createSimple(); // 使用DisplayImageOptions.Builder()创建DisplayImageOptions DisplayImageOptions option_1 = new DisplayImageOptions.Builder() .showStubImage(R.drawable.ic_launcher) .showImageOnFail(R.drawable.ic_error) .showImageForEmptyUri(R.drawable.ic_empty).cacheInMemory() .cacheOnDisc().displayer(new RoundedBitmapDisplayer(20)) .build();
3.类中的方法使用:
/** * 设置图片的显示方式 * @param displayer */ displayer(BitmapDisplayer displayer) displayer: RoundedBitmapDisplayer(int roundPixels)设置圆角图片 FakeBitmapDisplayer()这个类什么都没做 FadeInBitmapDisplayer(int durationMillis)设置图片渐显的时间 SimpleBitmapDisplayer()正常显示一张图片
/** * 图片的缩放方式 * @param imageScaleType */ imageScaleType(ImageScaleType imageScaleType) imageScaleType: EXACTLY :图像将完全按比例缩小的目标大小 EXACTLY_STRETCHED:图片会缩放到目标大小完全 IN_SAMPLE_INT:图像将被二次采样的整数倍 IN_SAMPLE_POWER_OF_2:图片将降低2倍,直到下一减少步骤,使图像更小的目标大小 NONE:图片不会调整
在应用中配置ImageLoaderConfiguration参数(只能配置一次,如多次配置,则默认第一次的配置参数)
使用默认设置
ImageLoaderConfiguration configuration = ImageLoaderConfiguration.createDefault(
this
);
自己配置参数
File cacheDir = StorageUtils.getCacheDirectory(context);
//缓存文件夹路径
ImageLoaderConfiguration config =
new
ImageLoaderConfiguration.Builder(context)
.memoryCacheExtraOptions(
480
,
800
)
// default = device screen dimensions 内存缓存文件的最大长宽
.diskCacheExtraOptions(
480
,
800
,
null
)
// 本地缓存的详细信息(缓存的最大长宽),最好不要设置这个
.taskExecutor(...)
.taskExecutorForCachedImages(...)
.threadPoolSize(
3
)
// default 线程池内加载的数量
.threadPriority(Thread.NORM_PRIORITY -
2
)
// default 设置当前线程的优先级
.tasksProcessingOrder(QueueProcessingType.FIFO)
// default
.denyCacheImageMultipleSizesInMemory()
.memoryCache(
new
LruMemoryCache(
2
*
1024
*
1024
))
//可以通过自己的内存缓存实现
.memoryCacheSize(
2
*
1024
*
1024
)
// 内存缓存的最大值
.memoryCacheSizePercentage(
13
)
// default
.diskCache(
new
UnlimitedDiscCache(cacheDir))
// default 可以自定义缓存路径
.diskCacheSize(
50
*
1024
*
1024
)
// 50 Mb sd卡(本地)缓存的最大值
.diskCacheFileCount(
100
)
// 可以缓存的文件数量
// default为使用HASHCODE对UIL进行加密命名, 还可以用MD5(new Md5FileNameGenerator())加密
.diskCacheFileNameGenerator(
new
HashCodeFileNameGenerator())
.imageDownloader(
new
BaseImageDownloader(context))
// default
.imageDecoder(
new
BaseImageDecoder())
// default
.defaultDisplayImageOptions(DisplayImageOptions.createSimple())
// default
.writeDebugLogs()
// 打印debug log
.build();
//开始构建
4、图片显示操作
a、首先要得到ImageLoader的实例(使用的单例模式)
ImageLoader imageLoader = ImageLoader.getInstance();
注:在每个显示任务(布局中都需实例化才能进行相关操作
b、相关显示参数配置
DisplayImageOptions options =
new
DisplayImageOptions.Builder()
.showImageOnLoading(R.drawable.ic_stub)
// 设置图片下载期间显示的图片
.showImageForEmptyUri(R.drawable.ic_empty)
// 设置图片Uri为空或是错误的时候显示的图片
.showImageOnFail(R.drawable.ic_error)
// 设置图片加载或解码过程中发生错误显示的图片
.resetViewBeforeLoading(
false
)
// default 设置图片在加载前是否重置、复位
.delayBeforeLoading(
1000
)
// 下载前的延迟时间
.cacheInMemory(
false
)
// default 设置下载的图片是否缓存在内存中
.cacheOnDisk(
false
)
// default 设置下载的图片是否缓存在SD卡中
.preProcessor(...)
.postProcessor(...)
.extraForDownloader(...)
.considerExifParams(
false
)
// default
.imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2)
// default 设置图片以如何的编码方式显示
.bitmapConfig(Bitmap.Config.ARGB_8888)
// default 设置图片的解码类型
.decodingOptions(...)
// 图片的解码设置
.displayer(
new
SimpleBitmapDisplayer())
// default 还可以设置圆角图片new RoundedBitmapDisplayer(20)
.handler(
new
Handler())
// default
.build();
c、显示图片
1
、 ImageLoader.getInstance().displayImage(uri, imageView);
2
、 ImageLoader.getInstance().displayImage(uri, imageView, options);
3
、 ImageLoader.getInstance().displayImage(uri, imageView, listener);
4
、 ImageLoader.getInstance().displayImage(uri, imageView, options, listener);
5
、 ImageLoader.getInstance().displayImage(uri, imageView, options, listener, progressListener);
参数解析:
imageUrl 图片的URL地址
imageView 显示图片的ImageView控件
options DisplayImageOptions配置信息
listener 图片下载情况的监听
progressListener 图片下载进度的监听
http://www.cnblogs.com/kissazi2/p/3886563.html
http://www.tuicool.com/articles/2yYfiy
http://www.2cto.com/kf/201412/361295.html
http://hunankeda110.iteye.com/blog/1897961
- 关于imageloader的一些理解
- 关于imageloader的一些见解
- 理解ImageLoader的原理
- ImageLoader 的一些配置
- 关于imageloader中图片加载保存的一些方法:
- 关于JAXB的一些理解
- 关于bitmap的一些理解
- 关于Hook的一些理解
- 关于JavaBean的一些理解
- 关于异常的一些理解
- 关于内存的一些理解
- 关于内存的一些理解
- 关于MFC的一些理解
- 关于编码的一些理解
- 关于枚举的一些理解
- 关于const的一些理解
- 关于矩阵的一些理解
- 关于编码的一些理解
- 64位Ubuntu系统如何运行32位软件
- android input进程(模拟按键)
- 一个神人创造了验证码,又让验证码做出了巨大贡献
- 剑指--重建二叉树
- java导出Excel文件,直接可以下载,然后更新状态,刷新页面
- 关于imageloader的一些理解
- 94. Binary Tree Inorder Traversal #Medium
- 多个if else替换为一个if判断
- java中的线程池优点以及处理原理
- js prototype介绍
- 剑指Offer——之字形打印二叉树
- [ObjectC]Objective-C内存管理之---属性修饰词
- javascript调用qt javaScriptWindowObjectCleared()信号
- PLSQL连接本地的ORACLE数据库