1. 程式人生 > >Android學習.0(Android專案目錄結構)

Android學習.0(Android專案目錄結構)

1.      重要目錄檔案:

a)        Src/:原始碼目錄

b)        Gen/:系統自動生成程式碼的目錄

c)        Res/:存放圖片、佈局、字串等資源

d)        AndroidManifest.xml:應用程式配置檔案

2.      res下有五個drawable的目錄,分別是xxhdpi,xhdpi,hdpi,mdpi,ldpi,在執行時,系統會自動監測安卓程式的解析度,然後選擇合適的圖片(吐槽一下安卓的碎片化……),但是也可以將相同的圖片檔案放入這五個資料夾。

3.      res/values目錄下有:

a)        strings.xml,用於存放應用中出現的字串,這樣可以為多次出現的字串節省記憶體,並且也便於以後的修改。

b)        colors.xml,用來定義顏色和數值。

c)        dimens.xml,用來定義尺寸和資料,也是方便以後的修改。

d)        styles.xml,用來定義樣式。

4.      res/layout目錄下存放了個應用的佈局檔案,採用xml格式編寫,具體的使用方法會在以後的章節介紹。

5.      gen/R:自動生成的檔案,會對應用中的每個靜態內部類中的靜態常量(就是drawable,layout,string那些東西)賦予一個資源識別符號(ID),在java裡可以按照R.ResourceType.ResourceName來引用該資源(PS:Android自身自帶資源引用方法為:Android.ResourceType.ResourceName)。在xml檔案中引用為@[package:]type/name,一般使用自己的包時,省略[pakage:],例如引用應用名:@string/app_name,但是當引用安卓自身資源時,要加上包名:@Android:color/blue。

6.      AndroidManifest.xml:

a)        命名應用程式的java應用包,描述應用程式的元件,決定應用程式許可權,宣告系統API最低版本等

b)        例如以下一段程式碼:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.test"
    android:versionCode="1"
    android:versionName="0.0 beta" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="14" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.test.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

a)        Android:versionCode是版本號,Android:versionName是版本名稱,每次升級,版本號都應比上一次大,而版本名稱可以自行決定。

b)        Application:label表示應用名稱,就是由@sting/app_name的值來決定的。

c)        Activity標籤中,name是表示本activity的類名,而label是用來表示本activity的顯示名稱。

d)        Intent-filter為意圖過濾器,每一個程序都要向系統宣告自己能相應的意圖,這樣在有使用者意圖產生時系統才知道應該啟用哪個應用,如:<categoryandroid:name="android.intent.category.LAUNCHER" />這段程式碼,它表示該程序能夠響應啟動,說明它是應用程式的入口。

e)        Permissions標籤用於表明該應用所需要的許可權,由於預設程式並沒有額外的許可權,所以以上程式碼中並未出現permissions的標籤,該標籤內容會在以後提到。

f)         如果該程式用到了其他開發包中的庫,那麼還需要在<application>中加入一個<uses-library>的標籤,例如:<uses-library android:name=”android.test.runner” />