Android學習筆記1 ——資源 (一)

  本文參考自《精通android3》      

        在android程序設計中,資源扮演者重要的角色,它是可以綁定到可執行程序中的文件或值,無需重新編譯和重新部署應用程序就能夠更改它們。android依靠資源以聲明性方式定義UI組件,熟悉的資源示例包括字符串、顏色和位圖等。下面概要介紹下資源的使用。

1.字符串資源

        android允許在一個或多個XML資源文件中定義多個字符串,這些XML文件位於工程的/res/values子目錄下,XML文件的名稱可任意指定,但常見的文件名是strings.xml。如:

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns="http://schemas.android.com/apk/res/android">
    <string name="app_name">Resource</string>
    <string name="action_settings">Settings</string>
    <string name="hello_world">Hello world!</string>
</resources>

        當創建或更新此文件時,ADT插件將使用三個指定的字符串資源的唯一ID,在應用程序的根包R.java中自動創建或更新一個Java類。打開/gen/com..../R.java文件,會發現如下代碼:

public final class R{
......
    public static final class string {
        public static final int action_settings=0x7f050001;
        public static final int app_name=0x7f050000;
        public static final int hello_world=0x7f050002;
    }
......
}

這是一個靜態的內部類,它無需實例化即可直接調用,另外“action_settings”、“app_name”等是ADT插件生成的唯一ID,其類型爲int型,而非String類型,在使用時調用R.string.action_settings即可,android會自動將其解析爲String。


2.佈局資源

        在android中,屏幕的視圖通常以資源的形式從XML文件加載,這些XML文件稱爲佈局資源。在來看看MainActivity.java文件的代碼段:

public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}

        從setContentView(R.layout.activity_main)這裏可以看到一個靜態類R.layout(同樣定義在/gen/com..../R.java文件中),這個類中常量activity_main(同字符串資源一樣也是int型)指向XML佈局資源文件定義的一個View,此文件名爲activity_main.xml,在/res/layout目錄下,代碼清單如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />
</RelativeLayout>

        代碼清單中佈局文件定義了一個根節點RelativeLayout,它包含了一個TextView。android中,需要爲每個屏幕(或Activity)定義一個獨立的佈局文件,如果需要繪製兩個屏幕,則需要兩個佈局文件。ADT會根據每個文件的文件名生成一個唯一常量以供編碼使用。


3.資源引用語法

        無論什麼類型的android資源,都使用它們在JAVA源代碼中的ID來標識,將ID分配給XML文件中資源的語法稱爲資源引用語法,其語法結構爲:

@[package:]type/name

        其中type對應於R.java中一種可用的資源類型命名空間,包括:R.drawable、R.id、R.layout、R.string、R.attr、R.plural、R.array。 name部分是提供給資源的名稱,如上面提到過的activity_main。 package可有可無,目前尚不知如何使用。


通過上面我們可以知道android資源的大致使用方法,後面將進一步學習各種資源的具體使用。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章