同時(shí)也發(fā)現(xiàn)了更加不錯(cuò)的圖片加載庫毛甲,也就是Glide,用起來很方便并且內(nèi)存占用量還很令人滿意腔剂,所以決定大刀闊斧的將之前的加載庫換成Glide。
但是在換用戶頭像相關(guān)模塊的時(shí)候發(fā)現(xiàn)問題了,就是加載網(wǎng)絡(luò)圖片時(shí)第一次加載死活加載不出來搪花,頭像控件使用的是CircleImageView鹏倘,最后換成ImageView試驗(yàn)薯嗤,發(fā)現(xiàn)沒有問題,這就找出問題所在了纤泵,就是CircleImageView這個(gè)控件和Glide之間的關(guān)系了骆姐。
查找相關(guān)資料后镜粤,找出問題所在以及解決方案如下:
1、使用Glide默認(rèn)沒有圓角轉(zhuǎn)換的功能玻褪,需要使用自定義Transformation肉渴,但無法實(shí)現(xiàn)placeholder圖片的圓角轉(zhuǎn)換,但是圓角圖片带射,使用CircleImageView同规,雖然CircleImageView繼承ImageView,不能使用scaleType參數(shù)窟社,否則報(bào)InflateException券勺。CircleImageView 源碼主動(dòng)拋出的異常。
2灿里、問題出現(xiàn)的原因就是使用自定義ImageView关炼,如CircleImageView,通過Glide加載網(wǎng)絡(luò)圖片匣吊,且設(shè)置了占位符儒拂,如placeholder或error,則第一次不顯示網(wǎng)絡(luò)圖片
3缀去、解決辦法有兩種侣灶,一種是不使用占位符,另外一種則是不使用默認(rèn)動(dòng)畫缕碎。
Glide.with(getContext())
.load(imgUrl)
.dontAnimate()//防止設(shè)置placeholder導(dǎo)致第一次不顯示網(wǎng)絡(luò)圖片,只顯示默認(rèn)圖片的問題
.placeholder(R.drawable.icon_default)
.into(mImageView);