//這裏用的是Android Studio3.0
implementation 'com.github.bumptech.glide:glide:4.3.1'
annotationProcessor('com.github.bumptech.glide:compiler:4.3.1')
implementation 'com.github.bumptech.glide:okhttp3-integration:4.3.1'
複製代碼
@GlideModule
public final class CustomGlideModule extends AppGlideModule {
@Override
public void applyOptions(Context context, GlideBuilder builder) {
// 設置緩存大小爲20mb
int memoryCacheSizeBytes = 1024 * 1024 * 20; // 20mb
// 設置內存緩存大小
builder.setMemoryCache(new LruResourceCache(memoryCacheSizeBytes));
// 根據SD卡是否可用選擇是在內部緩存仍是SD卡緩存
if(SDCardUtils.isSDCardEnable()){
builder.setDiskCache(new ExternalPreferredCacheDiskCacheFactory(context, "HYManagerImages", memoryCacheSizeBytes));
}else {
builder.setDiskCache(new InternalCacheDiskCacheFactory(context, "HYManagerImages", memoryCacheSizeBytes));
}
}
// 針對V4用戶能夠提高速度
@Override
public boolean isManifestParsingEnabled() {
return false;
}
}
複製代碼
GlideApp.with(context)
.load(url)
.skipMemoryCache(true)//默認爲false
.dontAnimate()
.centerCrop()
.into(imageView);
複製代碼
GlideApp.with(context)
.load(url)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.dontAnimate()
.centerCrop()
.into(imageView);
/*默認的策略是DiskCacheStrategy.AUTOMATIC
DiskCacheStrategy有五個常量:
DiskCacheStrategy.ALL 使用DATA和RESOURCE緩存遠程數據,僅使用RESOURCE來緩存本地數據。
DiskCacheStrategy.NONE 不使用磁盤緩存
DiskCacheStrategy.DATA 在資源解碼前就將原始數據寫入磁盤緩存
DiskCacheStrategy.RESOURCE 在資源解碼後將數據寫入磁盤緩存,即通過縮放等轉換後的圖片資源。
DiskCacheStrategy.AUTOMATIC 根據原始圖片數據和資源編碼策略來自動選擇磁盤緩存策略。*/
複製代碼
//磁盤緩存清理(子線程)
GlideApp.get(context).clearDiskCache();
//內存緩存清理(主線程)
GlideApp.get(context).clearMemory();
複製代碼
public class GlideUtils {
public static void initImageWithFileCache(Context context, String url, ImageView imageView){
GlideApp.with(context)
.load(url)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.dontAnimate()
.centerCrop()
.into(imageView);
}
public static void initImageNoCache(Context context, String url, ImageView imageView){
GlideApp.with(context)
.load(url)
.skipMemoryCache(true)
.dontAnimate()
.centerCrop()
.into(imageView);
}
public static void clearMemoryCache(Context context){
GlideApp.get(context).clearMemory();
}
public static void clearFileCache(Context context){
new Thread(new Runnable() {
@Override
public void run() {
GlideApp.get(context).clearDiskCache();
}
}).start();
}
}
複製代碼