欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Glide 4 基本用法

程序员文章站 2024-02-22 11:30:10
...

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