2009年12月13日 星期日

深入淺出Android程式設計(26)-如何將介面升級到以XML方式來排版,以「Hello,Android!」專案說明

在這個章節要來介紹有關如何將介面升級到以XML方式來排版,以「Hello,Android!」專案說明。

如何將介面升級到以XML方式來排板

在上一個章節,我們所介紹的「Hello,Android!」專案是用開發人員稱之為程式化開發的介面,也就是說直接用程式碼來建構使用者介面,但是,這樣的建構介面的方式會發生許多問題,而小小的排版變動可能導致大部分的程式變更,最大的問題是容易忘記的是如何把正確的介面顯示在螢幕上,這可能導致發生錯誤並浪費時間除錯。

這也是為什麼Android SDK會提供另一種介面的建立模式,使用XML排版檔案來記錄介面的資料,最簡單了解的方法就是看下述的範例,下面的XML排版檔案內容就是跟剛編譯的程式同樣的的排版建構:




在上述的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檔用來索引定義在這個檔案的內裡使用的資源,開發人員可以在程式碼內使用這個類別來做為方便參考的索引記錄。

參考資料:
Android SDK Document http://code.google.com/android/documentation.html

2 則留言:

samchang0302 提到...

您好,我是剛接觸android的新手,我下載完android sdk後,在eclipse裡面要新增android的專案時,最後都會出現以下類似錯誤訊息:

SamAndroid] ERROR: Unable to open class file C:\Documents and Settings\sam\workspace\SamAndroid\gen\com\example\hello\R.java: No such file or directory


可是明明有這個package的檔啊?!
另外我嘗試用SDK現有的source建立新專案卻發生

com.android.ide.eclipse.adt.internal.project.AndroidManifestHelper] Unable to read C:\Documents and Settings\sam\My Documents\android-sdk-windows\AndroidManifest.xml: java.io.FileNotFoundException: C:\Documents and Settings\sam\My Documents\android-sdk-windows\AndroidManifest.xml (系統找不到指定的檔案。)


請問我是不是有東西沒有裝好?!

cmh 提到...

你好,這篇文章的上半段似乎遺漏完整的main.xml內容.