import com.bumptech.glide.load.model.GlideUrl;
import com.bumptech.glide.load.model.ModelLoader;
import com.bumptech.glide.load.model.ModelLoaderFactory;
import java.io.InputStream;
import okhttp3.OkHttpClient;
/**
- 仿照HttpUrlGlideUrlLoader
*/
public class OkHttpGlideUrlLoader implements ModelLoader<GlideUrl, InputStream> {
private OkHttpClient okHttpClient;
public static class Factory implements ModelLoaderFactory<GlideUrl, InputStream> {
private OkHttpClient client;
public Factory() {
}
public Factory(OkHttpClient client) {
this.client = client;
}
private synchronized OkHttpClient getOkHttpClient() {
if (client == null) {
client = new OkHttpClient();
}
return client;
}
@Override
public ModelLoader<GlideUrl, InputStream> build(Context context, GenericLoaderFactory factories) {
return new OkHttpGlideUrlLoader(getOkHttpClient());
}
@Override
public void teardown() {
}
}
public OkHttpGlideUrlLoader(OkHttpClient client) {
this.okHttpClient = client;
}
@Override
public DataFetcher getResourceFetcher(GlideUrl model, int width, int height) {
return new OkHttpFetcher(okHttpClient, model);
}
}
自定义MyGlideModule注册OkHttpGlideUrlLoader
package tsou.cn.glidetest.Glide;
import android.content.Context;
import com.bumptech.glide.Glide;
import com.bumptech.glide.GlideBuilder;
import com.bumptech.glide.load.DecodeFormat;
import com.bumptech.glide.load.engine.cache.ExternalCacheDiskCacheFactory;
import com.bumptech.glide.load.model.GlideUrl;
import com.bumptech.glide.module.GlideModule;
import java.io.InputStream;
import okhttp3.OkHttpClient;
import tsou.cn.glidetest.Glide.okhttp.OkHttpGlideUrlLoader;
import tsou.cn.glidetest.Glide.okhttp.ProgressInterceptor;
/**
-
自定义模块
-
-
目前Glide还无法识别我们自定义的MyGlideModule,
-
如果想要让它生效,
-
还得在AndroidManifest.xml文件当中加入如下配置才行
*/
public class MyGlideModule implements GlideModule {
/**
-
setMemoryCache()
-
用于配置Glide的内存缓存策略,默认配置是LruResourceCache。
-
-
setBitmapPool()
-
用于配置Glide的Bitmap缓存池,默认配置是LruBitmapPool。
-
-
setDiskCache()
-
用于配置Glide的硬盘缓存策略,默认配置是InternalCacheDiskCacheFactory。
-
-
setDiskCacheService()
-
用于配置Glide读取缓存中图片的异步执行器,默认配置是FifoPriorityThreadPoolExecutor,
-
也就是先入先出原则。
-
-
setResizeService()
-
用于配置Glide读取非缓存中图片的异步执行器,默认配置也是FifoPriorityThreadPoolExecutor。
-
-
setDecodeFormat()
-
用于配置Glide加载图片的解码模式,默认配置是RGB_565。
*/
public static final int DISK_CACHE_SIZE = 500 * 1024 * 1024;
public static final String DISK_CACHE_NAME = “huangxiaoguo”;
@Override
public void applyOptions(Context context, GlideBuilder builder) {
/**
将所有Glide加载的图片缓存到SD卡上,
默认硬盘缓存大小都是250M,这里改为500
- */
//builder.setDiskCache(new ExternalCacheDiskCacheFactory(context));
/**
ExternalCacheDiskCacheFactory的默认缓存路径
是在sdcard/Android/data/包名/cache/image_manager_d