Android热门应用开发详解
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.5 使用Eclipse开发Android应用

在Eclipse中安装和配置Android插件成功之后,就可以使用Eclipse开发Android应用程序了,并可以对Android应用程序进行调试和运行。

1.5.1 使用Eclipse创建Android工程

ADT插件提供了一个工程向导,可以帮助开发者快速地建立Android工程,具体步骤如下:

(1)单击Eclipse菜单栏中的“File”→“New”→“Project”菜单项,将显示如图1-19所示的新建工程向导对话框。在该对话框中需要指定要新建的应用程序类型,故展开“Android”节点后,单击“Android Application Project”,表示要新建Android工程。

图1-19 选择建立工程类型为Android Application Project

(2)单击“Next”按钮,将显示如图1-20所示的新建Android工程对话框,在该对话框的“Project Name”文本框中输入工程名称,在“Build SDK”列表中选择要使用的目标设备版本,在“Application Name”文本框中设置应用程序的名称,在“Package Name”文本框中输入包名。

图1-20 新建Android工程对话框

(3)单击“Finish”按钮,完成Android工程的创建。

1.5.2 Eclipse中的Android工程架构

在Eclipse的“Package Explorer”透视图中,新创建的Android工程的架构如图1-21所示。

图1-21 Android工程架构

通过该透视图可以看到,工程的根目录HelloWorld中包含了一些自动生成的文件和目录,它们是组成Android应用程序的必需部分,其在应用程序中所起到的作用和主要功能如下。

◎ src目录:该目录用来存放工程中的所有源文件,当工程刚创建时,该目录中将包含Activity的源文件,以后用户创建的所有源文件也都将存放在该目录中。

◎ gen目录:该目录中包含一个在创建工程时自动生成的R.java文件,该文件是只读模式的,不能手动更改。R.java文件中包含很多静态类,这些静态类用来表示工程中所有资源的引用。

◎ Android 4.0目录:该目录中包含android.jar文件,这是一个Java归档文件,其中包含构建应用程序所需的所有Android SDK库和API。

◎ assets目录:包含应用程序需要使用到的视频和音频文件。

◎ res目录:该目录是资源目录,包含工程中的资源文件并将其编译进应用程序。向此目录添加资源文件时,会被R.java自动记录。该目录下有5个子目录:drawable-hdpi、drawable-ldpi、drawable-mdpi、layout和values。其中,3个drawable开头的目录中包含一些应用程序中使用的图标文件,layout目录中包含界面布局文件main.xml,values目录中包含程序中要使用到的字符串引用文件strings.xml。

◎ AndroidManifest.xml文件:该文件是工程的总配置文件,用来配置应用中所使用的各种组件。在这个文件中,可以设置应用程序所提供的功能及应用程序使用到的服务和Activity。

◎ project.properties文件:该文件负责记录工程中所需要的环境信息,如Android的版本信息等。

1.5.3 Eclipse中Android工程的调试和运行

使用Eclipse新创建的Android工程是可直接运行的。单击Eclipse菜单栏中的“Run”→“Run As”→“Android Application”菜单项,或者在工程名称上单击鼠标右键,在弹出的功能菜单上选择“Run As”→“Android Application”选项,Eclipse将打开默认的Android模拟器,显示如图1-22所示的HelloWorld程序运行结果。

图1-22 Android应用程序运行结果

如果要对Android应用程序进行调试,可以单击Eclipse菜单栏中的“Run”→“Debug As”→“Android Application”菜单项,或者在工程名称上单击鼠标右键,在弹出的功能菜单上选择“Debug As”→“Android Application”选项,就将进入程序调试过程。

1.5.4 创建一个Android应用:Welcome Android

下面以一个在屏幕上显示“Welcome Android”的实例来描述Android应用开发的过程。

创建Android工程

根据1.5.3节中所述的步骤,创建一个名称为HelloWorldText的Android应用,其中创建的Activity的类名也是HelloWorldText。工程创建完成后,该类中的默认代码如下所示。

◎ HelloWorldText类代码

    import android.app.Activity;
    import android.os.Bundle;
    public class HelloWorldText extends Activity {
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
        }
    }

该类开头的import语句表示从Android SDK的android.jar中导入特定的类,这两句导包语句是必需的。在定义用户的Activity类时,必须继承Android提供的android.app. Activity。该类中包含的代码用来定义如何创建、显示和运行应用程序,在该类的默认代码中只包含了一个onCreate()方法,在该方法中首先调用父类的onCreate()方法,然后调用setContentView()方法,该方法的作用是根据main.xml文件中的配置代码来设置Activity的界面内容。该方法中所需的参数是“R.layout.main”,其中R表示在创建工程时自动生成的R.java文件,该文件中的代码不要手工修改。

工程创建后该文件的默认代码如下所示:

    package com.example;
    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;
        }
    }

通过上述代码可以看到,该类中定义了很多静态最终类,实际上这些静态类是指向工程中资源的指针。这时候理解HelloWorldText类中的代码setContentView(R.layout.main)就很容易了,该方法的参数就是表示R类中的layout内部类中的main变量,通过该变量就可以引用main.xml文件了。

工程目录res/layout包含一个XML文件main.xml,该文件中定义了程序界面布局及界面中所需组件的声明,因此程序界面的设计实际上可以通过编写该XML文件来完成。

HelloWorldText工程中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>

<TextView>标签用来声明一个TextView组件对象,在该标签中,android:text属性表示TextView组件所显示的内容,该属性的属性值“@string/hello”表示引用工程res/values目录中的strings.xml文件中name为“hello”的字符串。

strings.xml文件的默认代码如下所示:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <string name="hello">Hello World, HelloWorldText!</string>
        <string name="app_name">HelloWorldText</string>
    </resources>

通过上述代码可以看到,strings.xml文件中name为“hello”的字符串是“Hello World, HelloWorldText!”,也就是说,在界面中将通过TextView组件显示字符串“Hello World, HelloWorldText!”。当然,用户可以修改要显示的字符串内容,例如,如果要在屏幕中显示“Welcome Android”字符串,则需要将strings.xml中对应的代码修改如下:

    <string name="hello"> Welcome Android </string>

修改完成后,运行HelloWorldText工程,在打开的Android模拟器中将显示如图1-23所示的运行结果。

图1-23 HelloWorldText运行结果

注意

除了使用XML设置显示的字符串之外,还可以通过View类提供的setText()方法设置要显示的字符串,具体代码如下。

    TextView HelloWorldTextView = new TextView(this);
    HelloWorldTextView.setText("Welcome Android ");
    setContentView(HelloWorldTextView);