在前面的例子中,我們忽略了一個重要的原則,在代碼和 Layout 中,直接使用了字符串常量,比如:
<Button android:text=”Pattern”
android:id=”@+id/btnPattern”
android:layout_width=”wrap_content”
android:textColor=”@color/black”
android:checked=”true”
android:layout_height=”wrap_content”>
</Button>
我們直接定義 Button 的顯示內(nèi)容為“Pattern”。如果你想你的應用支持多種設備,多種語言,那么直接使用字符串常量會給程序的移植帶來很大的問題。因此設計應用是一個重要原則是盡可能的將 UI 相關(guān)的資源(如圖像,文字等)以外部資源的形式來定義。
Android 支持多種資源類型,對應每一種資源,你可以定義一個缺省資源和多個可選資源(根據(jù)設備配置或語言類型等)。
缺省資源定義成與設備配置和語言無關(guān),用在找不到與設備配置對應資源時使用。比如說你可以將缺省 UI Layout 定義在 res/layout 中, 而將屏幕橫置(Landscape)定義在 res/layout-land 中。Android 在運行時會根據(jù)設備配置自動選擇合適的資源。
下圖顯示兩種不同配置的設備中沒有定義可選資源時都使用缺省資源定義:
http://wiki.jikexueyuan.com/project/android-development-tutorial/images/34.png" alt="" />
下圖應用定義給兩種不同設備定義了兩種資源,一是缺省資源,一是為橫屏顯示時的資源:
http://wiki.jikexueyuan.com/project/android-development-tutorial/images/35.png" alt="" />
在定義可選資源時,Android 對可選資源的命名方法有一定的規(guī)定,具體可以參見http://developer.android.com/guide/topics/resources/providing-resources.html