android程序基本构成(基础篇)

上传人:第*** 文档编号:48745934 上传时间:2018-07-20 格式:PPT 页数:25 大小:387.50KB
返回 下载 相关 举报
android程序基本构成(基础篇)_第1页
第1页 / 共25页
android程序基本构成(基础篇)_第2页
第2页 / 共25页
android程序基本构成(基础篇)_第3页
第3页 / 共25页
android程序基本构成(基础篇)_第4页
第4页 / 共25页
android程序基本构成(基础篇)_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《android程序基本构成(基础篇)》由会员分享,可在线阅读,更多相关《android程序基本构成(基础篇)(25页珍藏版)》请在金锄头文库上搜索。

1、Android应用程序的基本构成 我们的资源在哪里 资源的类别 资源的基本使用方法 活动(Activity)组件 服务(Service)组件 广播接收者(Broadcast receivers) 内容提供者(Content providers) AndroidManifest.xml文件的结构资源的存放 任何类型的程序都需要使用资源(例如 :文件、XML、数据库等),Android应 用程序也不例外。Android应用程序使用 的资源有很多都被封装在apk文件中,并 随apk文件一起发布。 这个文件我们上次的课中,已经生成了 。位置放在工作目录中的BIN目录下。 既然要将资源封装在apk文件中

2、,那么这 些资源一定是放在Eclipse工程的某处。 在上节课实现的应用程序中可以看到, 在Eclipse工程中有一个res目录。在该目 录下有3个子目录:drawable、layout、 values。 这3个子目录中分别包含icons.png、main.xml和 strings.xml。 从drawable目录中包含icons.png文件这一点可 以初步断定,这个目录是用来保存图像文件的 。 layout目录从名字可以看出,该目录是用来保 存布局文件的。 通过打开values目录中的strings.xml文件可以看 出,在strings.xml文件中都是基于XML格式的 key-value

3、对,因此,也可以断定values目录是 用来保存字符串资源的。资源类别 Android支持3种类型的资源:XML文件 、图像以及任意类型的资源(例如,音 频、视频文件)。这些资源文件分别放 在res目录的不同子目录中。在编译 Android应用程序的同时,系统会使用一 个资源文件编译程序(aapt)对这些资源 文件进行编译。Android支持的资源列表目录资源类型 描述resanimXML该目录用于存放帧(frame)动画或补 间 (tweened)动画文件resdrawable图像该目录中的文件可以是多种格式的图 像文件,例如,bmp、png、gif、jpg等。该目录中的图像不需要分辨率非

4、常高,aapt工具会优化这个目录中的图像文件。如果想按字流读取该目录 下的图像文件,需要将图像文件放在 resraw目录中reslayoutXML该目录用于存放XML布局文件resvaluesXML该目录中的XML文件与其他目录的XML文件 不同。系统使用该目录中XML文件的内容作 为资源,而不是XML文件本身。在这些XML 文件中定义了各种类型的key-value对。在该目 录中可以建立任意多个XML文件,文件可以 任意命名。在该目录的XML文件中还可以根 据不同的标签定义不同类型的key-value对。例 如,通过标签定义字符串key-value 对,通过标签定义表示颜色值的key- va

5、lue对,通过标签定义距离、位置、 大小等数值的key-value对resxmlXML在该目录中的文件可以是任意类型 的XML文件,这些XML文件可以在运行时被读取resraw任意类型在该目录中的文件虽然也会被封装 在apk文件中,但不会被编译。在该目录中可以放置任意类型的文件, 例如,各种类型的文档、音频、视 频文件等在表中所示的目录中放入资源文件后,ADT会在gen目录中建立一 个R.java文件,该文件中有一个R类,该类为每一个资源定义了唯 一的ID,通过这个ID可以引用这些资源。资源的基本使用方法 Android会为每一种资源在R类中生成一 个唯一的ID,这个ID是int类型的值。在

6、一般情况下,开发人员并不需要管这个 类,更不需要修改这个类,只需要直接 使用R类中的ID即可。为了更好地理解使 用资源的过程,先看一下在上一节课的 例子中生成的R类的源代码。 从R类中很容易看出,ADT为res目录中每一个 子目录或标签(例如,标签)都生成 了一个静态的子类,不仅如此,还为XML布局 文件中的每一个指定id属性的组件生成了唯一 的ID,并封装在id子类中。这就意味着在 Android应用程序中可以通过ID使用这些组件 。 R类虽然也属于com.cstp.android包,但在 Eclipse工程中为了将R类与其他的Java类区分开 ,将R类放在gen目录中。 既可以在程序中引用

7、资源,也可以在XML文件 中引用资源。例如,在应用程序中获得 btnShowDate按钮对象的代码如下: Button btnShowDate = (Button) findViewById(R.id.btnShowDate); 可以看到,在使用资源时直接引用了 R.id.btnShowDate这个ID值,当然,直接使用 0x7f050000也可以,不过为了使程序更容易维 护,一般会直接使用在R的内嵌类中定义的变 量名。 Android SDK中的很多方法都支持直接使 用ID值来引用资源。例如, android.app.Activity类的setTitle方法除了 支持以字符串方式设置Acti

8、vity的标题外 ,还支持以字符串资源ID的方式设置 Activity的标签。例如,下面的代码使用 字符串资源重新设置了Activity的标题。 setTitle(R.string.hello); 除了可以使用Java代码来访问资源外,在XML文件中 也可以使用这些资源。例如,引用图像资源可以使用 如下格式: drawable/icon 其中icon就是resdrawable目录中的一个图像文件的文 件名。这个图像文件可以是任何Android支持的图像类 型,例如,gif、jpg等。因此,在drawable目录中不能 存在同名的图像文件,例如,icon.gif和icon.jpg不能同 时放在d

9、rawable目录中,这是因为在生成资源ID时并没 有考虑文件的扩展名,所以会在同一个类中生成两个 同名的变量,从而造成Java编译器无法成功编译R.java 文件。什么是Activity Android应用程序中最令人振奋的特性是可以利用其他 Android应用程序中的资源(当然,需要这些应用程序 进行授权)。例如,如果应用程序恰好需要一个显示 图像列表的功能,而另一个应用程序正好有这个功能 ,只需要调用这个应用程序中的图像列表功能即可。 在这一点,比iphone的应用要灵活很多。 在Android程序中没有入口点(即Main函数),取而代 之的是一系列的组件,这些组件都可以单独实例化。 本

10、节课将介绍Android支持的4种组件的基本概念。应 用程序向外共享功能一般也是通过这4种应用程序组件 实现的。活动(Activity)组件 Activity是Android的核心类,该类的全名是 android.app.Activity 。Activity相当于C/S程序中 的窗体(Form)或Web程序的页面。每一个 Activity提供了一个可视化的区域。在这个区域 可以放置各种Android组件,例如,按钮、图像 、文本框等。 在Activity类中有一个onCreate事件方法,一般 在该方法中对Activity进行初始化。通过 setContentView方法可以设置在Activi

11、ty上显示 的视图组件,setContentView方法的参数一般 为XML布局文件的资源ID。 一个带界面的Android应用程序可以由一个或多个 Activity组成。至于这些Activity如何工作,或者它们之 间有什么依赖关系,则完全取决于应用程序的业务逻 辑。例如,一种典型的设计方案是使用一个Activity作 为主Activity(相当于主窗体,程序启动时会首先启动 这个Activity)。在这个Activity中通过菜单、按钮等方 式启动其他的Activity。在Android自带的程序中有很多 都是这种类型的。 每一个Activity都会有一个窗口,在默认情况下,这个 窗口是充

12、满整个屏幕的,也可以将窗口变得比手机屏 幕小,或者悬浮在其他的窗口上面。 Activity窗口中的可视化组件由View及其子类组成,这 些组件按着XML布局文件中指定的位置在窗口上进行 摆放。服务(Service)组件 服务没有可视化接口,但可以在后台运行。例 如,当用户进行其他操作时,可以利用服务在 后台播放音乐,或者当来电时,可以利用服务 同时进行其他操作,甚至阻止接听指定的电话 。每一个服务是一个android.app.Service的子类 。 除此之外,其他的程序还可以与服务进行通信 。当与服务连接成功后,就可以利用服务中共 享出来的接口与服务进行通信了。例如,控制 音乐播放的服务允许

13、用户暂停、重放、停止音 乐的播放。广播接收者组件 (Broadcast receivers) 广播接收者组件的唯一功能就是接收广播消息,以及 对广播消息做出响应。有很多时候,广播消息是由系 统发出的,例如,时区的变化、电池的电量不足、收 到短信等。除此之外,应用程序还可以发送广播消息 ,例如,通知其他的程序数据已经下载完毕,并且这 些数据已经可以使用了。 一个应用程序可以有多个广播接收者,所有的广播接 收者类都需要继承android.content. Broadcast- Receiver 类。 广播接收者与服务一样,都没有用户接口,但在广播 接收者中可以启动一个Activity来响应广播消息

14、,例如 ,通过显示一个Activity对用户进行提醒。当然,也可 以采用其他的方法或几种方法的组合来提醒用户,例 如,闪屏、震动、响铃、播放音乐等。内容提供者组件 (Content providers) 内容提供者可以为其他应用程序提供数据。这些数据 可以保存在文件系统中,例如,SQLite数据库或任何 其他格式的文件。每一个内容提供者是一个类,这些 类都需要从android.content.ContentProvider类继承。 在ContentProvider类中定义了一系列的方法,通过这些 方法可以使其他的应用程序获得和存储内容提供者所 支持的数据。但在应用程序中不能直接调用这些方法 ,

15、而需要通过android.content.ContentResolver类的方法 来调用内容提供者类中提供的方法。AndroidManifest.xml 文件的结构 每一个Android应用程序必须有一个 AndroidManifest.xml文件(不能改成其他 的文件名),而且该文件必须在应用程 序的根目录中。在这个文件中定义了应 用程序的基本信息,在运行Android应用 程序之前必须设置这些信息。下面是 AndroidManifest.xml文件在Android应用 程序中所起的作用。 在默认情况下,Android系统会限制使用某些API,因 此,需要在AndroidManifest.x

16、ml文件中为这些API授权 后才可以使用它们。 可以为授权应用程序与其他的应用程序进行交互。 可以在AndroidManifest.xml文件中配置一些特殊的类, 这些类可以在应用程序运行时提供调试及其他的信息 。但这些类只在开发和测试时使用,当应用程序发布 时这些配置将被删除。小结本节主要介绍了Android应用程序的架构。在Android应用程序中 ,资源一般都放在res目录的子目录中,特定的子目录代表不同的 资源类型, 例如,drawable目录表示图像资源,layout目录表示布局资源等。 由于一个Android应用程序需要调用其他的Android应用程序的部 分资源,这就需要Android应用程序中任何组件都可以被实例化 因此,在Android应用程序中没有Main函数,所有可以被实例化的 组件都需要在AndroidManifest.xml文件中定义,Android目前支持4 种应用程序组件:Activity、Se

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 外语文库 > 英语学习

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号