Glide详解

Glide

介绍

  • Glide是一个Android图片加载库,它能够加载本地或网络上的图片,并且支持多种图片格式。同时,Glide还提供了灵活的API,允许开发者自定义图片加载过程。

依赖

repositories {
  google()
  mavenCentral()
}

dependencies {
  implementation 'com.github.bumptech.glide:glide:4.16.0'
}

Glide的使用

  • 加载图片:使用Glide的with()方法创建一个Glide实例,并使用load()方法指定要加载的图片资源。
Glide.with(context)
     .load(imageUrl)
     .into(imageView);

其中,context是当前上下文对象,imageUrl是要加载的图片URL或本地路径,imageView是要显示图片的ImageView控件。

  • 加载带有占位图
Glide.with(this).load(url).placeholder(R.drawable.loading).into(imageView);

-加载指定格式的图片

静态:
Glide.with(this)
     .load(url)
     .asBitmap()//只加载静态图片,如果是gif图片则只加载第一帧。
     .placeholder(R.drawable.loading)
     .error(R.drawable.error)
     .diskCacheStrategy(DiskCacheStrategy.NONE)
     .into(imageView);
     
     
动态:
Glide.with(this)
     .load(url)
     .asGif()//加载动态图片,若现有图片为非gif图片,则直接加载错误占位图。
     .placeholder(R.drawable.loading)
     .error(R.drawable.error)
     .diskCacheStrategy(DiskCacheStrategy.NONE)
     .into(imageView);
  • 指定图片大小
Glide.with(this)
     .load(url)
     .placeholder(R.drawable.loading)
     .error(R.drawable.error)
     .diskCacheStrategy(DiskCacheStrategy.NONE)
     .override(100, 100)//指定图片大小
     .into(imageView);
  • 设置选项:可以通过链式调用的方式设置一些选项,例如设置占位符、错误图片、缩略图、图片变换等。
Glide.with(context)
     .load(imageUrl)
     .placeholder(R.drawable.placeholder)
     .error(R.drawable.error)
     .thumbnail(0.5f)
     .centerCrop()
     .into(imageView);

-清除缓存:如果需要清除Glide的缓存,可以使用clearDiskCache()和clearMemory()方法。

Glide.get(context).clearDiskCache(); // 清除磁盘缓存
Glide.get(context).clearMemory(); // 清除内存缓存

Glide加载图片的步骤

  发起加载图片请求:发起加载图片请求当我们用 into方法加载图片时,就是发起了一次图片加载请求,这个请求会被Glide封装成一个Request对象,并交给RequestManager来处理。

  执行解码任务:执行解码任务我们在load()方法中设置的图片来源会传到 DecodeJob中,DecodeJob() 就会被 Engine()提交到线程池中开始执行。解码任务的具体流程包括从数据源获取原始数据、解码数据生成Bitmap对象,并对Bitmap进行缩放、裁剪等操作。

  加载图片:当解码任务完成后,Glide会将解码得到的Bitmap对象加载到ImageView中显示。在加载过程中,Glide还会对图片进行内存缓存和磁盘缓存,以便下次快速加载。

Glide的图片缓存

  Glide使用了三级缓存机制,图片的缓存分为内存、磁盘和来源,也就是从内存获取不到图片时,再去磁盘获取图片,从磁盘获取不到图片时,再从图片来源获取图片。

  内存缓存:
Glide使用内存缓存来临时存储已解码的图片。内存缓存可以快速地将图片加载到内存中,以便下次快速访问。默认情况下,Glide会根据设备的内存大小自动计算可用的内存缓存大小,并将其分配给应用程序。当应用程序被关闭或重启时,内存缓存会被清空。

  Glide使用磁盘缓存来持久化存储已下载的图片。磁盘缓存可以避免重复下载图片,提高加载速度。磁盘缓存默认使用应用程序的私有文件目录作为缓存目录。当磁盘缓存达到最大大小时,Glide会自动删除最旧的缓存文件。

  当我们使用Glide加载图片时,Glide会首先从内存缓存中查找是否存在该图片的缓存。如果内存缓存中不存在,则会继续查找磁盘缓存。如果磁盘缓存中也不存在,则会根据图片来源(如网络、本地文件等)发起相应的请求下载图片,并将下载的图片缓存到内存缓存和磁盘缓存中,以便下次快速访问。这种三级缓存机制可以有效地提高图片加载速度,并节省网络流量和内存资源

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值