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);