在這個章節要來介紹有關如何將介面升級到以XML方式來排版,以「Hello,Android!」專案說明。
如何將介面升級到以XML方式來排板
在上一個章節,我們所介紹的「Hello,Android!」專案是用開發人員稱之為程式化開發的介面,也就是說直接用程式碼來建構使用者介面,但是,這樣的建構介面的方式會發生許多問題,而小小的排版變動可能導致大部分的程式變更,最大的問題是容易忘記的是如何把正確的介面顯示在螢幕上,這可能導致發生錯誤並浪費時間除錯。
這也是為什麼Android SDK會提供另一種介面的建立模式,使用XML排版檔案來記錄介面的資料,最簡單了解的方法就是看下述的範例,下面的XML排版檔案內容就是跟剛編譯的程式同樣的的排版建構:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="Hello,Android!"/>
在上述的XML檔案中的標籤(Tag)可以自由使用,結構也很簡單,標籤(Tag)的名稱就是View物件的類別名稱,在這個範例,標籤(Tag)就只有一個「TextView」,開發人類可以使用任何繼承自View物件的類別做為標籤(Tag)名稱,包含一些開發人員所做的類別,這樣的結構比較容易快速建立界面,比起開發人員的程式碼要簡單的多了,這樣的模式受到Web開發的啟示,將參數從程式邏輯抽離只用來填入與取得資料。
在這個XML使用了一些屬性,大致說明如下:
屬性:xmlns:android
說明:名稱空間宣告,讓Android工具參考Android名稱空間的一般屬性,大部分的XML排版檔必須使用這個名稱空間。
屬性:android:layout_width
說明:這個屬性宣告View要佔螢幕多少空間,在這個例子,唯一的View要佔用全部的螢幕,所以使用「fill_parent」這個參數,就是填滿的意思。
屬性:android:layout_height
說明:就像android:layout_width的屬性一樣,除了它是指螢幕可用的高度。
屬性:android:text
說明:設定TextView包含的文字屬性,這上述的範例中,就是設定成「Hello,Android!」
那麼這個XML檔案會放在那裡呢?目前的設定是放到專案目錄下的res目錄底下的layout目錄,預設的檔案名稱是main.xml,如圖72所示。
圖72
下一步,打開Package Explorer下原始碼目錄內的R.java檔案,看起來的內容如下所述:
public final class R {
public static final class attr {
};
public static final class drawable {
public static final int icon=0x7f020000;
};
public static final class layout {
public static final int main=0x7f030000;
};
public static final class string {
public static final int app_name=0x7f040000;
};
};
Android專案的R.java檔用來索引定義在這個檔案的內裡使用的資源,開發人員可以在程式碼內使用這個類別來做為方便參考的索引記錄。