Glide系列-圆角、毛玻璃、动画、gif、缓存、尺寸、占位图、生命周期等

Glide相关属性

环境配置

添加依赖
compile ‘com.github.bumptech.glide:glide:3.7.0’

添加网络权限

 <uses-permission android:name="android.permission.INTERNET"/>

先上一张网络图片链接

http://sshnews-test.oss-cn-beijing.aliyuncs.com/epg/2020/05/10/03/f0fae539f41f416c9471fa1db57590f5.jpg

今天就拿这张图片搞事情

首先获取到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 格式,这个内存开销要小一半。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值