`

Android 深入解析用户界面(二)

阅读更多
我们这次深入分析Android应用程序的布局文件,主要内容如下:

  1、用户界面及视图层次
  2、Android中布局定义方法
  3、编写XML布局文件及加载XML资源
  
  1、用户界面及视图层次  

       在通过“Hello World!”介绍Android中的布局问题之前,不得不先介绍一下Android中的用户界面,因为布局问题也是用户界面问题之一.在一个Android应用程序中,用户界面通过View和ViewGroup对象构建.Android中有很多种Views和ViewGroups,他们都继承自View类.View对象是Android平台上表示用户界面的基本单元.

  View类:
  extends Object
  implements Drawable.Callback KeyEvent.Callback AccessibilityEventSource

  这个类表示用户界面组件的基本构建块,一个View占据屏幕上的一个矩形区域,并负责绘图和事件处理.View类是widgets的基类,widgets用于创建交互式UI组件(buttons、text fields等).View类的直接子类ViewGroup类是layouts的基类,layouts是不可见的容器用户保持其他Views或者其他ViewGroups和定义它们的布局属性.

  一个View对象是一个数据结构,它的属性存储屏幕上一个特定矩形区域的布局参数和内容.一个View对象处理它自己的测度、布局、绘图、焦点改变、滚动、键/手势等与屏幕上矩形区域的交互.作为用户界面中的对象,View也是与用户交互的一个点且交互事件接收器.

  在Android平台上,你定义活动的UI使用的View和ViewGroup节点的层次结构如下图所示.根据你的需要这个层次树可以是简单的或复杂的,并且你能使用Android预定义的widgets和layouts集合,或者使用自定义的Views.

     为了将视图层次树呈现到屏幕上,你的活动必须调用setContentView()方法并且传递到根节点对象的引用.Android系统接收这个引用并使用它来验证、测度、绘制树.层次的根节点要求它的孩子节点绘制它自己——相应地每个试图组节点要求调用自己的孩子视图去绘制他们自己.子视图可能在父视图中请求指定的大小和位置,但是父视图对象有最终决定权(子视图在哪个位置及多大).因为它们是按序绘制的,如果元素有重叠的地方,重叠部分后面绘制的将在之前绘制的上面.

  2、Android中布局定义方法

  布局是一个活动中的用户界面的架构,它定义了布局结构且存储所有显示给用户的元素.有两种方式可以声明布局,这个我们在上文中已经用了(对应上文的“Hello World的手术(二)”、“Hello World的手术(三)”).我们再重复习总结一下:
  方法一、在XML格式的布局文件中声明UI.Android提供了简易的XML词汇表对应视图类和其子类,诸如widgets和layouts.
  方法二、在运行时实例化布局元素.可以编程地创建View和ViewGroup对象,并操作他们的属性.
  Android框架给我们灵活地使用这两个方法之一或两个声明和管理你的应用程序的UI.例如,你可以用XML格式的布局文件定义应用程序默认的布局,包括将显示在屏幕的元素和属性.然后你可以编程地修改屏幕上对象的状态,包括定义在XML文件中的元素.

  最常用的是方法一,即用一个XML的布局文件定义自己的布局和表达层次视图.XML提供一种直观的布局结构,类似HTML.XML中的每个元素是一个View或者ViewGroup对象(或继承自他们的对象).View对象是树中的叶子,ViewGroup对象是树中的分支,这点可以从上面的视图层次树中可以看出.

  在XML布局文件中声明UI的优点是:使应用程序的界面与控制它行为的代码更好地分离了.UI描述在应用程序代码之外,这意味着你可以修改或调整它而不用修改你的源码并重新编译.例如,你可以为不同的屏幕方向、不同的屏幕大小、不同的语言创建XML布局文件.此外,在XML中声明布局更易地可视化你的UI结构,因此更容易调试问题.

  一个元素XML元素的名字对应到一个Java类,因此一个<TextView>元素在你的UI中创建一个TextView,一个<linearLayout>元素创建一个LinearLayout的视图组.当你加载一个布局资源时,Android系统初始化这些运行时对象,对应你的布局中的元素.XML元素的属性对应到一个Java类的方法.

     3、编写XML布局文件及加载XML资源

       使用Android的XML词汇,我们可以快速地设计UI布局及包含的屏幕元素,就像web页面的HTML。每个布局文件必须包含一个根元素,根元素必须是一个View或ViewGroup对象。一旦你已经定义了根元素,你可以添加额外的layout对象或widgets作为子元素,逐步地构建一个视图层次定义你的布局。例如,下面的XML布局文件使用了纵向的LinearLayout保存一个TextView和一个Button。

java代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello, I am a TextView" />
<Button android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello, I am a Button" />
</LinearLayout>

Android 深入解析用户界面(一):http://www.eyeandroid.com/thread-251-1-1.html
Android 深入解析用户界面(二):http://www.eyeandroid.com/thread-252-1-1.html
Android 深入解析用户界面(三):http://www.eyeandroid.com/thread-253-1-1.html
Android 深入解析用户界面(四):http://www.eyeandroid.com/thread-254-1-1.html
分享到:
评论

相关推荐

    android 用户界面

    android深入解析用户界面,对界面的讲解相当详细。

    Android应用开发揭秘pdf高清版

    《Android应用开发揭秘》内容全面,不仅详细讲解了Android框架、Android组件、用户界面开发、游戏开发、数据存储、多媒体开发和网络开发等基础知识,而且还深入阐述了传感器、语音识别、桌面组件开发、Android游戏...

    《Android应用开发揭秘》源码

     杨丰盛,Android应用开发先驱,对Android有深入研究,实战经验极其丰富。精通Java、C、C++等语言,专注于移动通信软件开发,在机顶盒软件开发和MTK平台软件开发方面有非常深厚的积累。2007年获得中国软件行业协会...

    Android程序设计基础

     第二部分讨论Android的用户界面、二维图形、多媒体组件以及简单的数据访问。这些特性在大多数程序中都用得到。  第三部分深入探讨Android平台。这一部分介绍外部通信、基于位置的服务、内置SQLite数据库和三维...

    android开发入门与实战(下)

    3.2.4 先来热热身——AndroidSDK例子解析 3.2.5 SDK提供的工具介绍 3.3 Android典型包分析 3.3.1 开发的基石——AndroidAPI核心开发包介绍 3.3.2 拓展开发外延——Android可选API介绍 3.4 本章小结 第4章 赚钱的...

    Android应用开发揭秘

    杨丰盛,Android应用开发先驱,对Android有深入研究,实战经验极其丰富。精通Java、C、C++等语言,专注于移动通信软件开发,在机顶盒软件开发和MTK平台软件开发方面有非常深厚的积累。2007年获得中国软件行业协会...

    《Google Android开发入门与实战》.pdf

    第13章 android综合案例二——基于google map开发个人移动地图 221 13.1 项目ui规划 221 13.2 数据存储实现 222 13.2.1 设计数据库及表结构 222 13.2.2 设计sharepreference 存储 223 13.3 项目实现...

    Android基础教程

    书中不仅结合数独游戏开发案例形象生动地讲解了Android生命周期、用户界面、2D图形、多媒体,以及本地数据存储等基础知识,而且通过“Hello, Android”项目深入探讨了外部通信、基于位置的服务、内置SQLite数据库、...

    android开发入门与实战(上)

    3.2.4 先来热热身——AndroidSDK例子解析 3.2.5 SDK提供的工具介绍 3.3 Android典型包分析 3.3.1 开发的基石——AndroidAPI核心开发包介绍 3.3.2 拓展开发外延——Android可选API介绍 3.4 本章小结 第4章 赚钱的...

    《Android应用开发揭秘》源码.rar

     本书内容全面,不仅详细讲解了android框架、android组件、用户界面开发、游戏开发、数据存储、多媒体开发和网络开发等基础知识,而且还深入阐述了传感器、语音识别、桌面组件开发、android游戏引擎设计、android...

    疯狂Android讲义源码

     第2章 Android应用的界面编程 35  2.1 界面编程与视图(View)组件 36  2.1.1 视图组件与容器组件 36  2.1.2 使用XML布局文件控制UI  界面 40  2.1.3 在代码中控制UI界面 41  2.1.4 使用XML布局文件和Java ...

    Google Android SDK开发范例大全(第3版) 1/5

    《Google Android SDK开发范例大全(第3版)》继承前两版由浅入深的方式,范例总数由原先的160多个增加到了200多个,在用户交互界面、手机控件、交互式通信服务、手机自助服务、娱乐多媒体等方面均增加了相应的范例来...

    Google.Android开发入门与实战

    第13章 Android综合案例二——基于GoogleMap开发个人移动地图 13.1 项目UI规划 13.2 数据存储实现 13.2.1 设计数据库及表结构 13.2.2 设计SharePreference存储 13.3 项目实现流程 13.3.1 创建项目工程 13.3.2 项目各...

    Google Android SDK开发范例大全(第3版) 4/5

    《Google Android SDK开发范例大全(第3版)》继承前两版由浅入深的方式,范例总数由原先的160多个增加到了200多个,在用户交互界面、手机控件、交互式通信服务、手机自助服务、娱乐多媒体等方面均增加了相应的范例来...

    Google Android SDK开发范例大全(第3版) 3/5

    《Google Android SDK开发范例大全(第3版)》继承前两版由浅入深的方式,范例总数由原先的160多个增加到了200多个,在用户交互界面、手机控件、交互式通信服务、手机自助服务、娱乐多媒体等方面均增加了相应的范例来...

    Google Android SDK开发范例大全(PDF高清完整版1)(4-1)

    第3章 用户人机界面 3.1 更改与显示文字标签——TextView标签的使用 3.2 更改手机窗口画面底色——drawable定义颜色常数的方法 3.3 更改TextView文字颜色——引用Drawable颜色常数及背景色 3.4 置换TextView文字——...

    Google Android SDK开发范例大全(PDF完整版4)(4-4)

    第3章 用户人机界面 3.1 更改与显示文字标签——TextView标签的使用 3.2 更改手机窗口画面底色——drawable定义颜色常数的方法 3.3 更改TextView文字颜色——引用Drawable颜色常数及背景色 3.4 置换TextView文字——...

    Google Android SDK开发范例大全(PDF高清完整版3)(4-3)

    第3章 用户人机界面 3.1 更改与显示文字标签——TextView标签的使用 3.2 更改手机窗口画面底色——drawable定义颜色常数的方法 3.3 更改TextView文字颜色——引用Drawable颜色常数及背景色 3.4 置换TextView文字——...

Global site tag (gtag.js) - Google Analytics