从零开始学Android编程
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

第2章 第一个Android程序

通过第1章的学习,我们对Android系统有了一定的了解。本章我们要开始实现自己的第一个Android程序。所以,首先要做好准备工作:包括Android开发系统的需求、一些开发包的下载及开发工具的安装,等等,下面将一一介绍。

2.1 开发Android之前的准备工作

俗话说:工欲善其事,必先利其器。在开发自己的第一个Android程序之前,首先要做好相应的准备工作。例如,Android开发对系统的需求,以及开发Android所需要的软件包和工具。

在系统方面,Windows XP及以上的版本、苹果系统(Mac OS)、Linux等都可以,配置最好相对要好一点,这样模拟器的运行就会快一点。本书采用的是微软的Window 7系统。

软件包也是开发Android程序很重要的一部分,我们需要哪些软件包和工具呢?如下所示。

❑ JDK 1.6。这个是Java必备的软件包,从前面知道,Android的应用程序都是用Java开发的,所以Android的开发也要有Java的开发环境。其下载地址为:http://www.oracle.com/technetwork/java/javase/downloads/ea-jsp-142245.html,如图2.1所示。

图2.1 JDK下载

❑ Android SDK。这是Google为Android提供的一系列包和一些类,要安装这个才能进行Android开发,才能看到Android的模拟环境。其下载地址为:http://developer.android.com/sdk/index.html,如图2.2所示。

图2.2 SDK下载

❑ 开发工具Eclipse。所有代码的书写,以及程序的调试都在这个开发工具中完成,Eclipse是一个很强大的开发工具,也可以下载一些Google提供的插件安装在它上面,如即将提到的ADT,其下载地址为http://www.eclipse.org/downloads/,如图2.3所示。

图2.3 Eclipse下载

❑ 开发工具ADT。ADT是Google提供的基于Eclipse的Android开发的插件,可以以插件的形式把它结合到Eclipse上。ADT可以帮助我们提高Android程序的编写速度,其下载地址为https://dl-ssl.google.com/android/eclipse/

这些都是开发Android必须要准备的开发包和开发工具,知道这些必备工具之后,就可以搭建Android开发环境,下一节将学习Android开发环境的搭建。

2.2 Android开发平台的搭建

在2.1节讲到了Android开发的一些必备开发包及工具,下面将分别说明它们的安装,以及怎么把Android的SDK和ADT集合到Eclipse中。

2.2.1 JDK安装及配置Java开发环境

从前面的讲解已经知道,Android的开发需要有Java的开发环境,所以这里首先讲的是JDK的安装和Java开发环境的配置。安装步骤如下:

(1)双击已经下载的JDK,会弹出一个安装的指示。

(2)安装JDK,它包括两部分:JDK和JRE。一般把这两个部分安装在同一个目录下,如果安装在C盘下,只要单击“下一步”按钮,就可以安装成功。

(3)Java开发环境变量的配置,在“我的电脑”图标上单击鼠标右键,在弹出的快捷菜单中选择“属性”命令,在弹出的对话框中选择“高级”选项卡,单击“环境变量”按钮,弹出“环境变量”对话框。在“系统变量”中找到“Path”这个变量名,如图2.4所示(如果没有找到这个变量名可以自己新建一个,一般都会存在的)。找到JDK安装目录下的bin文件夹,复制路径,编辑Path路径粘贴到其中,如果有多个,以“;”分开,添加完以后单击“确定”按钮;同样在“系统变量”中找到classPath变量名(如果没有同样可以新建),如图2.5所示,找到JDK目录下的lib文件夹,以后的步骤同上。

(4)安装好JDK并且配置好环境变量之后,选择“开始”→“运行”命令,输入cmd进行测试,输入“java-version”按回车键后,会看到如图2.6所示的信息。

图2.4 Path变量配置

图2.5 classPath变量配置

图2.6 检测JDK是否安装成功

通过上面的几个步骤就把Java的运行环境安装好了,接下来安装Java的开发工具Eclipse。

2.2.2 Eclipse的安装及其汉化

Eclipse的安装非常简单,下载完解压即可。目前,Eclipse最新的版本是3.7,并且是英文版,对于英语不是很好的读者来说,应用英文版的软件依然是一件很头疼的事情,何况Eclipse的功能又如此强大,如果我们能把它变为中文版就更完美了。下面来简单说明一下Eclipse的汉化。

(1)首先下载一个汉化包,解压以后会得到features文件夹和plugins文件夹,把它们放在同一个文件夹中。

(2)在Eclipse文件夹中找到一个名为dropins的文件夹,在其中新建一个扩展名为link的文件,在文件中输入汉化包的路径,如path=..\\myplugins\\language。

(3)再打开Eclipse就是中文版了,如图2.7所示。

图2.7 Eclipse的汉化

至此,JDK、环境变量、Eclipse都已经准备好了。接下来最重要的就是安装Android的开发环境SDK及工具ADT。

2.2.3 Android SDK与ADT的安装与配置

SDK和ADT的安装是开发Android程序的最后一个步骤,把SDK和ADT安装好了以后,Android的开发平台就完全搭建好了,就可以写自己的第一个Android程序了。

1.Android SKD的安装

(1)把下载好的压缩包解压,运行SDK Manager.exe。

(2)选择“Available packages”选项可以看到Android的所有版本,可以根据自己的需要去选择,如图2.8所示。在图2.8中只看到了几个,因为这里已经安装好了一些版本。

图2.8 选择API的版本

(3)选择“Installed packages”选项,会看到一些新的版本,可以选择性地对以前的版本进行更新,如图2.9所示。

图2.9 可更新的版本

下载好选择的版本之后,选择“Virtual devices”选项,然后单击“New”按钮,就可以创建模拟器,同时也可以看到已经创建的模拟器,如图2.10和图2.11所示。

图2.10 已建模拟器

图2.11 新建模拟器

2.ADT的安装

(1)启动Eclipse,选择“Help”→“Install”→“New”→“Software”命令,弹出如图2.12所示的对话框,单击“Add”按钮,弹出如图2.13所示的对话框。

图2.12 安装插件

(2)在“Name”文本框中输入ADT的名称,在“Location”文本框中输入ADT的网址https://dl-ssl.google.com/android/eclipse/。单击“确定”按钮,然后依次单击“下一步”按钮,即可完成安装。

(3)安装好ADT后,在Eclipse的菜单栏中会出现如图2.14所示的标记,并且可以把已经下载好的SDK与Eclipse关联起来。打开“Windows”菜单,选择“Preferences”→“Android”命令,如图2.15所示,在“SDK Location”后方单击“Browse”按钮,选择SDK的安装路径,单击“Apply”按钮,然后单击“OK”按钮,即把SDK与Eclipse关联起来了,此时就可以在Eclipse上开发Android程序了。

图2.13 添加ADT网址

图2.14 ADT在Eclipse显示

图2.15 ADT添加SDK

到这里,我们已经把开发Android的所有开发包及开发工具都安装好了。

2.3 HelloAndroid——我的第一个Android程序

在上一节中,开发Android程序的环境已经搭建好了,本节介绍Android程序的编写及其步骤。

2.3.1 从HelloAndroid看Android程序的结构

Google的ADT提供了简单生成Android程序框架的功能,可以使用ADT来创建第一个Android程序——HelloAndroid。

(1)启动Eclipse,选择“File” →“Android Project”命令(或者右键单击),弹出新建项目的对话框,选择“Android Project”,如图2.16所示。

图2.16 新建Android项目

(2)选择“Android Project”命令,弹出“New Android Project”对话框,设置项目名、包名(包名的形式必须是xxx.xxx)、Android的版本等,如图2.17至图2.19所示。

图2.17 输入Android项目名

图2.18 选择Android版本号

(3)信息输入之后,单击“完成”按钮,就成功创建了一个Android程序。

接下来看看这个程序的目录结构,如图2.20所示。这个程序完全是由ADT自动生成的,只是填写了比较少的东西。

图2.19 输入包名等

图2.20 HelloAndroid目录结构

由图2.20可以看出,HelloAndroid项目包含了很多文件夹,下面对每个文件夹进行简单介绍,以帮助后面的开发。

❑ src文件夹:这个文件夹与Java项目的文件夹没有什么区别,其中存放着项目的所有包,以及源文件(扩展名为java的文件)。

❑ assets文件夹:存放原始文件的文件夹。

❑ gen文件夹:这个文件夹中存放着R.java,R.java文件是新建项目时自动生成的,这个文件只能读取,不可以对其进行更改,该文件定义的是项目中所有资源文件的索引文件,HelloAndroid项目中的R.java文件如下(详细代码请参考光盘源代码:第2章\HelloAndroid\gen\com\zhy\hellpAndroid\R.java)。

public final class R {
    public static final class attr {
    }
    public static final class drawable {
        public static final int ic_launcher=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;
    }
}

❑ res文件夹:这个文件夹中包含了项目中要用到的资源文件,包括图片资源(drawable)、布局文件(layout)、一个常量资源(values),而在图片资源这个文件夹中有3个文件夹,它们分别表示的是高分辨率的图片、低分辨率的图片及中等分辨率的图片。

❑ AndroidManifest.xml文件:这个文件在所有的项目中名称都不会变,是一个全局的文件,所有在Android中用到的组件(Activity、Service、Broadcast Receiver及Content Provider)都要在该文件中声明。在该文件中还声明SDK的版本和用户的使用权限。下面看看HelloAndroid项目中的该文件。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.zhy.hellpAndroid"
    android:versionCode="1"
    android:versionName="1.0" >
    <uses-sdk android:minSdkVersion="8" />
    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:label="@string/app_name"
            android:name=".HelloAndroidActivity" >
            < intent-filter >
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

由第一行可知,这是一个XML文件,第一句声明了XML的版本和编码,接着是manifest根元素,在该元素下面指定了名称空间、包名、版本代号、版本信息及声明了Activity等。

Application元素下面有两个属性,说明了程序的图标及标题。下面是Activity的声明,其中有Activity的类名及名称。intent-filter是指Activity的过滤器,action表示的是该Activity的入口,category表示的是加载程序时运行。

每个Android的程序基本上包括了上面所说到的文件,至于layout的布局文件则会在第3章说明。

2.3.2 了解Android基本框架

在2.3.1节分析了第一个Android程序,对Android的程序有了一定的了解,但是对Android系统的框架还不是很了解。下面分析一下Android系统的基本框架,如图2.21所示。图2.21是整个Android系统的一个框架图,从图中我们可以明显看出,整个Android系统分为4层,从上到下依次是:应用层、应用框架层、系统运行库层和Linux内核层。

图2.21 Android系统框架图

(1)应用层:应用层是用Java语言写的运行在虚拟机上的程序,Google在开始时就捆绑了一个核心的应用。该核心应用程序包括E-mail客户端、SMS短信程序、日历、地图、浏览器、联系人管理等。

(2)应用框架层:这一层是Google开发核心应用程序所提供的API框架,开发人员可以使用这些框架来开发自己的应用,但是需要遵守其开发原则。从图2.21中可以看出应用框架层提供了以下组件。

❑ View System(视图):可以用来构建应用程序,它包括列表(List)、网格(Grid)、文本框(Text)、按钮(Button)及可嵌入的Web浏览器。

❑ Content Providers(内容管理器):它可以让一个应用访问另一个应用的数据,或共享它们自己的数据。

❑ Resource Manager(资源管理器):提供非代码资源的访问,如本地字符串、图形和布局文件。

❑ Notification Manager(通知管理器):应用可以在状态栏中显示自定义的提示信息。

❑ Activity Manager(活动类管理器):用来管理应用程序生命周期并提供常用的导航退回功能。

❑ Window Manager(窗体管理器):管理所有的窗口程序。

❑ Package Manager(包管理器):Android系统内的程序管理。

(3)系统运行库层:使用Android应用框架时,Android系统会通过一些C/C++库来支持使用的各个组件,使其更好地为我们服务。

❑ Bionic系统C库:C语言标准库,系统最底层的库,C库通过Linux系统来调用。

❑ 多媒体库(MediaFramework):基于PackerVideo OpenCORE,该库支持多种常见格式的音频、视频的回放和录制及图片,如MPEG4、MP3、AAC、AMR、JPG、PNG等。

❑ SGL:2D图形引擎库。

❑ SSL:位于TCP/IP协议与各种应用层协议之间,为数据通信提供支持。

❑ OpenGL ES 1.0:3D效果的支持。

❑ SQLite:关系数据库。

❑ Webkit:Web浏览器引擎。

❑ FreeType:位图(Bitmap)及矢量(Vector)。

(4)Linux内核层:Android的内核系统服务依赖于Linux 2.6内核,如安全性、内存管理、进程管理、网络协议栈和驱动模型。Linux同时也作为硬件与软件栈之间的抽象层。Android系统中有很多程序需要驱动,主要的驱动如下。

❑ 显示驱动(Display Driver):基于Linux的帧缓冲(Frame Buffer)驱动。

❑ 键盘驱动(KeyBoard Driver):作为输入设备的键盘驱动。

❑ Flash内存驱动(Flash Memory Driver):基于MTD的Flash驱动程序。

❑ 照相机驱动(Camera Driver):常用的基于Linux的v412(Video for Linux)的驱动。

❑ 音频驱动(Audio Driver):常用的基于ALSA的高级Linux声音体系驱动。

❑ 蓝牙驱动(Bluetooth Driver):基于IEEE 802.15.1标准的无线传输技术。

❑ WiFi驱动:基于IEEE 802.11标准的驱动程序。

❑ Binder IPC驱动:Android的一个特殊驱动程序,具有单独的设备节点,提供进程间通信的功能。

❑ Power Management(电源管理):如电池电量等。

以上4点就是整个Android系统的框架,而我们一般的开发大部分都集中在最上一层(应用层),而应用层主要用到的知识是Google提供的应用框架,所以对于初学者来说,要掌握应用框架层提供的API。

2.4 小结

本章主要学习了Android系统的框架,以及第一个Android程序的建立,从而对Android程序中每一个文件和文件夹有了一定的了解,也方便了以后的开发。对Android系统框架的说明,让我们明白了Android系统的组成。下一章将学习Android中的界面布局。

2.5 习题

【习题1】根据书中所描述的内容,动手搭建自己的Android开发环境并且创建自己的模拟器。

提示:参考书中建立模拟器的步骤,到相应的网址进行下载安装等。

【习题2】根据书中的实例,写出自己的一个Android程序,效果如图exe_2.1所示。

提示:需要修改res/values/strings.xml文件中的内容,以及程序的背景颜色。

图exe_2.1 编写一个Android程序

关键代码:

<string name="hello">哈哈,这是我自己的第一个Android程序</string>
android:textColor="#000000"