通用工具包封裝或者是提取了供項(xiàng)目方便使用的工具類(工具類都是final class,private construct,static method)锄列。
1.DiskCacheUtils.java
本地緩存工具類
method1:findInCache
從本地緩存獲取圖片文件
method2:removeFromCache
從本地緩存刪除圖片文件
2.ImageSizeUtils.java
關(guān)于圖片尺寸鳍咱,縮放的計(jì)算類崇裁。
這里用到了一個(gè)類的靜態(tài)初始化(外部變量必須是static及志,類在loader的時(shí)候執(zhí)行,不管new幾次只會(huì)執(zhí)行一次)
GLES10是opengl的api,called glGetIntegerv主要是來獲取設(shè)備可渲染圖片的最大尺寸(如果圖片尺寸大于系統(tǒng)的MAX,圖片可能無法被顯示)
ImageSize是對(duì)Image width&height的封裝
m1:defineTargetSizeForView
該方法有用到ImageAware,它包含了UI view仇奶,還有一些針對(duì)圖片的scale以及display參數(shù)。
通過imageAware比驻,maxImageSize參數(shù)返回可被顯示view的最大尺寸该溯。
m2:computeImageSampleSize
計(jì)算from srcSize to targetSize縮放的采樣值。
p1:srcSize?
p2:targetSize
p3:viewScaleType 依據(jù)什么策略縮放
ViewScaleType是枚舉類型别惦;FIT_INSIDE寬高比列不變狈茉,寬或高至少有一個(gè)<=目標(biāo)的寬高,CROP寬高比列不變掸掸,寬和高<=目標(biāo)的寬高
p4:powerOf2Scale 縮放的采樣值是否成2的倍數(shù)
m3:considerMaxTextureSize
考慮圖片數(shù)據(jù)按照scale參數(shù)縮放后氯庆,尺寸仍大于系統(tǒng)Max蹭秋,所有有可能會(huì)從新計(jì)算scale
m4:computeMinImageSampleSize
計(jì)算原始圖片要是想被顯示最小的縮放采樣值
m5:computeImageScale
就算如果src尺寸<target尺寸,允許放大堤撵,返回放大的采樣值
3.IoUtils.java
方便處理IO的工具類仁讨。
該類最主要的方法是
m1:copyStream
from is to os?
4.L.java
L管理著項(xiàng)目中日志的輸出,對(duì)Android Log進(jìn)行了封裝粒督;
m1:writeDebugLogs
控制是否輸出DEBUG日志
m2:writeLogs是整個(gè)項(xiàng)目日志的開關(guān)
5.MemoryCacheUtils.java
內(nèi)存緩存工具類陪竿,封裝了方便于內(nèi)存緩存操作的方法
m1:generateKey
通過image url+size生成內(nèi)存緩存中圖片對(duì)應(yīng)的key
m2:findCachedBitmapsForImageUri
通過image Uri獲取bitmaps;一個(gè)圖片可能對(duì)應(yīng)多個(gè)尺寸bitmap,所以是個(gè)list
m3:findCacheKeysForImageUri
通過image Uri獲取keys;一個(gè)圖片可能對(duì)應(yīng)多個(gè)尺寸的key屠橄,所以是個(gè)list
m4:removeFromCache
刪除所有key中包含制定image url的圖片
6.StorageUtils.java?
文件存儲(chǔ)的工具類,這里主要是創(chuàng)建本地緩存文件目錄
主要方法
m1.getCacheDirectory
獲取disk cache 文件目錄
首先是check 外部存儲(chǔ)空間(sdcard)然后是內(nèi)部存儲(chǔ)空間最后是設(shè)備系統(tǒng)文件空間(data/data/pkg/cache)