Eclipse开发Android应用程序入门




By Chris Blunt


翻译:赵锟
原文出处:http://www.smashingmagazine.com/2010/10/25/get-started-developing-for-android-with-eclipse/


如今的移动设备应用程序开发充满着让人振奋的东西。功能强大的硬件支持,平板电脑,多样的软件平台(塞班 OS,iOS,WebOS,Windows Phone 
7…),移动设备开发者前景充满了机会和挑战。


当你想要开始开发你的移动设备程序时,如此多的选择可能让你产生困扰。究竟应该选择神马平台?我应该学习神马语言?为你计划的项目选择神马工具?在本教程中,你将学会如何在Google公司的开源移动设备操作系统Android下开发应用程序。


为神马选Android


Android是一个基于Linux内核的开源平台, 并且被安装在来自于不同厂商的上千种设备中。Android将各种移动设备的硬件如 
电子罗盘,摄像头,GPS,方向感应,等等暴露给你的应用程序。

Android的免费开发工具可以让你以0成本开始编写你的软件。当你想向世界展示你的应用程序的时候,你可以将你的软件发布到Google的 
Android 市场。向Andriod Market 发布程序只一次性的收取注册费用(25元),并且不像苹果的App Store 
,对每一次的提交都要做检查,除非你的程序明显地违法,在经过一个快速检查的流程后,才能让你的程序提供给客户下载和购买。


下面是Android对于开发者的优点:



  • Android的SDK可以在Windows,Mac和Linux上运行,因此你不需要为了开发环境支付额外的新硬件投入。(译者注:我曾近在Win7 64x 
    + VMWare上成功的安装Mac Snow leopard + XCode的开发环境,对于爱用盗版的人来说,这点MS优势不是很大啊) 
  • 构建于JAVA上的SDK。如果你熟悉JAVA语言,你就是事半功倍了。(译者注:这个酷壳有篇文章讨论过,大家可以参看:http://coolshell.cn/) 
  • 你只要在Android Market上发布应用程序,你将有潜在的成千上万的用户。而且你不一定非要把程序发布在Android 
    Market上,你还可以在你的博客上发布。而且有传言,Amazon已近在最近准备搭建他们自己的Android 应用程序商店了。 
  • 除了了技术性的SDK 
    文档外,还可以找到其他更多的使用者和开发者的资源。

闲话少说——下面让我们进入正题,开始开发我们的Android应用程序。


安装Eclipse和Android SDK


Android应用程序的推荐开发环境是带有Android开发包插件(Android Devlopment Toolkit 
(ADT))的Eclipse。我在这里简要说明一下安装流程。如果你需要更多的细节,Google的开发人员网页中详尽地解释了具体的安装配置过程



  • 为你的平台下载Android SDK(Windows , Mac OS X 或者 
    Linux)。 
  • 在你的硬盘上解压下载文件 (在Linux, 我使用 /opt/local/). 
  • 如果你没有安装Eclipse,下载并安装Eclipse 
    JAVA 集成开发环境包。 用于编程的话, Google推荐使用Eclipse 3.5 (Galileo). 
  • 运行Eclipse 并选择Help->Install New Software
  • 在Available Software窗口中点击Add按钮。 
  • 进入 Android Development Tools 的Name输入框, 在Location 
    输入框输入https://dl-ssl.google.com/android/eclipse/ 
  • 检查可用软件中有Developer Tools并点击OK按钮。这将安装Android Development Tools 和DDMS, 
    Android的调试工具。



  • 点击Next和Finish按钮以完成安装,安装完成后,你需要重启你的Eclipse一次。 
  • 在Eclipse重启后,选择Window->Preference 后你可以在分类列表中看到Android这一项了。 
  • 现在需要告诉Eclipse,你的Android SDK安装在什么地方。点击Android项后浏览选择你解压后的Android 
    SDK所在的路径。例如/opt/local/android-sdk。



  • 点击OK按钮,保存信息。

选择Android 平台


在你开始编写Android应用程序之前,你需要为你需要开发应用程序的Android设备下载SDK平台。每个平台都有可以安装在用户设备上的不同版本的SDK。对于Android1.5或以上版本,有两个可用的平台: 
Android Open Source Project 和 Google.


Android Open Source Project 平台是开源的,但是不包括Google公司的私有化扩展,比如Google 
Map。如果不选择使用Google的API,Google的地图功能就不会在你的应用程序中生效。除非你有特别的原因,否则我们推荐你选择Google平台,因为这样你可享受到Google的扩展类库提供的便利。



  • 选择Window Android SDK and AVD Manager
  • 点击左栏中的Available Packages 并选择选择Respository中有效的Android SDK平台。 
  • 你可以选择列表中所需要的平台,或全选下载所有有效的平台。当你选择完毕,单击Install Selected 并完成安装。 


一旦成功的下载所有的平台后,你就可以准备开始开发Android应用程序了。


创建一个新的Android项目


Eclipse的新建项目向导能为你创建一个新的Android项目,并生成可以开始运行的文件和代码。通过向导生成代码,可以让你马上得到一个Android程序运行的直观映像并为你提供了一个帮助你快速入门的方法:



  • 选择 File->New->Project… 
  • 选择Android Project 
  • New Project 对话框, 键入如下的设置:







1 2 3 4 5 6
Project Name: BrewClock Build Target: Google Inc. 1.6 (Api Level 4) Application Name: BrewClock Package Name: com.example.brewclock Create Activity: BrewClockActivity Min SDK Version: 4


在点击了完成按钮之后,Eclipse将为你创建一个新的可以运行的Android项目。注意,你通知了Eclipse生成了一个叫做BrewClockActivity的Activity。这个Activity的代码用于运行你的应用程序。生成的代码将在程序运行时非常简单地显示一条“Hello 
World”消息。



包名是你的应用程序标示。当你开始准备在Android 
Market上发布你的应用程序的时候,Android用这个标识符精确地记录你的应用程序的更新过程,因此让包名唯一是非常重要的。尽管我们在这里使用了com.example.brewclock这样的名字空间,对于真实的应用程序,你应该选择类似于com.你的公司名.你的应用程序名 
这样的包名。


SDK 版本


Min SDK Version 
是你的Android程序所能运行得最早版本号。对于每个新发布的Android,SDK会增加并修改一些方法。通过选择一个版本号,Android(Android 
Market)会知道你的应用程序能运行在等于或晚于指定版本的设备之上。


运行你的应用程序


现在让我们开始在Eclipse中运行我们的应用程序。由于是第一次运行,Eclipse将会询问你的项目类型:



  • 选择Run->Run 或 按下 Ctrl+F11
  • 选择Android Application 并点击 OK 按钮.

Eclipse 
将会在一个Android设备上运行一个应用程序。在这个时候,由于你没有任何Android设备,因此在运行时一定会返回一个失败,并且询问你是否要新建一个Android的虚拟设备。(AVD)


Android 虚拟设备


Android 虚拟设备 (AVD) 
是一个模拟真实世界中Android设备的模拟器,例如移动电话或平板电脑。你可以在不买任何真实Android设备情况下,使用AVD测试你的应用。


你可以创建任意多个你喜欢的AVD,每个可以建立在不同版本的Android平台之上。对于你创建的每个Android设备,你可以配置不同的硬件属性,比如是否具有物理键盘,是否支持GPS,摄像头的像素,等等。


在你开始运行你的应用程序之前,你需要创建你的AVD,来运行指定的SDK平台(Google APIs 1.6)。


现在让我开始:



  • 如果还没有开始运行你的应用程序,点击run(或按下 Ctrl+F11)。 
  • 当目标设备弹出警告,点击Yes 以创建新的AVD。 
  • 单击Android SDK and AVD Manager 对话框内的New 按钮. 
  • 为你的AVD键入如下的设置:







1 2 3 4
Name: Android_1.6 Target: Google APIs (Google Inc.) - API Level 4 SD Card Size: 16 MiB Skin Built In: Default (HVGA)


  • 单击 Create AVD 让Android为你创建一个新虚拟设备。 
  • 关闭the Android SDK and AVD Manager 对话框.


运行代码


再次运行你的应用程序(Ctrl+F11)。 Eclipse 将build 
你的项目并运行一个新的AVD。记住,AVD模拟了一个完全的Android系统,因此你需要有耐心来等待这个缓慢的启动过程,就如同你重启真实的Android设备一样。一个好的做法是不要关闭你的AVD,直到你完成了你一天的工作。
当你的模拟器启动后,Eclipse自动地安装并运行你的应用程序。



开发你第一个Android应用


生成的代码能良好的运行,但是你真正想要的是开发一个真实的应用程序。为此,我们首先果一个咸蛋的设计流程,并开始创建一个可以让你部署在Android设备上的应用。


大部分的开发者(包括我自己)都喜欢每天一杯咖啡或茶。在下一节中,你将开发一个简单的泡茶计数器应用程序来记录用户泡了多少杯茶,并为泡每杯茶做一个定时器。


你可以从GitHub下载整个教程的源代码.


设计用户界面


在开发任何Android应用程序之前的第一步就是设计和开发用户界面。下面是一个我们这个应用程序的用户界面的一个概览。



用户将能通过+和-按钮设置一个泡茶的定时器。当单击开始按钮,定时器将开始按指定的时间递减。除非用户再次点击按钮以取消计时,否则当定时器为0的时候,累计的泡茶计数brew将增加1。


开发用户界面


Android 用户界面或布局layouts
是通过XML文档来描述的,可以在项目的res/layouts目录下找到。在之前运行在模拟器上代码中,我们可以看到由eclipse自动生成的布局代码在res/layouts/main.xml 
中。


Eclipse有一个图形化的布局设计器,通过在屏幕上的拖拽控制来完成布局的设计,然而,我却发现直接写XML并使用图形布局来预览是更容易的方式。


现在让我们对main.xml做一些工作以达到上图的效果:



  • 在Eclipse中通过双击PackageExplorer的res/layouts/main.xml 来打开xml。 
  • 点击屏幕下方main.xml 来切换为xml视图。

将main.xml中内容改为如下的内容:








1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
# /res/layouts/main.xml <?xml version="1.0" encoding="utf-8"?>   xmlns:android="http://schemas.android.com/apk/res/android"   android:orientation="vertical"   android:layout_width="fill_parent"   android:layout_height="fill_parent">       android:orientation="horizontal"     android:layout_width="fill_parent"     android:layout_height="wrap_content"     android:padding="10dip">           android:layout_width="wrap_content"       android:layout_height="wrap_content"       android:textSize="20dip"       android:text="Brews: " />           android:layout_width="fill_parent"       android:layout_height="wrap_content"       android:text="None"       android:gravity="right"       android:textSize="20dip"       android:id="@+id/brew_count_label" />         android:orientation="horizontal"     android:layout_width="fill_parent"     android:layout_height="wrap_content"     android:layout_weight="1"     android:gravity="center"     android:padding="10dip">    

正如你所见的,Android的XML布局文件是繁琐的,但却能让你控制到屏幕的各个元素。


在Android中最重要的接口元素是布局Layout容器,例如例子中使用的LinearLayout 
。这些元素对于用户是不可见的,但是却扮演者例如Buttons 和TextViews这些元素的布局容器。


Android中有几种不同类型的布局视图layout view,每一种都用于开发不同的布局。如同LinearLayout 和AbsoluteLayout 
,TableLayout 可以让你使用更为复杂的基于表格结构的布局。你可以在SDK的API文档的通用布局对象中查找到更多的布局。


关联你的布局Layout与代码


保存你的布局,在Eclipse中点击Run图标或按下Ctrl+F11重新在模拟器中运行你的程序。你现看到不是之前出现的Hello 
World消息了,你将看到Android显示了一个新的界面。


如果点击界面上的任何按钮,他们将期望的显示为高亮,但是不会执行任何操作。现在让我们在布局修改后改进一下我们的源码:


# /src/com/example/brewclock/BrewClockActivity.java








1 2 3 4 5 6 7 8 9 10 11 12 13 14
... import  android.widget.Button; import  android.widget.TextView; public  class  BrewClockActivity extends  Activity {   /** Properties **/   protected  Button brewAddTime;   protected  Button brewDecreaseTime;   protected  Button startBrew;   protected  TextView brewCountLabel;   protected  TextView brewTimeLabel;   ... }

下一步,我们将修改调用onCreate。当Android启动你的应用程序的时候,Android会首先调用这个方法。 
在Eclipse生成的代码中,onCreate把activity的视图设置成R.layout.main。这行代码告诉Android解释我们的布局配置XML文件,并显示它。


资源对象


在Android中,R是一个自动生成的对象,这是一个特殊的对象,你可以在代码中通过这个对象访问项目中的资源(布局,字符串,菜单,图标,…) 
。每个资源都有一个给定的id。在上面的那个布局文件中,有一些@+id XML 属性。我们将通过这些值来关联布局中的Buttons 
与TextViews和我们的代码和:


# /src/com/example/brewclock/BrewClockActivity.java








1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
... public  class  BrewClockActivity extends  Activity {   ...   public  void  onCreate(Bundle savedInstanceState) {     super .onCreate(savedInstanceState);     setContentView(R.layout.main);     // Connect interface elements to properties     brewAddTime = (Button) findViewById(R.id.brew_time_up);     brewDecreaseTime = (Button) findViewById(R.id.brew_time_down);     startBrew = (Button) findViewById(R.id.brew_start);     brewCountLabel = (TextView) findViewById(R.id.brew_count_label);     brewTimeLabel = (TextView) findViewById(R.id.brew_time);   } }

监听事件


为了检测到用户单击我们的按钮,我们需要实现一个监听器listener。你可能会从其他的事件驱动系统中熟悉监听器或回调函数callbacks。比如Javascript/JQuery事件或Rails的回调函数。


Android通过Listener接口提供相似的机制,例如OnClickListener,这个接口中定义了那些会被事件触发的方法。当用户点击屏幕的时候,实现OnClickListener 
接口将会通知你的应用程序,并告诉他们所按得屏幕按钮。你当然也需要告诉每个button的ClickListener,以便Android知道具体通知到那个监听器:


# /src/com/example/brewclock/BrewClockActivity.java








1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
... // Be sure not to import // `android.content.dialoginterface.OnClickListener`. import  android.view.View.OnClickListener; public  class  BrewClockActivity extends  Activity   implements  OnClickListener {   ...   public  void  onCreate(Bundle savedInstanceState) {     ...     // Setup ClickListeners     brewAddTime.setOnClickListener( this );     brewDecreaseTime.setOnClickListener( this );     startBrew.setOnClickListener( this );   }   ...   public  void  onClick(View v) {     // TODO: Add code to handle button taps   } }

下一步,我们将增加每个按钮按下的处理过程。我们将为Activity类增加4个属性,这些属性将用来让用户设置和记录我们泡茶时间,泡茶计数,计时器是否在运行的标志。


# /src/com/example/brewclock/BrewClockActivity.java








1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
... public  class  BrewClockActivity extends  Activity   implements  OnClickListener {   ...   protected  int  brewTime = 3 ;   protected  CountDownTimer brewCountDownTimer;   protected  int  brewCount = 0 ;   protected  boolean  isBrewing = false ;   ...   public  void  onClick(View v) {     if (v == brewAddTime)       setBrewTime(brewTime + 1 );     else  if (v == brewDecreaseTime)       setBrewTime(brewTime - 1 );     else  if (v == startBrew) {       if (isBrewing)         stopBrew();       else         startBrew();     }   } }

注意我们使用了Android提供的类CountDownTimer 
。这让我们非常容易的创建和开始一个简单的递减计数,这个递减计数在递减运行的时候,每当执行一个递减就发出一个通知。你将在下面的startBrew 
方法中使用到这个计数器。


在下面的方法是所有处理逻辑,这些处理逻辑用于处理设置泡茶时间,开始停止计数和维护计数器。我们同样地在onCreate方法中来初始化我们的 
brewTime和 brewCount变量。


将这些代码放入到不同的类中是一种好做法。但是为了简洁,我把我们所有的代码都放到了BrewClockActivity中:


# /src/com/example/brewclock/BrewClockActivity.java








1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
... public  class  BrewClockActivity extends  Activity   implements  OnClickListener {   ...   public  void  onCreate(Bundle savedInstanceState) {     ...     // Set the initial brew values     setBrewCount( 0 );     setBrewTime( 3 );   }   /**    * Set an absolute value for the number of minutes to brew.    * Has no effect if a brew is currently running.    * @param minutes The number of minutes to brew.    */   public  void  setBrewTime( int  minutes) {

更多相关文章

  1. android GridView选择照片的完整实现
  2. Android(安卓)activity属性设置大全
  3. 基于Android客户端的人人网开放平台开发系列教程 (有源码哦)
  4. Android(安卓)中Notification的运用
  5. android从相册中选择报无法加载照片
  6. 通过浏览器直接打开Android应用程序
  7. 使用命令行在手机上运行android单元测试
  8. 安卓开发环境安装
  9. 【Android开发】Android应用程序目录结构

随机推荐

  1. Android(安卓)应用的版本兼容 了解一下(理
  2. 《Android移动应用基础教程》(Android(安
  3. apk开发者!含泪狂刷Android基础面试118题,
  4. 【Android的从零单排开发日记】之入门篇(
  5. 年后陆续面试Android(安卓)15 家大厂,这个
  6. 《Android/OPhone 开发完全讲义》样章和
  7. 北京android待遇 月薪过万秘籍分享
  8. Android(安卓)仿微信的键盘切换
  9. android 开源项目集锦
  10. Android学习笔记在互联网上火了,讲的明明