本文共 2852 字,大约阅读时间需要 9 分钟。
//这里用的是Android Studio3.0implementation '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'
@GlideModulepublic 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(); }}
转载地址:http://xhtax.baihongyu.com/