为了账号安全,请及时绑定邮箱和手机立即绑定

【九月打卡】第9天开源框架 Glide 源码解读

标签:
Android

课程名称BAT大牛亲授技能+技巧 Android面试快速充电升级
课程章节:Android基础相关面试问题
主讲老师DocMike

课程内容

Glide 是常用的图片加载框架,Glide 的链式调用方面,而且能够满足大部分的应用场景。Glide 的缓存机制包括两种,内存缓存和磁盘缓存。内存缓存能有效的避免重复将图片读入内存,造成内存资源的浪费。磁盘缓存可以避免重复从网络下载和读取数据。

  • with(context),传入的上下文决定 Glide 图片加载的生命周期。例如在 Fragment 或 Activity 中在onDestroy() 中停止加载图片,如果上下文是 Application ,则在应用程序结束的时候停止加载。

  • load(),加载图片地址,可以是网络地址,也可以是本地的存储地址。

  • placeholder(R.drawable.XXX) 设置图片占位图,在图片加载时先临时加载一张图片,等网络请求加载完了以后显示想要的图片。

  • error(R.drawable.XXX),设置异常占位图,异常情况导致的图片加载失败时显示的内容。

  • override(width,height),手动设置图片宽高,节省了内存的开销。

  • fitCenter() 用于将图像缩放,让图像宽高都小于 ImageView 的最大的边界范围,图像会完全显示但有可能不会填满整个 ImageView。

  • centerCrop() 让图像缩放填充到 ImageView 界限内部,会裁剪超出 ImageView边界的图像的其他部分,但是会导致图片不会完全显示出来。

  • skipMemoryCache(true),默认值为 false,默认就是将图片缓存到内存中。参数为 true 时不会将图片放入到内存缓存当中去,调用这个方法只会影响内存缓存。Glide 会默认将所有的图片放入到内存缓存当中。如果是两次传入相同的 url,第一次请求没有加入 skipMemoryCache(true),后来再次调用 skipMemoryCache(true) 就会从内存中获取。

  • diskCacheStrategy(DiskCacheStrategy.NONE),设置硬盘缓存策略,如果关闭了内存缓存,图片请求仍然会被存储到设备的磁盘缓存当中,如果有一张相同的 url 的图片,但是变化很快,想把磁盘缓存也给禁用,就调用DiskCacheStrategy.NONE 这个参数。它一个枚举值,此外还有 ALL (默认值缓存所有图像),NONE (什么都不缓存),SOURCE (仅仅只缓存原来的全分辨率的图像),RESULT (仅仅缓存最终的图像,即降低分辨率后的图像)。

  • priority(Priority.HIGH),设置优先级,可按图片显示的优先级来设置。

  • into,设置加载图片的控件的实例。

课程收获

实现一个图片加载的框架需要考虑对参数的封装,解析并规范化图片的来源,为了减少计算还需要做缓存处理,查找和下载文件,对图片进行解码,还要考虑做一些如圆角、滤镜效果的变换处理,为了优化请求还要考虑缓存,还要考虑最终的显示效果。

这一章从 Glide 使用的角度入手,分析了 Glide 的源码。Glide 框架看似简单,里面包含的内容却十分丰富,是面试的常考点。
图片描述

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消