當前位置:編程學習大全網 - 源碼下載 - Glide多種組合使用方式

Glide多種組合使用方式

有時在使用 RecyclerView時,View 可能被重用且保持了前壹個位置的尺寸,但在當前位置會發生改變。為了處理這種場景,妳可以創建壹個新的 ViewTarget 並為 waitForLayout() 方法傳入 true:

當妳完成了對資源(Bitmap,Drawable 等)的使用時,及時清理(clear)妳創建的這些 Target 是壹個好的實踐。即使妳認為妳的請求已經完成了,也應該使用 clear() 以使 Glide 可以重用被這次加載使用的任何資源 (特別是 Bitmap )。未調用 clear() 會浪費 CPU 內存 阻塞更重要的加載 ,甚至如果妳在同壹個 surface (View, Notification, RPC 等) 上有兩個 Target,可能會引發圖片顯示錯誤。對於像 SimpleTarget這種無法從壹個新實例裏跟蹤前壹個請求的 Target 來說,及時清理尤為重要。

如果妳加載的是 Bitmap 或 GifDrawable,妳可以判斷這個可繪制對象是否實現了 Animatable:

Android中的動畫代價是比較大的,尤其是同時開始大量動畫的時候。 交叉淡入和其他涉及 alpha 變化的動畫顯得尤其昂貴。 此外, 動畫通常比圖片解碼本身還要耗時。在列表和網格中濫用動畫可能會讓圖像的加載顯得緩慢而卡頓 。為了提升性能,請在使用 Glide 向 ListView , GridView, 或 RecyclerView 加載圖片時考慮避免使用動畫,尤其是大多數情況下,妳希望圖片被盡快緩存和加載的時候。作為替代方案,請考慮預加載,這樣當用戶滑動到具體的 item 的時候,圖片已經在內存中了。

雖然禁用交叉淡入通常是壹個比較好的默認行為,當待加載的圖片包含透明像素時仍然可能造成問題。當占位符比實際加載的圖片要大,或者圖片部分為透明時,禁用交叉淡入會導致動畫完成後占位符在圖片後面仍然可見。如果妳在加載透明圖片時使用了占位符,妳可以啟用交叉淡入,具體辦法是調整 DrawableCrossFadeFactory 裏的參數並將結果傳到 transition() 中:

以前屏幕比較小,列表圖片和壹些圖片加載展現的尺寸不大,所以就算有圖片疊加問題不留意也看不出來。

但是最近的網絡電視流行。圖片加載尺寸越來越大這個問題就有可能比較嚴重了。 尤其進行TV開發者留意

應用程序(Applications)如果希望使用集成庫和/或 Glide 的 API 擴展,則需要:

恰當地添加壹個 AppGlideModule 實現。

(可選)添加壹個或多個 LibraryGlideModule 實現。

給上述兩種實現添加 @GlideModule 註解。

添加對 Glide 的註解解析器的依賴。

在 proguard 中,添加對 AppGlideModules 的 keep 。

程序庫如果需要註冊定制組件,例如 ModelLoader,可按以下步驟執行:

添加壹個或多個 LibraryGlideModule 實現,以註冊新的組件。

為每個 LibraryGlideModule 實現,添加 @GlideModule 註解。

添加 Glide 的註解處理器的依賴。

壹個 [LibraryGlideModule] 的例子,在 Glide 的OkHttp 集成庫 中:

程序庫壹定 不要 包含 AppGlideModule 實現。這麽做將會阻止依賴該庫的任何應用程序管理它們的依賴,或配置諸如 Glide 緩存大小和位置之類的選項。

此外,如果兩個程序庫都包含 AppGlideModule,應用程序將無法在同時依賴兩個庫的情況下通過編譯,而不得不在二者之中做出取舍。

這確實意味著程序庫將無法使用 Glide 的 generated API,但是使標準的 RequestBuilder 和 RequestOptions 加載仍然有效(可以在 選項 頁找到例子)

應用程序可能依賴多個程序庫,而它們每壹個都可能包含壹個或更多的 LibraryGlideModules 。在極端情況下,這些 LibraryGlideModules 可能定義了相互沖突的選項,或者包含了應用程序希望避免的行為。應用程序可以通過給他們的 AppGlideModule 添加壹個 @Excludes 註解來解決這種沖突,或避免不需要的依賴。

例如,如果妳依賴了壹個庫,它有壹個 LibraryGlideModule 叫做com.example.unwanted.GlideModule,而妳不想要它:

妳也可以排除多個模塊:

某些情形下,妳可能希望只要圖片不在緩存中則加載直接失敗(比如省流量模式)。如果要完成這個目標,妳可以在單個請求的基礎上使用 onlyRetrieveFromCache 方法:

如果圖片在內存緩存或在磁盤緩存中,它會被展示出來。否則只要這個選項被設置為 true ,這次加載會視同失敗。

如果妳想確保壹個特定的請求跳過磁盤和/或內存緩存(比如,圖片驗證碼 ),Glide 也提供了壹些替代方案。

僅跳過內存緩存,請使用 skipMemoryCache() :

僅跳過磁盤緩存,請使用 DiskCacheStrategy.NONE :

這兩個選項可以同時使用:

//源碼使用方式壹

//用法二

//三

//4

//5

//6

//7

//8

//9

//10

//11

//12

//13

//14

//15

//16

//17

//18

//19

//20

//21

//22

//23

//24

//25

豐富的gilde使用方式,總有壹款適合妳

  • 上一篇:海上風電制氫概念股
  • 下一篇:什麽是紅黑樹?
  • copyright 2024編程學習大全網