Chinaunix首页 | 论坛 | 博客
  • 博客访问: 523508
  • 博文数量: 1344
  • 博客积分: 3000
  • 博客等级: 中校
  • 技术积分: 14890
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-14 20:31
文章分类

全部博文(1344)

文章存档

2010年(1344)

我的朋友

分类:

2010-09-14 07:35:47

  你刚刚完成的"hello, world"例子我们称之为”程序化”的界面编排。意思就是说构建你的应用程序界面是直接使用的源代码。如果你已经完成过很多界面程序,你大概熟悉像此类的方式是多么脆弱:一个对布局小小的修改会对源代码造成很头疼的事情。如果忘掉与view的紧密结合,这个导致代码出错和浪费你的调试时间的界面问题也会很简单。   这就是为什么android提供了一种可替换的界面构建方式: 基于xml的布局文件。最简单的解释这个概念的方式就是展示一个例子。 我们就用刚才创建的项目来进行演示,达到相同的界面效果。  android:layout_width="fill_parent"  android:layout_height="fill_parent"  android:text="hello, android"/>   androidxml布局文件的大体的结构很简单。 它是一个标签的树,任何一个标签就是view类的名字。在这个例子中, 它是一个很简单的只有一个元素的树,一个 textview。 你可以使用任何继承自view类的名字作为标签的名字。包括在你的代码中自定义的view类。这个结构可以很容易的构建界面,它比你在源代码中使用的结构和语法更简单。这个模式的设计灵感来自于web开发。 就是可以将界面和应用程序逻辑分离的模式。   在这个例子中, 也有些是xml的属性,下面是他们的含义: 属性含义 xmlns:android 这是xml命名空间的声明,它是告诉android的工具, 你将要涉及到公共的属性已被定义在xml命名空间。在每一个android的布局文件的最外边的标签必须有这个属性。 android:layout_width 这个属性定义了在屏幕上这个view可用的宽度是多少。 android:layout_height 这个属性定义了在屏幕上这个view可用的高度是多少。 android:text 设置textview所包含的文本内容,当前设置为”hello, android”信息   以上就是一个xml布局文件的样子,但是你需要放在哪里?它要放在你的项目目录的res/ 文件夹下。 “res”是”resources”的缩写,它是存放所有非代码资源的文件夹,包含象图片,本地化字符串和xml布局文件。   这些eclipse的插件已经给你创建好了,在我们上面的例子中,我们没有使用它。在包浏览器中,展开res目录的layout. 并且编辑 main.xml, 替换掉那个文本内容,然后保存。   现在,在包浏览状态,打开在代码文件夹中名为 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文件是一个定义所有资源的索引文件。 使用这个类就像使用一种速记方式来引用你项目中包含的资源。这个有点特别的强大像对于eclipse这类ide的代码编译特性,因为它使你快速的,互动式的定位你正在寻找的特定引用。   到目前需要注意的重要事情是叫做”layout”的内部类和他的成员变量”main”, 插件会通知你添加一个新的xml布局文件,然后从新产生这个r.java文件,比如你添加了新的资源到你的项目,你将会看到r.java也相应的改变了   最后重要的事情是你需要去修改你的helloandroid源代码,去使用新的xml布局你的界面。替换掉编码式的界面模式。下面是你的新代码的样子,你可以看到,代码变得更加简单了。   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);      }      }   当你做这些改变的时候,不要仅仅复制,粘贴到你的代码中,尝试去体验r.java的代码编译特点。你会发现它对你有很大的帮助。   现在完成这些改变以后,你就可以重新运行你的程序,然后你会发现两种不同的界面编排方式会产生同样的效果。 编缉推荐阅读以下文章 ">android 2.0常用功能截图 ">实现一个用于显示当前时间的google android 窗口小部件(appwidget) ">android和ophone模拟器界面对比 ">在android(ophone)模拟器中加载和使用sdcard卡 ">android教程之实现动作感应技术 ">android入门第六篇之listview (一) ">android入门第五篇之tablelayout (二) ">android入门第四篇之tablelayout (一) ">android入门第三篇之relativelayout、framelayout ">android入门第二篇之linearlayout、absolutelayout 如果喜欢android程序开发初级教程(二)请收藏或告诉您的好朋友.
阅读(147) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~