1.簡(jiǎn)介
Glide is a fast and efficient open source media management and image loading framework for Android that wraps media decoding, memory and disk caching, and resource pooling into a simple and easy to use interface.
Glide是一款快速高效的Android開源媒體管理和圖像加載框架,它將媒體解碼,內(nèi)存和磁盤緩存以及資源池包裝成簡(jiǎn)單易用的界面。
中文參考文檔:https://muyangmin.github.io/glide-docs-cn/
2.依賴
權(quán)限聲明
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
implementation 'com.github.bumptech.glide:glide:4.8.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.8.0'
3.簡(jiǎn)單使用
多數(shù)情況下,使用Glide加載圖片非常簡(jiǎn)單,一行代碼足矣:
Glide.with(fragment)
.load(myUrl)
.into(imageView);
- 在 Application 模塊中的使用(支持更多功能)
在 Application 模塊中,可創(chuàng)建一個(gè)添加有 @GlideModule 注解,繼承自 AppGlideModule 的類。此類可生成出一個(gè)流式 API,內(nèi)聯(lián)了更多選項(xiàng)。
import com.bumptech.glide.annotation.GlideModule;
import com.bumptech.glide.module.AppGlideModule;
@GlideModule
public class MyAppGlideModule extends AppGlideModule {
}
生成的 API 默認(rèn)名為 GlideApp ,與 AppGlideModule 的子類包名相同。在 Application 模塊中將 Glide.with() 替換為 GlideApp.with()
GlideApp.with(this).load("http://goo.gl/gEgYUd").into(imageView);
GlideApp
.with(myFragment)
.load(url)
.centerCrop()
.placeholder(R.drawable.loading_spinner)
.into(myImageView);
4.緩存策略
- DiskCacheStrategy.NONE 不緩存文件
- DiskCacheStrategy.SOURCE 只緩存原圖
- DiskCacheStrategy.RESULT 只緩存最終加載的圖(默認(rèn)的緩存策略)
- DiskCacheStrategy.ALL 同時(shí)緩存原圖和結(jié)果圖
GlideApp.with(fragment)
.load(url)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(imageView);
5.緩存
GlideApp.with(fragment)
.load(url)
.onlyRetrieveFromCache(true) //僅從緩存加載圖片
.skipMemoryCache(true) //如果你想確保一個(gè)特定的請(qǐng)求跳過磁盤和/或內(nèi)存緩存
.into(imageView);
6.圓形圖片
RequestOptions mRequestOptions = RequestOptions.circleCropTransform()
.skipMemoryCache(true);//不做內(nèi)存緩存
GlideApp.with(this)
.load(imgUrl)
.centerCrop()
.apply(mRequestOptions)
.placeholder(R.drawable.ic_launcher_background)//加載中顯示的圖片
.error(R.drawable.ic_launcher_foreground)// 錯(cuò)誤后顯示的圖片
.into(mImg);
7.圓角圖片
//設(shè)置圖片圓角角度
RoundedCorners roundedCorners= new RoundedCorners(6);
//通過RequestOptions擴(kuò)展功能,override:采樣率,因?yàn)镮mageView就這么大,可以壓縮圖片,降低內(nèi)存消耗
RequestOptions options=RequestOptions.bitmapTransform(roundedCorners).override(300, 300);
GlideApp.with(context)
.load(files.getFilePath())
.apply(options)
.into(img);
Glide 4.0以上支持圓角和圓形圖片,3.0只能通過外庫(kù)支持。