第一部分:代碼整理
最初始代碼是全部放在一個目錄里念链,我根據(jù)功能把其分成不同的模塊。
每個模塊只要研究明白1個類文件就足夠明白框架做的事情了缰泡。
最后再整合一下烧颖,整個框架就非常容易明白了弱左,先來看一下分模塊后的目錄,然后從上到下逐個模塊分析:
第二部分Action:
主要使用場景:圖片加載成功或者失敗后調(diào)用炕淮。
Action(Picasso拆火,Request ,......):傳入 大量參數(shù)進行初始化
onComplete(): 圖片加載成功后調(diào)用的方法涂圆,一般是用給ImageView添加加載成功后的圖片们镜。
error():圖片加載失敗后調(diào)用的方法,一般用來給ImageView設置加載錯誤時的圖片润歉。
cancel():取消加載圖片的方法
getTarget():主要就是返回Target模狭,Target類在最后再介紹。
getRequest(): 返回Request對象卡辰,Request主要保存請求相關的參數(shù)胞皱。在request模塊再詳細介紹。
getKey():返回key
isCancelled():是否取消
willReplay():加載失敗后是否重新加載
getMemoryPolicy():獲取內(nèi)存加載策略九妈,在policy模塊詳細介紹
getNetworkPolicy():獲取網(wǎng)絡加載策略反砌,在policy模塊詳細介紹
getPicasso():獲取Picasso對象
Action 的子類基本都是繼承上述方法做一些差異化的操作,就不一一介紹了萌朱。
第三部分Cache:
簡介:使用鍵值對存儲<url,Bitmap>.
get()宴树、set()方法主要是存取操作
size()目前占用內(nèi)存大小
maxsize():設置最大占用大小
clear():清除所有Bitmap
clearKeyUri():根據(jù)url清除Bitmap
LruCache實現(xiàn)了Cache的所有方法。
第四部分 Downloader:
簡介: 下載圖片的部分晶疼,此部分主要是封裝一下okhttp的下載功能酒贬。
Downloader只有兩個方法:load()和shutdown(),很好理解:加載和關閉翠霍。
我們再來看看其實現(xiàn)類OkHttp3Downloader:
不同的初始化參數(shù)锭吨,
可以選擇本地加載,
也可以選擇網(wǎng)絡加載寒匙,網(wǎng)絡加載還配有配置OkHttpclient
load()方法就是調(diào)用okhttp去下載圖片零如,然后返回Response
第五部分 Policy:
簡介:此部分主要介紹加載的策略,包括網(wǎng)絡加載和內(nèi)存加載。
NetworkPolicy方法如下圖:
shouldReadFromDiskCache():是否應該從硬盤讀
shouldWriteToDiskCache():是否應該從硬盤寫
MemoryPolicy:
和NetworkPolicy類似考蕾,把硬盤改成內(nèi)存而已祸憋。
是否從內(nèi)存讀
是否往內(nèi)存寫。
第六部分 Request:
簡介:Request主要就是組織請求的參數(shù)肖卧,包括圖片顯示大小蚯窥,ScaleType、旋轉(zhuǎn)角度塞帐、移動距離拦赠、URI、resourceId等參數(shù)壁榕。
RequestCreator是Request的輔助類矛紫,主要是配置Request.Buider的參數(shù)
DeferredRequestCreator是在圖片draw之前做的一些操作或者跟window的attached或者unattached狀態(tài)監(jiān)聽
第七部分 RequestHandler:
介紹:加載不同路徑的圖片資源的不同處理方式赎瞎。
父類RequestHandler:load()加載圖片牌里,一起重試,計算縮放等方法务甥。
其他類都是子類牡辽,方法基本一樣,實現(xiàn)方式不同敞临。例如ResourceRequestHandler态辛,加載resource資源,返回Result具體方法如下圖所示:
第八部分 Stats:
簡介:
統(tǒng)計的一些信息挺尿。比如說查找圖片Hit多少次奏黑,Miss多少次,Decode多少次、
Transform多少次编矾,以及下載多少次等統(tǒng)計信息熟史。再次不再進行過多介紹
第九部分 Utils:
簡介:工具類,都是具體業(yè)務方面的實現(xiàn)窄俏,有興趣自己查看即可蹂匹。
第十部分 Picasso:
簡介:封裝了所有業(yè)務,也是對外的主要入口凹蜈。
未完待續(xù)荔仁,有時間有心情就續(xù)贡这,沒時間就算了