界面布局(Layout)是用戶界面結(jié)構(gòu)的描述,定義了界面中所有的元素、結(jié)構(gòu)和相互關(guān)系。
界面布局(Layout)是為了適應多種Android設(shè)備上的屏幕而設(shè)計的解決方案:它們可以有不同的像素密度、尺寸和不同的縱橫比。典型的Android設(shè)備,如HTC G1手機,甚至允許應用程序運行時改變屏幕的方向(縱向或橫向),因此布局的基礎(chǔ)設(shè)施需要能夠應對這種情況。布局的目的是為開發(fā)人員提供一種方式來表示View之間的物理關(guān)系,因為它們是在屏幕上繪制。作為Android的界面布局,它使用開發(fā)需求來滿足與開發(fā)要求接近的屏幕布局。
Android開發(fā)者使用術(shù)語“布局”,指的是兩種含意中的一種,布局的兩種定義如下:
·一種資源,它定義了在屏幕上畫什么。布局資源存儲在應用程序的/res/layout資源目錄下的XML文件中。布局資源簡單地說就是一個用于用戶界面屏幕,或屏幕的一部分,以及內(nèi)容的模板;
·一種視圖類,它主要是組織其他控件。這些布局類(LinearLayout,RelativeLayout,TableLayout等)用于在屏幕上顯示子控件,如文本控件、按鈕或圖片。
Eclipse的Android開發(fā)插件包含了一個很方便的用于設(shè)計和預覽布局資源的布局資源設(shè)計器。這個工具包括兩個標簽視圖:布局視圖允許你預覽在不同的屏幕下及對于每一個方向控件會如何展現(xiàn);XML視圖告訴你資源的XML定義。
這里有一些關(guān)于在Eclipse中使用布局資源編輯器的技巧:
·使用概要(Outline)窗格在你的布局資源中添加和刪除控件;
·選擇特定的控件(在預覽或概要窗口)并使用屬性窗格來調(diào)整特定控件的屬性;
·使用XML標簽來直接編輯XML定義。
很重要的是要記住一點,Eclipse布局資源編輯器不能完全精確的模擬出布局在終用戶設(shè)備上的呈現(xiàn)形式。對此,必須在適當配置的模擬器中測試,更重要的是在目標設(shè)備上測試。而且一些“復雜”控件,包括標簽或視頻查看器,也不能在Eclipse中預覽。
聲明Android程序的界面布局有兩種方法:
·使用XML文件描述界面布局;
·在程序運行時動態(tài)添加或修改界面布局。
用戶既可以獨立使用任何一種聲明界面布局的方式,也可以同時使用兩種方式。
使用XML文件聲明界面布局有以下3個特點:將程序的表現(xiàn)層和控制層分離;在后期修改用戶界面時,無須更改程序的源代碼;用戶還能夠通過可視化工具直接看到所設(shè)計的用戶界面,有利于加快界面設(shè)計的過程,并且為界面設(shè)計與開發(fā)帶來極大的便利性。
設(shè)計程序用戶界面方便且可維護的方式是創(chuàng)建XML布局資源。這個方法極大地簡化了UI設(shè)計過程,將許多用戶界面控件的布局,以及控件屬性定義移到XML中,代替了寫代碼。它適應了UI設(shè)計師(更關(guān)心布局)和開發(fā)者(了解Java和實現(xiàn)應用程序功能)潛在的區(qū)別。開發(fā)者依然可以在必要時動態(tài)地改變屏幕內(nèi)容。復雜控件,像ListView或GridView,通常用程序動態(tài)地處理數(shù)據(jù)。
XML布局資源必須存放在項目目錄的/res/layout下。對于每一屏(與某個活動緊密關(guān)聯(lián))都創(chuàng)建一個XML布局資源是一個通用的做法,但這并不是必需的。理論上來說,可以創(chuàng)建一個XML布局資源并在不同的活動中使用它,為屏幕提供不同的數(shù)據(jù)。如果需要的話,也可以分散布局資源并用另外一個文件包含它們。
現(xiàn)在把注意力轉(zhuǎn)向?qū)M織其他控件很有用的布局控件。Android 中 Layout 的列表,如表-1所示。
表-1 Layout分類表
Layout類別 |
說明 |
線性布局LinearLayout |
線性(水平或垂直)排版的容器 |
框架布局FrameLayout |
單一界面的容器 |
表格布局TableLayout |
以表格方式排版的容器 |
相對布局RelativeLayout |
以相對坐標排版的容器 |
絕對布局AbsoluteLayout |
以絕對坐標排版的容器,不推薦使用 |