Android View的工作原理(一)

<h3>前言</h3>
<p>我们知道android的view的3大流程分别是measure,layout和draw过程。在学习这3大流程之前还有一些必须掌握的基本知识。
</p>
<h3>主干</h3>
<p>
首先我们就来看一看ViewRoot和DecorView。
View的三大流程都是通过ViewRoot来完成的,ViewRoot对应于ViewRootImpl类。在ActivityThread中,当Activity对象被创建完毕后,会将DecorView添加到Window当中,同时创建ViewRootImpl对象,并将两者相关联。
源码如下:
<p>
<pre>
root = new ViewRootImpl(view.getContext(),display);
root.setView(view, wparams, panelParentView);
</pre>
<p>
绘制view的三大流程的入口时ViewRoot的performTraversals方法。具体看图体会
</p>

05a812305244d5ebb171a323a12dc912.jpg

<p>
如图所展示的那样,performTraversals会依次调用performMeasure,performLayout和performDraw三个方法。再以measure为例,讲一下其流程,首先performMeasure执行viewgroup的measure方法,measure方法有调用onMeasure方法,而onMeasure方法会对所有的子元素执行measure方法。这样就完成了对整个viewgroup的遍历。

接下来DecorView就简单介绍一下,DecorView是一个FrameLayout,作为顶级View,View层的事件都会先经过DecorView,然后才传递给View。

未完待续~~~~~~~~~~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容