一、Glide的简介
Glide是一个快速和有效的开源媒体管理和图像加载Android框架包装媒体解码,内存和磁盘缓存,和资源汇集成一个简单和易于使用的界面。
二、优点
-
可配置度高,自适应程度高
-
支持常见图片格式,jpg、png、gif、webp
-
支持多种数据源,网络、资源、assets 、File、Uri等
-
高效缓存策略支持内存和硬盘缓存
-
生命周期集成根据Activity/Fragment生命周期自动管理请求
-
高效处理Bitmap
三、使用
添加依赖:
1.初始化
Glide支持Activity和Fragment的绑定
Glide.with(Context context);
Glide.with(Activity activity);
Glide.with(FragmentActivity activity);
Glide.with(Fragment fragment);
将Activity/Fragment作为with()参数的好处是,图片加载会和Activity/Fragment的生命周期保持一致
2.加载资源(网络资源、assets资源、Recources资源、File资源、Uri资源、字节数组)
Glide.with(content).load(String).into(imageView);
Glide.with(content).load(Uri).into(imageView);
Glide.with(content).load(File).into(imageView);
Glide.with(content).load(ResourceId).into(imageView);
Glide.with(content).load(byte[]).into(imageView);
3.加载gif图片(静态的gif和动态的gif)
Glide.with(context).load(path)
//静态gif图片
.asBitmap()
.into(imageView);
4.加载中的图片
Glide.with(context).load(path)
//加载过程中的图片
.placeholder(R.mipmap.placeholder)
.into(imageView);
5.加载失败的图片
Glide.with(context).load(path)
//加载错误的图片
.error(R.mipmap.error)
.into(imageView);
6.加载缩略图
Glide.with(context).load(path)
//先加载缩略图,再加载全图
.thumbnail(0.1f)
.into(imageView);
7.加载动画
Glide.with(context).load(path)
//无动画
.dontAnimate()
.into(imageView);
Glide.with(context).load(path)
//淡入淡出
.crossFade()
.into(imageView);
Glide.with(context).load(path)
//自定义动画
.animate(R.anim.image)
.into(imageView);
8.设置监听回调
Glide.with(context).load(path)
//回掉监听
.listener(RequestListener listener)
.into(imageView);
9.设置加载尺寸
Glide.with(context).load(path)
//指定尺寸
.override(200,200)
.into(imageView);
Glide.with(context).load(path)
//拉伸截取中间
.centerCrop()
.into(imageView);
Glide.with(context).load(path)
//等比拉伸填满
.fitCenter()
.into(imageView);
10.处理图片效果(裁剪、圆角、高斯模糊)
再次添加依赖:
compile 'jp.wasabeef:glide-transformations:2.0.1'
Glide.with(context).load(path)
//高斯模糊radius 取值(1-25)
.bitmapTransform(new BlurTransformation(context,1))
.into(imageView);
11.设置缓存
Glide.with(context).load(path)
//设置跳过内存缓存
.skipMemoryCache(true)
.into(imageView);
Glide.with(context).load(path)
//设置缓存
//DiskCacheStrategy.NONE 不做任何磁盘缓存
//DiskCacheStrategy.ALL 缓存所有的资源
//DiskCacheStrategy.SOURCE 缓存源资源
//DiskCacheStrategy.RESULT 缓存转化后的资源
.diskCacheStrategy(DiskCacheStrategy.RESULT)
.into(imageView);