android框架使用及源码解析
文章平均质量分 97
android框架源码解析
detachment_w
这个作者很懒,什么都没留下…
展开
-
Jetpack ---- Paging源码解析 - Paging的设计与实现:架构设计与原理解析
这篇博客转载 却把清梅嗅Jetpack ---- Paging源码解析 - Paging的设计与实现:架构设计与原理解析前言架构设计与原理解析1、通过建造者模式进行依赖注入2、构建懒加载的LiveData3、为分页数据赋予生命周期4、提供Room的响应式支持中场:更多的困惑5、数据源的连续性与分页加载策略6、分页数据模型与分页数据副本7、线程切换与Paging设计中的"Bug"总结参考 & 更多本文是Android Jetpack Paging系列的第二篇文章;强烈建议 读者将本系列作为学习Pa转载 2020-12-24 19:43:11 · 703 阅读 · 1 评论 -
Jetpack ---- Paging源码解析 - Paging的设计与实现:系统概述
这篇博客参考了Jetpack ---- Paging源码解析转载 2020-12-24 17:15:21 · 1095 阅读 · 0 评论 -
Jetpack ---- ViewModel源码解析
这篇博客参考了 程序亦非猿 和 HankkinJetpack ---- ViewModel源码解析1.背景2.简介2.1 是什么?2.2 ViewModel生命周期3. 基本使用1.背景上篇我们对LiveData进行了分析,已清楚了它的主要作用,我们再来温习一下:LiveData是一个可以感知Activity、Fragment生命周期的数据容器。其本身是基于观察者模式设计的,当LiveData所持有的数据发生改变时,它会通知对应的界面所持有该数据的UI进行更新,并且LiveData中持有Lifecy原创 2020-12-22 14:17:26 · 230 阅读 · 0 评论 -
Jetpack ---- LiveData源码解析
这篇博客参考了 程序亦非猿 和 HankkinJetpack ---- LiveData源码解析1. LiveData 的基本使用2. LiveData 的原理分析2.1 LiveData.observe()2.2 LifecycleBoundObserverObserverWrapper2.3 activeStateChanged(boolean)2.4 dispatchingValue(ObserverWrapper) 分析2.4.1 ObserverWrapper 不为 null 的情况2.4.2原创 2020-12-21 19:17:02 · 561 阅读 · 0 评论 -
Jetpack ---- DataBinding完全解析(四)DataBinding源码分析补充
此篇博客参考 海的鼻涕Jetpack ---- DataBinding完全解析(四)DataBinding源码分析补充setUserupdateRegistrationregisterToVM变化如何通知ViewV的变化如何同步到VM如何避免findViewByIdActivityMainBinding.inflate(getLayoutInflater())是如何建立Activity和View的关联的setUser这里面的代码比较简单,主要分析一下updateRegistration方法。第一个入参原创 2020-12-21 16:35:55 · 346 阅读 · 0 评论 -
Jetpack ---- DataBinding完全解析(三)DataBinding使用及源码分析
此篇博客转载自 csdn小瓯Jetpack ---- DataBinding完全解析(三)DataBinding使用及源码分析介绍APT预编译布局的格式和处理关联Activity组件与布局何时生成设置Model帮助类?实战引入定义实体类定义Layout布局Rebuild Project书写代码绑定DataBinding是一种工具,能在编译时绑定布局和对象。通过这篇文章,一是要掌握DataBinding的使用,二是我们要弄懂,View层是怎么改变Model的,而Model层又是如何改变View的。介绍原创 2020-12-21 16:25:08 · 882 阅读 · 4 评论 -
Jetpack ---- DataBinding完全解析(二)DataBinding是如何生成代码的?
Jetpack ---- DataBinding完全解析(二)DataBinding是如何生成代码的?分析过程XMLParserLayoutFileParserResourceBundleparseXmlResourceBundle.LayoutFileBundle分析过程在我们build.gradle文件中开启databinding后,导入的包如下:通过名字就能知道上图中选中的那个是负责编译生成辅助代码的。点击这个包打开之后,目录结构如下:XMLParser首先,第一眼凭直觉,和datab原创 2020-12-19 19:39:42 · 963 阅读 · 2 评论 -
Jetpack ---- DataBinding完全解析(一)gradle是如何导入DataBinding的
Jetpack ---- DataBinding完全解析(一)gradle是如何导入DataBinding的分析流程build.gradleBaseExtensionDataBindingOptionsTaskManagerDataBindingBuildercreateDataBindingTasksIfNecessarycreateDataBindingMergeArtifactsTaskcreateDataBindingMergeBaseClassesTaskDataBindingGenBaseCla原创 2020-12-18 19:13:36 · 1203 阅读 · 0 评论 -
Jetpack ---- Lifecycle源码解析(4)响应的观察者们
转载自 青蛙要fly,略有删减, 注意原作者分析的代码不是最新的,但是变化不大Jetpack ---- Lifecycle源码解析(4)响应的观察者们正文响应的观察者们使用FullLifecycleObserver使用GenericLifecycleObserver(现在已废弃)使用普通的LifecycleObserver(生成辅助文件)使用单个GeneratedAdapterObserver / CompositeGeneratedAdaptersObserver(通过反射来调用)使用Reflectiv原创 2020-12-14 20:20:46 · 148 阅读 · 0 评论 -
Jetpack ---- Lifecycle源码解析(3)注册监听 & 发送事件
转载自 青蛙要fly,略有删减Jetpack ---- Lifecycle 篇(3)注册 & 发送 源码分析正文1. 添加注册监听2. 发送事件到观察者队列3. 观察者队列数据结构FastSafeIterableMap分析4. sync()的具体流程结语正文在 Lifecyele 篇 -(1)基础讲解 中,我们讲过三种集成Lifecycle方式,我们上面讲了三种集成方式,其实一个集成方式源码通了,其他都都类似,我们以第一种最最普通的集成方式来讲解(其他的后期有空再补充吧)。1. 添加注册监听原创 2020-12-14 19:01:27 · 222 阅读 · 0 评论 -
Jetpack ---- Lifecycle源码解析(2)Lifecycle 的 Event & State
Jetpack ---- Lifecycle 篇(2)源码分析之 Event & State正文Lifecycle的State和Event分析结语正文其实我们知道,归根到底其实源码讲解主要就:基础类介绍,注册源码,发送源码,响应源码在 Lifecyele 篇 -(1)基础讲解 中,我们讲过三种集成Lifecycle方式,我们上面讲了三种集成方式,其实一个集成方式源码通了,其他都都类似。本文我们会介绍Lifecycle这个基础类,同时着重讲解State和Event相关知识,因为很多人看过之后,原创 2020-12-14 17:20:54 · 509 阅读 · 0 评论 -
Jetpack ---- Lifecycle源码解析(1)基础知识
转载自 青蛙要fly,略有删减Jetpack ---- Lifecycle 篇(1)基础知识导读正文1. 对比2. 基础集成方式一集成方式二集成方式三3. 使用场景3.1 普通Activity、Fragment等生命周期监听3.2 监听整个App3.3 配合LiveData,消息总线结语导读本系列适合三类读者:完全没用过Lifecycle,但是听过,第一次接触的,想从浅入深的读者,我会有实际生活中的例子来让大家更容易掌握稍微知道整个基础流程的,能大概讲个大概,但是深入就没有了解过的读者自己也写原创 2020-12-14 16:56:48 · 411 阅读 · 0 评论 -
Jetpack ---- App Startup源码解析
Jetpack ---- App Startup源码解析1. 解决的问题2. 使用App StartUp(1) 添加依赖(2) 实现Initializer< T >接口(3) 注册Provider和Initializer<?>3. App StartUp实现懒加载4. App StartUp源码解析5. App StartUp利弊1. 解决的问题一般需要初始化的sdk都会对外提供一个初始化方法供外界调用,如:public class App extends Applicatio原创 2020-12-13 16:37:11 · 200 阅读 · 0 评论 -
Android Virtualview:淘宝、天猫又开源了一个动态化、高性能的UI框架
转载 Carson_HoAndroid Virtualview:淘宝、天猫又开源了一个动态化、高性能的UI框架前言目录1. 为什么要向 Tangram模型 加入 VirtualView2. VirtualView介绍3. 实现原理核心思路实现方案总结4. 工作流程流程概述流程详细分析流程1:创建UI组件1. 使用框架内置(封装好)的UI组件2. 自定义UI组件3. 总结流程2:创建界面模板 & 下发1. 创建XML界面模板2. 编译成二进制数据具体描述二进制文件描述编译流程3. 模板数据下发到客户转载 2020-12-12 13:37:44 · 1576 阅读 · 0 评论 -
Android Tangram模型:连淘宝、天猫都在用的UI框架模型
转载 Carson_HoAndroid Tangram模型:连淘宝、天猫都在用的UI框架模型前言目录为什么要使用 Tangram 模型背景问题解决方案定义应用场景Tangram优点高性能面向业务扩展性好多端一致性架构 & 原理讲解知识储备Tangram结构原理解析扩展模块具体使用总结前言Tangram 是阿里出品、用于快速实现组合布局的框架模型,在手机天猫 Android & iOS版 内广泛使用今天将对Tangram 模型 进行全面介绍,希望你们会喜欢。目录为什么要使用转载 2020-12-12 09:47:46 · 751 阅读 · 0 评论 -
Android开源库V - Layout:淘宝、天猫都在用的UI框架
转载 Carson_HoAndroid开源库V - Layout:淘宝、天猫都在用的UI框架前言目录为什么要使用 V - Layout简介应用场景原理解析源码类说明工作流程初始化具体布局流程总结使用步骤步骤1:创建RecyclerView & VirtualLayoutManager 对象并进行绑定步骤2:设置回收复用池大小步骤3:设置Adapter步骤4:根据数据列表,创建对应的LayoutHelper1. 线性布局(LinearLayoutHelper)1. 所有布局的共有属性说明:2. Li原创 2020-12-12 03:37:00 · 736 阅读 · 0 评论 -
Glide源码解析(八)带你全面了解Glide 4的用法
转载自 guolin,略有删减改动Glide源码解析(八)带你全面了解Glide 4的用法本篇将是我们这个Glide系列的最后一篇文章。其实在写这个系列第一篇文章的时候,Glide就推出4.0.0的RC版了。那个时候因为我一直研究的都是Glide 3.7.0版本,再加上RC版本还不太稳定,因此整个系列也都是基于3.7.0版本来写的。而现在,Glide的最新版本已经出到了4.4.0,可以说Glide 4已经是相当成熟和稳定了。而且也不断有朋友一直在留言,想让我讲一讲Glide 4的用法,因为Glide转载 2020-12-11 19:26:02 · 950 阅读 · 3 评论 -
Glide源码解析(七)实现带进度的Glide图片加载功能
转载自 guolin,略有删减改动Glide源码解析(七)实现带进度的Glide图片加载功能我们的Glide系列文章终于要进入收尾篇了。从我开始写这个系列的第一篇文章时,我就知道这会是一个很长的系列,只是没有想到竟然会写这么久。在前面的六篇文章中,我们对Glide的方方面面都进行了学习,包括基本用法、源码解析、缓存机制、回调与监听、图片变换以及自定义模块。而今天,我们就要综合利用之前所学到的知识,来对Glide进行一个比较大的功能扩展,希望大家都已经好好阅读过了前面的六篇文章,并且有了不错的理解。扩转载 2020-12-11 18:40:35 · 465 阅读 · 0 评论 -
Glide源码解析(六)探究Glide的自定义模块功能
转载自 guolin,略有删减改动Glide源码解析(六)探究Glide的自定义模块功能不知不觉中,我们的Glide系列教程已经到了第六篇了,距离第一篇Glide的基本用法发布已经过去了半年的时间。在这半年中,我们通过用法讲解和源码分析配合学习的方式,将Glide的方方面面都研究了个遍,相信一直能看到这里的朋友现在已经是一位Glide高手了。整个Glide系列预计总共会有八篇文章,现在也是逐步进入尾声了。不过,越是到后面,我们探究的内容也越是更加深入。那么今天,我们就来一起探究一下Glide中一个比较转载 2020-12-11 17:59:17 · 505 阅读 · 0 评论 -
Glide源码解析(五)Glide强大的图片变换功能
转载自 guolin,略有删减改动Glide源码解析(五)Glide强大的图片变换功能一个问题大家好,又到了学习Glide的时间了。今天是这个系列的第五篇文章,在前面四篇文章的当中,我们已经学习了Glide的基本用法、Glide的工作原理和执行流程、Glide的缓存机制、以及Glide的回调机制等内容。如果你能将前面的四篇文章都掌握好了,那么恭喜你,现在你已经是一名Glide好手了。如果你还没有阅读过前面四篇文章的话,那么可以点击后面的链接,依次向前阅读 Glide源码解析(四)玩转Glide的回调与转载 2020-12-11 16:54:16 · 453 阅读 · 0 评论 -
Glide源码解析(四)玩转Glide的回调与监听
转载自 guolin,略有删减改动Glide源码解析(四)玩转Glide的回调与监听回调的源码实现into()方法SimpleTargetViewTargetpreload()方法downloadOnly()方法listener()方法大家好,今天我们继续学习Glide。在上一篇文章当中,我带着大家一起深入探究了Glide的缓存机制,我们不光掌握了Glide缓存的使用方法,还通过源码分析对缓存的工作原理进行了了解。虽说上篇文章和本篇文章的内容关系并不是很大,不过感兴趣的朋友还是可以去阅读一下 Glide转载 2020-12-10 22:58:15 · 1191 阅读 · 0 评论 -
Glide源码解析(三)深入探究Glide的缓存机制
转载自 guolin,略有删减改动Glide源码解析(三)深入探究Glide的缓存机制Glide缓存简介缓存Key内存缓存硬盘缓存高级技巧在本系列的上一篇文章中,我带着大家一起阅读了一遍Glide的源码,初步了解了这个强大的图片加载框架的基本执行流程。不过,上一篇文章只能说是比较粗略地阅读了Glide整个执行流程方面的源码,搞明白了Glide的基本工作原理,但并没有去深入分析每一处的细节(事实上也不可能在一篇文章中深入分析每一处源码的细节)。那么从本篇文章开始,我们就一篇篇地来针对Glide某一块功能转载 2020-12-10 19:14:27 · 271 阅读 · 2 评论 -
Glide源码解析(一)基本用法
转载自 guolin,略有删减改动Glide源码解析(一)基本用法开始加载图片占位图指定图片格式指定图片大小现在Android上的图片加载框架非常成熟,从最早的老牌图片加载框架UniversalImageLoader,到后来Google推出的Volley,再到后来的新兴军Glide和Picasso,当然还有Facebook的Fresco。每一个都非常稳定,功能也都十分强大。但是它们的使用场景基本都是重合的,也就是说我们基本只需要选择其中一个来进行学习和使用就足够了,每一个框架都尝试去掌握的话则有些浪费时转载 2020-12-10 17:21:05 · 255 阅读 · 0 评论 -
Glide源码解析(二)从源码的角度理解Glide的执行流程
转载自 guolin,略有删减改动Glide源码解析(二)从源码的角度理解Glide的执行流程如何阅读源码源码下载开始阅读1. with()2. load()3. into()总结在本系列的上一篇文章中,我们学习了Glide的基本用法,体验了这个图片加载框架的强大功能,以及它非常简便的API。还没有看过上一篇文章的朋友,建议先去阅读 Android图片加载框架最全解析(一),Glide的基本用法 。在多数情况下,我们想要在界面上加载并展示一张图片只需要一行代码就能实现,如下所示:Glide.with转载 2020-12-10 17:18:47 · 337 阅读 · 0 评论 -
RecyclerView 源码分析(十)ItemTouchHelper源码详解
RecyclerView 源码分析(十)ItemTouchHelper源码详解ItemTouchHelper效果展示ItemTouchHelper使用的简单介绍ItemTouchHelper.Callback常用函数ItemTouchHelper的使用源码分析select()函数attachToRecyclerView()ItemTouchHelper源码详解ItemTouchHelper是一个强大的帮助类。用来配合RecyclerView使用,ItemTouchHelper同一时刻只能支持两种效果:s原创 2020-12-09 19:30:03 · 449 阅读 · 0 评论 -
RecyclerView分组悬浮列表
转载自tuacyRecyclerView分组悬浮列表列表展示是开发过程中经常用到的功能,通常通过 ListView 或者 RecyclerView 控件来实现。在列表显示的过程中可能会碰到这样的需求:需要对列表进行分组,每个分组都有标题 item view 和内容 item view 而且希望列表在滑动的过程中每个分组的标题 item view 可以一直固定的列表的顶部。下面我们通过 RecyclerView 来实现这一需求。在讲怎么实现之前先献上通过RecyclerView实现的效果图Linear转载 2020-12-09 19:28:48 · 1074 阅读 · 0 评论 -
Android 自定义View :时间轴
转载Carson_HoAndroid 自定义View :时间轴前言目录1. 知识储备1.1 RecyclerView1.2 自定义View2. 具体实现2.1 效果图2.2 实现思路2.3 实现步骤2.4 步骤说明2.5 结果展示2.6 源码地址3. 扩展使用前言Android开发中,时间轴的 UI需求非常常见,如下图:本文将结合 自定义View & RecyclerView的知识,手把手教你实现该常见 & 实用的自定义View:时间轴目录1. 知识储备本文采用 自定义原创 2020-12-09 15:32:23 · 618 阅读 · 0 评论 -
RecyclerView 源码分析(九)ItemDecoration深入解析
转载Carson_HoRecyclerView 源码分析(九)深入解析 RecyclerView.ItemDecoration类前言目录1. ItemDecoration类 简介1.1 定义1.2 作用2. 具体使用2.1 getItemOffsets()2.1.1 作用2.1.2 具体使用2.1.3 源码分析总结2.2 onDraw()2.2.1 作用2.2.2 具体使用2.2.3 特别注意2.2.4 应用场景2.2.5 实例讲解2.2.6 结果展示2.2.7 源码地址2.3 onDrawOver()2原创 2020-12-09 15:32:48 · 380 阅读 · 0 评论 -
RecyclerView 源码分析(八)ItemAnimator的源码分析
转载自琼珶和予RecyclerView 源码分析(八)ItemAnimator的源码分析ItemAnimator的源码分析ItemAnimator作为RecyclerView的主要组成部分之一,其重要性自然不可言喻。因为ItemAnimator的存在,所以出现了很多精彩纷呈的动画,这使得RecyclerView更加惹人喜爱。因此,学习ItemAnimator的源码是势在必行的,因为我们了解原理之后,就可以自定义动画了,不再受人束缚。 本文参考资料:recyclerview-animatorsR原创 2020-12-09 01:12:15 · 328 阅读 · 0 评论 -
RecyclerView 源码分析(七)自定义LayoutManager及其相关组件的源码分析
转载自琼珶和予RecyclerView 源码分析(七)自定义LayoutManager及其相关组件的源码分析自定义LayoutManager及其相关组件的源码分析对于使用ReccyclerView的我们来说,LayoutManager早已非常熟悉。可是,有没有想过我们所说的熟悉是哪种熟悉?对的,就是会使用而已,这其中包括谷歌爸爸帮我们实现的几种LayoutManager,例如:LinearLayoutManager,GridLayoutManager等等。 仔细想一想,我们使用LayoutMana原创 2020-12-09 00:19:49 · 300 阅读 · 0 评论 -
RecyclerView 源码分析(六)DiffUtil的差量算法分析
转载自琼珶和予RecyclerView 源码分析(六)DiffUtil的差量算法分析DiffUtil的差量算法分析首先,我估计有一部分的同学可能还不知道DiffUtil是什么,说实话,之前我也根本不了解这是什么东西。DiffUtil是我在公司实习的时候了解到的一个类,在那之前,我使用RecyclerView的方式也是大部分的人差不多,就是RecyclerView和它的四大组成部分任意组合。 当时在公司第一次看到这个东西的时候,立即两眼发光,非常好奇这是什么东西,就好像在大街上看到美女一样。后来在非原创 2020-12-08 19:16:21 · 657 阅读 · 0 评论 -
RecyclerView 源码分析(五)Adapter的源码分析
转载自琼珶和予RecyclerView 源码分析(五)Adapter的源码分析Adapter的源码分析熟悉RecyclerView的同学应该都知道,Adapter作为RecyclerView四大组成部分(Adapter,LayoutManager,ItemAnimator,ItemDecoration)之一,其重要性自然是不言而喻。今天,我们来分析一下Adapter的源码。我打算将Adapter的源码分析分为两个部分,一是,从普通的角度上来看Adapter,从源码的角度上来分析我们日常使用的一些操作;原创 2020-12-08 18:20:17 · 520 阅读 · 1 评论 -
RecyclerView 源码分析(四)RecyclerView的动画机制
转载自琼珶和予RecyclerView 源码分析(四)RecyclerView的动画机制RecyclerView的动画机制距离上一篇RecyclerView源码分析的文章已经过去了10多天,今天我们将来看看RecyclerView的动画机制。不过,本文不会分析ItemAnimator相关的知识,而是理解RecyclerView怎么执行ItemAnimator的,有关ItemAniamtor的知识,后面我会写专门的文章来分析。 本文参考资料:RecyclerView animations - An原创 2020-12-08 16:07:16 · 871 阅读 · 0 评论 -
RecyclerView 源码分析(三)RecyclerView的缓存机制
转载自琼珶和予RecyclerView 源码分析(三)RecyclerView的缓存机制1. 概述(1) 四级缓存(2) ViewHolder的几个状态值(3) ChildHelper的mHiddenViews2. 复用(1) 通过Position方式来获取ViewHoldermChangedScrap里面去获取ViewHoldermAttachedScrap、 mHiddenViews、mCachedViews获取ViewHolder(2) 通过viewType方式来获取ViewHolderA. 通过i原创 2020-12-07 22:10:56 · 333 阅读 · 0 评论 -
RecyclerView 源码分析(二)RecyclerView的滑动机制
转载自琼珶和予RecyclerView 源码分析(二)RecyclerView的滑动机制1. 传统事件(1) Down 事件(2) Move事件2. 多指滑动3. fling滑动4. Demo展示5. 总结RecyclerView的滑动机制RecyclerView作为一个列表View,天生就可以滑动。作为一个使用者,我们可以不去了解它是怎么进行滑动,但是我们作为一个学习源码的人,必须得知道RecyclerView的滑动机制,所以,我们今天来看看RecyclerView滑动部分的代码。 本文参考资原创 2020-12-07 17:35:22 · 445 阅读 · 0 评论 -
RecyclerView 源码分析(一)RecyclerView的三大流程
转载自琼珶和予RecyclerView 源码分析(一)RecyclerView的三大流程1. 概述2. measure(1)当LayoutManager为空时(2)当LayoutManager开启了自动测量dispatchLayoutStep1dispatchLayoutStep2(3)没有开启自动测量3. layout4. draw5. LayoutManager的onLayoutChildren方法确定锚点的信息detachAndScrapAttachedViews调用fill方法来填充Childre原创 2020-12-07 15:42:09 · 1084 阅读 · 0 评论 -
Jetpack Navigation----源码解析
Jetpack Navigation----源码解析原始解析NavHostFragment导航控制器Navigation.findNavController(this,R.id.xxx)setupActionBarWithNavControllernavView.setupWithNavController(navController)遗留问题4.总结4.1流程4.2 类图4.3 分析4.3.1 NavHostFragment4.3.2导航控制器4.3.3 NavigationUI原始解析NavHost转载 2020-12-07 12:46:20 · 522 阅读 · 0 评论