﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-牙牙窝-文章分类-移动开发</title><link>http://www.blogjava.net/bigbigtooth/category/28215.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 18 Dec 2007 23:02:44 GMT</lastBuildDate><pubDate>Tue, 18 Dec 2007 23:02:44 GMT</pubDate><ttl>60</ttl><item><title>转贴：Android程序开发初级教程（来自：IT专家网）</title><link>http://www.blogjava.net/bigbigtooth/articles/168527.html</link><dc:creator>大牙</dc:creator><author>大牙</author><pubDate>Tue, 18 Dec 2007 08:53:00 GMT</pubDate><guid>http://www.blogjava.net/bigbigtooth/articles/168527.html</guid><wfw:comment>http://www.blogjava.net/bigbigtooth/comments/168527.html</wfw:comment><comments>http://www.blogjava.net/bigbigtooth/articles/168527.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bigbigtooth/comments/commentRss/168527.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bigbigtooth/services/trackbacks/168527.html</trackback:ping><description><![CDATA[<br />
<br />
<strong>平台简介</strong>
<p>　　令人激动的<a href="http://whatis.ctocio.com.cn/searchwhatis/191/6093191.shtml" class="bluekey" target="_blank">Google</a>手机操作系统平台-Android正式发布了，这是一个开放源代码的操作系统，内核为<a href="http://whatis.ctocio.com.cn/searchwhatis/210/5948710.shtml" class="bluekey" target="_blank">Linux</a>. 作为开发者，我们所关心的是这个平台的架构以及所支持的开发语言。下面是这个平台的架构模型：</p>
<p>　　</p>
<p align="center"><img style="width: 521px; height: 434px;" alt="" src="http://mobilecomputing.ctocio.com.cn/imagelist/2007/352/tx13m5e00765.jpg" height="512" width="713" /></p>
<p>　　<strong>这个平台有以下功能：</strong></p>
<p>　　+ Application framework: 可重用的和可替换的组件部分，在这个层面上，所有的软件都是平等的。</p>
<p>　　+ Dalvik virtul machine: 一个基于Linux的虚拟机。</p>
<p>　　+ Integrated browser: 一个基于开源的WebKit引擎的浏览器，在应用程序层。</p>
<p>　　+ Optimized graphics: 包含一个自定义的2D图形库和基于OpenGL ES 1.0 标准的3D实现。</p>
<p>　　+ SQLite: 数据库</p>
<p>　　+ Media support: 通用的音频，视频和对各种图片格式的支持(MPEG4, H.264, MP3, AAC, <a href="http://whatis.ctocio.com.cn/searchwhatis/178/6025178.shtml" class="bluekey" target="_blank">AMR</a>, JPG, <a href="http://whatis.ctocio.com.cn/searchwhatis/159/6026159.shtml" class="bluekey" target="_blank">PNG</a>, <a href="http://whatis.ctocio.com.cn/searchwhatis/141/6093141.shtml" class="bluekey" target="_blank">GIF</a>)</p>
<p>　　+ GSM <a href="http://whatis.ctocio.com.cn/searchwhatis/131/6092631.shtml" class="bluekey" target="_blank">Telephony</a>: GSM 移动网络, 硬件支持。</p>
<p>　　+ Bluetooth, EDGE, 3G, and WiFi: 都依赖于硬件支持。</p>
<p>　　+ Camera, <a href="http://whatis.ctocio.com.cn/searchwhatis/209/6093209.shtml" class="bluekey" target="_blank">GPS</a>, compass, and accelerometer: 都依赖于硬件支持。</p>
<p>　　+　Rich development environment: 包含一套完整的开发工具集，方便跟踪调试，内存检测和性能测试，而且提供了Eclipse的插件。</p>
<p>　　下面我们就来亲身体验一下Android程序的开发之旅。</p>
<p>　　先介绍一下开发环境，下面是对系统及相关软件的版本要求：</p>
<p>　　<strong>操作系统：</strong></p>
<p>　　Windows XP or Vista</p>
<p>　　Mac OS X 10.4.8 or later (<a href="http://whatis.ctocio.com.cn/searchwhatis/187/5949187.shtml" class="bluekey" target="_blank">x86</a> only)</p>
<p>　　Linux (tested on Linux Ubuntu Dapper Drake)</p>
<p>　　Supported Development Environments</p>
<p>　　Eclipse</p>
<p>　　Eclipse 3.2, 3.3 (Europa)</p>
<p>　　Android Development Tools plugin (optional)</p>
<p>　　Other development environments or IDEs</p>
<p>　　JDK 5 or JDK 6 (JRE alone is not sufficient)</p>
<p>　　Not compatible with <a href="http://whatis.ctocio.com.cn/searchwhatis/182/6093182.shtml" class="bluekey" target="_blank">Gnu</a> Compiler for Java (gcj)</p>
<p>　　Apache Ant 1.6.5 or later for Linux and Mac, 1.7 or later for Windows</p>
<p>　　我使用Eclipse 3.3 + JDK 1.6. + Ant 1.7 的组合。还有两个重要的就是: Android SDK 以及 Android 用于Eclipse 中的插件。</p>
<p>　　Android SDK 的下载链接: http://code.google.com/android/</p>
<p>　　如果你是第一次使用这些软件，请注意安装顺序和设置好环境变量。 一般的顺序是先安装 JDK 然后 解压 ant 压缩包，然后设置
java 环境变量和 ant 环境变量， 然后是解压 Android SDK ，再设置 Android SDK的环境变量。 总之就是把
JDK, ANT, Android SDK的路径添加到 path 里。</p>
<p>　　Android for eclipse plug in 在安装过程很简单，通过网络安装插件就可以了，这个是 <a href="http://whatis.ctocio.com.cn/searchwhatis/125/5949125.shtml" class="bluekey" target="_blank">URL</a>: https://dl-ssl.google.com/android/eclipse/</p>
<br />
<p>　　具体的配置过程，可以查看：<a href="http://code.google.com/android/intro/installing.html#otherides">http://code.google.com/android/intro/installing.html#otherides</a></p>
<p>　　以下为一个hello Android的开发步骤：</p>
<p>　　<strong>创建一个项目:</strong></p>
<p>　　创建一个新项目是很简单的，只要你安装了Eclipse插件，并且你的Eclipse软件版本在3.2或3.3，你就可以开始开发了。</p>
<p>　　首先, 看一下要创建"Hello, World"程序从高级层面上有哪些步骤：</p>
<p>　　1, 通过　File -&gt; New -&gt; Project 菜单，建立新项目"Android Project"</p>
<p>　　2, 填写新项目各种参数。</p>
<p>　　3, 编辑自动生成的代码模板。</p>
<p>　　尽此而已，我们通过下面的详细说明来完成每个步骤。</p>
<p>　　<strong>1，　创建一个新的Android项目</strong></p>
<p>　　启动Eclipse, 选择　File -&gt; New -&gt; Project 菜单, 如果你安装好了Android的Eclipse插件，你将会在弹出的对话框中看到"Android Project" 的选项。</p>
<p>　　</p>
<p align="center"><img alt="" src="http://mobilecomputing.ctocio.com.cn/imagelist/2007/352/2je534zw4hm1.png" height="532" width="525" /></p>
<p>　　选择&#8220;Android Project&#8221;,点击　Next 按钮。</p>
<p>　　<strong>2, 填写项目的细节参数.</strong></p>
<p>　　下面的对话框需要你输入与项目有关的参数：</p>
<p>　　</p>
<p align="center"><img alt="" src="http://mobilecomputing.ctocio.com.cn/imagelist/2007/352/406408w82duw.png" height="532" width="525" /></p>
<p>　　这个表格中详细介绍了每个参数的含义:</p>
<p>　　Project Name: 包含这个项目的文件夹的名称。</p>
<p>　　Package Name: 包名，遵循JAVA规范，用包名来区分不同的类是很重要的，例子中用到的是"com.google.android",你应该按照你的计划起一个有别于这个的路径的名称。</p>
<p>　　Activity Name: 这是项目的主类名，这个类将会是Android的Activity类的子类。一个Activity类是一个简单的启动程</p>
<p>　　序和控制程序的类。它可以根据需要创建界面，但不是必须的。</p>
<p>　　Application Name:　一个易读的标题在你的应用程序上。</p>
<p>　　在"选择栏"的　"Use default location" 选项，允许你选择一个已存在的项目。</p>
<p>　<strong>3，编辑自动生成的代码。</strong>
</p>
<p>　　当项目创建后，你刚才创建的HelloAndroid就会是包含下面的代码.</p>
<p>　　public class HelloAndroid extends Activity</p>
<p>　　{</p>
<p>　　/** Called when the activity is first created. */</p>
<p>　　@Override</p>
<p>　　public void onCreate(Bundle icicle)</p>
<p>　　{</p>
<p>　　super.onCreate(icicle);</p>
<p>　　setContentView(R.layout.main);</p>
<p>　　}</p>
<p>　　}</p>
<p>　　下面我们开始修改它</p>
<p>　　<strong>[构建界面]</strong></p>
<p>　　当一个项目建立好以后，最直接的效果，就是在屏幕上显示一些文本，下面是完成后的代码，稍后我们在逐行解释。</p>
<p>　　public class HelloAndroid extends Activity {</p>
<p>　　/** Called when the activity is first created. */</p>
<p>　　@Override</p>
<p>　　public void onCreate(Bundle icicle) {</p>
<p>　　super.onCreate(icicle);</p>
<p>　　TextView tv = new TextView(this);</p>
<p>　　tv.setText("Hello, Android");</p>
<p>　　setContentView(tv);</p>
<p>　　}</p>
<p>　　}</p>
<p>　　注意你还需要添加 import android.widget.TextView; 在代码开端处。</p>
<p>　　在Android程序中, 用户界面是由叫做Views类来组织的。　一个View可以简单理解为可以绘制的对象，像选择按钮，一</p>
<p>　　个动画，或者一个文本标签(这个程序中)，这个显示文本标签的View子类叫做TextView.</p>
<p>　　<strong>如何构造一个TextView:</strong></p>
<p>　　TexiView tv = new TextView(this);</p>
<p>　　TextView的构造参数是Android程序的Context实例, Context可以控制系统调用, 它提供了诸如资源解析, 访问数据库等</p>
<p>　　等。Activity类继承自Context类，因为我们的HelloAndroid 是Activity的子类，　所以它也是一个Context类，所以我们能用"this"在TextView构造中。</p>
<p>　　当我们构造完TextView后，我们需要告诉它显示什么:</p>
<p>　　tv.setText("Hello, Android");</p>
<p>　　这个步骤很简单，当我们完成了这些步骤以后，最后要把TextView显示在屏幕上。</p>
<p>　　setContentView(tv);</p>
<p>　　Activity的setContentView()方法指示出系统要用哪个View作为Activity的界面, 如果一个Activity类没有执行这个方法，将会没有界面并且显示白屏。在这个程序中，我们要显示文本，所以我们传入已创建好的TextView。</p>
<p>　　好了，程序代码已经写好，下面看看运行效果。</p>
<p>　　<strong>运行代码: Hello, Android</strong></p>
<p style="background-color: highlight;">　<strong>3，编辑自动生成的代码。</strong>
</p>
<p>　　当项目创建后，你刚才创建的HelloAndroid就会是包含下面的代码.</p>
<p>　　public class HelloAndroid extends Activity</p>
<p>　　{</p>
<p>　　/** Called when the activity is first created. */</p>
<p>　　@Override</p>
<p>　　public void onCreate(Bundle icicle)</p>
<p>　　{</p>
<p>　　super.onCreate(icicle);</p>
<p>　　setContentView(R.layout.main);</p>
<p>　　}</p>
<p>　　}</p>
<p>　　下面我们开始修改它</p>
<p>　　<strong>[构建界面]</strong></p>
<p>　　当一个项目建立好以后，最直接的效果，就是在屏幕上显示一些文本，下面是完成后的代码，稍后我们在逐行解释。</p>
<p>　　public class HelloAndroid extends Activity {</p>
<p>　　/** Called when the activity is first created. */</p>
<p>　　@Override</p>
<p>　　public void onCreate(Bundle icicle) {</p>
<p>　　super.onCreate(icicle);</p>
<p>　　TextView tv = new TextView(this);</p>
<p>　　tv.setText("Hello, Android");</p>
<p>　　setContentView(tv);</p>
<p>　　}</p>
<p>　　}</p>
<p>　　注意你还需要添加 import android.widget.TextView; 在代码开端处。</p>
<p>　　在Android程序中, 用户界面是由叫做Views类来组织的。　一个View可以简单理解为可以绘制的对象，像选择按钮，一</p>
<p>　　个动画，或者一个文本标签(这个程序中)，这个显示文本标签的View子类叫做TextView.</p>
<p>　　<strong>如何构造一个TextView:</strong></p>
<p>　　TexiView tv = new TextView(this);</p>
<p>　　TextView的构造参数是Android程序的Context实例, Context可以控制系统调用, 它提供了诸如资源解析, 访问数据库等</p>
<p>　　等。Activity类继承自Context类，因为我们的HelloAndroid 是Activity的子类，　所以它也是一个Context类，所以我们能用"this"在TextView构造中。</p>
<p>　　当我们构造完TextView后，我们需要告诉它显示什么:</p>
<p>　　tv.setText("Hello, Android");</p>
<p>　　这个步骤很简单，当我们完成了这些步骤以后，最后要把TextView显示在屏幕上。</p>
<p>　　setContentView(tv);</p>
<p>　　Activity的setContentView()方法指示出系统要用哪个View作为Activity的界面, 如果一个Activity类没有执行这个方法，将会没有界面并且显示白屏。在这个程序中，我们要显示文本，所以我们传入已创建好的TextView。</p>
<p>　　好了，程序代码已经写好，下面看看运行效果。</p>
<p>　　<strong>运行代码: Hello, Android</strong></p>
<p>　　使用Android的Eclipse插件就可以很轻松的运行你的程序，选择Run -&gt; Open Run Dialog。你将会看到下面的对话框</p>
<p>　　</p>
<p align="center"><img style="width: 559px; height: 639px;" alt="" src="http://mobilecomputing.ctocio.com.cn/imagelist/2007/352/djyazirp427j.png" height="720" width="683" /></p>
<p>　　下一步,　高亮"Android Application" 标签,
然后按下左上角的图标(就是像一片纸带个小星星那个)，　或者直接双击　"Android Application" 标签,
你将会看到一个新的运行项目，名为"New_configuration".</p>
<p>　　</p>
<p align="center"><img style="width: 565px; height: 656px;" alt="" src="http://mobilecomputing.ctocio.com.cn/imagelist/2007/352/c349z7vu6e5y.png" height="720" width="683" /></p>
<p>　　取一个可以表意的名称，比如"Hello, Android",
然后通过Browser按钮选取你的项目(如果你有很多个项目在Eclipse中，确保你选择要运行的项目),
然后插件会自动搜索在你的项目中的Activity类并且将所有找到的添加在"Activity"标签的下拉列表中。　我们只有"Hello,
Android"一个项目，所以它会作为默认选择。</p>
<p>　　点击"Apply" 按钮,下图</p>
<p>　　</p>
<p align="center"><img style="width: 533px; height: 674px;" alt="" src="http://mobilecomputing.ctocio.com.cn/imagelist/2007/352/j35h0o6k1m6j.png" height="720" width="683" /></p>
<p>　　到这里，已经完成了，你只需要点击"Run"按钮，然后 Android的模拟器将会启动，你的应用程序就会被显示出来。</p>
<p>　　</p>
<p align="center"><img alt="" src="http://mobilecomputing.ctocio.com.cn/imagelist/2007/352/456srzcm4cl1.png" height="808" width="495" /></p>
<p>　　下次继续介绍如何把界面的布局用XML表示以及使用命令行进行编译和运行Android程序。</p>
<br />
<p><br />
</p>
<p>　　你刚刚完成的"Hello,
World"例子我们称之为&#8221;程序化&#8221;的界面编排。意思就是说构建你的应用程序界面是直接使用的源代码。如果你已经完成过很多界面程序，你大概熟悉像此类
的方式是多么脆弱：一个对布局小小的修改会对源代码造成很头疼的事情。如果忘掉与View的紧密结合，这个导致代码出错和浪费你的调试时间的界面问题也会
很简单。</p>
<p>　　这就是为什么Android提供了一种可替换的界面构建方式: 基于XML的布局文件。最简单的解释这个概念的方式就是展示一个例子。 我们就用刚才创建的项目来进行演示，达到相同的界面效果。</p>
<p>　　android:layout_width="fill_parent"</p>
<p>　　android:layout_height="fill_parent"</p>
<p>　　android:text="Hello, Android"/&gt;</p>
<p>　　AndroidXML布局文件的大体的结构很简单。 它是一个标签的树，任何一个标签就是View类的名字。在这个例子中,
它是一个很简单的只有一个元素的树，一个 TextView。
你可以使用任何继承自View类的名字作为标签的名字。包括在你的代码中自定义的View类。这个结构可以很容易的构建界面，它比你在源代码中使用的结构
和语法更简单。这个模式的设计灵感来自于Web开发。 就是可以将界面和应用程序逻辑分离的模式。</p>
<p>　　在这个例子中， 也有些是XML的属性，下面是他们的含义:</p>
<p>　　<strong>属性含义</strong></p>
<p>　　xmlns:android 这是XML命名空间的声明,它是告诉Android的工具, 你将要涉及到公共的属性已被定义在XML命名空间。在每一个Android的布局文件的最外边的标签必须有这个属性。</p>
<p>　　android:layout_width 这个属性定义了在屏幕上这个View可用的宽度是多少。</p>
<p>　　android:layout_height 这个属性定义了在屏幕上这个View可用的高度是多少。</p>
<p>　　android:text 设置TextView所包含的文本内容，当前设置为&#8221;Hello, Android&#8221;信息</p>
<p>　　以上就是一个XML布局文件的样子，但是你需要放在哪里?它要放在你的项目目录的res/ 文件夹下。 &#8220;res&#8221;是&#8221;resources&#8221;的缩写，它是存放所有非代码资源的文件夹，包含象图片，本地化字符串和XML布局文件。</p>
<p>　　这些Eclipse的插件已经给你创建好了，在我们上面的例子中，我们没有使用它。在包浏览器中，展开res目录的layout. 并且编辑 main.xml, 替换掉那个文本内容，然后保存。</p>
<p>　　现在，在包浏览状态，打开在代码文件夹中名为 R.java的文件， 你将看到下面的内容：</p>
<p>　　public final class R {</p>
<p>　　public static final class attr {</p>
<p>　　};</p>
<p>　　public static final class drawable {</p>
<p>　　public static final int icon=0x7f020000;</p>
<p>　　};</p>
<p>　　public static final class layout {</p>
<p>　　public static final int main=0x7f030000;</p>
<p>　　};</p>
<p>　　public static final class string {</p>
<p>　　public static final int app_name=0x7f040000;</p>
<p>　　};</p>
<p>　　};</p>
<p>　　一个项目的R.java文件是一个定义所有资源的索引文件。 使用这个类就像使用一种速记方式来引用你项目中包含的资源。这个有点特别的强大像对于Eclipse这类IDE的代码编译特性，因为它使你快速的，互动式的定位你正在寻找的特定引用。</p>
<p>　　到目前需要注意的重要事情是叫做&#8221;layout&#8221;的内部类和他的成员变量&#8221;main&#8221;, 插件会通知你添加一个新的XML布局文件，然后从新产生这个R.java文件，比如你添加了新的资源到你的项目，你将会看到R.java也相应的改变了</p>
<p>　　最后重要的事情是你需要去修改你的HelloAndroid源代码，去使用新的XML布局你的界面。替换掉编码式的界面模式。下面是你的新代码的样子，你可以看到，代码变得更加简单了。</p>
<p>　　public class HelloAndroid extends Activity {</p>
<p>　　/** Called when the activity is first created. */</p>
<p>　　@Override</p>
<p>　　public void onCreate(Bundle icicle) {</p>
<p>　　super.onCreate(icicle);</p>
<p>　　setContentView(R.layout.main);</p>
<p>　　}</p>
<p>　　}</p>
<p>　　当你做这些改变的时候，不要仅仅复制，粘贴到你的代码中，尝试去体验R.java的代码编译特点。你会发现它对你有很大的帮助。</p>
<p>　　现在完成这些改变以后，你就可以重新运行你的程序，然后你会发现两种不同的界面编排方式会产生同样的效果。</p>
<br />
<p><br />
</p>
<p>　　<strong>调试你的项目</strong></p>
<p>　　这个用于Eclipse中的Android插件作为Eclipse中的调试器也具有优秀的兼容性。要演示这些，让我们制造一个bug在代码中，改变你的HelloAndroid源代码象下面这样：</p>
<p>　　public class HelloAndroid extends Activity {</p>
<p>　　/** Called when the activity is first created. */</p>
<p>　　@Override</p>
<p>　　public void onCreate(Bundle icicle) {</p>
<p>　　super.onCreate(icicle);</p>
<p>　　Object o = null;</p>
<p>　　o.toString();</p>
<p>　　setContentView(R.layout.main);</p>
<p>　　}</p>
<p>　　}</p>
<p>　　这次简单的变化会引起一个NullPointerException异常， 如果你再次运行程序，你将会看到下面的屏幕：</p>
<p align="center">　　<img alt="" src="http://mobilecomputing.ctocio.com.cn/imagelist/2007/352/s3wepn3dx4b1.png" height="808" width="495" /></p>
<p>　　要找到什么地方出错，需要设置个断点在你源代码的 &#8220;Object o = null;&#8221;
行后(你可以双击在Eclipse中显示行数的左部区域), 然后选择 Run -&gt; Debug 选择最后一次的运行加载。
你的程序将会重起模拟器，但是这个时候它会挂起，当它走到你刚才设置的断点的时候，在Eclipse的调试模式视图中，它就会停止在你的代码处。就像你可
以在其他任意程序中做这个一样。。</p>
<p align="center">　　<img alt="" src="http://mobilecomputing.ctocio.com.cn/imagelist/2007/352/uw165424xvnw.png" height="414" width="475" /></p>
<p>　　<strong>使用其它的IDE工具创建项目</strong></p>
<p>　　如果你没有使用Eclipse(比如你使用其他的IDE开发工具，或者简单的只使用文本编辑和命令行工具)，　那么这个插件不会帮上你忙，别担心，你不会因为没有使用Eclipse而丢失任何开发能力。</p>
<p>　　其实Android的Eclipse插件也是将一套Android SDK的开发工具包装了。(这些工具像：模拟器，aapt, adb, ddms, 和其他的，可以参考google的相关文档)， 因此， 它也可以被其他工具包装，比如ant.</p>
<p>　　在Android SDK中包含一个Python脚本，叫做&#8221;activityCreator.py&#8221;，
它用于为了你的项目创建所有的源代码和目录的编译环境(个人理解), 也就是会产生可用于ant编译的build.xml.
这样就允许你的项目从命令行方式创建或者集成到你选择的IDE中。</p>
<p>　　比如，要创建一个HelloAndroid项目，就像刚才我们用Eclipse中的一样， 你可以使用下面的命令：</p>
<p>　　activityCreator.py --out HelloAndroid com.google.android.hello.HelloAndroid</p>
<p>　　要编译你的项目，你要接着使用ant命令，当命令行提示成功时候，你会看到一个名为HelloAndroid.apk的文件在&#8221;bin&#8221;目录下。 这个.apk文件是一个Android的包， 它需要使用&#8221;adb&#8221;工具安装进模拟器。</p>
<p>　　到这里为止，我向大家展示了Android平台的程序简单的开发实例，本人水平有限，翻译的时间仓促，一定有很多错误和疏漏，请多提修改意见。本系列教程的主要内容都是翻译自Google的Android开发文档。通过下面的链接查看全部内容。</p>
<p>　　http://code.google.com/android/intro/hello-android.html</p>
<img src ="http://www.blogjava.net/bigbigtooth/aggbug/168527.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bigbigtooth/" target="_blank">大牙</a> 2007-12-18 16:53 <a href="http://www.blogjava.net/bigbigtooth/articles/168527.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>