結構圖:
從上往下一一介紹:
1、 src文件夾一看就是放源代碼的,自己編寫的!!
2、 gen下有跟src中一樣的包文件,包文件有一個R.java類,它是自動生成的一個類;該目錄不用我們開發人員維護, 但又非常重要的目錄 。 該目錄用來存放由 Android 開發工具所生成的目錄 。 該目錄下的所有文件都不是我們創建的,而是由ADT 自動生成的。該目錄下的 R.java 文件非常重要;
R.java 文件中默認有 attr 、 drawable 、 layout 、 string 等四個靜態內部類 , 每個靜態
內部類分別對應一種資源, 如 layout 靜態內部類對應layout 中的界面文件, 其中每個靜態內部類中的靜態常量分別定義一條資源標識符,如 “ publicstatic final int main =0x7f030000; ” 對應的是 layout 目錄下的 main.xml文件。具體的對應關系,如下圖。
現在已經理解了 R.java 文件中內容的來源 , 也即是當開發者在 res/ 目錄中任何一個子目錄中添加相應類型的文件之後, ADT 會在 R.java 文件中相應的匿名內部類當中自動生成一條靜態 int 類型的常量,對添加的文件進行索引。如果在 layout 目錄下在添加一個新的界面,那麼在 public static final class layout 中也會添加相應的靜態 int 常量。相反的 , 當我們再 res 目錄下刪除任何一個文件 , 其在 R.java 中對應的記錄會被 ADT 自動刪除 。再比如說我們在strings.xml添加一條記錄,在R.java 的 string 內部類中也會自動增加一條記錄。
R.java 文件會給我們開發程序帶來很大的方便 , 比如在程序中我們使用 “ public staticfinalint icon =0x7f020000; ”就可以找到其對應的 icon.png 這幅圖片。
R.java 文件除了有自動標識資源的 “ 索引 ” 功能之外 , 還有另一個主要的功能 , 當 re s目錄中的某個資源在應用中沒有被使用到 , 在該應用被編譯的時候系統就不會把對應的資源編譯到該應用的 APK 包中,這樣可以節省 Android 手機的資源。
3、 android 2.1/ 存放 Android 自身的 jar 包。
4、 assets/該目錄用來存放應用中用到的類似於視頻文件、 MP3 一些媒體文件。
5、 res/ res 是 resource 的縮寫 。 我們稱該目錄為資源目錄 。該目錄可以存放一些圖標、界面文件、應用中用到的文字信息。
res/目錄下有三個 dawable 文件夾 —— drawable-*dpi, 區別只是將圖標按分辨率高低來放入不同的目錄 ,drawable-hdpi用來存放高分辨率的圖標, drawable-mdpi 用來存放中等分辨率的圖標, drawable-ldpi 用來存放低分辨率的圖標 。 程序運行時可以根據手機分辨率的高低選取相應目錄下的圖標。這些文件夾下放一些png擴展名的圖片,png是透明的壓縮的圖片;專門針對網絡制出的圖片,因為它的尺寸很小效果很好!!移動平台上一般都用png;
如果是老版本的,比如是1.5版本的,res下的drawable只有一個文件夾,過去的版本沒有分辨率之分,如果想改變老版本的,所這三個文件添上就可以了!!
res/目錄下layout/的文件main.xml是布局文件,
main.xml
<? xml version = "1.0" encoding = "utf-8"?>
< LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"
android:orientation = "vertical"
android:layout_width = "fill_parent"
android:layout_height = "fill_parent"
>
< TextView
android:layout_width = "fill_parent"
android:layout_height = "wrap_content"
android:text = "@string/hello"
/>
</ LinearLayout >
我們逐元素進行分析說明:
<LinearLayout> 元素
“LinearLayout ”翻譯成中文是 “ 線性布局 ” ,所謂線性布局就是在該元素下的所有子
元素會根據其 “ orientation ” 屬性的值來決定是按行或者是按列逐個顯示。
<TextView > 元素
該元素與 HTML 中的 < label> 元素比較相似。也是一種顯示控件。
其屬性 text 指定在該元素上面顯示的文字內容。建議將該文字內容在 strings.xml 文件;
values/下有一個strings.xml文件,用來定義字符串和數值 , 在 Activity 中使用 getResources().getString(resourceId)或getResources().getText(resourceId) 取得資源。
HelloWorld 項目的 strings.xml 文件內容如下:
<? xml version = "1.0" encoding = "utf-8"?>
< resources >
< string name = "hello" > Hello World,HelloActivity! </ string >
< string name = "app_name" > Android ,你好! </string >
</ resources >
每個 string 標簽聲明了一個字符串,name 屬性指定其引用名。
為什麼需要把應用中出現的文字單獨存放在strings.xml 文中呢?
原因有二,一是為了國際化,二是為了減少應用的體積,節省空間;