說到Glide的使用 就得說 Fresco纺座,ImageLoader 和Picasso;
套用老話溉潭,ImageLoader 曾經(jīng)的王者净响;現(xiàn)在應該應用很多使用的這個圖片框架的產(chǎn)品。
Fresco 喳瓣,faceBook出品馋贤,必是精品,說真的Fresco真是挺好得,就是代碼體積大畏陕,代碼入侵性比較強配乓,在選擇Glide和Fresco的時候,我一開始是很傾向Fresco的惠毁,但是當時的項目并不是從頭開始犹芹,我嘗試的改了部分,唉!真是受不了仁讨,然后選擇了Glide羽莺。
Picasso 沒用使用過,看了使用方法洞豁,和Glide大體相似盐固,功能不如Glide強大,體積比Glide小丈挟。
輪到今天的主角了Glide刁卜,先說說用法吧
Glide.with(context).load(url).priority(Priority.LOW)。placeholder(defaultImg).error(defaultImg).into(imageView);
這就是Glide的用法 load()的參數(shù)曙咽,就是圖片地址了蛔趴,網(wǎng)絡圖片,本地,Assets等等都可以
加載SD卡的圖片 ?load("file://"+filePath)
加載Assets ?load("file:///android_asset/"+fileName)
加載項目資源本地圖片 load(ResourceId)
要是你在加載的是一張Gif動畫 ?關鍵字asGif()
Glide.with(context).load(url).priority(Priority.LOW).asGif().placeholder(defaultImg).error(defaultImg).into(imageView);
placeholder() 的意思是正在加載的占位圖
error()的意思加載出錯的占位圖
priority(Priority.LOW) ?是圖片質量優(yōu)先級 ?有Low例朱,NORMAL孝情,HIGH鱼蝉,IMMEDIATE
大致的用法就是這樣
說說遇到的問題吧 (Glide 均為3.7的版本)
1.java.lang.RuntimeException,Unable to destroy activity
大致的意思就是箫荡,不能在已經(jīng)銷毀的Activity中使用 就是with(context) 中的context,這就很煩了魁亦,百度一下就可以寫成context.getApplicationContext(),這樣就貫穿整個APP的生命周期不會崩潰了羔挡。
2.圖片不顯示洁奈,就是上述的的方法造成的context.getApplicationContext()加載的時候有時候會造成圖片不顯示 (我的Glide版本3.7),這個錯誤為解決绞灼,有解決的大神利术,請告知,這種錯誤低矮,雖然不會造成崩潰印叁,但是不顯示圖片也不好(有時候出現(xiàn),有時候有好了商佛,復現(xiàn)幾率大)喉钢,建議在哪些圖片使用多的地方姆打,維護好自己context,不要用良姆,getApplicationContext();部分可以用。
3.個人認為Glide對那個圓形幔戏,圓角的圖片支持不好玛追,就是那個bitmapTransform的的編寫,增加寫了個圓角闲延,顯示看出來明顯感覺有一個正方形的框框(圓形也是如此)痊剖,而且在RecycleView快速滑動時,圓角竟然會變沒了垒玲,變成普通ImageView的樣子陆馁。這就很尷尬,(沒有解決)
4.Glide 對自定義ImageView 支持不太好合愈,比如:CircleImageView,圓形圖片placeholder(defaultImg)叮贩,就會無效。尷尬佛析!
5.就是當遇到列表滑動時(如:RecycleView益老,Listview,Scrollview等等)寸莫,需要自己實現(xiàn)滑動停止加載(Glide.with(context).pauseRequests();)捺萌,停止滑動時 恢復加載(Glide.with(context).resumeRequests()),這就很煩人了,但遇到一些嵌套布局膘茎,比如?Scrollview 嵌套RecycleView 桃纯,有可能RecycleView的那個滑動機制就不能使用了酷誓,但是SCrollview的滑動貌似只能監(jiān)聽滑動,不能監(jiān)聽停止态坦。今天就寫到這了