一般步驟為:
1.創(chuàng)建控件的類文件,定義其功能邏輯。一般繼承自現(xiàn)有控件或者View
2.在res/values目錄下創(chuàng)建attrs.xml文件,用于定義該控件的xml標(biāo)簽屬性,方便在使用xml聲明該控件時(shí)設(shè)置參數(shù)
3.實(shí)現(xiàn)該控件的構(gòu)造器,在構(gòu)造器中把xml標(biāo)簽屬性與后臺(tái)代碼中的變量相連接
4.完成以上步驟之后,便可使用該控件
注意: View三個(gè)構(gòu)造函數(shù):
public View (Context context) 是在java代碼創(chuàng)建視圖的時(shí)候被調(diào)用 ,當(dāng)不需要使用xml聲明或者不需要使用inflate動(dòng)態(tài)加載時(shí)候,實(shí)現(xiàn)此構(gòu)造函數(shù)即可 。 如果是從xml填充的視圖,就不會(huì)調(diào)用這個(gè)
public View (Context context, AttributeSet attrs) 當(dāng)需要在xml中聲明此控件,則需要實(shí)現(xiàn)此構(gòu)造函數(shù)。并且在構(gòu)造函數(shù)中把自定義的屬性與控件的數(shù)據(jù)成員連接起來,這個(gè)是在xml創(chuàng)建但是沒有指定style的時(shí)候被調(diào)用, 即寫在xml里的 調(diào)用2個(gè)參數(shù)的 attr里邊傳過來的是 xml里邊對(duì)應(yīng)的height width等參數(shù),包括自己定義的參數(shù)。
public View (Context context, AttributeSet attrs, int defStyle) 接受一個(gè)style資源
View重要的回調(diào)
onFinishInflate() 在此控件被通過xml聲明的方式創(chuàng)建之后調(diào)用
onMeasure(in,int) 計(jì)算本控件的寬高,如果繼承自原有控件,則一般不需要重寫此方法
onLayout() 用于布局控件,對(duì)于不是繼承ViewGroup的控件,一般不需要重寫此方法
onDraw() 在繪制控件時(shí)候調(diào)用,控件具體長(zhǎng)什么樣子就在此方法中實(shí)現(xiàn)
,