自訂控制項(3):view的繪製原理,view繪製
自訂UI控制項,需繼承 View類或View的子類,並重載View類中的一些方法,不必都重載,但至少要重載onDraw( )。
| 類別 |
方法 |
描述 |
| Creation |
Constructors |
|
| onFinishInflate() |
當View和它的所有子物件從XML中匯入之後,調用此方法 |
| Layout |
onMeasure(int, int) |
View會調用此方法,來確認自己及所有子物件的大小 |
| onLayout(boolean, int, int, int, int, int, int) |
當View要為所有子物件分配大小和位置時,調用此方法 |
| onSizeChanged(int, int, int, int) |
當View大小改變時,調用此方法 |
| Drawing |
onDraw(Canvas) |
當View要繪製它的內容時,調用此方法 |
| Event processing |
onKeyDown(int, KeyEvent) |
當一個新的按鍵事件發生時,調用此方法 |
| onKeyUp(int, KeyEvent) |
當一個按鍵釋放事件發生時,調用此方法 |
| onMotionEvent(MotionEvent) |
當一個動作事件(如觸摸)發生時,調用此方法 |
| Focus |
onFocusChanged(boolean, int) |
當View獲得或失去焦點時,調用此方法 |
| Attaching |
onAttachedToWindow() |
當View附加到一個表單上時,調用此方法 |
| onDetachedFromWindow() |
當View離開它的表單時,調用此方法 |
View的繪製過程:onAttachedToWindow -> onMeasrue -> onSizeChanged -> onLayout -> onDraw
Activity中繪製View:通過setContentView( ) 傳入層次樹的根節點引用 -> Activity被啟用並獲得焦點 -> 請求根節點計算並繪製樹 -> ViewGroup結合自己的有效空間和子View要求的LayoutParams來布局子view,並調用子view的Draw( )方法來繪製之