Glide相关属性
环境配置
添加依赖
compile ‘com.github.bumptech.glide:glide:3.7.0’
添加网络权限
<uses-permission android:name="android.permission.INTERNET"/>
先上一张网络图片链接
今天就拿这张图片搞事情
首先获取到view对象
ImageView iv = (ImageView) findViewById(R.id.ImageView);
Glide 使用了流式接口的调用形式 Glide是核心实现类
//图片的异步加载
Glide.with(context).load(Url).into(iv);
//设置加载图片的尺寸
Glide.with(this).load(imageUrl).override(800, 800).into(iv);
//设置加载中以及加载失败的占位图
Glide.
with(this)
.load(imageUrl)
.placeholder(R.mipmap.ic_launcher)
.error(R.mipmap.ic_launcher)
.into(iv);
//设置加载动画
Glide.with(this).load(imageUrl).animate(R.anim.item_alpha_in).into(iv);
//多样式媒体加载
Glide
.with(context)
.load(imageUrl);
.thumbnail(0.1f);//设置缩略图支持:先加载缩略图 然后在加载全图
//传了一个 0.1f 作为参数,Glide 将会显示原始图像的10%的大小。
//如果原始图像有 1000x1000 像素,那么缩略图将会有 100x100 像素。
.asBitmap()//显示gif静态图片
.asGif();//显示gif动态图片
.into(imageView);
//Glide 缓存
Glide.with(this).load(imageUrl).diskCacheStrategy(DiskCacheStrategy.ALL).into(imageView);
// 缓存参数说明
// DiskCacheStrategy.NONE:不缓存任何图片,即禁用磁盘缓存
// DiskCacheStrategy.ALL :缓存原始图片 & 转换后的图片(默认)
// DiskCacheStrategy.SOURCE:只缓存原始图片(原来的全分辨率的图像,即不缓存转换后的图片)
// DiskCacheStrategy.RESULT:只缓存转换后的图片(即最终的图像:降低分辨率后 / 或者转换后 ,不缓存原始图片
//设置跳过内存缓存
Glide
.with(this)
.load(imageUrl)
.skipMemoryCache(true)
.into(imageView);
//设置跳过内存缓存
//这意味着 Glide 将不会把这张图片放到内存缓存中去
//这里需要明白的是,这只是会影响内存缓存!Glide 将会仍然利用磁盘缓存来避免重复的网络请求。
//清理缓存
Glide.get(this).clearDiskCache();//清理磁盘缓存 需要在子线程中执行
Glide.get(this).clearMemory();//清理内存缓存 可以在UI主线程中进行
//Glid
e 生命周期集成
.with(Context context)// 绑定Context
.with(Activity activity);// 绑定Activity
.with(FragmentActivity activity);// 绑定FragmentActivity
.with(Fragment fragment);// 绑定Fragment
1:传入的context类型影响到Glide加载图片的优化程度:
2:Glide可以监视Activity的生命周期,在Activity销毁的时候自动取消等待中的请求。但是如果你使用Application context,你就失去了这种优化效果。
//Glide设置动态转换
Glide.with(this).load(imageUrl).centerCrop().into(imageView);
//设置下载优先级
Glide.with(this).load(imageUrl).priority(Priority.NORMAL).into(imageView);
//加载成圆形图
Glide.with(this).load(url).bitmapTransform(new CropCircleTransformation(this)).crossFade(1000).into(iv);
//毛玻璃 高斯模糊效果
Glide.with(this).load(url).bitmapTransform(new BlurTransformation(this, 25)).crossFade(1000).into(iv);
//复合变换成圆图 +毛玻璃(高斯模糊
Glide.with(this).load(url).bitmapTransform(new BlurTransformation(this, 25), new CropCircleTransformation(this)).crossFade(1000).into(iv);
//原图处理成圆角,如果是四周都是圆角则是RoundedCornersTransformation.CornerType.ALL
Glide.with(this).load(url).bitmapTransform(new RoundedCornersTransformation(this, 30, 0, RoundedCornersTransformation.CornerType.BOTTOM)).crossFade(1000).into(iv);
Glide 优点
多样化媒体加载
Glide 不仅是一个图片缓存,它支持 Gif、WebP、缩略图。甚至是 Video
生命周期集成
通过设置绑定生命周期,我们可以更加高效的使用Glide提供的方式进行绑定,
这样可以更好的让加载图片的请求的生命周期动态管理起来
高效的缓存策略
A. 支持Memory和Disk图片缓存
B. Picasso 只会缓存原始尺寸的图片,而 Glide 缓存的是多种规格,
也就意味着 Glide 会根据你 ImageView 的大小来缓存相应大小的图片尺寸
比如你 ImageView 大小是200200,原图是 400400 ,
而使用 Glide 就会缓存 200200 规格的图,
而 Picasso 只会缓存 400400 规格的。
这个改进就会导致 Glide 比 Picasso 加载的速度要快,
毕竟少了每次裁剪重新渲染的过程,非常灵活 & 加载速度快
c. 内存开销小
默认的 Bitmap 格式是 RGB_565 格式,而 Picasso 默认的是 ARGB_8888 格式,这个内存开销要小一半。