2.4 创建第一个Android应用程序
2.4.1 创建HelloAndroid工程
启动Eclipse,依次选择File | New | Android Project,将会出现如图2.11所示的界面。在Project name中输入项目名称,单击Next,选择Build Target为“Android 5.1”,再次单击Next,确定包名为“introduction.Android.helloAndroid”,单击Finish。Eclipse会自动创建Android工程HelloAndroid。
图2.11 创建HelloAndroid工程
2.4.2 编写代码
双击HelloAndroid工程中的HelloAndroidActivity.java,该文件中已有程序代码如下:
package introduction.Android.helloAndroid; import Android.app.Activity;import Android.os.Bundle; public class HelloAndroidActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); } }
HelloAndroidActivity.java这几行代码比较简单,表明类HelloAndroidActivity继承了Activity类,并重写了onCreate()方法,在方法体中调用了父类的onCreate()方法,然后调用setContentView()方法显示视图界面。Android工程中使用xml文件来设计视图界面,R.layout.main是Android工程中默认的布局文件的名字,即main.xml。
main.xml的内容如下:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android" Android:layout_width="fill_parent" Android:layout_height="fill_parent" Android:orientation="vertical"> <TextView Android:layout_width="fill_parent" Android:layout_height="wrap_content" Android:text="@string/hello" /> </LinearLayout>
该文件中的代码表示当前的布局文件使用LinearLayout布局,该布局中仅有一个TextView组件用于显示信息,显示的内容由"@string/hello"指定。"@string/hello"指的是资源文件中values/strings.xml中定义的hello字符串。strings.xml中的内容如下:
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">Hello Android!</string> <string name="app_name">HelloAndroid</string> </resources>
由该文件可见,hello字符串的内容为“Hello Android!”。
2.4.3 运行应用程序
步骤01 选择HelloAndroid项目文件,右键单击工程,在弹出菜单中依次选择Run As | Android Application命令,出现如图2.12所示的Android虚拟设备AVD界面。
图2.12 Android虚拟设备AVD界面
步骤02 选择并运行编写的应用程序,出现如图2.13所示的HelloAndroid应用程序界面。
图2.13 运行HelloAndroid应用程序界面
2.4.4 工程文件结构解析
没有书写一句程序代码,一个Android应用便创建成功了,但是这只是一个简单的Android应用,要创建更多的Android应用,还要详细地了解Android应用程序结构。
Android工程文件结构如图2.14所示。
图2.14 Android工程文件结构
下面分别介绍各个目录或文件的作用。
●src。该目录(文件夹)中包含应用程序的所有源代码。在src文件夹中可以创建若干Java包,在包中可以创建应用的处理逻辑以及应用的Activity,图2.14中的“HelloAndroidActivity.java”就是在创建项目的时候创建的一个Activity,在Activity中可以编写控制View的逻辑。
●Android 4.0。该目录(文件夹)中放的是当前工程使用的Android SDK。图2.14中表示当前项目引用的是Android SDK 4.0,不同版本的SDK这个文件的名会不同。
●gen。该目录(文件夹)的Java包中有一个“R.java”文件。R类中包含了四个静态内部类:attr、drawable、layout和string,分别代表了属性、图片资源、布局文件及字符串的声明。R.java文件是资源索引类,由Eclipse自动生成的,开发者不用去修改和维护里面的内容,但是这个文件却非常有用,它和res文件夹紧密相连,对res下资源的操作都会导致R.java文件的重新编译。R.java中定义的常量类也是间接帮助Activity完成对资源的应用。Android这样设计的好处,就是使得复杂的资源通过专门的类来管理而让程序中的代码变得整齐,强壮,并且减少了程序出错和bug的产生。
●assets。该目录(文件夹)中通常放置一些原始资源文件,它会在Android打包的时候原封不动地一起打包,安装时会直接解压到对应的assets目录中。这里通常放置一些项目中用到的多媒体资源等。
●res。目录(文件夹)中放置的是Android要用到的各种程序资源。其中常见的子文件夹有drawable、layout、values等。其中,drawable目录放置应用到的图片资源;layout目录放置一些与UI相关的布局文件,都是以xml文件方式保存;values目录中放置的是一些字符串、数组、颜色、样式和动画等资源,values目录中的每一个文件都会转化成R.java中的一个静态类,文件中的每一个资源都会转化成R.java中对应静态类的静态整型常量,这样Activiy中通过一个解析器就可以获取到对应的资源。
●AndroidManifest.xml。这个文件是整个项目的配置资源,里面配置的内容包括当前应用程序所在的包、应用程序中的Activity、应用程序的访问权限等。
●default.properties。这个文件中记录了Android项目运行时的环境信息以及Android SDK的版本信息。
●proguard.cfg。该文件为Android提供了混淆代码工具proguard的配置文件。