//這裏用的是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(); } }