Android从入门到精通(微视频精编版)
上QQ阅读APP看书,第一时间看更新

4.1 UI设计相关的概念

我们要开发的Android应用是运行在手机或者平板电脑上的程序,这些程序给用户的第一印象就是用户界面,也就是User Interface,简称UI。在Android中,进行用户界面设计可以称为UI设计,在进行UI设计时,经常会用到View和ViewGroup。对于初识Android的人来说,一般不好理解。下面将对这两个概念进行详细介绍。

4.1.1 View

View在Android中可以理解为视图。它占据屏幕上的一个矩形区域,负责提供组件绘制和事件处理的方法。如果把Android界面比喻成窗户,那么每块玻璃都是一个View,如图4.1所示。View类是所有的UI组件(如第3章创建的实例“第一个Android应用”中使用的TextView就是UI组件)的基类。

说明

View类位于android.view包中;文本框组件TextView是View类的子类,位于android.widget包中。

图4.1 View示意图

在Android中,View类及其子类的相关属性,既可以在XML布局文件中进行设置,也可以通过成员方法在Java代码中动态设置。View类常用的属性及对应的方法如表4.1所示。

表4.1 View类支持的常用XML属性及对应的方法

4.1.2 ViewGroup

ViewGroup在Android中代表容器。如果还用窗户来比喻的话,ViewGroup就相当于窗户框,用于控制玻璃的安放,如图4.2所示。ViewGroup类继承自View类,它是View类的扩展,是用来容纳其他组件的容器,但是由于ViewGroup是一个抽象类,所以在实际应用中通常是使用ViewGroup的子类来作为容器,例如,将要在4.3节中介绍的布局管理器。

ViewGroup控制其子组件的分布时(例如,设置子组件的内边距、宽度和高度等),还经常依赖于ViewGroup.LayoutParams和ViewGroup. MarginLayoutParams两个内部类,下面分别进行介绍。

图4.2 ViewGroup示意图

1.ViewGroup.LayoutParams类

ViewGroup.LayoutParams类封装了布局的位置、高和宽等信息。它支持android:layout_height和android:layout_width两个XML属性,它们的属性值,可以使用精确的数值,也可以使用FILL_PARENT(表示与父容器相同)、MATCH_PARENT(表示与父容器相同,需要API 8或以上版本才支持)或者WRAP_CONTENT(表示包裹其自身的内容)指定。

2.ViewGroup.MarginLayoutParams类

ViewGroup.MarginLayoutParams类用于控制其子组件的外边距,它支持的常用属性如表4.2所示。

表4.2 ViewGroup.MarginLayoutParams类支持的常用XML属性

在Android中,所有的UI界面都是由View类和ViewGroup类及其子类组合而成的。在ViewGroup类中,除了可以包含普通的View类外,还可以再次包含ViewGroup类。实际上,这使用了Composite(组合)设计模式。View类和ViewGroup类的层次结构如图4.3所示。

图4.3 View类和ViewGroup类的层次结构