Android知识点整理-图片

159 阅读2分钟

Glide

baijiahao.baidu.com/s?id=170322…

Glide图片加载总体流程介绍

image.png

Glide做了哪些内存优化?

  • 尺寸优化(降采样)
  1. 首先计算出图片与View的宽高比
  2. 根据缩放策略是省内存还是高品质,决定取宽高比的最大值还是最小值
  3. 当Build.VERSION.SDK_INT<=23时,一些格式的图片不能缩放
  4. highestOneBit的功能是把我们计算的比例四舍五入到最接近2的幂
  5. 如果缩放策略为省内存,并且我们计算的SampleSize<exactScaleFactor,将inSampleSize2
  • 图片格式优化 Glide4.0之后,默认格式已经变成了ARGB_8888,并没有优化,可以自己设置
  • 内存复用

Glide缓存特点

juejin.cn/post/698164…

Glide如何管理生命周期?

新建了一个无UI的Fragment,这个Fragment持有一个Lifecycle,通过Lifecycle在Fragment关键生命周期通知RequestManager进行相关从操作。在生命周期onStart时继续加载,onStop时暂停加载,onDestory时停止加载任务和清除操作。

Glide怎么做大图加载

BitmapRegionDecoder主要用于显示图片的某一块矩形区域,如果你需要显示某个图片的指定区域,那么这个类非常合适。对于该类的用法,非常简单,既然是显示图片的某一块区域,那么至少只需要一个方法去设置图片;一个方法传入显示的区域即可

Glide如何加载GIF

www.jianshu.com/p/c1e4682c1…

  1. 首先需要区分加载的图片类型,即网络请求拿到输入流后,获取输入流的前三个字节,若为 GIF 文件头,则返回图片类型为 GIF。
  2. 确认为 GIF 动图后,会构建一个 GIF 的解码器(StandardGifDecoder),它可以从 GIF 动图中读取每一帧的数据并转换成 Bitmap,然后使用 Canvas 将 Bitmap 绘制到 ImageView 上,下一帧则利用 Handler 发送一个延迟消息实现连续播放,所有 Bitmap 绘制完成后又会重新循环,所以就实现了加载 GIF 动图的效果。