UIL_Universal Image Loader
1. Setup
Maven dependency:
|
|
Manifest:
|
|
2. Configuration
ImageLoaderConfiguration是全局的,只需要设置一次,可根据需要设置必要选项。
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 UnlimitedDiskCache(cacheDir)) // default
.diskCacheSize(50 1024 1024)
.diskCacheFileCount(100)
.diskCacheFileNameGenerator(new HashCodeFileNameGenerator()) // default
.imageDownloader(new BaseImageDownloader(context)) // default
.imageDecoder(new BaseImageDecoder()) // default
.defaultDisplayImageOptions(DisplayImageOptions.createSimple()) // default
.writeDebugLogs()
.build();
3. Display Options
DisplayImageOptions是局部的,每一进行display的时候都可以不同,需要作为参数传给ImageLoader.displayImage(…)方法。但如果没有进行设置,会采用默认配置,ImageLoaderConfiguration.defaultDisplayImageOptions(…)。
DisplayImageOptions options = new DisplayImageOptions.Builder()
.showImageOnLoading(R.drawable.ic_stub) // resource or drawable
.showImageForEmptyUri(R.drawable.ic_empty) // resource or drawable
.showImageOnFail(R.drawable.ic_error) // resource or drawable
.resetViewBeforeLoading(false) // default
.delayBeforeLoading(1000)
.cacheInMemory(false) // default
.cacheOnDisk(false) // default
.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
.handler(new Handler()) // default
.build();
4. Usage
可以接受的URI示例:
|
|
使用ImageLoader的方法:
|
|
load图片,使图片大小变化
|
|
关注load过程的更多的细节
|
|
Load与Display流程
5. Library Map
|
|
6. 基本信息
(1.) 默认情况下,在memory或disk上的缓存为disable,需要在DisplayImageOptions中使能,也可以使用下面方法改变默认设置:
|
|
(2.)如果enable了disk cache,UIL会缓存在外部存储中,路径为/sdcard/Android/data/[package_name]/cache
。如果外部存储不可用,则图片会被缓存在设备的文件系统中。需要在Manifest中添加外部存储的访问权限。
(3.)定义Image的大小,UIL会搜索已定义的参数:
|
|
(4.)OutOfMemoryError 的处理
(5.)MemoryCache的配置
|
|
(6.)DiskCache的配置ImageLoaderConfiguration.diskCache(…)
|
|
(7.)图片的显示风格,可以设置为圆角和褪色效果
|
|
(8.)可以设置图片在scrolling时的效果,使用PauseOnScrollListener
(9.)在log中的url后面会后缀图片的大小
(10.)ImageLoader会始终保持宽高比