??xml version="1.0" encoding="utf-8" standalone="yes"?>精品一区二区综合,久久精品国产视频,9999精品视频http://www.aygfsteel.com/bigbigtooth/articles/168527.html大牙大牙Tue, 18 Dec 2007 08:53:00 GMThttp://www.aygfsteel.com/bigbigtooth/articles/168527.htmlhttp://www.aygfsteel.com/bigbigtooth/comments/168527.htmlhttp://www.aygfsteel.com/bigbigtooth/articles/168527.html#Feedback0http://www.aygfsteel.com/bigbigtooth/comments/commentRss/168527.htmlhttp://www.aygfsteel.com/bigbigtooth/services/trackbacks/168527.html
q_?/strong>

  令hȀ动的Google手机操作pȝq_-Android正式发布了,q是一个开放源代码的操作系l,内核?a class="bluekey" target="_blank">Linux. 作ؓ开发者,我们所兛_的是q个q_的架构以及所支持的开发语a。下面是q个q_的架构模型:

  

  q个q_有以下功能:

  + Application framework: 可重用的和可替换的组仉分,在这个层面上Q所有的软g都是q等的?/p>

  + Dalvik virtul machine: 一个基于Linux的虚拟机?/p>

  + Integrated browser: 一个基于开源的WebKit引擎的浏览器Q在应用E序层?/p>

  + Optimized graphics: 包含一个自定义?D囑Ş库和ZOpenGL ES 1.0 标准?D实现?/p>

  + SQLite: 数据?/p>

  + Media support: 通用的音频,视频和对各种囄格式的支?MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)

  + GSM Telephony: GSM Ud|络, g支持?/p>

  + Bluetooth, EDGE, 3G, and WiFi: 都依赖于g支持?/p>

  + Camera, GPS, compass, and accelerometer: 都依赖于g支持?/p>

  + Rich development environment: 包含一套完整的开发工具集Q方便跟t调试,内存和性能试Q而且提供了Eclipse的插件?/p>

  下面我们来亲n体验一下AndroidE序的开发之旅?/p>

  先介l一下开发环境,下面是对pȝ及相兌Y件的版本要求Q?/p>

  操作pȝQ?/strong>

  Windows XP or Vista

  Mac OS X 10.4.8 or later (x86 only)

  Linux (tested on Linux Ubuntu Dapper Drake)

  Supported Development Environments

  Eclipse

  Eclipse 3.2, 3.3 (Europa)

  Android Development Tools plugin (optional)

  Other development environments or IDEs

  JDK 5 or JDK 6 (JRE alone is not sufficient)

  Not compatible with Gnu Compiler for Java (gcj)

  Apache Ant 1.6.5 or later for Linux and Mac, 1.7 or later for Windows

  我用Eclipse 3.3 + JDK 1.6. + Ant 1.7 的组合。还有两个重要的是: Android SDK 以及 Android 用于Eclipse 中的插g?/p>

  Android SDK 的下载链? http://code.google.com/android/

  如果你是W一ơ用这些YӞh意安装顺序和讄好环境变量?一般的序是先安装 JDK 然后 解压 ant 压羃包,然后讄 java 环境变量?ant 环境变量Q?然后是解?Android SDK Q再讄 Android SDK的环境变量?M是? JDK, ANT, Android SDK的\径添加到 path 里?/p>

  Android for eclipse plug in 在安装过E很单,通过|络安装插g可以了Q这个是 URL: https://dl-ssl.google.com/android/eclipse/


  具体的配|过E,可以查看Q?a >http://code.google.com/android/intro/installing.html#otherides

  以下Z个hello Android的开发步骤:

  创徏一个项?

  创徏一个新目是很单的Q只要你安装了Eclipse插gQƈ且你的Eclipse软g版本?.2?.3Q你可以开始开发了?/p>

  首先, 看一下要创徏"Hello, World"E序从高U层面上有哪些步骤:

  1, 通过 File -> New -> Project 菜单Q徏立新目"Android Project"

  2, 填写新项目各U参数?/p>

  3, ~辑自动生成的代码模ѝ?/p>

  此而已Q我们通过下面的详l说明来完成每个步骤?/p>

  1Q 创徏一个新的Android目

  启动Eclipse, 选择 File -> New -> Project 菜单, 如果你安装好了Android的Eclipse插gQ你会在弹出的对话框中看到"Android Project" 的选项?/p>

  

  选择“Android Project”,点击 Next 按钮?/p>

  2, 填写目的细节参?

  下面的对话框需要你输入与项目有关的参数Q?/p>

  

  q个表格中详l介l了每个参数的含?

  Project Name: 包含q个目的文件夹的名U?/p>

  Package Name: 包名Q遵循JAVA规范Q用包名来区分不同的cL很重要的Q例子中用到的是"com.google.android",你应该按照你的计划v一个有别于q个的\径的名称?/p>

  Activity Name: q是目的主cdQ这个类会是Android的Activitycȝ子类。一个ActivitycL一个简单的启动E?/p>

  序和控制E序的类。它可以Ҏ需要创建界面,但不是必ȝ?/p>

  Application Name: 一个易ȝ标题在你的应用程序上?/p>

  ?选择?的 "Use default location" 选项Q允怽选择一个已存在的项目?/p>

 3Q编辑自动生成的代码?/strong>

  当项目创建后Q你刚才创徏的HelloAndroid׃是包含下面的代码.

  public class HelloAndroid extends Activity

  {

  /** Called when the activity is first created. */

  @Override

  public void onCreate(Bundle icicle)

  {

  super.onCreate(icicle);

  setContentView(R.layout.main);

  }

  }

  下面我们开始修改它

  [构徏界面]

  当一个项目徏立好以后Q最直接的效果,是在屏q上昄一些文本,下面是完成后的代码,E后我们在逐行解释?/p>

  public class HelloAndroid extends Activity {

  /** Called when the activity is first created. */

  @Override

  public void onCreate(Bundle icicle) {

  super.onCreate(icicle);

  TextView tv = new TextView(this);

  tv.setText("Hello, Android");

  setContentView(tv);

  }

  }

  注意你还需要添?import android.widget.TextView; 在代码开端处?/p>

  在AndroidE序? 用户界面是由叫做ViewscLl织的。 一个View可以单理解ؓ可以l制的对象,像选择按钮Q一

  个动画,或者一个文本标{?q个E序?Q这个显C文本标{View子类叫做TextView.

  如何构造一个TextView:

  TexiView tv = new TextView(this);

  TextView的构造参数是AndroidE序的Context实例, Context可以控制pȝ调用, 它提供了诸如资源解析, 讉K数据库等

  {。Activitycȝ承自Contextc,因ؓ我们的HelloAndroid 是Activity的子c, 所以它也是一个Contextc,所以我们能?this"在TextView构造中?/p>

  当我们构造完TextView后,我们需要告诉它昄什?

  tv.setText("Hello, Android");

  q个步骤很简单,当我们完成了q些步骤以后Q最后要把TextView昄在屏q上?/p>

  setContentView(tv);

  Activity的setContentView()Ҏ指示出系l要用哪个View作ؓActivity的界? 如果一个ActivitycL有执行这个方法,会没有界面q且昄白屏。在q个E序中,我们要显C文本,所以我们传入已创徏好的TextView?/p>

  好了Q程序代码已l写好,下面看看q行效果?/p>

  q行代码: Hello, Android

 3Q编辑自动生成的代码?/strong>

  当项目创建后Q你刚才创徏的HelloAndroid׃是包含下面的代码.

  public class HelloAndroid extends Activity

  {

  /** Called when the activity is first created. */

  @Override

  public void onCreate(Bundle icicle)

  {

  super.onCreate(icicle);

  setContentView(R.layout.main);

  }

  }

  下面我们开始修改它

  [构徏界面]

  当一个项目徏立好以后Q最直接的效果,是在屏q上昄一些文本,下面是完成后的代码,E后我们在逐行解释?/p>

  public class HelloAndroid extends Activity {

  /** Called when the activity is first created. */

  @Override

  public void onCreate(Bundle icicle) {

  super.onCreate(icicle);

  TextView tv = new TextView(this);

  tv.setText("Hello, Android");

  setContentView(tv);

  }

  }

  注意你还需要添?import android.widget.TextView; 在代码开端处?/p>

  在AndroidE序? 用户界面是由叫做ViewscLl织的。 一个View可以单理解ؓ可以l制的对象,像选择按钮Q一

  个动画,或者一个文本标{?q个E序?Q这个显C文本标{View子类叫做TextView.

  如何构造一个TextView:

  TexiView tv = new TextView(this);

  TextView的构造参数是AndroidE序的Context实例, Context可以控制pȝ调用, 它提供了诸如资源解析, 讉K数据库等

  {。Activitycȝ承自Contextc,因ؓ我们的HelloAndroid 是Activity的子c, 所以它也是一个Contextc,所以我们能?this"在TextView构造中?/p>

  当我们构造完TextView后,我们需要告诉它昄什?

  tv.setText("Hello, Android");

  q个步骤很简单,当我们完成了q些步骤以后Q最后要把TextView昄在屏q上?/p>

  setContentView(tv);

  Activity的setContentView()Ҏ指示出系l要用哪个View作ؓActivity的界? 如果一个ActivitycL有执行这个方法,会没有界面q且昄白屏。在q个E序中,我们要显C文本,所以我们传入已创徏好的TextView?/p>

  好了Q程序代码已l写好,下面看看q行效果?/p>

  q行代码: Hello, Android

  使用Android的Eclipse插g可以很L的运行你的程序,选择Run -> Open Run Dialog。你会看到下面的对话框

  

  下一? 高亮"Android Application" 标签, 然后按下左上角的图标(是像一片纸带个星星那?Q 或者直接双凅R"Android Application" 标签, 你将会看C个新的运行项目,名ؓ"New_configuration".

  

  取一个可以表意的名称Q比?Hello, Android", 然后通过Browser按钮选取你的目(如果你有很多个项目在Eclipse中,保你选择要运行的目), 然后插g会自动搜索在你的目中的Activitycdƈ且将所有找到的d?Activity"标签的下拉列表中。 我们只有"Hello, Android"一个项目,所以它会作为默认选择?/p>

  点击"Apply" 按钮,下图

  

  到这里,已经完成了,你只需要点?Run"按钮Q然?Android的模拟器会启动Q你的应用程序就会被昄出来?/p>

  

  下次l箋介绍如何把界面的布局用XML表示以及使用命o行进行编译和q行AndroidE序?/p>


  你刚刚完成的"Hello, World"例子我们UC?#8221;E序?#8221;的界面编排。意思就是说构徏你的应用E序界面是直接用的源代码。如果你已经完成q很多界面程序,你大概熟悉像此类 的方式是多么脆弱Q一个对布局小的修改会Ҏ代码造成很头疼的事情。如果忘掉与View的紧密结合,q个D代码出错和浪费你的调试时间的界面问题也会 很简单?/p>

  q就是ؓ什么Android提供了一U可替换的界面构建方? ZXML的布局文g。最单的解释q个概念的方式就是展CZ个例子?我们q刚才创徏的项目来q行演示Q达到相同的界面效果?/p>

  android:layout_width="fill_parent"

  android:layout_height="fill_parent"

  android:text="Hello, Android"/>

  AndroidXML布局文g的大体的l构很简单?它是一个标{树,M一个标{ְ是Viewcȝ名字。在q个例子? 它是一个很单的只有一个元素的树,一?TextView? 你可以用Q何承自Viewcȝ名字作ؓ标签的名字。包括在你的代码中自定义的ViewcR这个结构可以很Ҏ的构建界面,它比你在源代码中使用的结? 和语法更单。这个模式的设计灉|来自于Web开发?是可以界面和应用E序逻辑分离的模式?/p>

  在这个例子中Q?也有些是XML的属性,下面是他们的含义:

  属性含?/strong>

  xmlns:android q是XML命名I间的声?它是告诉Android的工? 你将要涉及到公共的属性已被定义在XML命名I间。在每一个Android的布局文g的最外边的标{ֿLq个属性?/p>

  android:layout_width q个属性定义了在屏q上q个View可用的宽度是多少?/p>

  android:layout_height q个属性定义了在屏q上q个View可用的高度是多少?/p>

  android:text 讄TextView所包含的文本内容,当前讄?#8221;Hello, Android”信息

  以上是一个XML布局文g的样子,但是你需要放在哪?它要攑֜你的目目录的res/ 文g夹下?“res”?#8221;resources”的羃写,它是存放所有非代码资源的文件夹Q包含象囄Q本地化字符串和XML布局文g?/p>

  q些Eclipse的插件已l给你创建好了,在我们上面的例子中,我们没有使用它。在包浏览器中,展开res目录的layout. q且~辑 main.xml, 替换掉那个文本内容,然后保存?/p>

  现在Q在包浏览状态,打开在代码文件夹中名?R.java的文Ӟ 你将看到下面的内容:

  public final class R {

  public static final class attr {

  };

  public static final class drawable {

  public static final int icon=0x7f020000;

  };

  public static final class layout {

  public static final int main=0x7f030000;

  };

  public static final class string {

  public static final int app_name=0x7f040000;

  };

  };

  一个项目的R.java文g是一个定义所有资源的索引文g?使用q个cd像用一U速记方式来引用你目中包含的资源。这个有点特别的强大像对于Eclipseq类IDE的代码编译特性,因ؓ它你快速的Q互动式的定位你正在L的特定引用?/p>

  到目前需要注意的重要事情是叫?#8221;layout”的内部类和他的成员变?#8221;main”, 插g会通知你添加一个新的XML布局文gQ然后从C生这个R.java文gQ比如你d了新的资源到你的目Q你会看到R.java也相应的改变?/p>

  最后重要的事情是你需要去修改你的HelloAndroid源代码,M用新的XML布局你的界面。替换掉~码式的界面模式。下面是你的C码的样子Q你可以看到Q代码变得更加简单了?/p>

  public class HelloAndroid extends Activity {

  /** Called when the activity is first created. */

  @Override

  public void onCreate(Bundle icicle) {

  super.onCreate(icicle);

  setContentView(R.layout.main);

  }

  }

  当你做这些改变的时候,不要仅仅复制Q粘贴到你的代码中,试M验R.java的代码编译特炏V你会发现它对你有很大的帮助?/p>

  现在完成q些改变以后Q你可以重新运行你的程序,然后你会发现两种不同的界面编排方式会产生同样的效果?/p>


  调试你的目

  q个用于Eclipse中的Android插g作ؓEclipse中的调试器也h优秀的兼Ҏ。要演示q些Q让我们刉一个bug在代码中Q改变你的HelloAndroid源代码象下面q样Q?/p>

  public class HelloAndroid extends Activity {

  /** Called when the activity is first created. */

  @Override

  public void onCreate(Bundle icicle) {

  super.onCreate(icicle);

  Object o = null;

  o.toString();

  setContentView(R.layout.main);

  }

  }

  q次单的变化会引起一个NullPointerException异常Q?如果你再ơ运行程序,你将会看C面的屏幕Q?/p>

  

  要找C么地方出错,需要设|个断点在你源代码的 “Object o = null;” 行后(你可以双dEclipse中显C数的左部区域), 然后选择 Run -> Debug 选择最后一ơ的q行加蝲? 你的E序会重v模拟器,但是q个时候它会挂P当它走到你刚才设|的断点的时候,在Eclipse的调试模式视图中Q它׃停止在你的代码处。就像你? 以在其他LE序中做q个一栗?/p>

  

  使用其它的IDE工具创徏目

  如果你没有用Eclipse(比如你用其他的IDE开发工P或者简单的只用文本编辑和命o行工?Q 那么q个插g不会帮上你忙Q别担心Q你不会因ؓ没有使用Eclipse而丢׃Q何开发能力?/p>

  其实Android的Eclipse插g也是一套Android SDK的开发工具包装了?q些工具像:模拟器,aapt, adb, ddms, 和其他的Q可以参考google的相x?Q?因此Q?它也可以被其他工具包装,比如ant.

  在Android SDK中包含一个Python脚本Q叫?#8221;activityCreator.py”Q? 它用于ؓ了你的项目创建所有的源代码和目录的编译环?个h理解), 也就是会产生可用于ant~译的build.xml. q样允怽的项目从命o行方式创建或者集成到你选择的IDE中?/p>

  比如Q要创徏一个HelloAndroid目Q就像刚才我们用Eclipse中的一P 你可以用下面的命oQ?/p>

  activityCreator.py --out HelloAndroid com.google.android.hello.HelloAndroid

  要编译你的项目,你要接着使用ant命oQ当命o行提C成功时候,你会看到一个名为HelloAndroid.apk的文件在”bin”目录下?q个.apk文g是一个Android的包Q?它需要?#8221;adb”工具安装q模拟器?/p>

  到这里ؓ止,我向大家展示了Androidq_的程序简单的开发实例,本h水^有限Q翻译的旉仓促Q一定有很多错误和疏漏,请多提修Ҏ见。本pd教程的主要内定w是翻译自Google的Android开发文档。通过下面的链接查看全部内宏V?/p>

  http://code.google.com/android/intro/hello-android.html



大牙 2007-12-18 16:53 发表评论
]]>
վ֩ģ壺 ¦| | ʯʨ| Դ| ˮ| | | ˴| | | | | | | ̴| | | | | | | | | ¤| | Т| Т| | | | | Ϫ| | ػ| | | | | | ؼ| IJ|