<h3>前言</h3>
<p>我們知道android的view的3大流程分別是measure,layout和draw過程。在學(xué)習(xí)這3大流程之前還有一些必須掌握的基本知識。
</p>
<h3>主干</h3>
<p>
首先我們就來看一看ViewRoot和DecorView。
View的三大流程都是通過ViewRoot來完成的,ViewRoot對應(yīng)于ViewRootImpl類。在ActivityThread中,當(dāng)Activity對象被創(chuàng)建完畢后,會將DecorView添加到Window當(dāng)中,同時創(chuàng)建ViewRootImpl對象,并將兩者相關(guān)聯(lián)。
源碼如下:
<p>
<pre>
root = new ViewRootImpl(view.getContext(),display);
root.setView(view, wparams, panelParentView);
</pre>
<p>
繪制view的三大流程的入口時ViewRoot的performTraversals方法。具體看圖體會
</p>
<p>
如圖所展示的那樣,performTraversals會依次調(diào)用performMeasure,performLayout和performDraw三個方法。再以measure為例,講一下其流程,首先performMeasure執(zhí)行viewgroup的measure方法,measure方法有調(diào)用onMeasure方法,而onMeasure方法會對所有的子元素執(zhí)行measure方法。這樣就完成了對整個viewgroup的遍歷。
接下來DecorView就簡單介紹一下,DecorView是一個FrameLayout,作為頂級View,View層的事件都會先經(jīng)過DecorView,然后才傳遞給View。
未完待續(xù)~~~~~~~~~~