Glide用法类似于Picasso,点用内存比Picasso少,加载速度更快(因为可以缓存压缩后的尺寸,读取时直接获取对应尺寸的缓存,无需压缩过程),可以设置缓存全尺寸和各种比例的尺寸。
使用:
1.在app的build.gradle加入依赖:
dependencies {
...
compile 'com.squareup.okio:okio:1.11.0'
compile 'com.squareup.okhttp3:okhttp:3.5.0'
compile 'com.github.bumptech.glide:glide:3.7.0'
compile 'com.github.bumptech.glide:okhttp3-integration:1.4.0@aar'
}
2.ImageLoadUtil类,调用了Glide中的api加载图片并显示到ImageView上:
public class ImageLoadUtil {
/**
* 图片加载并显示到ImageView上
*/
public static void showImage(Activity activity, String url, ImageView iv) {
Glide
.with(activity) //传入Activity(还可传入Fragment、Context),内部会根据生命周期进行相应的控制与销毁
.load(url) //传入图片url或本地路径
.placeholder(R.mipmap.user_header_default) //加载成功之前的默认图片
.error(R.mipmap.user_header_default) //加载失败显示的图片
.diskCacheStrategy(DiskCacheStrategy.ALL) //设置可以缓存全尺寸和各压缩后的尺寸
// .override(200, 200) //Bitmap压缩宽高
// .centerCrop()
.crossFade() //设置淡入淡出动画,可以使用.animate(R.anim.动画文件)自定义动画效果
.into(iv); //传入ImageView
}
}
3.配置使用Okhttp请求框架,在AndroidManifest.xml中manifest标签中加入:
<meta-dataandroid:name="com.bumptech.glide.integration.okhttp.OkHttpGlideModule"
android:value="GlideModule" />
4.配置本地缓存、内存缓存、图片编码格式:
(1)自定义一个GlideModule实现子类:
public class GlideModuleConfig implements GlideModule {
@Override
public void applyOptions(Context context, GlideBuilder builder) {
builder.setDiskCache(new InternalCacheDiskCacheFactory(context, "glideCache", Contants.DISK_CACHE_SIZE)); //设置本地缓存路径和缓存最大值
builder.setMemoryCache(new LruResourceCache(Contants.MEMORY_CACHE_SIZE)); //设置内存缓存最大值
builder.setBitmapPool(new LruBitmapPool(Contants.MEMORY_CACHE_SIZE)); //设置Bitmap内存占用最大值
builder.setDecodeFormat(DecodeFormat.PREFER_ARGB_8888); //设置图片编码格式
}
@Override
public void registerComponents(Context context, Glide glide) {
}
}
(2)配置GlideModule实现子类,在AndroidManifest.xml中manifest标签中加入:
<meta-dataandroid:name="com.g.im.utils.GlideModuleConfig"
android:value="GlideModule" />