Glide 导入和GlideModule相关参数说明
Glide依赖
implementation 'com.github.bumptech.glide:glide:4.10.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.10.0'
转换AndroidX时Glide遇到的问题解决
转换AndroidX时,Glide编译报错:
错误: 程序包android.support.annotation不存在
错误: 找不到符号
符号: 类 NonNull
位置: 类 GlideOptions
解决方式:
//解决Glide找不到Android声明库问题
//图片缓存
annotationProcessor 'androidx.annotation:annotation:1.1.0'
4.10 GlideModule 配置
@GlideModule
public final class AGlideModule extends com.bumptech.glide.module.AppGlideModule {
private static final String TAG = AGlideModule.class.getSimpleName();
@Override
public void applyOptions(@NonNull Context context, @NonNull GlideBuilder builder) {
MemorySizeCalculator calculator = new MemorySizeCalculator.Builder(context)
.setMemoryCacheScreens(2)
.build();
//recommended memory cache size for the device
Log.d(TAG,"CacheSize==="+calculator.getMemoryCacheSize());
int cacheSize = calculator.getMemoryCacheSize();
builder.setMemoryCache(new LruResourceCache(cacheSize)); //指定内存缓存大小
// 指定位置在packageName/cache/glide_cache,大小为cacheSize的磁盘缓存
builder.setDiskCache(new InternalCacheDiskCacheFactory(context, "glide_cache",cacheSize));
//设置BitmapPool缓存内存大小
builder.setBitmapPool(new LruBitmapPool(cacheSize));
//设置解码格式RGB_565,该格式解码的Bitmap不支持透明度
builder.setDefaultRequestOptions(
new RequestOptions()
.format(DecodeFormat.PREFER_RGB_565).disallowHardwareConfig()
);
}
@Override
public void registerComponents(@NonNull Context context, @NonNull Glide glide, @NonNull Registry registry) {
//设置使用okhttp加载
OkHttpClient client = new OkHttpClient.Builder().connectTimeout(10, TimeUnit.MINUTES).readTimeout(10, TimeUnit.MINUTES).retryOnConnectionFailure(true).build();
registry.replace(GlideUrl.class, InputStream.class, new OkHttpUrlLoader.Factory(client));
}
// Disable manifest parsing to avoid adding similar modules twice.
//禁用清单解析,以避免重复添加类似的模块
@Override
public boolean isManifestParsingEnabled() {
return false;
}
}
较早的版本,已放弃
public class MyGlideModule implements GlideModule {
@Override
public void applyOptions(Context context, GlideBuilder builder) {
/* // 指定位置在packageName/cache/glide_cache,大小为MAX_CACHE_DISK_SIZE的磁盘缓存
builder.setDiskCache(new InternalCacheDiskCacheFactory(context, "glide_cache", ConfigConstants.MAX_CACHE_DISK_SIZE));
//指定内存缓存大小
builder.setMemoryCache(new LruResourceCache(ConfigConstants.MAX_CACHE_MEMORY_SIZE));
//全部的内存缓存用来作为图片缓存
builder.setBitmapPool(new LruBitmapPool(ConfigConstants.MAX_CACHE_MEMORY_SIZE));
builder.setDecodeFormat(DecodeFormat.PREFER_ARGB_8888);//和Picasso配置一样*/
// 指定位置在packageName/cache/glide_cache,大小为MAX_CACHE_DISK_SIZE的磁盘缓存
builder.setDiskCache(new InternalCacheDiskCacheFactory(context, "glide_cache", ConfigConstants.MAX_CACHE_DISK_SIZE));
//指定内存缓存大小
builder.setMemoryCache(new LruResourceCache(ConfigConstants.MAX_CACHE_MEMORY_SIZE));
//设置BitmapPool缓存内存大小
builder.setBitmapPool(new LruBitmapPool(ConfigConstants.MAX_CACHE_MEMORY_SIZE));
builder.setDecodeFormat(DecodeFormat.PREFER_RGB_565);
}
@Override
public void registerComponents(Context context, Glide glide) {
OkHttpClient.Builder client = new OkHttpClient.Builder()
.connectTimeout(60, TimeUnit.SECONDS)
.readTimeout(60, TimeUnit.SECONDS)
.writeTimeout(45, TimeUnit.SECONDS);
OkHttpUrlLoader.Factory factory = new OkHttpUrlLoader.Factory(client.build());
glide.register(GlideUrl.class, InputStream.class, factory);
// glide.register(GlideUrl.class, InputStream.class, new HttpUrlGlideUrlLoader.Factory());
}
}