Glide 4 基本用法
Glide,Picasso,Fresco对比:
Fresco:
1.Facebook最新推出的用于android的图片加载框架;
2.特点:
1):两个内存缓存加上本地缓存构成三级缓存;
2):渐进式呈现图片;
3):支持加载Gif和WebP
优点:内存自动回收,图片不可见时,会及时自动释放所占用的内存,尽可能的避免OOM;三级缓存,提升加载速度,节省内存占用空间;支持动画加载,高斯模糊,独特的渐进式加载;
缺点:框架教大,影响Apk体积大小(3M左右)
Picasso
1.Picasso是Square公司出的一个图片加载框架;
2.特点:
1):Picasso是全尺寸缓存图片;
2):Picasso默认的加载图片的格式为ARGB_888;
3):高斯模糊,添加圆角
4):加载过程监听;
5):自动添加磁盘和内存二级缓存;
6):支持多种数据源加载
7):不支持Gif图片加载
优点:体积小,118k,加载图片质量高
缺点:不支持Gif,缓存图片未缩放,并且默认使用,缓存体积大;
Glide
1.Glide是一款谷歌官方推荐使用的图片加载框架;
2.特点:
1):可*设置图片加载尺寸,支持JPG,PNG,GIF,WEBP,JPEG
2):支持多种数据源加载
3):绑定生命周期;
优点:可配置度高,自适应程度高;生命周期集成,与Activity/Fragment生命周期一致,Paused暂停加载,Resume自动重新加载;缓存的是跟ImageView尺寸相同的,Picasso缓存的是全尺寸的;内存开销小,Glide默认的Bitmap格式是RGB_565,Picasso默认是ARGB_888;
缺点:包较大(其他的也找不到啥缺点)
Glide用法:
基本用法:
Glide.with(this).load(url).into(imageView);
设置缓存:
RequestOptions re = new RequestOptions()
.skipMemoryCache(true);//跳过内存缓存
RequestOptions re = new RequestOptions()
.diskCacheStrategy(DiskCacheStrategy.NONE);
DiskCacheStrategy.NONE:不缓存任何内容。
DiskCacheStrategy.DATA:只缓存原始图片。
DiskCacheStrategy.RESOURCE:只缓存转换过后的图片。
DiskCacheStrategy.ALL:既缓存原始图片,也缓存转换过后的图片。
DiskCacheStrategy.AUTOMATIC:让Glide根据图片资源智能地选择使用哪一种缓存策略(默认选项)。
Glide.with(this).load(url).apply(re).into(imageView);
设置图片大小:
实际上在大多数情况下是不需要指定图片大小的,因为Glide会自动根据imageview大小来决定图片的大小,以此保证图片不会占用过多的内存引发OOM;
但是如果真的有指定大小的需求,方法如下:
RequestOptions re = new RequestOptions()
.override(200,200);
.override(Target.SIZE_ORIGINAL);//加载原始图片
Glide.with(this).load(url).apply(re).into(imageView);
加载指定格式:
Glide.with(this)
.load(“https://xxxx.xxxx.xxx.gif”)
.into(imageview);
裁剪:
RequestOptions re = new RequestOptions()
.circleCrop();
Glide.with(this).load(url).apply(re).into(imageView);
预加载:
Glide.with(this).load(url).preload();
Glide.with(this).load(url).into(imageview);
调用了预加载之后,以后再加载这张图片就非常快了,因为Glide会直接从缓存当中去读取图片并显示出来,
RequestOptions re = new RequestOptions()
.circleCrop()
.placeholder(R.mipmap.ic_launcher)
.error(R.drawable.b)
.skipMemoryCache(true)
.diskCacheStrategy(DiskCacheStrategy.NONE)
.override(Target.SIZE_ORIGINAL);
Glide.with(this).load(imgUrl).preload();
Glide.with(this).load(imgUrl)
.apply(re)
.listener(new RequestListener<Drawable>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
return false;
}
@Override
public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
return false;
}
})
.into(iv1);
下一篇: 简单解析PHP程序的运行流程