自定義控制項學習筆記1 1

2021-09-13 12:04:16 字數 2017 閱讀 5126

測量乙個view主要關心的2個屬性:1.view的模式  2view的尺寸

mesasurespc 用來存放這2個屬性

view的模式有3個

mode_mask :11 00000 00000 00000 00000 00000 00000 

~mode_mask: 00 11111 11111 11111 11111 11111 11111 

private static final int mode_shift = 30; 位移的位數
/**

* measure specification mode: the parent has not imposed any constraint

* on the child. it can be whatever size it wants.

*/public static final int unspecified = 0 << mode_shift;

0左移30位 代表00 00000 00000 00000 00000 00000 00000 

父容器不對view做任何限制,系統內部使用

/** * measure specification mode: the parent has determined an exact size

* for the child. the child is going to be given those bounds regardless

* of how big it wants to be.

*/public static final int exactly = 1 << mode_shift;

1左移30位 代表01 00000 00000 00000 00000 00000 00000 

父容器檢測出view的大小,view的大小就是specsize layoutparams match_parent 固定大小

/** * measure specification mode: the child can be as large as it wants up

* to the specified size.

*/public static final int at_most = 2 << mode_shift;

2也就是10 左移30位 代表10 00000 00000 00000 00000 00000 00000 

父容器指定乙個可用大小,view的大小不能超過這個值,layoutparams wrap_content

mode+size= measurespec

viewgroup的測量過程

measure-->onmeasure(測量子控制項寬高)-->setmeasuredimension-->setmeasuredismensionraw(儲存自己的寬高)

view 的測量過程

measure-- >onmeasure-->setmeasuredimension-->setmeasuredimensionraw(儲存自己的寬高)

viewgroup的繪製流程

1.繪製背景 drawbackground(canvas)

2.繪製自己ondraw(canvas)

3.繪製子view dispatchdraw(canvas)

4.繪製前景,滾動條等裝飾ondrawforeground(canvas)

view的繪製過程

1.繪製背景 drawbackground(canvas)

2.繪製自己ondraw(canvas)

3.繪製前景,滾動條等裝飾ondrawforeground(canvas)

viewgroup 布局過程

layout(確定自己的位置,4個點位置)->onlayout(j進行字view的布局)

view的布局過程

layout(確定自己的位置,4個點位置)

自定義布局的 時候需要實現3個方法

onmeasure-->onlayout(容器)->ondraw()  

自定義控制項學習筆記(2 3)

一 三種方法 protected virtual void render htmltextwriter writer 編寫客戶端的呈現 protected virtual void renderchildren htmltextwriter 輸出伺服器控制項的子級內容 protected virtu...

學習筆記之自定義控制項

學習初衷 在工作實際開發過程中,原有的安卓控制項已不能滿足實際的功能需求,而且有些應用還需要一些獨特的展示效果,這時就需要自定義控制項來定製控制項去滿足我們的需求了。public class customview extends view public customview context cont...

自定義控制項學習筆記(2 3)

一 三種方法 protected virtual void render htmltextwriter writer 編寫客戶端的呈現 protected virtual void renderchildren htmltextwriter 輸出伺服器控制項的子級內容 protected virtu...