自定義View,也可以稱為自定義控件,通過自定義View可以使得控件實現(xiàn)各種定制的效果。

  實現(xiàn)自定義View,需要掌握View的底層工作原理,比如View的測量過程、布局流程以及繪制流程,除此之外,還需要掌握View常見的回調(diào)方法。而對于那些具有滑動效果的自定義View,我們還需要處理View的滑動,如果遇到滑動沖突則需要處理相應(yīng)的滑動沖突。

  下面是View的常見回調(diào)方法:

  • 構(gòu)造方法

  • onAttach

  • onVisibilityChanged

  • onDetach

  • onFinishInflate

  • onSizeChanged

  • onMeasure

  • onLayout

  • onTouchEvent

  自定義控件的實現(xiàn)手段可簡要分為四種類:

  • 繼承View重寫onDraw方法,這種方法主要是用于實現(xiàn)一些不規(guī)則的效果,采用這種方式需要自己支持wrap_content,并且處理padding。

  • 繼承ViewGroup派生特殊的Layout,這種方法主要是用于實現(xiàn)自定義的布局,當(dāng)某種效果看起來像是幾個View組合在一起時,可以采用這種方法來實現(xiàn)。采用這種方法是需要合理處理ViewGroup的測量和布局這兩個過程,并同時處理子元素的測量和布局過程。

  • 繼承特定的View,用于拓展已有的View的功能。

  • 繼承特定的ViewGroup(如LinearLayout、RelativeLayout),其適用情形和方法2 類似。

  在自定義View中需要的注意點:

  應(yīng)當(dāng)遵守Android標準控件的規(guī)范(如命名、可配置、事件處理、狀態(tài)保存及恢復(fù)等)

  • 命名表意明確

  • 控件屬性可以在XML中配置

  • 讓View支持wrap_content和padding(下文會具體講到)

  • 在View中盡量不使用Handler,因為View中自帶post系列的方法。

  • 自定義View的內(nèi)存泄漏問題(如果有線程或者動畫,需要及時停止)

  • View的滑動沖突(在View帶有滑動嵌套的情形,需要處理好滑動沖突)

  • 具有一定的交互性,如按下、點擊等

  • 自定義View內(nèi)部實現(xiàn)狀態(tài)保存和恢復(fù)的機制

  • 兼容性

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負責(zé)任的教育,學(xué)習(xí)改變命運,軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式