簡介
作為Glide是谷歌推薦的圖片加載庫,Glide有著 支持video,Gif,SVG格式,同時有著很好的生命周期管理,支持Volley,OkHttp,更好的內存管理策略等優點。
重用Listview的使用自動處理請求的取消。
正確加載圖片到對應的Imageview。
自動減少圖片尺寸,可以省時間,省內存。
Glide自己會做異步處理,所以加載的方法卸載UI 線程中。
Glide和Picasso非常相似,Glide加載圖片的方法和Picasso如出一轍。各自有各自的優點,使用時候主要是看需求。想知道他們有哪些區別可以看Google推薦的圖片加載庫Glide介紹
Glide使用總結
1.加載網絡圖片
imageView = (ImageView) findViewById( R.id.image );
String url = "http://img5.jpg" ;
Glide.with( this ).load( url ).into( imageView ) ;
. Glide.with() 作為生命周期控制,可以有一下參數:
with(Context context). 使用Application上下文,Glide請求將不受Activity/Fragment生命周期控制。
with(Activity activity). 使用Activity作為上下文,Glide的請求會受到Activity生命周期控制。
with(FragmentActivity activity).Glide的請求會受到FragmentActivity生命周期控制。
with(android.app.Fragment fragment).Glide的請求會受到Fragment 生命周期控制。
with(android.support.v4.app.Fragment fragment).Glide的請求會受到Fragment生命周期控制。
load可以接受一下參數:
into很好理解 就是放進指定的ImageView中去。
2.優先級加載設置 priority()
Glide.with( this).load( url2).priority(Priority.LOW ).into( imageView2 ) ;
Glide.with( this).load( url3).priority(Priority.HIGH ).into( imageView3 ) ;
有這幾種優先級,Priority.LOW、Priority. NORMAL、 Priority.HIGH、Priority.IMMEDIATE
但是這里的優先級只是在加載的過程中起一個參考作用, 并不決定真正的加載順序。因為還受網絡情況的影響。
3.縮略圖的支持
1) 先加載原圖的十分之一大小的縮略圖,然后再加載原圖
Glide.with( thi ).load( url ).thumbnail(0.1f).into( imageview ) ;
2) 用本地的圖片作為縮略圖,然后再加載原圖
DrawableRequestBuilder<Integer> thumbnailRequest = Glide
.with(context)
.load(R.drawable.image_example);
Glide.with(context)
.load(url)
.thumbnail(thumbnailRequest)
.into(view);
4.加載GIF圖
Glide.with( this ).load( url ).into( imageView1 ) ;
Glide.with( this ).load( url ).asGif().into( imageView2 ) ;
設置了asGif()后傳入的圖片必須是Gif不然會報錯,如果吧asGif換成asBitmap可則會顯示一張靜態圖。
5.加載本地視頻,相當于一張縮略圖
imageView = (ImageView) findViewById( R.id.image_video );
String files = Environment.getExternalStorageDirectory().getAbsolutePath() + "/yueyu.mkv" ;
Glide.with( this ).load( files ).into( imageView ) ;
1) 只能加載本地視頻,網絡視頻無法加載。
2) 加載本地視頻顯示只是視頻的第一幀圖像,相當于一張縮略圖。不能播放視頻。
6.加載動畫
.crossFade() 淡入淡出 , 也是默認動畫
.crossFade( int duration ) 定義淡入淡出的時間間隔
.dontAnimate() 不使用任何動畫
7.Glide緩存策略
Glide默認開啟磁盤緩存和內存緩存,當然也可以對單張圖片進行設置特定的緩存策略。
設置圖片不加入到內存緩存
.skipMemoryCache( true )
.diskCacheStrategy( DiskCacheStrategy.NONE )
Glide支持多種磁盤緩存策略:
DiskCacheStrategy.NONE :不緩存圖片
DiskCacheStrategy.SOURCE :緩存圖片源文件
DiskCacheStrategy.RESULT:緩存修改過的圖片
DiskCacheStrategy.ALL:緩存所有的圖片,默認
8.圖片的縮放
1)使用centerCrop是利用圖片圖填充ImageView設置的大小,如果ImageView的Height是match_parent則圖片就會被拉伸填充
Glide.with(context).load(imageUrl).centerCrop().into(imageView);
2)使用fitCenter即縮放圖像讓圖像都測量出來等于或小于 ImageView 的邊界范圍,該圖像將會完全顯示,但可能不會填滿整個ImageView。
Glide.with(context).load(imageUrl).fitCenter().into(imageView);
3)使用override(horizontalSize, verticalSize)
與Picasso相比,Glide在內存消耗上更高效、更智能。Glide會根據所剩的內存和ImageView的大小自動限制圖片的尺寸。Picasso也有相似的特性,但是它需要手動調用.fit(),對于Glide而言,如果某些圖片不應該被自動調整,那么執行override(horizontalSize, verticalSize),那么這個圖片會在顯示到ImageView之前被調整為需要的尺寸。
Glide.with(context).load(imageUrl).override(600, 200) .into(imageView);
//按照這個像素,調整圖片的尺寸,不保持長寬比例
8.占位圖placeHolder()方法
Glide.with(context).load(imageUrl)
.placeholder(R.mipmap.ic_launcher).into(imageView);
9.當加載圖片失敗時,通過該方法設置加載失敗后的圖片顯示
Glide.with(context).load(imageUrl).error(R.mipmap.ic_launcher).into(imageView);
10.Glide.with(context).resumeRequests()和 Glide.with(context).pauseRequests()
當列表在滑動的時候,調用pauseRequests()取消請求,滑動停止時,調用resumeRequests()恢復請求。這樣是不是會好些呢?
11.Glide.clear()
當你想清除掉所有的圖片加載請求時,這個方法可以幫助到你。
12.設置CircleImageVIew可以使用這個ImageView庫
參考文章 :Android圖片加載框架Glide用法里面有加載圓角圖片和圓形圖片的方法。