【Android源码 栏目提醒】:以下是网学会员为您推荐的Android源码 -Android例子大全(带运行截图) - 开发文档,希望本篇文章对您学习有所帮助。
第 2 章
Android 初体验
Android 初体验
Android 操作系统顶着 Google 与 Open Handset Alliance 的光环,让很多程序员在
Android 手机 还没上市之前,就开始紧追着官方文档、Early SDK 版本更新,这是 IT 业界罕见的现象,因为大 家都抱持着“不想输在起跑点上”的心态。
这也是手机发展的历史中,第一次有机会让所有的程序 员站在同一个起跑点开始,无论是 Java World 论坛、或是 Google 官方的 Developer Discussion Group 都见到相当热烈的讨论。
从这一章开始,将对
Android 的程序架构、程序进入点、编译以及执行,进行一系列的导航, 而本书规划之初,并非针对 Java 初学者或从未接触过程序设计的朋友所设计,故在这一章简要的 overview 当中,则以快速掌握开发条件、开发环境为目的,若你是第一次接触 Java 程序语言,或 从未写过面向对象程序设计,建议你先学习 Java 语言,打好基础后,再回过头来进入本章。
接下来的内容分成五个部分:安装
Android SDK、创建
Android 手机开发项目(Project)、了 解
Android 程序的生命周期,初探可视化的开发工具,最后将应用程序部署到模拟器和
Android 手机上,为避免过于概念性的论述及篇幅的浪费,所有操作练习皆以步骤的方法描述,只要跟着操 作即可上手,在体验完本章的内容之后,你就可以开始本书范例的学习之旅了。
在开始之前,你需要先准备以下作业环境以及程序:必备项目 自我检查(ˇ)Microsoft Windows XP/Microsoft Windows Vista 操作系统或Mac OS X 10.4.8 或更新的版本(硬件必须是 x86 的版本)或LinuxAndroid SDK 1.0r2 以上(本书所有范例皆以
Android SDK 1.1r1 为开发环境)Java Development Kit(JDK)v6.0 以上Eclipse 开发 IDE 程序(本书所有范例皆以 eclipse-jee-ganymede-SR1-win32 版本为编译环境) 准备就绪之后,就可以前往
Android 官方网站(http://developer.
android.com/)下载 Andr oid SDK,也可以到(http://androidappdocs.appspot.com)去下载。
▲图 2-1 到
Android 官方网站下载 SDK 下载后的
Android SDK 为压缩文件,请将它解压缩到磁盘中,例如下面的文件夹:D:SDKandroid 而 Eclipse 编译 IDE 环境中,需安装 ADT(
Android Development Tools)plug-in,此为
Android 的开发工具,启动 Eclipse 后,请运行“Help—Software UpdatesFind and Install”,并按下“Add Site”输入 ADT plug-in 网址后(如下),按下“Install”便开始自动下载安装:https://dl-ssl.google.com/
android/eclipse/▲图 2-2 安装 ADT Plug-in 下载后,安装向导会显示两项必须安装的程序:
Android Development Tools 与
Android Editors。
▲图 2-3 选择安装
Android 开发工具及编辑器 虽然
Android ADT 可以免费下载安装,但在使用上仍然有其局限性,跟一般应用程序许可条款的签署类似。
▲图 2-4 同意使用
Android 软件开发条款 安装 ADT 所需的时间不长,也可以在后台运行,不会影响现有的操作系统程序。
安装完毕后,需要重新启动 Eclipse,才能使用
Android ADT。
▲图 2-5 可以在后台运行安装 ADT,并需要重新启动 Eclipse 至此
Android SDK 及 ADT 已安装完毕,所有准备工作都已经就绪,随时可以开始建立
Android项目。
这一节将建立本书第一个
Android 项目,不过,在初次建立
Android 项目之前,需要设置
Android SDK 的路径,让 Eclipse 可以找到
Android SDK,先执行“Window—Preferences”。
▲图 2-6 运行 Eclipse 的 Preferences 设置功能 点击“
Android”的树状列表,单击“Browse”按钮,选择刚才解压的
Android SDK 的路径,而后按下“Apply”设置让 Eclipse 引用的 SDK 文件夹。
▲图 2-7 设置
Android Preferences 路径
Android SDK 的引用路径设置完成之后,就可以开始建立 Hello World 这个经典范例了;运行“File—NewProject”建立新项目。
▲图 2-8 建立新的项目 新建项目向导需要指定一种应用程序类型,故展开“
Android”后,点击“
Android Project”,按下“Next”按钮继续。
▲图 2-9 选择建立项目类型为
Android Project 新建
Android 项目需输入项目名称(Project name)、Package name、Activity name 以及 Application name,最后按下“Finish”按钮,项目随即建立完成。
▲图 2-10 输入项目名称及 Package name 建立新项目 到目前为止,新建
Android 项目已经完成,而且这个新建立的程序也已经可以运行,运行的方法是在“Package Explorer”窗口里,点开刚建立好的“HelloWorld”项目文件夹,并在项目名称上单击鼠标右键,在功能菜单上运行“Run As>
Android Application”功能。
▲图 2-11 运行“Run As—
Android Application”功能 假若此时尚未将手机与计算机联机,那么 Eclpise 将打开默认的
Android 模拟器(Emulator),运行画面就如同真的手机开机一样,随着计算机硬件环境的不同,运行模拟器也会有不同的性能表现,开机之后,随即打开刚建立好的 Hello World 程序。
▲图 2-12 没写一行程序的 Hello World 要退出被启动的“Hello World”程序,可以按下手机模拟器上的退格键(Backspace)。
▲图 2-13 按下退格键离开程序,回到手机的桌面 虽然半行代码都没有写,但向导却帮忙写好了程序进入点、布局配置、字符串常数、应用程序访问权限等,除了可作为程序模板之外,也是
Android 手机程序的最佳学习范例。
让我们回过头来看看刚才
Android 项目建立向导帮忙做了哪些工作,以此来了解
Android 应用程序的生命周期及其文件组成方式;首先,展开“Package Explorer”窗口里的“HelloWorld”项目名称,可以看见如下数据结构的文件:HelloWorld-src -helloworld.irdc.eracom.com.cn -HelloWorld.java -R.java-
Android Library -
android.jar - D:SDKandroid-assets-res -drawable -icon.png -layout -main.xml -values -strings.xml-AndroidManifest.xml 在展开的文件夹层中,“src”、“
Android Library”、“assets”、“res”与“AndroidManifest.xml”同属一层,放置在“src”里的为主程序、程序类(class);放置在“res”里的为资源文件(Resource Files),如程序 ICON 图标、布局文件(layout)与常数(values)。
以此 Hello World 程序为例,主程序为“HelloWorld.java”,其内容与一般 Java 程序格式相类似:package helloworld.irdc.eracom.com.cnimport
android.app.Activityimport
android.os.Bundlepublic class HelloWorld extends Activity / Called when the activity is first created. / Override public void onCreateBundle savedInstanceState super.onCreatesavedInstanceState setContentViewR.layout.main 主程序里可看见 HelloWorld 类继承自 Activity 类,在类中重写了 onCreate 方法,在方法内以 setContentView 来设置这个 Acvitity 要显示的布局(R.layout.main),使用布局配置“layoutmain.xml”,布局文件是以 XML 格式编写的,内容如下: 布局配置中设置了一个 TextView TAG,用以配置文本标签 Widget,其内部设置的
android:text 属性,则是要显示的文字内容,引用“string”里的 hello 字符串常数。
查看“values/strings.xml”字符串常数设置如下: Hello World HelloWorld HelloWorld 其中“hello”字符串变量的内容为“Hello World HelloWorld”,这即是刚才看见的 HelloWorld 程序显示的文字内容了。
Android 应用程序有以下三种类型:l 前端 Activity(Foreground Activities)。
l 后台服务(Background Services)。
l 间隔执行 Activity(Intermittent Activities)。
前端 Activity 就如同这个 Hello World 一样,运行在手机前端程序中;后台服务可能是看不见的系统服务 、 (System Service) 系统 Broadcast 与 (广播信息) Receiver(广播信息)接收器);间隔执行 Activity 则类似如进程(Threading)、Notification Manager 等等。
每一个项目都有一个“AndroidManifest.xml”设置文件,里头包含这个
Android 应用程序具有哪些 Activity、Service 或者 Receiver,先来看看 Hello World 制作好的“AndroidManifest.xml”设置文件的内容描述: 在 manifest 文件中有一个名为 HelloWorld 的 Activity,设置其 intent-filter 的 categoryandroid:name 为
android.intent.category.LAUNCHER,写在 intent-filter 里是指定此Activity 为默认运行的主要 Activity,除了在 manifest 文件中手动设置之外,也可在 Eclipse右击项目名称,运行“Run As—Run Configurations”,设置 Launch Action:▲图 2-14 设置项目要执行的 Action 方式或 Activity Activity 类的应用程序有其默认运行的方式,为了确保应用程序运行的优先级,理解 Activity 在手机运行时的生命周期,及其可视性(Visible)周期。
▲图 2-15 Activity 自 onStop 之后,程序即可被关闭 以 Hello World 程序里继承自 Activitry 类开始,一旦程序被执行,即会照以上流程顺序进行,若需要在 Activity 程序里编写程序,默认常见的进入点为重写 onCreate(Activity)或onStart(Service),重写的方式可通过 Eclipse 来选择,方法为将鼠标光标停在继承自 Activity 的空白处,单击鼠标右键展开菜单,点开执行“Source—Override/Implement Methods”功能。
▲图 2-16 执行“Source—Override/Implement Methods”功能 在重写于实现方法的对话框中,点开“Activity”树状列表,在其中找到了 onCreateBundle方法,勾选前方的选择项(CheckBox),再按下“OK”按钮即可。
▲图 2-17 选择要重写的方法,向导会自动在主程序中描述重写内容 最后,比较值得一提的是 onResume 与 onPause,这两个方法为 Activity 在 onCreate 之后运行过程中的生命周期,当程序失去前端焦点、或者被关闭,就会触发 Activity 的 onPause状态;当应用程序被再次唤醒,则会回到 onResume 状态,故在编写与 User 互动的程序过程中,需注意 User 暂时离开 Activity(或前往不同的 Activity、不同的 Service)前,需要处理的工作都会摆在 onPause 当中执行。
以一个通过网络 FTP 下载 mp3 的 Activity 为例,暂停下载工作可以写在 onPause 里,需要接续前一次的下载等处理,则由 onResume 负责。
Android 手机有着华丽的机身、流畅的执行速度,唯一欠缺的就是“具有视觉美感的 UI 设计员”,但自
Android SDK rc20a 一路发展到 1.0_r2,Open Handset Alliance 提供的 ADT(
Android Development Tools),终于有了预览界面的功能,只要点开项目的“res—layout”,双击 main.xml 运行“
Android Layout Editor”,或在其上单击鼠标右键展开菜单单,执行“Open With—
Android Layout Editor”。
▲图 2-18 单击 XML 布局配置文件,选择以
Android Layout Editor 编辑
Android Editor 的功能虽然阳春,但至少还算齐备,具有文字模式与 UI 配置模式可供切换,如下图的“Layout”与“main.xml”页签切换所示。
▲图 2-19
Android Layout Editor 具有文字模式与 UI 配置模式可供切换编辑 目前的 ADT 版本,虽然提供了预览接口功能,但没有提供类似 Microsoft Visual Studio 的拖拉界面组件开发工具,所以布局的配置虽然直观,但还是不够自然,所幸,在 Google 还未完整推出 GUI 的拖拉工具之前,已有网友以 Java 写出了好用的可视化 GUI 布局拖拉工具程序:DroidDraw。
DroidDraw 目前是一个公开的 Google Code,除了可以在线免费下载(http://code.google.com/p/droiddraw/)使用到计算机端执行之外,也提供在线直接使用的版本(http://www.droiddraw.org/);DroidDraw 同时还提供了源代码(Source Code),可供程序员自行参考或修改。
▲图 2-20 DroidDraw 提供了可视化拖拉组件的方式设计布局 期待未来 Google 能将拖拉布局的功能纳入
Android Editor 当中,如此一来更能整合 AndroidSDK 以及开发环境的功能,且让我们拭目以待吧! 要部署程序在模拟器上运行,在先前 Hello World 的程序已经看过了,在项目名称上单击右键执行
Android 应用程序即可,但事实上,要将
Android 程序,部署在手机环境中进行测试,方法也是相同的,同样调用“Run As—
Android Application”的方式执行,不同的是,需要事先安装好
Android 的 USB Driver,并且通过 USB 联机至手机,在与手机联机的状况下,就可以让 Eclipse在运行
Android 程序时,直接将程序部署于实机环境中执行。
Android USB 驱动程序是随着
Android SDK 所提供的,每一个版本的 SDK 都可能有不同版本的USB Driver Version,其存放在以下
Android SDK 解开后的参考位置,如:D:SDKandroidusb_driver 安装的步骤是先将手机以 USB 与计算机连接,操作系统会找到名为
Android Phone 的设备,但是却在装置管理员当中无法正确被识别,如下所示。
▲图 2-21 操作系统找到名为
Android Phone 的装置,但无法正确被识别 接着画面会跳出添加硬件向导,选择“从列表或指定位置安装(高级)”来自行挑选驱动程序位置。
▲图 2-22 选择“从列表或指定位置安装”自己安装驱动程序 在“搜索和安装选项”的画面中,选择“不要搜索,我要自己选择要安装的驱动程序”选项,选择“显示所有设备”后,按下“下一步”。
▲图 2-23 选择不要搜索系统数据,改以自行挑选硬件的方式 利用浏览按钮选择复制源为
Android USB Driver 程序路径:▲图 2-24 选择
Android SDK 里所附的 USB Driver 选择驱动程序后,于显示兼容硬件列表中选择“HTC Dream Composite ADB Interface”,程序将
Android 手机的 USB ADB Interface 安装完成。
▲图 2-25 安装
Android USB ADB Interface 完成 设备管理器会自动新增一项 ADB Interface 的项目,表示已经顺利安装了
Android 手机与计算机的联机。
▲图 2-26 顺利安装了
Android 手机与计算机的联机 安装完 ADB Interface 之后,暂时还无法通过 Eclipse 将
Android 项目程序部署至手机上,必须先将手机上的 USB 调试(Debug)模式打开,在手机上执行“应用程序设置—开发USB 调试”。
▲图 2-27 将手机的 USB 调式模式打开 在 Eclipse 执行项目时,若程序发现先前已打开的模拟器与手机同时并存,那么将会跳出 Device Chooser 的窗口让开发者选择要部署的设备,下图为选择
Android G1 手机之后,于 Console里显示正确执行的 Log 纪录。
▲图 2-28 上图中的警告为开发使用的是 SDK 1.1 但手机是 SDK 1.0 的警告 部署程序到手机上测试是最适合的方法,因为许多功能皆需要手机才能进行测试,如 WiFi 驱动程序、平衡感应器、电池剩余计量等等。
看完了本章介绍的内容,相信各位已快速掌握了
Android SDK 的安装方法、Eclipse 开发环境的设置、使用可视化布局开发工具,以及试写了一个
Android Hello World 的应用程序(咳~虽然一行程序都没写~),最后将程序部署于实机上运行,这是每一位
Android 程序员都必须快速掌握的重点,也是进入本书范例必须要具备的基本操作能力。
接下来将是丰富精彩的范例系列,相信通过边学边操作,你将获得更多宝贵的实战经验,祝大家学习愉快! 第 3 章 用户人机界面用户人机界面 范例说明 前一章写了 Hello World 之后,一直觉得没有写半行代码对不起自己,所以在本章人机界面一开始,则延续 Hello Wolrd 的气势,进行与 TextView 文字标签的第一次接触。
在此范例中,将会在 Layout 中创建 TextView 对象,并学会定义 res/values/strings.xml 里的字符串常数,最后通过 TextView 的 setText 方法,在预加载程序之初,更改 TextView 文字。
运行结果▲图 3-1 认识 TextView.setText 更改默认 Layout 里定义的文本字符串 范例程序src/irdc.ex03_01/EX03_01.java 主程序示范以 setText 方法,输出 String 类型的字符串变量。
package irdc.ex03_01import
android.app.Activityimport
android.os.Bundle/必须引用 widget.TextView 才能在程序里声明 TextView 对象/import
android.widget.TextViewpublic class EX03_01 extends Activity /必须引用 widget.TextView 才能在程序里声明 TextView 对象/ private TextView mTextView01 / Called when the activity is first created. / Override public void onCreateBundle savedInstanceState super.onCreatesavedInstanceState / 载入 main.xml Layout,此时 myTextView01:text 为 str_1 / setContentViewR.layout.main / 使用 findViewBtId 函数,利用 ID 找到该 TextView 对象 / mTextView01 TextView findViewByIdR.id.myTextView01 String str_2 欢迎来到
Android 的 TextView 世界... mTextView01.setTextstr_2 res/layout/main.xml 以
android:id 命名 TextView 的 ID 为 mTextView01;在较旧的版本写法与 1.0 的不同,请特别留意。
扩展学习 TextView 里的 setText 方法支持以下多态构造方法:public final void setTextCharSequence textpublic final void setTextint residpublic void setTextCharSequence text TextView.BufferType typepublic final void setTextint resid TextView.BufferType typepublic final void setTextchar text int start int len 在此,以最后 setTextchar text int start int len 为例,第一个参数为 char 数组作为输出依据,第二个参数为从哪一个元素索引开始选取,第三个参数则为要取出多少个元素,请看以下的例子:
上一篇:
Android操作系统的安全性研究
下一篇:
用遗传算法解决车辆优化调度问题