课程名称: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 框架看似简单,里面包含的内容却十分丰富,是面试的常考点。