Glide 4 基本用法

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_36946516/article/details/102695099

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);

猜你喜欢

转载自blog.csdn.net/qq_36946516/article/details/102695099