Android開發教學
Android 開發環境配置
Android 架構
Android 應用組件
Android Hello World示例
Android 資源組織和訪問
Android Activity
Android Service
Android廣播接收器
Android內容提供者
Android碎片/片段
Android Intent過濾器
Android UI佈局
Android LinearLayout
Android RelativeLayout
Android TableLayout
Android AbsoluteLayout
Android FrameLayout
Android ListView
Android GridView
Android UI控件
Android TextView
Android EditText
Android AutoCompleteTextView
Android Button
Android ImageButton
Android CheckBox
Android ToggleButton
Android RadioButton
Android RadioGroup
Android事件處理
Android樣式和主題
Android樣式示例
Android主題示例
Android自定義組件
Android拖放
Android通知
Android基於位置服務
Android發送電子郵件
Android發送短信/SMS
Android撥打電話
發佈Android應用
ArrayAdapter
SimpleCursorAdapter
Android ProgressDialog
Android Spinner
使用活動代碼自定義Android組件
使用佈局文件自定義Android組件
Android自定義組件及屬性
Android Alertdialog(警告對話框)
Android Animation(動畫)實例
Android音頻捕獲(錄音)
Android音頻管理器實例
Android AutoCompleteTextView(自動完成)實例
Android最佳實踐
Android Bluetooth(藍牙)實例
Android Camera(攝像頭)
Android Clipboard(複製/剪貼板)
Android自定義字體
Android數據備份
Android Gestures/手勢
Android圖片效果
Android圖片切換
Android內部存儲
Android JetPlayer實例
Android JSON解析器
Android加載Spinner
Android本地化
Android登錄實例
Android MediaPlayer(多媒體播放)

Android 資源組織和訪問

在許多Android項目中,有很多東西要用來建立一個良好的Android應用程序。除了編碼應用各種資源,如:位圖,顏色,佈局定義,用戶界面字符串,動畫,靜態內容。在res/目錄下,這些資源一直保持在各自子目錄。

這一小節將學習如何組織應用程序資源,指定替代資源,並在應用程序訪問它們。

組織資源

將每種類型的資源在一個特定項目的 res/目錄的子目錄。例如,這裏有一個簡單的項目文件層次:

MyProject/
src/
MyActivity.java
res/
drawable/
icon.png
layout/
activity_main.xml
info.xml
values/
strings.xml  

 res/目錄中包含不同的子目錄的不同資源。在這裏有一個圖像資源,兩個佈局資源和一個字符串資源文件。下表給出了詳細的項目在 res/目錄裏面支持的資源。

目錄

資源類型

anim/

定義屬性的動畫XML文件。它們被保存在res/anim/文件夾,並從R.anim類訪問

color/

定義的顏色狀態列表的XML文件。它們被保存在res/color/ ,並從R.color類訪問

drawable/

像被編譯成位圖。.png, .jpg, .gif 或XML文件,狀態列表,圖形,動畫可繪製的圖像文件。它們被保存在res/drawable/,並可從R.drawable類訪問

layout/

定義用戶界面佈局的XML文件。它們被保存在res/layout/,並可從R.layout類訪問

menu/

定義應用程序菜單,如選項菜單,上下文菜單或子菜單的XML文件。它們被保存在res/menu/,並可從R.menu類訪問

raw/

任意文件保存在其原始形式。您需要callResources.openRawResource()與所述資源ID,即R.raw.filename來打開這樣的原始文件

values/

包含簡單的值,如字符串,整數和顏色的XML文件。例如,這裏有一些文件名約定資源,可以創建在該目錄中:

  • arrays.xml資源數組,並可從R.array類訪問

  • integers.xml資源整數,並可從R.integerclass訪問

  • bools.xml資源布爾型,並可從R.bool類訪問

  • colors.xml爲顏色值,並可從R.color類訪問

  • dimens.xml爲維度值,並可從R.dimen類訪問

  • strings.xml爲字符串值,並且可從R.string類訪問

  • styles.xml爲樣式並可從R.style類訪問

xml/

可以通過調用Resources.getXML()來讀取在運行時任意的XML文件。可以在這裏保存各種配置文件,這些文件可在運行時使用

替代資源

應用程序提供替代資源以支持特定的設備配置。例如,包括替代繪製資源(ie.images),針對不同的語言不同的屏幕分辨率並替代字符串資源。在運行時Android 檢測當前設備的配置,併爲應用程序加載適當的資源。

要指定一組資源的配置具體的替代,請遵循以下步驟:

  • 創建新目錄在res/ 目錄下,命名形式如 <resources_name>-<config_qualifier>。這裏resources_name 是在上表中提到的資源,如layout,drawable 等限定符將指定一個單獨的配置,要使用這些資源。可以查看官方文檔的完整列表,限定符爲不同類型的資源。

  • 在這個新的目錄中保存相應的替代資源。資源文件必須被命名爲默認的資源文件,如下面的例子所示的完全一樣,但這些文件具有特定內容的替代。例如,雖然圖像的文件名是相同的,但對高分辨率屏幕,其分辨率會很高。

下面是一個例子,它指定一個默認的屏幕和高分辨率屏幕的替代圖像的圖像。

MyProject/
src/
MyActivity.java
res/
drawable/
icon.png
background.png
drawable-hdpi/
icon.png
background.png
layout/
activity_main.xml
info.xml
values/
strings.xml

下面是另一個例子,指定一種默認語言爲阿拉伯語並指定替代佈局。

MyProject/
src/
MyActivity.java
res/
drawable/
icon.png
background.png
drawable-hdpi/
icon.png
background.png
layout/
activity_main.xml
info.xml
layout-ar/
main.xml
values/
strings.xml

訪問資源

在應用程序開發中,需要訪問定義的資源,無論是在代碼還是在佈局XML文件。下面的部分介紹瞭如何訪問資源在這兩個場景:

訪問資源代碼

當Android應用程序被編譯時,會產生一個R類,其中包含在res/ 目錄中的所有可用資源的資源ID。使用R類直接訪問該子目錄和資源名稱或資源ID。 

示例:

要訪問 res/drawable/myimage.png,並設置一個ImageView 可使用下面的代碼:

ImageView imageView = (ImageView) findViewById(R.id.myimageview); imageView.setImageResource(R.drawable.myimage);

下面第一行代碼,使用R.id.myimageview  id 爲myimageview定義佈局文件。第二行代碼使用 R.drawable.myimage 得到的圖像名稱myimage ,在 /res子目錄下。

示例:

考慮在下一個例子 res/values/strings.xml 有以下定義:

<string name="hello">Hello, World!

現在,可以設置一個TextView對象msg 文字使用資源ID如下:

TextView msgTextView = (TextView) findViewById(R.id.msg); msgTextView.setText(R.string.hello);

示例:

考慮一個佈局res/layout/activity_main.xml 如以下的定義:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello, I am a TextView" /> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello, I am a Button" />

這個應用程序代碼的一個活動將加載此佈局,在onCreate()方法如下:

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_activity); }

XML中訪問資源

考慮下面的XML資源res/values/strings.xml文件,包括顏色資源和一個字符串資源:

<color name="opaque_red">#f00 <string name="hello">Hello!

現在,可以利用這些資源,在下面的佈局文件中設置文本顏色和文本字符串如下:

<EditText xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:textColor=**"@color/opaque_red"** android:text=**"@string/hello" />**

現在,如果將再次通過前面的章節瞭解,例如:Hello World!應用,將有助於更好的理解本小節介紹的概念。瞭解在前面的小節中是如何利用各種資源的基本操作。