- Android開發(fā)與實(shí)戰(zhàn)
- 趙書蘭編著
- 1245字
- 2018-12-30 05:24:08
1.4 Android應(yīng)用工程文件組成
Android的應(yīng)用工程文件主要由以下幾部分組成。
● src目錄:項(xiàng)目源文件都保存在這個(gè)目錄中。
● R.java文件:這個(gè)文件是Eclipse自動(dòng)生成的,應(yīng)用開發(fā)者不需要去修改里面的內(nèi)容。
● Android Library:這是應(yīng)用運(yùn)行的Android庫。
● assets目錄:里面主要放置多媒體等一些文件。
● res目錄:主要放置應(yīng)用會(huì)用到的資源文件。
● drawable目錄:主要放置應(yīng)用會(huì)用到的圖片資源。
● layout目錄:主要放置用到的布局文件。這些布局文件都是XML文件。
● values目錄:主要放置字符串(strings.xml)、顏色(colors.xml)、數(shù)組(arrays.xml)。
● Androidmanifest.xml:相當(dāng)于應(yīng)用的配置文件。在這個(gè)文件中,必須聲明應(yīng)用的名稱,應(yīng)用所用到的Activity、Service以及receiver等。
在Eclipse中,一個(gè)基本的Android項(xiàng)目的目錄結(jié)構(gòu)如圖1-31所示。

圖1-31 Android應(yīng)用工程文件組成
1.src目錄
與一般的Java項(xiàng)目一樣,“src”目錄下保存的是項(xiàng)目的所有包及源文件(.java),“res”目錄下包含了項(xiàng)目中的所有資源。例如,程序圖標(biāo)(drawable)、布局文件(layout)和常量(value)等。不同的是,在Java項(xiàng)目中沒有“gen”目錄,也沒有每個(gè)Android項(xiàng)目都必須有的AndroidManfest.xml文件。
“.java”格式文件是在建立項(xiàng)目時(shí)自動(dòng)生成的,這個(gè)文件是只讀模式。不能手動(dòng)添加或刪除R.java文件,R.java文件是定義該項(xiàng)目所有資源的索引文件。先來看看HelloWorld項(xiàng)目的R.java文件,代碼如下:
package net.learn2develop.HelloWorld; public final class R { public static final class attr { } public static final class drawable { public static final int icon=0x7f020000; } 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; } }
從上述代碼中,可以看到文件定義了很多常量,并且會(huì)發(fā)現(xiàn)這些常量的名字都與res文件夾中的文件名相同,這再次證明.java文件中所存儲(chǔ)的是該項(xiàng)目所有資源的索引。有了這個(gè)文件,在程序中使用資源將變得更加方便,可以很快地找到要使用的資源,由于這個(gè)文件不能手動(dòng)編輯,所以當(dāng)用戶在項(xiàng)目中加入了新的資源時(shí),只需要刷新一下該項(xiàng)目,.java文件便自動(dòng)生成了所有資源的索引。
2.res目錄
在res目錄下包含了該項(xiàng)目所使用到的資源文件,這里面的每一個(gè)文件或者資源都將在R.java文件中進(jìn)行索引定義。文件類型主要有以下幾類。
● 圖片文件:分別提供了高分辨率(drawable-hdpi)、中分辨率(drawable-mdpi)和低分辨率(drawable-ldpi)的圖片文件。
● 布局文件:在layout目錄下,默認(rèn)只有一個(gè)main.xml,用戶也可以添加更多的布局文件。
● 字符串:在values目錄下的strings.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/>
在該布局文件中,首先定義了采用線性布局,內(nèi)部只有一個(gè)文本框控件。這個(gè)控件顯示內(nèi)容引用了string文件中hello變量。
其中,
● <LinearLayout>:線性版面配置,在這個(gè)標(biāo)簽中,所有元件都是按由上到下排隊(duì)排成的。
● android:orientation:表示這個(gè)介質(zhì)的版面配置方式是從上到下垂直地排列其內(nèi)部的視圖。
● android:layout_width:定義當(dāng)前視圖在屏幕上所占的寬度,fill_parent即填充整個(gè)屏幕。
● android:layout_height:隨著文字欄位的不同而改變這個(gè)視圖的寬度或高度。
在上述布局代碼中,使用了一個(gè)TextView來配置文件標(biāo)簽Widget(構(gòu)件),其中設(shè)置的屬性android:layout_width為整個(gè)屏幕的寬度,android:layout_height可以根據(jù)文字來改變高度,而android:text則設(shè)置了這個(gè)TextView要顯示的文字內(nèi)容,這里引用了@string中的hello字符串,即String.xml文件中的hello所代表的字符串資源。Hello字符串的內(nèi)容“HelloWorld、HelloAndroid”就是用戶在HelloAndroid項(xiàng)目運(yùn)行時(shí)看到的字符串。
Strings.xml文件的代碼為:
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">HelloWorld,HelloAndroid</string> <string name="app_name">HelloAndroid</string> <resources/>
3.AndroidManfest.xml文件
在文件AndroidManfest.xml中包含了該項(xiàng)目中所使用的Activity、Service、Receiver,以下代碼為“HelloWorld”項(xiàng)目中的AndroidManfest.xml文件。
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" //根節(jié)點(diǎn) package="PACKAGE" //包名 android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="16"/> //SDK版本 <instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="TEST_TARGET_PCKG" /> <application //圖標(biāo)和應(yīng)用程序名稱 android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:name=".firstActivity" //默認(rèn)啟動(dòng)的Activity Android:label="@string/app_name"> //Activity名稱 <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> <uses-library android:name="android.test.runner" /> </application> </manifest>
- 移動(dòng)寬帶技術(shù):LTE
- 海洋通信網(wǎng)絡(luò)協(xié)議、算法和架構(gòu)
- 電路基礎(chǔ)實(shí)驗(yàn)與實(shí)踐
- 通信電子線路
- 數(shù)字語音處理及MATLAB仿真
- NI Multisim 11電路仿真應(yīng)用
- 全程圖解變頻器應(yīng)用與檢測技能
- 深入理解邊緣計(jì)算:云、邊、端工作原理與源碼分析
- 圖表細(xì)說收音機(jī)裝配與整機(jī)電路分析
- PLC通信協(xié)議及編程
- RFID標(biāo)簽所有權(quán)安全轉(zhuǎn)換
- 密碼術(shù)語
- 果殼中的5G:新網(wǎng)絡(luò)時(shí)代的技術(shù)內(nèi)涵與商業(yè)思維
- 電子管聲頻放大器實(shí)用手冊(cè)
- GSM網(wǎng)絡(luò)優(yōu)化:原理與工程(第2版)