通用工具包封裝或者是提取了供項目方便使用的工具類(工具類都是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尺寸<target尺寸,允許放大,返回放大的采樣值
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)