注意,linearLayout元素包含著TextView和Button。你可以嵌套另外的LinearLayout,來增加view的長度,或者增加一個(gè)更復(fù)雜的布局。
更多關(guān)于UI布局的信息,請參考 Declaring Layout章節(jié)。
你可以在你的布局里用很多種布局方式,使用很多不同類型的viewGroup,你可以定義無限多的子view或者子viewGroup。android提供一些預(yù)先定義好的布局,包括:LinearLayout-線性布局, RelativeLayout-關(guān)系布局, TableLayout-表格布局, GridLayout 網(wǎng)格布局等。他們提供一些獨(dú)特的參數(shù)用來定義view的位置和布局結(jié)構(gòu)。
widget是一個(gè)服務(wù)于用戶與界面交互的view對象。Android提供很多視圖小部件,如按鈕、尋則狂、文本輸入框、到呢個(gè),你可以很快的構(gòu)建自己的布局。一些小部件很復(fù)雜,像日期選擇器,一個(gè)時(shí)鐘,縮放控制。但你不會被Android平臺所提供的UI部件所限制,你可以自定義UI部件,可以繼承或者結(jié)合已經(jīng)存在的UI部件。
一旦你向界面添加了view或者widget,你可能會想他們怎樣與用戶進(jìn)行交互的,這樣你就可以執(zhí)行一些操作。添加UI事件,你需要做兩件事情:
。
多半情況下,這就是你怎樣監(jiān)聽事件:view 類包含了一些名如OnXXXListener的監(jiān)聽器,他們都有名為OnXXX()的回調(diào)方法。例如:View.onClickListener(這是處理點(diǎn)擊事件的),View.onTouchListener(處理觸摸事件),View
.onKeyListener(處理按鍵事件),所以如果你想讓view響應(yīng)點(diǎn)擊事件,比如按鈕被選中,你需要實(shí)現(xiàn)OnClickListener接口并且定義回調(diào)方法,并且用setOnClickListener()方法來注冊View。
如果你失信了自己的View類并且想要監(jiān)聽一些特殊的事件,那你應(yīng)該用這種方法。例如,你可以處理屏幕觸摸事件,處理滾動球事件,按鍵等事件。它允許你定義默認(rèn)的事件,即自定義的view的每個(gè)事件,確定這個(gè)時(shí)間是否會傳遞到一些字view。然后,他們調(diào)用view類的回調(diào)函數(shù),所以當(dāng)你自定義一個(gè)組件時(shí)才有機(jī)會用到這種方法。
應(yīng)用程序菜單是UI的另一個(gè)很重要的部分。Menu提供一些可靠的借口來展示程序的功能和一些設(shè)置。通常menu是通過按menu鍵才顯示的。然而,你可以讓用戶按下或者按住某一項(xiàng)時(shí)顯示menu菜單。
menu菜單也遵循view的層次結(jié)構(gòu),但不要自己定義。取而代之的是,你只需為你的activity定義onCreateOptionsMenu()和onCreateContextMenu()兩個(gè)回調(diào)方法即可,在適當(dāng)?shù)臅r(shí)間,Android會自動的繪制必要的視圖結(jié)構(gòu)并且menu的所包含的子項(xiàng)的。
Menu會處理他自己的時(shí)間。所以不需要注冊事件監(jiān)聽器,當(dāng)menu中的某一項(xiàng)被選中,系統(tǒng)會調(diào)用onOptionsItemSelected()方法或者onContextItemSelected()方法。
和應(yīng)用程序的布局很像,你可以用xml來配置你的menu項(xiàng)。
一旦你了解了創(chuàng)建用戶界面的基本原則。你可以瀏覽一些高級特征來創(chuàng)建更復(fù)雜的應(yīng)用程序接口。
一些時(shí)候,你不想用“硬代碼”來填充一些view的數(shù)據(jù),相反,你想讓view綁定額外的數(shù)據(jù)集。要這樣的話,你要定義一個(gè)AdapterView,每個(gè)子View里的數(shù)據(jù)都會被適配器填充。
適配器視圖對象 AdapterView是實(shí)現(xiàn)的ViewGroup接口,子類是由被給出的適配器對象決定的。適配器就像你的adapter視圖和數(shù)據(jù)源之間的適配器。這里有幾種適配器類的實(shí)現(xiàn)方式,對于特殊的任務(wù),例如自定義的適配器從一個(gè)Cursor來讀取數(shù)據(jù)庫的數(shù)據(jù),或者一耳光數(shù)組適配器從任意一個(gè)數(shù)組讀取數(shù)據(jù)。
你或許不滿意標(biāo)準(zhǔn)控件的外觀,你可以定制他們的風(fēng)格和主題來改變他們。
@ 一個(gè)style是一個(gè)格式化的屬性集,你作為布局的其中一個(gè)單元來使用他們。例如,你可以定義某些文本的文字大小和顏色作為特殊的view元素。
@ 一個(gè)theme主題是應(yīng)用程序中整個(gè)activity的個(gè)格式化的屬性集。例如,你可以定義窗體的邊框和面板的背景,并且設(shè)置menu的字體大小和顏色。它可以應(yīng)用在整個(gè)程序里。
風(fēng)格和主題屬于資源。Android提供一些默認(rèn)的風(fēng)格和主題資源來讓你使用?;蛘吣阋部梢宰约憾ㄖ扑麄儭?/div></font