第二章 Android 简单界面开发 倚动软件工厂实验室
View 组件介绍 布局管理器 自定义组件 目录 CONTENTS
主要内容
Android 应用界面编程 View 组件简介: Android 应用的所有 UI 组件都继承了 View 类,它代表一个空白的矩 形区域。绝大部分 UI 都放在 Android.widget 包及其子包、 Android.view 包及其子包中。 View 类还有一个重要子类: ViewGroup ,但通常作为其他组件的 容器使用。 Android 所有 UI 组件都是建立在 View 、 ViewGroup 基础之上, Android 采用了 “ 组合器 ” 设计模式来设计 View 和 ViewGroup , ViewGroup 是 View 的子类,因此可被当成 View 使用。 对一个 Android 应用的图形用户界面来说, ViewGroup 作为容器来 盛装其他组件,而 ViewGroup 里除了可以包含普通 View 组件之外, 还可以再次包含 ViewGroup 组件。 1
Android 应用界面编程 ViewGroup 组件的层次结构
Android 应用界面编程 TextView 组件的主要功能是用于显示文本,实际上这种控 件主要就是提供了一个标签的显示操作。 下面是定义文本框显示组件的代码: 文本显示组件 TextView :
Android 应用界面编程 在 Android 中所有组件可以设置大小,但是在设置时候 需要指定其单位,主要单位有: px ( 像素 pixels) :一般 HVGA 代表 320*480 像素,这个 用的比较多。 dip 或 dp (device independent pixels) :设备独立像素。 这个和设备硬件有关,一般为了支持 WVGA 、 HVGA 和 QVGA 推荐使用这个,不依赖像素。 sp (scaled pixels—best for text size) :比例像素,主要处 理字体的大小,可以根据系统的字体自适应。 为了适应不同分辨率,不同的像素密度,推荐使用 dip ,文 字使用 sp 。
Android 应用界面编程 文本显示组件( TextView )的功能只是显示一些基础的文 字信息,而如果用户要想定义可以输入的文本组件以达到 很好的人机交互操作,则只能使用编辑框 EditText 来完成。 android:selectAllOnFocus="true" 默认选中,并设为焦点 android:password ="true" android:numeric="integer " 密文形式显示文本 只能输入数字 编辑框 EditText :
Android 应用界面编程 按钮在人机交互界面中使用得最为广泛,当系统提示用 户进行选择的时候,就可以通过按钮的操作来接收用户的 选择。 在 Android 中使用 “ ” 组件可以定义出一个显示 的按钮,并且可以在按钮上指定相应的显示文字。 注意: Button 是 TextView 的子类,是一个特殊的文本。 按钮组件 Button
Android 应用界面编程 下面我们以一个简单的例子,介绍这三种简单组件一些属性的 作用。案例: codes\02\TextViewTest
Android 应用界面编程 布局管理器 线性布局由 LinearLayout 类来代表,它会将容器里的组件一个 挨一个地排列起来。 LinearLayout 不仅可以控制各组件横向排 列,还可控制各组件纵向排列。 线性布局与 AWT 中 FlowLayout 的最大区别在于:前者不会换 行,当组件一个挨着一个地排列到头之后,剩下的组件将不会 被显示出来;后者则会另起一行来排列多出来的组件,而 LinearLayout 必须通过添加 ScrollView 控件显示多余的组件。 android:gravity 设置组件的对齐方式,多个属性值之间用竖线 隔开,但竖线前后千万不能出现空格。 android:orientation 设置组件的排列方式:水平、垂直排列。 2 (1) 线性布局
Android 应用界面编程 将 android:orientation 属性由 vertical 改为 horizontal ,则由 垂直线性布局变为水平线性布局,两种情况运行结果如下: 如果一排或一列放不下时, 如何显示?
Android 应用界面编程 表格布局是采用表格的形式 对控件的布局进行管理的。 在 TableLayout 布局管理器 中,要使用 TableRow 进行表 格行的控制,之后所有的组 件要在 TableRow 中增加。 TableLayout 并不需要明确 地声明包含多少行、多少列, 而是通过添加 TableRow 、其 他组件来控制表格的行数和 列数。 表格布局中的常见属性: android:collapseColumns: 隐藏指定 的列,其值为列所在的序号; android:shrinkColumns: 收缩指定的 列以适合父容器。 android:stretchColumns: 把指定的 列填充空白部分。 android:layout_column: 用于说明组 件在 TableRow 中所处的列。 android:layout_span: 该组件所跨越 的列数。 ( 2 )表格布局
Android 应用界面编程 相对布局( RelativeLayout )管理器指的是通过控制,将组件 摆放在一个指定参考组件的上、下、左、右等位置,这些效 果可以直接通过各个组件提供的属性完成。 功能:以一组件为中心,将 其它组件分布在该组件的四 周,形成 “ 梅花布局 ” 。 案例: codes/ 01 /RelativeTest ( 3 )相对布局
Android 应用界面编程 codes\02\Calculate ( 4 )布局管理器嵌套: 在使用布局管理器进 行组件布局的时候, 可以将各个布局管理 器嵌套在一起使用。 案例: codes\02\Calculate 在使用布局管理器进 行组件布局的时候, 可以将各个布局管理 器嵌套在一起使用。 案例: codes\02\Calculate codes\02\Calculate 在使用布局管理器进 行组件布局的时候, 可以将各个布局管理 器嵌套在一起使用。 案例: codes\02\Calculate
Android 应用界面编程 3 开发自定义 View Android 中所有的界面组件都是继承于 View 类, View 本身仅仅 是一块空白的矩形区域,不同的界面组件在这个矩形区域上绘 制外观即可形成风格迥异的组件。 基于上述原理,开发者完全可以通过继承 View 类来创建具有 自己风格的组件。