Android目錄結(jié)構(gòu)(詳解)
下面是HelloAndroid項目在eclipse中的目錄層次結(jié)構(gòu):
本文引用地址:http://www.biyoush.com/article/201610/305445.htm由上圖可以看出項目的根目錄下共有九個文件(夾),下面就這九個文件(夾)進行詳解:
1.1src文件夾和assets文件夾:
每個Android程序都包含資源目錄(src)和資產(chǎn)目錄(assets),資源和資產(chǎn)聽起來感覺沒有多大差別,但在存儲外部內(nèi)容時用資源(src)比較多,其中它們的區(qū)別在于存放在資源(src)下的內(nèi)容可以通過應(yīng)用程序的R類進行訪問,而存放在資產(chǎn)(assets)下的內(nèi)容會保持原始文件的格式,如果需要訪問,則必須使用AssetManager以字節(jié)流的方式來讀取,用起來非常的不方便。為了方便使用,通常文件和數(shù)據(jù)都會保存在資源(src)目錄下
1.2res(Resource)目錄:資源目錄
可以存放一些圖標(biāo),界面文件和應(yīng)用中用到的文字信息,下圖為res目錄截圖:
1.2.1 drawable-*dpi文件夾:將圖標(biāo)按分辨率的高低放入不同的目錄,其中draeable-hdpi用來存放高分辨率的圖標(biāo),drawable-mdpi用來存放中等分辨率的圖標(biāo),drawable-ldpi用來存放低分辨率的圖標(biāo)
1.2.2 values文件夾:用來存放文字的信息
(1)strings.xml:用來定義字符串和數(shù)值
每個string標(biāo)簽生命了一個字符串,name屬性指定它的引用值
(2)為什么要把這些出現(xiàn)的文字單獨放在strings.xml文件中?
答案:一是為了國際化,如果需要將文件中的文字換成別的國家的語言,就可以只需要替換掉一個strings.xml文件就可以了
二是為了減少應(yīng)用的體積,例如,我們要在應(yīng)用中使用“哥想你了”這句話1000次,如果我們沒有將“哥想你了”定義在strings.xml文件中,而是直接在應(yīng)用中使用時寫上這幾個字,那么我們就會在應(yīng)用中寫4000個字。4000個字和4個字占用的內(nèi)存可是有很大差距的啊,況且手機的內(nèi)存本來就小,所以應(yīng)該是能省就省
(3)另外還有arrays.xml,color.xml等定義數(shù)組,顏色的,都最好用單獨的一個xml文檔
1.2.3 layout文件:用來存放界面信息
本例中的布局文件是自動生成的“main.xml”
android:layout_width=fill_parent
android:layout_height=fill_parent
android:orientation=vertical>
android:layout_width=fill_parent
android:layout_height=wrap_content
android:text=@string/test/>
1.3 gen目錄:gen目錄下只有一個自動生成的“R.java”文件
/*AUTO-GENERATED FILE. DO NOT MODIFY.
*
* This class was automatically generated bythe
* aapt tool from the resource data itfound. It
* should not be modified by hand.
*/
packagecn.csdn.android.demo;
public final class R {
public static final class attr {
}
public static final class drawable {
public static final int ic_launcher=0x7f020000;
}
public static final class id {
public static final int button1=0x7f050000;
public static final int radioButton1=0x7f050001;
public static final int toggleButton1=0x7f050002;
}
public static final class layout {
public static final int main=0x7f030000;
}
public static final class string {
public static final int app_name=0x7f040001;
public static final int hello=0x7f040000;
public static final int start=0x7f040004;
public static final int startButton=0x7f040003;
public static final int test=0x7f040002;
}
}
R.java文件:默認(rèn)有attr,drawable,layout,string這四個靜態(tài)內(nèi)部類,每個靜態(tài)內(nèi)部類對應(yīng)一中資源,如layout靜態(tài)內(nèi)部類對應(yīng)layout中的界面文件,string靜態(tài)內(nèi)部類對應(yīng)string內(nèi)部的string標(biāo)簽。如果在layout中在增加一個界面文件或者在string內(nèi)增加一個string標(biāo)簽,R.java會自動在其對應(yīng)的內(nèi)部類增加所增加的內(nèi)容。
R.java除了自動標(biāo)識資源的索引功能外,還有另一個功能,就是當(dāng)res文件中的某個資源在應(yīng)用中沒有被用到,在這個應(yīng)用被編譯時,系統(tǒng)不會把對應(yīng)的資源編譯到應(yīng)用中的APR包中。
1.4 AndroidManifest.xml 功能清單文件
每個應(yīng)用程序都會有一個AndroidManifest在它的根目錄里面。這個清單為Android系統(tǒng)提供了這個應(yīng)用的基本信息,系統(tǒng)在運行之前必須知道這些信息,另外,如果我們使用系統(tǒng)自帶的服務(wù),如撥號服務(wù),應(yīng)用安裝服務(wù)等,都必須在AndroidManifest.xml文件中聲明權(quán)限
AndroidManifest.xml的功能:
命名應(yīng)用程序的Java應(yīng)用包,這個包名用來唯一標(biāo)識應(yīng)用程序;
評論