寫在前面:這篇文章原著是Norman Peitek,所有著作權歸原作者所有盼铁,我只是在學習Glide的時候看到有間書的作者 weiyf 寫了雙語的翻譯,覺得非常好尝偎,但是作者只寫了幾篇饶火,估計是比較忙吧。于是我就去看原博了致扯,發(fā)現(xiàn)原博的英文也不會很難懂肤寝,這里只是方便學習做了翻譯(順便學英語(逃),建議英文基礎還可以的同學直接看原文:https://futurestud.io/tutorials/glide-request-priorities
前幾篇傳送門:
- 【雙語】Glide — 入門(Glide — Getting Started)
- 【雙語】Glide — 高級加載(Glide — Advanced Loading)
- 【雙語】Glide — 列表適配器(ListView, GridView)(Glide — ListAdapter (ListView, GridView))
- Glide-默認圖與過渡動畫(Placeholders & Fade Animations)
- Glide-圖片縮放抖僵、調整(Image Resizing & Scaling)
- Glide-顯示Gif和視頻(Displaying Gifs & Videos)
- Glide-緩存基礎(caching-basics)
原文傳送門:
- Thumbnails
- Callbacks: SimpleTarget and ViewTarget for Custom View Classes
- Loading Images into Notifications and AppWidgets
- Exceptions: Debugging and Error Handling
- Custom Transformations
- Custom Animations with animate()
- Integrating Networking Stacks
- Customize Glide with Modules
- Glide Module Example: Accepting Self-Signed HTTPS Certificates
- Glide Module Example: Customize Caching
- Glide Module Example: Optimizing By Loading Images In Custom Sizes
- Dynamically Use Model Loaders
- How to Rotate Images
- Series Roundup
- *Advanced ListViews With Images
- *App Release Preparation
- How to Choose the Best Caching Preference
- How to Ignore URL Query Parameters In Cache Lookup (soon)
- Network-Dependent Image Loading (soon)
正文:
上一周鲤看,我們講了圖片加載的一個關鍵:緩存! 如果你還沒有看過耍群,那么值得翻回去看看义桂。本周,我們將了解Glide的另一個重要特性:按照優(yōu)先級依次請求圖片蹈垢。
Prioritizing Image Requests:設置圖片請求優(yōu)先級
你經(jīng)常會遇到這樣的情況慷吊,你的app需要同時加載許多圖片。我們假設有這樣一個詳情頁面:頁面上方有一張關鍵的大圖和兩張稍小一些的圖曹抬,頁面底部還有一些不那么重要的圖片溉瓶。 對于一個良好用戶體驗來說,上方的關鍵大圖應該是最先被加載并顯示的谤民,然后再到底部那么不那么重要的ImageView堰酿。Glide通過.priority()
方法結合Priority
的枚舉值即可按照你想要的優(yōu)先級來加載圖片。
但是在我們講例子如何使用這個方法之前张足,我們先來看看這些枚舉值触创,它們是作為.priority()
的參數(shù)傳入的。
Getting to know the Priority enum:優(yōu)先級的枚舉值
這些枚舉總共有四種为牍,優(yōu)先級按照順序依次遞增:
- Priority.LOW
- Priority.NORMAL
- Priority.HIGH
- Priority.IMMEDIATE
在我們看例子之前嗅榕,你要明白這些優(yōu)先級并不是非常嚴格執(zhí)行的。 Glide會將它們作為一個參考吵聪,在請求的時候盡量滿足,并不保證所有的圖片都會按照順序來請求兼雄。
但是吟逝,如果你確定某些圖片非常重要,那么可以好好利用這個特性赦肋!
例子: Hero Element with Child Images
我們回到剛才提到的例子:你要實現(xiàn)這么一個詳情頁面:頂部有關鍵的圖片块攒,底部有一些小圖励稳。最佳的用戶體驗應該是:頂部的圖片最先加載出來。 因此囱井,我們給它設置Priority.HIGH
優(yōu)先級驹尼。理論上,這么做已經(jīng)足夠了庞呕。但是為了讓這例子更有趣新翎,我們讓底部的圖片都以.priority(Priority.LOW)
優(yōu)先級加載:
private void loadImageWithHighPriority() {
Glide
.with( context )
.load( UsageExampleListViewAdapter.eatFoodyImages[0] )
.priority( Priority.HIGH )
.into( imageViewHero );
}
private void loadImagesWithLowPriority() {
Glide
.with( context )
.load( UsageExampleListViewAdapter.eatFoodyImages[1] )
.priority( Priority.LOW )
.into( imageViewLowPrioLeft );
Glide
.with( context )
.load( UsageExampleListViewAdapter.eatFoodyImages[2] )
.priority( Priority.LOW )
.into( imageViewLowPrioRight );
}
如果你運行這個例子,你會發(fā)現(xiàn)幾乎每次都是頂部的圖先加載出來住练,盡管它比較大(那樣它需要更長時間來加載)地啰。
Outlook:展望
Glide提供了非常方便的方法來設置圖片的優(yōu)先級。這是一個快速讲逛、簡單提高一些用戶體驗的的方法亏吝。看看你的app和你的代碼盏混,是否能運用到你剛學到的技巧吧蔚鸥!
按優(yōu)先級請求通常來說非常有效,但不能解決所有的問題许赃。假設你要下載一張非常大的圖片止喷,如論你設置了什么優(yōu)先級,下載和處理都要花費一定的時間图焰。
下一周启盛,為了更好地提升用戶體驗,我們將介紹另一個Glide外的工具:thumbnails技羔!