版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、Android項(xiàng)目目錄結(jié)構(gòu)有了前面兩章的基礎(chǔ),現(xiàn)在我們再來打開上一章建立的HelloAndroid項(xiàng)目,分析其項(xiàng)目目錄結(jié)構(gòu),對Android項(xiàng)目進(jìn)一步的深入了解。首先啟動(dòng)Eclipse,展開"Package Explorer"導(dǎo)航器中的"HelloAndroid"項(xiàng)目,如圖3-1所示。與一般的Java項(xiàng)目一樣,src文件夾是項(xiàng)目的所有包及源文件(.java),res文件夾中則包含了項(xiàng)目中的所有資源,比如:程序圖標(biāo)(drawable)、布局文件(layout)、常量(values)等。下面來介紹其他Java項(xiàng)目中沒有的的gen文件夾中的R.java文件和每
2、個(gè)Android項(xiàng)目都必須有的AndroidManfest.xml文件。R.java是在建立項(xiàng)目時(shí)自動(dòng)生成的,這個(gè)文件是只讀模式,不能更改,R.java文件是定義該項(xiàng)目所有資源的索引文件。先來看看HelloAndroid項(xiàng)目的R.java文件,如代碼清單3-1所示。代碼清單3-1 R.java1. package com.yarin.Android.HelloAndroid; 2. 3. public final class R 4. public
3、static final class attr 5. 6. public static final class drawable 7. public static final int icon=0x7f020000; 8.
4、 9. public static final class layout 10. public static final int main=0x7f030000; 11. 12. &
5、#160;public static final class string 13. public static final int app_name=0x7f040001; 14. public static final int hello=0x7f0
6、40000; 15. 16. 可以看到這里定義了很多常量,仔細(xì)一看就發(fā)現(xiàn)這些常量的名字都與res文件夾中的文件名相同,這再次證明R.java文件中所存儲(chǔ)的是該項(xiàng)目所有資源的索引。有了這個(gè)文件,在程序中使用資源將變得更加方便,可以很快地找到要使用的資源,由于這個(gè)文件不能被手動(dòng)編輯,所以當(dāng)我們在項(xiàng)目中加入了新的資源時(shí),只需要刷新一下該項(xiàng)目,R.java文件便自動(dòng)生成了所有資源的索引。AndroidManfest.xml文件則包含了該項(xiàng)目中所使用的Activity、Service、Receiver,我們先來打開He
7、lloAndroid項(xiàng)目中的AndroidManfest.xml文件,如代碼清單3-2所示。代碼清單3-2 AndroidManfest.xml1. <?xml version="1.0" encoding="utf-8"?> 2. <manifest xmlns:android="3. package="com.yarin.Android.HelloAndroid" 4.
8、 android:versionCode="1" 5. android:versionName="1.0"> 6. <application android:icon="drawable/icon" android:label="string/app_name"> 7. &
9、#160; <activity android:name=".HelloAndroid" 8. android:label="string/app_name"> 9.
10、160; <intent-filter> 10. <action android:name="ent.action.MAIN" /> 11.
11、60; <category android:name="ent.category.LAUNCHER" /> 12. </intent-filter> 13. &
12、#160;</activity> 14. </application> 15. <uses-sdk android:minSdkVersion="5" /> 16. </manifest> 代碼清單3-2中intent-filters描述了Activity啟動(dòng)的位置和時(shí)間。每當(dāng)一個(gè)Activity(或者操作系統(tǒng))要執(zhí)行一個(gè)操作時(shí),它將創(chuàng)建出一個(gè)Intent的對象,這個(gè)Int
13、ent對象能承載的信息可描述你想做什么,你想處理什么數(shù)據(jù),數(shù)據(jù)的類型,以及一些其他信息。而Android則會(huì)和每個(gè)Application所暴露的intent-filter的數(shù)據(jù)進(jìn)行比較,找到最合適Activity來處理調(diào)用者所指定的數(shù)據(jù)和操作。下面我們來仔細(xì)分析AndroidManfest.xml文件,如表3-1所示。表3-1 AndroidManfest.xml分析manifest根節(jié)點(diǎn),描述了package中所有的內(nèi)容xmlns:android包含命名空間的聲明。xmlns:android=http:/schemas.Android中各種標(biāo)準(zhǔn)屬性能在文件中使用,提供了大部分元素中的數(shù)據(jù)Pa
14、ckage聲明應(yīng)用程序包application包含package中application級別組件聲明的根節(jié)點(diǎn)。此元素也可包含application的一些全局和默認(rèn)的屬性,如標(biāo)簽、icon、主題、必要的權(quán)限,等等。一個(gè)manifest能包含零個(gè)或一個(gè)此元素(不能大余一個(gè))android:icon應(yīng)用程序圖標(biāo)android:label應(yīng)用程序名字Activity用來與用戶交互的主要工具。Activity是用戶打開一個(gè)應(yīng)用程序的初始頁面,大部分被使用到的其他頁面也由不同的activity所實(shí)現(xiàn),并聲明在另外的activity標(biāo)記中。注意,每一個(gè)activity必須有一個(gè)<activity>
15、;標(biāo)記對應(yīng),無論它給外部使用或是只用于自己的package中。如果一個(gè)activity沒有對應(yīng)的標(biāo)記,你將不能運(yùn)行它。另外,為了支持運(yùn)行時(shí)查找Activity,可包含一個(gè)或多個(gè)<intent-filter>元素來描述activity所支持的操作android:name應(yīng)用程序默認(rèn)啟動(dòng)的activityintent-filter聲明了指定的一組組件支持的Intent值,從而形成了IntentFilter。除了能在此元素下指定不同類型的值,屬性也能放在這里來描述一個(gè)操作所需的唯一的標(biāo)簽、icon和其他信息action組件支持的Intent actioncategory組件支持的Inte
16、nt Category。這里指定了應(yīng)用程序默認(rèn)啟動(dòng)的activityuses-sdk該應(yīng)用程序所使用的sdk版本相關(guān)下面我們看看資源文件中一些常量的定義,如String.xml,如代碼清單3-3所示。代碼清單3-3 String.xml1. <?xml version="1.0" encoding="utf-8"?> 2. <resources> 3. <string name="hello">Hell
17、o World, HelloAndroid!</string> 4. <string name="app_name">HelloAndroid</string> 5. </resources> 這個(gè)文件很簡單,就定義了兩個(gè)字符串資源,與R.java中對應(yīng)的索引如代碼清單3-4所示。代碼清單3-4 R.java中的String類1. public static final class
18、;string 2. public static final int app_name=0x7f040001; 3. public static final int hello=0x7f040000; 4. 在程序中裝載并使用這個(gè)字符串資源如代碼清單3-5。代碼清單3-5 String資源的使用1. Resources r = th
19、is.getContext().getResources(); 2. String appname= (String) r.getString(R.string.app_name); 3. String hello= (String) r.getString(R.string.hello); 基本上可以定義出項(xiàng)目中所有使用的常量,例如顏色。所以,可根據(jù)需對資源常量進(jìn)行定義。下面是定義了顏色的常量colors.xml,如代碼清單3-6所示。代碼清單3-6 colors.xml1. <?xml
20、60;version="1.0" encoding="utf-8"?> 2. <resources> 3. <color name="status_idle">#cccccc</color> 4. <color name="status_done">#637a47</color> 5.
21、 <color name="status_sync">#cc9900</color> 6. <color name="status_error">#ac4444</color> 7. </resources> 現(xiàn)在我們來分析HelloAndroid項(xiàng)目的布局文件(layout),首先我們打開res->layout->main.xml文件,如代
22、碼清單3-7所示。代碼清單3-7 main.xml1. <?xml version="1.0" encoding="utf-8"?> 2. <LinearLayout xmlns:android="3. android:orientation="vertical" 4. android:layout_width="fill_parent"
23、60;5. android:layout_height="fill_parent" 6. > 7. <TextView 8. android:layout_width="fill_parent" 9. android:layout_height="wrap_cont
24、ent" 10. android:text="string/hello" 11. /> 12. </LinearLayout> 代碼清單3-7中,有以下幾個(gè)布局和參數(shù)。< LinearLayout>:線性版面配置,在這個(gè)標(biāo)簽中,所有元件都是按由上到下的排隊(duì)排成的。android:orientation:表示這個(gè)介質(zhì)的版面配置方式是從上到下垂直地排列其內(nèi)部的視圖。android:orien
25、tation:表示這里是水平排列android:layout_width:定義當(dāng)前視圖在屏幕上所占的寬度,fill_parent即填充整個(gè)屏幕。android:layout_height:定義當(dāng)前視圖在屏幕上所占的高度,fill_parent即填充整個(gè)屏幕。wrap_content:隨著文字欄位的不同而改變這個(gè)視圖的寬度或高度。layout_weight 用于給一個(gè)線性布局中的多個(gè)視圖的重要度賦值。所有視圖都有l(wèi)ayout_weight 值,默認(rèn)為零,即需要顯示多大的視圖就占據(jù)多大的屏幕空間。如果值大于零,則將父視圖中的可用空間分割,分割大小具體取決于每一個(gè)視圖的layout_weight 值
26、和該值在當(dāng)前屏幕布局的整體 layout_weight 值,以及在其他視圖屏幕布局的layout_weight 值中所占的比例。在這里,布局中設(shè)置了一個(gè)TextView,用來配置文本標(biāo)簽Widget,其中設(shè)置的屬性android:layout_width為整個(gè)屏幕的寬度,android:layout_height可以根據(jù)文字來改變高度,而android:text則設(shè)置了這個(gè)TextView要顯示的文字內(nèi)容,這里引用了string中的hello字符串,即String.xml文件中的hello所代表的字符串資源。hello字符串的內(nèi)容"Hello World, HelloAndroid!
27、"這就是我們在HelloAndroid項(xiàng)目運(yùn)行時(shí)看到的字符串。最后,我們來分析HelloAndroid項(xiàng)目的主程序文件HelloAndroid.java,如代碼清單3-8所示。代碼清單3-8 HelloAndroid.java1. package com.yarin.Android.HelloAndroid; 2. 3. import android.app.Activity; 4. import android.os.Bundle; 5. 6. public class HelloAndroid extends Activity 7. 8. 9. public void onCreate(Bundle savedInstanceState) 10.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學(xué)數(shù)學(xué)游戲化教學(xué)對學(xué)生計(jì)算能力提升的課題報(bào)告教學(xué)研究課題報(bào)告
- 2025年桂林市逸夫小學(xué)招聘教師備考題庫及完整答案詳解一套
- 統(tǒng)編版四年級上冊道德與法治教材解析
- 三明市泰寧縣2026年緊缺急需專業(yè)教師招聘備考題庫及答案詳解參考
- 2025年務(wù)川聯(lián)通營業(yè)廳招聘備考題庫及答案詳解1套
- 2025年漢中市新華書店招聘財(cái)務(wù)人員備考題庫完整參考答案詳解
- 2025年秦皇島市九龍山醫(yī)院第二批公開選聘工作人員備考題庫及一套參考答案詳解
- 黃色銀杏灌木家長會(huì)模板
- 2025年廣大附中教育集團(tuán)黃埔軍校小學(xué)招聘備考題庫及答案詳解參考
- 2025年南昌職業(yè)大學(xué)圖書館館長崗位公開招聘備考題庫參考答案詳解
- 2025-2026學(xué)年湘美版小學(xué)美術(shù)四年級(上冊)期末測試卷附答案(4套)
- 2025年新材料科技創(chuàng)新平臺(tái)建設(shè)可行性研究報(bào)告
- 2025年1月黑龍江省普通高中學(xué)業(yè)水平合格性考試物理試卷(含答案)
- 知識(shí)點(diǎn)及2025秋期末測試卷(附答案)-蘇教版(新教材)小學(xué)科學(xué)小學(xué)科學(xué)二年級上冊
- 《城市軌道交通車站機(jī)電設(shè)備運(yùn)用》課件 項(xiàng)目三:站臺(tái)門系統(tǒng)
- 企業(yè)稅務(wù)規(guī)劃合規(guī)審查手冊
- 附件扭轉(zhuǎn)診治中國專家共識(shí)(2024年版)解讀
- 全員品質(zhì)意識(shí)培訓(xùn)
- 貨物代理報(bào)關(guān)合同范本
- 2025甘肅酒泉市公安局招聘留置看護(hù)崗位警務(wù)輔助人員30人(第三批)考試筆試備考題庫及答案解析
- 2025高中歷史時(shí)間軸與大事年表
評論
0/150
提交評論