view viewGroup 呼叫順序

2021-06-23 01:05:52 字數 1052 閱讀 8317

view onmeasure:0&&0

view onmeasure:0&&0

viewgroup onmeasure:0&&0

view onmeasure:0&&0

view onmeasure:0&&0

viewgroup onmeasure:0&&0

viewgroup onsizechanged:100&&100

view onsizechanged:0&&19

view onlayout:0&&19

view onsizechanged:0&&19

view onlayout:0&&19

viewgroup onlayout:100&&100

view onmeasure:0&&19

view onmeasure:0&&19

viewgroup onmeasure:100&&100

view onmeasure:0&&19

view onmeasure:0&&19

viewgroup onmeasure:100&&100

view onlayout:0&&19

view onlayout:0&&19

viewgroup onlayout:100&&100

viewgroup drawchild

viewgroup drawchild

簡單的說乙個view從無到有需要三個步驟,onmeasure、onlayout、ondraw,即測量大小、放置位置、繪製三個步驟。而viewgroup的onmeasure、onlayout流程裡,又會遍歷每個孩子,並最終調到孩子的measure()、layout()函式裡。與view不同的是,viewgroup沒有ondraw流程,但有dispatchdraw()流程,該函式最終又呼叫drawchild()繪製每個孩子,調每個孩子view的ondraw流程。

在onmeasure裡可以直接setmeasureddimension(measuredwidth, measuredheight)設定控制項寬和高,這樣不管xml裡咋寫的,最終以此句設定的width和height進行放置、顯示。

View ViewGroup的測量 布局 繪製流程

注 1 為了方便描述,假定現在有三層布局,分別為 最外層view1 第二層view2 第三層view3 2 下面 測量子控制項 布局子控制項 繪製子控制項 的思路都是 用for迴圈遍歷子控制項,呼叫子控制項的measure layout draw 方法。下面就不對此進行解釋。measure int ...

自定義View ViewGroup流程

一 自定義view 1.onmeasure int widthmeasurespec,int heightmeasurespec int wspecmode measurespec.getmode widthmeasurespec int wspecsize measurespec.getsize ...

長呼叫與短呼叫 呼叫門

cs裡的是乙個段選擇子 1 拆分段選擇子,查gdt表 2 該段描述符為系統描述符,s位為0,type為1100,是乙個門描述符 dpl必須為3,不然該描述符的許可權檢查過不去 3 該描述符的16到31位為另外乙個段描述符的選擇子 決定是否提權 另外乙個段描述符 必須是 段 dpl決定是否提權 長呼叫...