自訂控制項(3):view的繪製原理,view繪製

來源:互聯網
上載者:User

自訂控制項(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( )方法來繪製之

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.