? ? ? ? 隨著學(xué)習(xí)的深入病曾,大家對界面,控件的使用也越來越復(fù)雜漾根,有時候泰涂,API提供的view已經(jīng)如法滿足我們的使用需求,對此辐怕,我們可以開發(fā)自定義view逼蒙。網(wǎng)上的開發(fā)自定義View教程很多,這里我們做一下詳細(xì)的梳理寄疏。
首先是牢,我們來了解一下View:
在Android APP中,所有的用戶界面元素都是由View和ViewGroup的對象構(gòu)成的陕截。
View和ViewGroup類是所有控件的父類驳棱。View是繪制在屏幕上的用戶能與之交互的一個對象。而ViewGroup則是一個用于存放其他View(和ViewGroup)對象的布局容器农曲。
View類是Android的一個超類社搅,這個類幾乎包含了所有的屏幕類型驻债。每一個View都有一個用于繪圖的畫布,這個畫布可以進行任意擴展形葬。在游戲開發(fā)中往往需要自定義視圖(View),這個畫布的功能更能滿足我們在游戲開發(fā)中的需要合呐。在android中,任何一個View類都只需重寫onDraw 方法來實現(xiàn)界面顯示笙以,自定義的視圖可以是復(fù)雜的3D實現(xiàn)淌实,也可以是非常簡單的文本形式等。
在Android中猖腕,View組件的作用類似于Swing編程中的JPanel拆祈,它只是一個矩形的空白區(qū)域,View組件沒有任何內(nèi)容倘感。對于android應(yīng)用的其他UI組件來說缘屹,它們都繼承了View組件,然后在View組件提供的空白區(qū)域上繪制外觀侠仇。基于Android UI組件的實現(xiàn)原理犁珠,開發(fā)者完全可以開發(fā)出項目定制的組件
上圖是一個簡單的UI布局的層次圖
當(dāng)開發(fā)者打算派生自己的UI組件時逻炊,首先定義一個繼承View基類的子類,然后重寫View類的一個或多個方法
View的布局可以重寫的方法有這些:(摘自百度經(jīng)驗)
常用的方法可以重寫:(摘自百度經(jīng)驗)
自定義空間有三種實現(xiàn)方式:
1.組合控件犁享,簡單說來就是將系統(tǒng)的一些控件組合成一個新的控件便于使用余素。
2.自繪控件,就是自己繪制的控件炊昆,主要是在View的onDraw方法中實現(xiàn)桨吊。
3繼承控件,繼承系統(tǒng)已有的控件凤巨,在原有控件的屬性上视乐,引入新的屬性以滿足需求
其中,最為復(fù)雜的即為第三種敢茁,繼承View佑淀,重寫onDraw方法下面是網(wǎng)上一個簡單的自定義View的例子,用的即為第三種方法:
自定義View代碼:
在布局中加入:
設(shè)置寬高為match_parent彰檬,并設(shè)置背景色和自定顏色伸刃,處理padding:
在onDraw()方法中設(shè)置padding:
運行效果圖: