1.5 Android应用实例
下面首先来介绍一个Android应用实例,让读者领略Android的应用。Android编程就是面向应用程序框架API编程——这种开发方式与编写普通Java SE应用程序并没有太大的区别,只是Android新增了一个API而已。
使用Eclipse开发Android应用非常方便,因为Eclipse会为我们自动完成许多工作。使用Eclipse开发Android应用大致需要以下3步骤:① 创建一个Android项目;② 在XML布局文件中定义应用程序的用户界面;③ 在Java代码中编写业务实现。
以上3步骤只是最粗粒度的归纳,下面以开发一个Hello World来介绍Android开发,实现步骤如下。
(1)在Eclipse主菜单下单击“文件”菜单下的“其他”选项,或单击工具条中的新建快捷键来创建一个Android应用项目。Eclipse弹出“选择向导”界面,如图1-31所示。
图1-31 “选择向导”界面
(2)选择图1-31中的“Android Application Project”选项,单击“下一步”按钮,弹出如图1-32所示的“New Android App”界面。
图1-32 “New Android App”界面
(3)单击图1-32中的“下一步”按钮,弹出如图1-33所示的配置发射器的图标颜色设置界面。
图1-33 配置发射器的图标颜色设置界面
(4)在图1-33中,选择默认值,然后单击“下一步”,弹出如图1-34所示的创建活动界面。
图1-34 创建活动界面
(5)在图1-34中选择默认值,单击“下一步”按钮,弹出如图1-35所示的新的空白活动界面,将“Layout Name”命名改为“main”,其他采用默认值,单击“完成”按钮,即可完成Android项目的创建。
图1-35 新的空白活动界面
Android项目创建完成后将看到如图1-36所示的项目结构。
图1-36 Android项目结构
Android项目的Layout目录下有一个main.xml文件,该文件用于定义Android的应用用户界面。在Eclipse工具中打开该文件,将看到如图1-37所示的界面。
图1-37 ADT提供的界面设计工具
在图1-37所示的界面的控件面板中向程序中拖入一个“Button”控件(按钮),再切换到源代码编写界面,main.xml文件代码修改为:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:text="@string/hello_world" tools:context=".MainActivity" /> <Button android:id="@+id/OK" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/textView1" android:layout_below="@+id/textView1" android:layout_marginTop="82dp" android:text="单击这" /> </RelativeLayout>
上面XML文档的根元素为:RelativeLayout,其代表了一个相对布局,在该界面布局中包含两个UI控件。
● TextView:代表一个文本框。
● Button:代表一个普通按钮。
在Android用户界面设计中,各种界面布局元素将会在后面进行详细介绍,不同UI组件也会在后面进行详细介绍。此处只说明UI组件上的几个通用属性。
● android:id:指定该控件的唯一标识,在Java程序中可通过findViewById("id")来获取指定的Android界面组件。
● android:layout_width:指定该界面组件的宽度。如果该属性值为fill_parent,则说明该组件与其父容器具有相同的宽度;如果该属性值为wrap_content,则说明该组件的宽度取决于它的内容——基本能包裹它的内容即可。
● android_height:指定该界面组件的高度。如果该属性值为fill_parent,则说明该组件与其父容器具有相同的高度;如果该属性值为wrap_content,则说明该组件的高度取决于它的内容——基本能包裹它的内容即可。
Android把用户界面放在XML文档中定义是因为:这样做可以让XML文档专门负责用户UI设置,而Java程序则专门负责业务实现,这样可以降低程序的耦合性。
Android项目的src目录是Android项目的源代码,该目录下有一个HelloWorld.java文件,其是Android项目的Java文件。打开该文件,代码修改为:
package com.example.helloworld; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; public class MainActivity extends Activity { //当第一次创建该Activity时回调该方法 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //设置使用main.xml文件定义的页面布局 setContentView(R.layout.main); //获取UI界面中ID为R.id.ok的按钮 Button bn=(Button)findViewById(R.id.OK); //为按钮绑定一个单击事件的监听器 bn.setOnClickListener(new OnClickListener() { public void onClick(View v) { //获取UI界面中ID为R.id.show的文本框 final TextView show=(TextView)findViewById(R.id.textView1); //改变文本框的文本内容 show.setText("Hello Android~"+new java.util.Date()); } }); } }
以上程序十分简单,其只做了3件事,即:①以该Activity使用main.xml文件定义的界面布局文件作为用户界面;②获取ID为R.Id.OK的按钮;③为第二步获得的按钮绑定事件监听器——在事件监听器的处理器方法中改变ID为R.id.textView1的文本框内容。
单击Eclipse界面中的“运行”按钮,或按F11键即可运行HelloWorld项目,效果如图1-38所示。
图1-38 运行程序效果