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