Android自帶了很多優(yōu)秀的標準視圖與組件,但有時為追求獨特的應(yīng)用視覺效果,我們?nèi)孕鑴?chuàng)建定制視圖。 雖然定制視圖種類繁多,但大致可以分為以下兩大類別。
1、簡單視圖:簡單視圖內(nèi)部也可以很復雜;之所以歸為簡單類別,是因為簡單視圖不包括子視圖。而且,簡單視圖幾乎總是會執(zhí)行定制繪制。
2、聚合視圖:聚合視圖由其他視圖對象組成。聚合視圖通常管理著子視圖,但不負責執(zhí)行定制繪制。圖形繪制任務(wù)都委托給了各個子視圖。
3、創(chuàng)建定制視圖所需的三大步驟如下:
(1)選擇超類,對于簡單定制視圖而言,View是個空白畫布,因此它作為超類最常見。對于聚合定制視圖,我們應(yīng)選擇合適的超類布局,比如FrameLayout。
(2)繼承選定的超類,并至少覆蓋一個超類構(gòu)造方法。
(3)覆蓋其他關(guān)鍵方法,以定制視圖行為。
今天,南昌APP制作開發(fā)公司小編為大家介紹一下定制視圖中創(chuàng)建 BoxDrawingView視圖的方法。
BoxDrawingView是個簡單視圖,同時也是View的直接子類。
以View為超類,新建BoxDrawingView類。在BoxDrawingView.java中,添加兩個構(gòu)造方法。具體操作如下代碼所示。
初始的BoxDrawingView視圖類(BoxDrawingView.java)
public class BoxDrawingView extends View {
// Used when creating the view in code
public BoxDrawingView(Context context) {
this(context, null);
}
// Used when inflating the view from XML
public BoxDrawingView(Context context, AttributeSet attrs) {
super(context, attrs);
}
}
這里之所以添加了兩個構(gòu)造方法,是因為視圖可從代碼或者布局文件實例化。從布局文件中實例化的視圖可收到一個AttributeSet實例,該實例包含了XML布局文件中指定的XML屬性。 即使不打算使用構(gòu)造方法,按習慣做法也應(yīng)添加它們。
有了定制視圖類,我們來更新fragment_drag_and_draw.xml布局文件以使用它,具體做法如下代碼所示。
在布局中添加BoxDrawingView(fragment_drag_and_draw.xml)
注意,我們必須使用BoxDrawingView的全路徑類名,這樣布局inflater才能夠找到它。布局 inflater解析布局XML文件,并按視圖定義創(chuàng)建View實例。如果元素名不是全路徑類名,布局inflater 會轉(zhuǎn)而在android.view和android.widget包中尋找目標。如果目標視圖類放置在其他包中,布局inflater將無法找到目標并最終導致應(yīng)用崩潰。
因此,對于android.view和android.widget包以外的定制視圖類,必須指定它們的全路徑類名。
運行DragAndDraw應(yīng)用,一切正常的話,屏幕上會出現(xiàn)一個空視圖,如下圖所示。
未繪制的BoxDrawingView
接下來,讓BoxDrawingView監(jiān)聽觸摸事件,并實現(xiàn)在屏幕上繪制矩形框。
以上就是小編為大家介紹的關(guān)于在南昌APP開發(fā)中創(chuàng)建 BoxDrawingView視圖的方法,其實方法很簡單,估計大家看一遍就會了。不過如果還有哪些不太明白的地方也不用擔心,可隨時來電咨詢百恒網(wǎng)絡(luò),我們專業(yè)為您解答!