算起來,接觸自定義View也有大半年時間了,一直沒機會好好總結一下,好記性不如爛筆頭,遂決定從今天開始系統的整理相關知識。
還是那句話,小女不才,入行時間短,火候尚淺,有說錯的地方,還請各位俠士不吝賜教,在此謝過。(*≧▽≦*)
更多內容可查看:
(一)自定義View的分類
(二)自定義View的構造函數及自定義屬性點擊打開鏈接
(三)自定義View常用的方法(測量、繪製、位置)
(四)自定義View的具體實現
(五)事件分發機制
一、自定義View的分類
關於自定義控件的分類,看了很多資料以後,下面兩種分類法是我個人比較認同的(非我本人原創)。
①按照所繼承的基類劃分
繼承View:這種自定義控件最大的特點是不包含子控件,當我們需要定製一個不同於原生控件且有“個性”的控件(如圓形頭像、水波進度條)時,我們採用這種方式,很多情況下可以採用其他方式代替,比如圓形頭像完全可以使用imageView+圓形背景圖,但後者往往內存消耗過大,製作素材麻煩。
繼承ViewGroup:這種自定義控件,常常利用現有組件(各種layout)的特定佈局方式來組成新的控件。如流式標籤。
②按照實現的方式劃分
第二種分類方式較之前者,更注重於自定義View的實現方式。
自繪控件:顧名思義,這一類自定義控件注重控件本身的特性,如形狀、動畫效果等,一般繼承View(但也不絕對,看具體需求),重寫onDraw()方法完成繪製,具體繪製的過程請參照 (三)自定義View常用的方法(測量、繪製、位置)
組合控件:組合控件的特點是使用原生控件組合成新的控件。
繼承控件:繼承控件的特點是利用了父控件本身的一些特性,在此基礎上添加新的功能。充分利用已有資源,避免了重複的開發。
掌握自定義控件的分類,讓我們面對具體的需求能快速而準確的決定使用哪一種定義方式,是學習自定義控件最基礎的一步。