![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Glide 3.7.0 源码解析
文章平均质量分 91
Glide 3.7.0 学习的记录
Jie Zhou
这个作者很懒,什么都没留下…
展开
-
Android Glide 3.7.0 源码解析(九) , gif 的加载实现
个人博客传送门一、涉及类目GlideDrawableImageViewTarget.javaGifDrawable.javaGifFrameLoader.javaGifDecoder.java二、原理概述老规矩先介绍原理的框架,免得看源代码迷路GlideDrawableImageViewTarget 会调用加载的 GifDrawable 来启动动画GifDrawable 会在 draw() 中绘制当前帧, 并委托 GifFrameLoader 去加载下一帧GifFrameLoader原创 2021-04-05 20:32:13 · 386 阅读 · 0 评论 -
Android Glide 3.7.0 源码解析(八) , RecyclableBufferedInputStream 的 mark/reset 实现
个人博客传送门一、mark / reset 的作用Android Glide 3.7.0 源码解析(七) , 细说图形变换和解码有提到过RecyclableBufferedInputStream 对于 mark(int marklimit) 和 reset() 方法的作用, 本文则是探讨具体的实现思路mark(int marklimit) 的作用是在流中创建一段起点是 markPos 长度是 markLimit 的可被重复读取区域, 当调用 reset() 方法时流的读取位置会回到 markPos原创 2021-04-01 14:59:36 · 411 阅读 · 0 评论 -
Android Glide 3.7.0 源码解析(七) , 细说图形变换和解码
概览Glide 3.7.0 里面涉及的图形变换主要是 大小缩放, CenterCrop , FitCenter, 其中大小缩放是基于Downsampler(解码工具) 实现的, 而剩余两个则是 Transformation(图形变换) 接口的两个实现类.所以本文主要介绍3点:CenterCropFitCenter大小缩放Android Glide 3.7.0 源码解析 (二) , 从一次图片加载流程看源码文中的流程可以看出是在 DecodeJob 里面进行 解码 --> 图形变换原创 2021-03-31 17:47:23 · 380 阅读 · 0 评论 -
Android Glide 3.7.0 源码解析(六) , 缓存结构详述
结构总览内存缓存是由 LruResourceCache 和 activeResources 组成, 缓存的是 EngineResource 类型第一级缓存: LruResourceCache 是一个最终是一个 LinkedHashMap 来实现 Lru , 存储的是没有被界面使用的缓存资源, 并由LRU控制缓存大小第二级缓存: activeResources 是由一个 Map<Key, WeakReference<EngineResource<?>>> 构成, 存原创 2021-03-27 19:48:51 · 208 阅读 · 0 评论 -
Android Glide 3.7.0 源码解析(五) , 如何获得ImageView的宽高
前言通过前面的 Android Glide 3.7.0 源码解析 (二) , 从一次图片加载流程看源码 我们知道Request(真实) 只有在图片组件的大小准备好了才会开始真正的加载// GenericRequest public void begin() { startTime = LogTime.getLogTime(); if (model == null) { onException(null); return;原创 2021-03-20 15:13:30 · 233 阅读 · 0 评论 -
Android Glide 3.7.0 源码解析(四), BitmapPool作用及原理
Android 中图片显示的实体其实是一个 Bitmap 对象, 每次图片显示时, 都会构建一个 Bitmap 对象, 不用时再销毁假设: 一个长列表每项都有个图片需要显示, 我们在快速滑动长列表的时候, 会产生什么?Bitmap 对象被频繁的创建和释放, 导致 GC 频繁如何解决上述问题?BitmapPool , 一个 Bitmap 的对象池, 让一个新的图片资源复用在旧的 Bitmap对象上, 假设, 长列表一页有 20 个图片资源, BitmapPool 大小也刚好是 20 , 那么当滑动列表原创 2021-03-17 22:20:58 · 599 阅读 · 0 评论 -
Android Glide 3.7.0 源码解析(三), 生命周期绑定
Android Glide 3.7.0 源码解析(三), 生命周期绑定如果是主线程就注册创建一个无界面的 Fragment 加到 Fragment / Activity , 依赖这个Fragment 来监听生命周期如果是非主线程 , 就创建一个 Application 级别的 Lifecycle , 模拟生命周期在 1. 中创建的 Fragment 可以反馈 内存 和 界面 的 生命周期 , 这就完成了对内存和界面的监听可以根据 1. 中 Fragment , 来决定是否监控 网络状态 ( 如果界面原创 2021-03-15 11:24:34 · 180 阅读 · 0 评论 -
Android Glide 3.7.0 源码解析(二), 从一次图片加载流程看源码
Glide.with(activity).load(url).into(imageView);Glide.with 方法, 创建 RequestManager 实例RequestManager.load 方法, 创建 GenericRequestBuilder 实例, 并打包编/解码, 转码, 图形转换, 下载等工具解码: File, InputStream 转换成 Bitmap, Drawable编码: 将数据写入缓存区原创 2021-03-10 21:41:16 · 221 阅读 · 0 评论 -
Android Glide 3.7.0 源码解析(一), 准备工作
Android Glide 3.7.0 源码详解 (一) , 准备工作Android Glide 3.7.0 源码解析 (二) , 从一次图片加载流程看源码Android Glide 3.7.0 源码解析(三) , 生命周期绑定Android Glide 3.7.0 源码解析(四) , BitmapPool作用及原理Android Glide 3.7.0 源码解析(五) , 如何获得ImageView的宽高原创 2021-03-08 22:40:30 · 129 阅读 · 0 评论