通用工具包封装或者是提取了供项目方便使用的工具类(工具类都是final class,private construct,static method)。
1.DiskCacheUtils.java
本地缓存工具类
method1:findInCache
从本地缓存获取图片文件
method2:removeFromCache
从本地缓存删除图片文件
2.ImageSizeUtils.java
关于图片尺寸,缩放的计算类。
这里用到了一个类的静态初始化(外部变量必须是static,类在loader的时候执行,不管new几次只会执行一次)
GLES10是opengl的api,called glGetIntegerv主要是来获取设备可渲染图片的最大尺寸(如果图片尺寸大于系统的MAX,图片可能无法被显示)
ImageSize是对Image width&height的封装
m1:defineTargetSizeForView
该方法有用到ImageAware,它包含了UI view,还有一些针对图片的scale以及display参数。
通过imageAware,maxImageSize参数返回可被显示view的最大尺寸。
m2:computeImageSampleSize
计算from srcSize to targetSize缩放的采样值。
p1:srcSize
p2:targetSize
p3:viewScaleType 依据什么策略缩放
ViewScaleType是枚举类型;FIT_INSIDE宽高比列不变,宽或高至少有一个<=目标的宽高,CROP宽高比列不变,宽和高<=目标的宽高
p4:powerOf2Scale 缩放的采样值是否成2的倍数
m3:considerMaxTextureSize
考虑图片数据按照scale参数缩放后,尺寸仍大于系统Max,所有有可能会从新计算scale
m4:computeMinImageSampleSize
计算原始图片要是想被显示最小的缩放采样值
m5:computeImageScale
就算如果src尺寸 3.IoUtils.java 方便处理IO的工具类。 该类最主要的方法是 m1:copyStream from is to os 4.L.java L管理着项目中日志的输出,对Android Log进行了封装; m1:writeDebugLogs 控制是否输出DEBUG日志 m2:writeLogs是整个项目日志的开关 5.MemoryCacheUtils.java 内存缓存工具类,封装了方便于内存缓存操作的方法 m1:generateKey 通过image url+size生成内存缓存中图片对应的key m2:findCachedBitmapsForImageUri 通过image Uri获取bitmaps;一个图片可能对应多个尺寸bitmap,所以是个list m3:findCacheKeysForImageUri 通过image Uri获取keys;一个图片可能对应多个尺寸的key,所以是个list m4:removeFromCache 删除所有key中包含制定image url的图片 6.StorageUtils.java 文件存储的工具类,这里主要是创建本地缓存文件目录 主要方法 m1.getCacheDirectory 获取disk cache 文件目录 首先是check 外部存储空间(sdcard)然后是内部存储空间最后是设备系统文件空间(data/data/pkg/cache)