android view的讲解 之 View的工作原理(decorView,viewRoot讲解)(一)
来源:互联网 发布:sql的存储过程 编辑:程序博客网 时间:2024/04/30 10:58
View:安卓视觉呈现,当系统给我们View满足不了我们,我们想要更炫酷的效果,自定义View实现;
ViewRoot对应ViewRootmipl,他是连接windowManager和DecorView的纽带;
通过这个源码可知:创建ViewRootmipl对象,并将viewRootImpl和DecorVeiw建立连接。
2.1view的绘制流程 (Traversals)车我搜
view的绘制流程是由viewRoot的prefromTravesals方法开始,经过measure,layout,draw来
完成view的绘制;
prefromTravesals分别调用了preformMeasue(),preformLayout,preformDraw();
prefromMeausre调用meause方法,meause方法掉用onMeausre()方法,完成父容器向子元素
measure的流程,然后子元素重复父容器的meause流程,完成Veiw的测量;
preformLayout,preformDraw都是一样的;只不过preformDraw是通过dispathDraw方法完成的;
意义是相同的;
DecorView是一个顶级的view;
通过源码可以知道:DecorView是一个frameLayout. view的执行会先经过decorView,然后才是我们的view;
DecorView是整个应用的界面,里面有标题和content;
MeauseSpec在很大程度上决定View的尺寸规格,在测量过程中还受父容器的影响。
MeauseSpec需要LayoutParams和父容器一起决定view的MeauseSpec;
测量过程:
系统将view的LayoutParam根据父容器施加的规格转化为MeauseSpec,然后对其测量宽高;
MeauseSpec是一个32位的int值,高2位的SpecMode,低30位的SpecSize;
SpecMode是测量模式。SpecSize是测量尺寸规格;
(12(SpecMode).2323232323232323232323...(30位 SpecSize))
SpecMode有三个类
对于普通View是由父容器的MeasureSpec和LayoutParams来决定的,
View采用固定宽高时,不管父容器的MeasureSpec是什么,view的MeasureSpec都是精确模式;
大小并遵循LayoutParams中的大小。
view是match_Parent时。如果父容器是精确模式,那么view也是精确模式,大小是父容器的剩余空间。如果父容器是最大模式,view也是最大模式,大小不会超过父容器的剩余空间
view是wrap_content时。不管父容器是精确模式还是最大模式,view模式总是最大化,大小不超过父容器剩余空间。
阅读全文
1 0
- android view的讲解 之 View的工作原理(decorView,viewRoot讲解)(一)
- View的工作原理(一)——从ViewRoot和DecorView说起
- ViewRoot,DecorView,MeasureSpec和View的工作原理——Android开发艺术探索笔记
- ViewRoot,DecorView,MeasureSpec和View的工作原理——Android开发艺术探索笔记
- View的工件原理:认识ViewRoot和DecorView
- android view的讲解 之 view的工作流程(measure,layout,draw)(二)
- 【View工作原理】ViewRoot、DecorView、MeasureSpec和LayoutParams
- 自定义View基础(一)——追根溯源,透过源码认识ViewRoot,DecorView和performTraversals方法
- 读书笔记--View的工作原理(一)
- View的工作原理(一)
- Android——View的工作原理(一)
- Android的View工作原理(一)mearsure过程
- Framework之View的工作原理(一)
- View的工作原理(一)之 View的三大过程 和 认识MeasureSpec
- android-View工作原理(四)view的layout过程
- android-View工作原理(四)view的layout过程
- View的工作原理(自定义View)
- android 的View Tree和 DecorView(Android ViewTree and DecorView)
- Aliyun SDK文件上传
- 读MNIST源码(一):python文件结构
- jQuery多库共存处理
- UIKit 中的 UIGraphics.h 方法总结
- 访问WebContent/WEB-INF下的jsp页面404
- android view的讲解 之 View的工作原理(decorView,viewRoot讲解)(一)
- [杂乱]Electron通过node-ffi调用C++dll
- 1058VR+旅游诠释网络时代旅游营销新模式
- eclipse配置maven + 创建maven项目
- 如何删除github上的某个文件夹
- 逻辑运算符解析
- 未能正确加载 “Microsoft.Entity.Design.BootstrapPackage.BootstrapPackage,Microsoft.Data.Entity未能正确加载 “Micro
- 对话框中怎样加入工具条综述
- well,c语言简易扫雷