该文章参考了
伯努力不努力(https://blog.youkuaiyun.com/u012124438/article/details/71435787)
Android_韦鲁斯(https://blog.youkuaiyun.com/sinat_27154507/article/details/79748010)
黑暗终将过去(https://www.jianshu.com/p/3654ab59b908)
博主的文章,如有侵权请通知删除
在介绍VIew绘制原理之前,简单介绍一下Window,ViewRootImpl,DecorView之间的联系。
一个 Activity 包含一个Window,Window是一个抽象基类,是 Activity 和整个 View 系统交互的接口,只有一个实现子类PhoneWindow,提供了一系列窗口的方法,比如设置背景,标题等。一个PhoneWindow 对应一个DecorView 跟 一个 ViewRootImpl,DecorView 是ViewTree 里面的顶层布局,是继承于FrameLayout,包含两个子View,一个id=statusBarBackground 的 View 和 LineaLayout,LineaLayout 里面包含 title 跟content,title就是平时用的TitleBar或者ActionBar, contenty也是FrameLayout,activity通过 setContent()加载布局的时候加载到这个View上。ViewRootImpl就是建立 DecorView 和 Window 之间的联系。
那么针对于View 绘制中measure,layout, draw 三个阶段他们的入口是什么呢?
measure :根据父 view 传递的 MeasureSpec 进行计算大小。
layout :根据 m

本文探讨了Android中View的绘制原理,包括Window、ViewRootImpl和DecorView的关系,以及View的measure、layout和draw三个阶段。重点解析了MeasureSpec的概念和作用,它是父View传递给子View的布局需求,由size和mode组成。onMeasure方法是测量View的核心,允许子类重写设置尺寸。最后讨论了layout方法如何确定View在父View中的位置,以及ViewGroup如何遍历并布局其子View。

最低0.47元/天 解锁文章
3198

被折叠的 条评论
为什么被折叠?



