天天看點

Glide圖檔加載神器----官方庫wiki說明文檔的翻譯(首頁)

Glide3.0版本中有哪些新内容:

Glide3.0版本包含了很多的新特性。更值得關注的特性是如下的:

  1. 動态Gif圖解碼:如果加載的圖檔是動态GIF圖隻需要用同樣的調用發送就可以實作Glide.with(…).load(…),也可以這樣使用Glide.with(context).load(…).asBitmap()來加載一直靜态的圖檔,如果是用Glide.with(context).load(…).asGif()來加載靜态圖檔不會有動态效果,除非它是一個動态gif圖。
  2. 本地視圖劇照:除了解碼Gif以外,Glide還可以解碼出裝置本地的視訊劇照。使用方式同Gif一樣Glide.with(…).load(…),就可以為任何本地視訊進行解碼劇照的工作。
  3. 縮略圖的支援:Glide可以在同時間内載入多張圖檔到同一個view中,意味着使用者隻要等待少量的時間就可以看到下拉菜單中多個無損的圖檔。如果想要先加載view大小的1/10的縮略圖,然後再加載完整的圖檔,可以這樣:

    Glide.with(yourFragment).load(yourUrl).thumbnail(0.1f).into(yourView)

  4. 跟生命周期的內建:現在圖檔加載請求在onStop的時候會自動停止,在onStart的時候會重新開始。為了避免在背景浪費電量GIF圖檔同樣也會在onStop的時候暫停加載請求。除此之外當裝置的網絡連接配接狀态改變的時候,所有加載失敗的請求會自動重新開始,來確定不會因為網絡切換連接配接問題而帶來圖檔請求執行失敗。
  5. 轉碼:除了解碼資源外,Glide的toBytes()和transcode()方法還可以讓你擷取、解碼、轉碼一個背景圖檔,而且調用方式是一樣的,來把圖檔轉碼成更适合的類型格式。例如,上傳一張大小為250px*250px位元組的使用者頭像照片:
Glide.with(context).
load("/user/profile/photo/path")
.asBitmap()
.toBytes()
.centerCrop()
.into(new SimpleTarget<byte[]>(, ){
    @Override
    public void onResourceReady(byte[] data, GlideAnimation anim){
        // Post your bytes to a background thread and upload them here.
    }
});
           
  1. 動畫:Glide 3.x版本增加了對疊加陰影效果的支援(crossFade()),以及view的屬性動畫的支援(.animate(ViewPropertyAnimation.Animator)),此外視圖動畫在Glide 2.0的時候就引進了。
  2. OkHttp 和 Volley的支援:現在可以選擇使用OkHttp、Volley、Glide預設的HttpUrlConnection中的一種來作為你的網絡棧。OkHttp 和 Volley可以增加對應的依賴包并且注冊對應的ModelLoaderFactory來包含進來。詳情請看ReadMe
  3. 其它更多内容:例如,在加載過程中使用Drawable對象做為占位圖檔,請求的優先級修改,寬高的重新定義,對原始資源緩存轉換後的縮略圖。.

2.0 到 3.0版本更新的修改:

1. 所有的Glide.load()的調用改成Glide.with([fragment/activity/context]).load()。

2. 所有自定義的load調用Glide.load(url).into(new SimpleTarget(){ … }).with(context)修改成Glide.with(context).load(url).into(new SimpleTarget(width, height) { … })

特性:

除了這些在3.x版本裡的新特性介紹以外,Glide也保留了2.x版本的所有的原有的處理:

1. 背景圖檔加載

2. 清單中視圖被複用的地方自動取消加載任務

3. 記憶體和磁盤的緩存

4. 為了減少jank(姑且翻譯成閃避,應該了解成少使用GC去回收的意思)Bitmap 和 資源對象池。

5. 專門特有的變換transformations

下一篇:Glide圖檔加載神器—-官方庫wiki說明文檔的翻譯(緩存與緩存校驗)

繼續閱讀