




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Android项目目录结构有了前面两章的基础,现在我们再来打开上一章建立的HelloAndroid项目,分析其项目目录结构,对Android项目进一步的深入了解。首先启动Eclipse,展开"Package Explorer"导航器中的"HelloAndroid"项目,如图3-1所示。与一般的Java项目一样,src文件夹是项目的所有包及源文件(.java),res文件夹中则包含了项目中的所有资源,比如:程序图标(drawable)、布局文件(layout)、常量(values)等。下面来介绍其他Java项目中没有的的gen文件夹中的R.java文件和每
2、个Android项目都必须有的AndroidManfest.xml文件。R.java是在建立项目时自动生成的,这个文件是只读模式,不能更改,R.java文件是定义该项目所有资源的索引文件。先来看看HelloAndroid项目的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. 可以看到这里定义了很多常量,仔细一看就发现这些常量的名字都与res文件夹中的文件名相同,这再次证明R.java文件中所存储的是该项目所有资源的索引。有了这个文件,在程序中使用资源将变得更加方便,可以很快地找到要使用的资源,由于这个文件不能被手动编辑,所以当我们在项目中加入了新的资源时,只需要刷新一下该项目,R.java文件便自动生成了所有资源的索引。AndroidManfest.xml文件则包含了该项目中所使用的Activity、Service、Receiver,我们先来打开He
7、lloAndroid项目中的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启动的位置和时间。每当一个Activity(或者操作系统)要执行一个操作时,它将创建出一个Intent的对象,这个Int
13、ent对象能承载的信息可描述你想做什么,你想处理什么数据,数据的类型,以及一些其他信息。而Android则会和每个Application所暴露的intent-filter的数据进行比较,找到最合适Activity来处理调用者所指定的数据和操作。下面我们来仔细分析AndroidManfest.xml文件,如表3-1所示。表3-1 AndroidManfest.xml分析manifest根节点,描述了package中所有的内容xmlns:android包含命名空间的声明。xmlns:android=http:/schemas.Android中各种标准属性能在文件中使用,提供了大部分元素中的数据Pa
14、ckage声明应用程序包application包含package中application级别组件声明的根节点。此元素也可包含application的一些全局和默认的属性,如标签、icon、主题、必要的权限,等等。一个manifest能包含零个或一个此元素(不能大余一个)android:icon应用程序图标android:label应用程序名字Activity用来与用户交互的主要工具。Activity是用户打开一个应用程序的初始页面,大部分被使用到的其他页面也由不同的activity所实现,并声明在另外的activity标记中。注意,每一个activity必须有一个<activity>
15、;标记对应,无论它给外部使用或是只用于自己的package中。如果一个activity没有对应的标记,你将不能运行它。另外,为了支持运行时查找Activity,可包含一个或多个<intent-filter>元素来描述activity所支持的操作android:name应用程序默认启动的activityintent-filter声明了指定的一组组件支持的Intent值,从而形成了IntentFilter。除了能在此元素下指定不同类型的值,属性也能放在这里来描述一个操作所需的唯一的标签、icon和其他信息action组件支持的Intent actioncategory组件支持的Inte
16、nt Category。这里指定了应用程序默认启动的activityuses-sdk该应用程序所使用的sdk版本相关下面我们看看资源文件中一些常量的定义,如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> 这个文件很简单,就定义了两个字符串资源,与R.java中对应的索引如代码清单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. 在程序中装载并使用这个字符串资源如代码清单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); 基本上可以定义出项目中所有使用的常量,例如颜色。所以,可根据需对资源常量进行定义。下面是定义了颜色的常量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> 现在我们来分析HelloAndroid项目的布局文件(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中,有以下几个布局和参数。< LinearLayout>:线性版面配置,在这个标签中,所有元件都是按由上到下的排队排成的。android:orientation:表示这个介质的版面配置方式是从上到下垂直地排列其内部的视图。android:orien
25、tation:表示这里是水平排列android:layout_width:定义当前视图在屏幕上所占的宽度,fill_parent即填充整个屏幕。android:layout_height:定义当前视图在屏幕上所占的高度,fill_parent即填充整个屏幕。wrap_content:随着文字栏位的不同而改变这个视图的宽度或高度。layout_weight 用于给一个线性布局中的多个视图的重要度赋值。所有视图都有layout_weight 值,默认为零,即需要显示多大的视图就占据多大的屏幕空间。如果值大于零,则将父视图中的可用空间分割,分割大小具体取决于每一个视图的layout_weight 值
26、和该值在当前屏幕布局的整体 layout_weight 值,以及在其他视图屏幕布局的layout_weight 值中所占的比例。在这里,布局中设置了一个TextView,用来配置文本标签Widget,其中设置的属性android:layout_width为整个屏幕的宽度,android:layout_height可以根据文字来改变高度,而android:text则设置了这个TextView要显示的文字内容,这里引用了string中的hello字符串,即String.xml文件中的hello所代表的字符串资源。hello字符串的内容"Hello World, HelloAndroid!
27、"这就是我们在HelloAndroid项目运行时看到的字符串。最后,我们来分析HelloAndroid项目的主程序文件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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2025人教版一年级下册数学期末考试卷附答案
- 2025-2030中国甜橙萜市场发展动态分析与未来前景研究报告
- 卵巢上皮性癌维持治疗
- 英山县第二中学“文化遗产日”测试题
- 小学信息技术教师学期教学工作总结(18篇)
- 发热的种类与治疗
- 2025年中国纸灯数据监测研究报告
- 职业技术学院药品质量与安全专业人才培养方案
- 2025-2030中国玻璃容器行业市场发展趋势与前景展望战略研究报告
- 食品安全卫生检查验收法
- 河南省驻马店市部分学校2024-2025学年高三下学期3月月考地理试题(含答案)
- 2025江苏盐城市射阳县临港工业区投资限公司招聘8人高频重点模拟试卷提升(共500题附带答案详解)
- 2025至2030年中国声音感应控制电筒数据监测研究报告
- DB50T 1041-2020 城镇地质安全监测规范
- 2025-2030年中国冰激凌市场需求分析与投资发展趋势预测报告
- 体育赛事运营方案投标文件(技术方案)
- 海绵城市施工质量保证措施
- 新华书店集团招聘笔试冲刺题2025
- 大学答题纸模板
- 福建省宁德福鼎市2024-2025学年七年级上学期期中考试语文试题
- 福建省普通高中6月学业水平合格性考试英语试题(含答案解析)
评论
0/150
提交评论