Android View的工作原理(一)

前言


我们知道android的view的3大流程分别是measure,layout和draw过程。在学习这3大流程之前还有一些必须掌握的基本知识。


主干



首先我们就来看一看ViewRoot和DecorView。
View的三大流程都是通过ViewRoot来完成的,ViewRoot对应于ViewRootImpl类。在ActivityThread中,当Activity对象被创建完毕后,会将DecorView添加到Window当中,同时创建ViewRootImpl对象,并将两者相关联。
源码如下:



root = new ViewRootImpl(view.getContext(),display);
root.setView(view, wparams, panelParentView);


绘制view的三大流程的入口时ViewRoot的performTraversals方法。具体看图体会

Android View的工作原理(一)_第1张图片
05a812305244d5ebb171a323a12dc912.jpg


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

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

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

你可能感兴趣的:(Android View的工作原理(一))