技术开发 频道

Ophone应用:HelloOPhone工程分析

  二、 HelloOPhone工程组成

  你或许已经迫不及待地要打开图1-19中的HelloActivity.java这个文件看个究竟了,不过先别急,让我们首先从整体上来认识这个工程。从图1-20显示的Package Explorer中可以看到HelloOPhone的工程全貌,由源代码、生成文件、资源文件、库文件(Library)和AndroidManifest.xml构成。资源文件包含了程序运行时所需的一切图片、界面、图标等资源,库文件是开发过程中需要调用的文件。下面我们把重点放在AndroidManifest.xml和源代码上,单击Eclipse正中窗口下方的选项卡切换到源代码视图:

  package="oms.HelloPKG"

  android:versionCode="1"

  android:versionName="1.0">

  android:label="@string/app_name">

  1.代码结构

  现在来看AndroidManifest.xml的代码,如果你在此之前没有接触过XML,请不要担心,因为它只是一个描述型的语言,并未涉及程序的逻辑关系。在上述代码中,例如和后面的是一对,表示一层结构。你可以一层层剥下去直到。在XML中,有很多@符号,在这里也使用@符号,表示某个变量的引用,形如@[package:]type/name。

  有兴趣的读者可以尝试将XML文件中涉及的app_name和icon文件(在工程res文件夹下)用其他字符或者图标替换掉,看看程序会出现什么变化。

  2.文件功能

  AndroidManifest.xml文件描述了整个应用程序的结构,每一个OPhone工程必须在其根目录下包含该文件,且文件名不能改变。该文件定义了以下内容:Package名称,4大组件(Activity、Servicey、Broadcast Receiver、Content Provider)的特性、组件和进程的关系、程序权限、其他程序访问本程序的权限、配置和测试信息、可运行的系统最低版本、所需链接的库。

  3.详细解释

  上述代码前两行是所有程序都必须包含的属性。第一行是代码的版本和编码,这个很简单;第二行开头有xmlns:android="http://schemas.android.com/apk/res/ android,是用来声明命名空间的,后面的网址表示参照的 Android 命名空间提供的定义。其他的部分可以用这个比喻来理解:一个工程相当于一个软件包(Package),其中有多个应用程序(Application),每个程序中又有多个完成不同功能的窗体(Activity),窗体可以通过意图(Intent)来传递指令或数据,然而只有部分消息允许传递,这就需要意图过滤器(Intent-filter)。Intent-filter内有两行代码,当一个应用程序内有多个Activity的时候,说明了程序启动的入口,类似于Java或者C中的main函数;而这个Activity 将显示在桌面的应用程序列表中。运行的代码如下:

  package oms.HelloPKG;

  import android.app.Activity;

  import android.os.Bundle;

  public class HelloActivity extends Activity {

  /** Called when the activity is first created. */

  @Override

  public void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.main);

  }

  }

  上面为在软件中真正在运行的源代码,如果你具备Java基础,应该一眼就能看懂。这个HelloActivity继承自Activity,并且使用setContentView方法设置了界面。至于HelloActivity之上的Activity是怎么回事,我们暂时不去探究,初学者只需记住这种形式就可以了。setContentView类似于Java GUI中的setContentPane,设置了程序的界面。细心的读者也许会问,程序如何决定在界面上显示的是HelloOPhone还是GoodOPhone的字符串?是如何显示在界面上的?这些内容会在下节讲解。

0
相关文章