Glide允許用戶指定三種不同的占位符以是適應(yīng)不同的場(chǎng)景:
占位符是在請(qǐng)求正在進(jìn)行時(shí)顯示的圖像。當(dāng)請(qǐng)求成功完成時(shí),占位符將會(huì)被替換為請(qǐng)求的資源。如果從內(nèi)存中加載所請(qǐng)求的資源,占位符可能永遠(yuǎn)不會(huì)顯示。如果請(qǐng)求失敗并且未設(shè)置錯(cuò)誤圖像,則占位符會(huì)一直顯示。同樣地,如果請(qǐng)求的URL/Model為空,錯(cuò)誤圖像跟回調(diào)圖像都沒(méi)有設(shè)置,占位符也會(huì)一直顯示。
使用生成的API:
GlideApp.with(fragment)
.load(url)
.placeholder(R.drawable.placeholder)
.into(view);
或者:
GlideApp.with(fragment)
.load(url)
.placeholder(new ColorDrawable(Color.BLACK))
.into(view);
當(dāng)請(qǐng)求最終失敗的時(shí),會(huì)顯示錯(cuò)誤圖像。當(dāng)請(qǐng)求的URL/Model為空,并且沒(méi)有設(shè)置回調(diào)的時(shí)候,也會(huì)顯示錯(cuò)誤圖像。
使用生成的API:
GlideApp.with(fragment)
.load(url)
.error(R.drawable.error)
.into(view);
或者:
GlideApp.with(fragment)
.load(url)
.error(new ColorDrawable(Color.RED))
.into(view);
當(dāng)一個(gè)請(qǐng)求的URL/Model為空時(shí),會(huì)顯示回調(diào)圖像。回調(diào)圖像的主要目的是允許用戶表明參數(shù)是否允許為空。例如,用戶信息網(wǎng)站為空表明用戶沒(méi)有設(shè)置配置文件照片。然而,空也可以表明元數(shù)據(jù)是無(wú)效的或者無(wú)法獲取。默認(rèn)情況下,Glide認(rèn)為URL/Model為空是一種錯(cuò)誤,用戶如果希望自己處理空,應(yīng)該設(shè)置回調(diào)圖像。
使用生成的API:
GlideApp.with(fragment)
.load(url)
.fallback(R.drawable.fallback)
.into(view);
或者:
GlideApp.with(fragment)
.load(url)
.fallback(new ColorDrawable(Color.GREY))
.into(view);
占位符的顯示流程可以參照下圖: http://wiki.jikexueyuan.com/project/Glide/images/placeholder_flow.png" alt="" />
答:不是。占位符的加載是在Android的主線程中處理的。我們希望占位符盡可能小并且容易被系統(tǒng)緩存。
答:不行。轉(zhuǎn)換只適用于請(qǐng)求資源,不能作為占位符。比如,您加載一個(gè)圓形的圖像,您可能希望使用圓形的占位符資源。您可以考慮自定義View來(lái)截取占位符作為您的轉(zhuǎn)換。
答:通??梢?,任何非靜態(tài)的圖像(如BitmapDrawable)是可以在多個(gè)View中顯示的。然而有狀態(tài)的圖像在多個(gè)View中同時(shí)顯示是不安全的,因?yàn)閂iew的狀態(tài)會(huì)被改變。對(duì)于有狀態(tài)的圖像,請(qǐng)使用資源id,或者使用newDrawable()傳遞給每個(gè)請(qǐng)求一個(gè)新的副本。