Android View的工作原理(一)

<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>

05a812305244d5ebb171a323a12dc912.jpg

<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ù)~~~~~~~~~~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容