首页 > 代码库 > 03 Android应用界面编程

03 Android应用界面编程

 

Android绝大部分UI组件都放在android.widget,android.view包及其子包,android应用中所以UI组件都继承了View类,View代表一个空白的矩形区域;

android所有UI组件都建立在View和ViewGroup基础之上的;View类是所有UI组件的基类,ViewGroup是一个抽象类,通常使用其子类来作为容器;

View 类

 

View类为所有可视化控件的基类,主要提供了控件和事件处理的方法,比如TextView,Button,CheckBox等;

 

View类常见属性及对应方法说明:

Android:background

SetBackgroundResource(int)

设置背景

 

Android:clickable

SetClickable(boolean)

设置View是否响应单击事件

 

Android:visibility

SetVisibiltiy(int)

控制View的可见性

 

Android:focusable

SetFocusable(boolean)

控制View是否可以获取焦点

 

Android:id

SetId(int)

为View设置标识符,可以通过findViewById方法获取Id

 

Android:longClickable

SetLongClickable(boolean)

设置View是否响应长单击事件

 

Android:soundEffectEabled

setSoundEffectsEnable(boolean)

设置View触发单击等事件是否播放音效

 

Android:saveEnable

SetSaveEnabled(boolean)

View冻结时是否保存状态

Android:nextFocusDown

SetNextFocusDownId(int)

定义向下获取焦点的View

 

Android:nextFocusLeft

Android:nextFocusRight

Android:nextFocusUp

 

定义不同操作方向获取焦点的View

 

任何继承View的子类都拥有如上的属性及方法;

 

ViewGroup类是View类的子类,但是可以充当其他控件的容器,ViewGroup的子控件既可以是普通的View,也可以是ViewGroup;

 

关于View和ViewGroup的关系

View是基类,ViewGroup是View的子类;

View代表用户界面组件一块可以绘制的空间块;

每一个View在屏幕上占据一个长方形区域,在这个区域,view负责图像绘制和事件处理;

View类是小控件widgets和ViewGroup的父类;ViewGroup又是Layout的基类;

 

线性布局

提供控件水平或竖直排列的模型;

Android:orientation

SetOrientation(int)设置线性布局的朝向;

Android:gravity

SetGrabity(int)设置线性布局内部元素的布局方式;

 

表格布局

TableLayout类以行和类的形式管理控件,每行为一个TableRow对象,也可以为View对象,当为View对象时,该View对象将跨越该行的所有类;

 

在表格布局中,一个列的宽度由该列中最宽的那个单元指定,而表格的宽度由父容器指定;

在TableLayout中,可以为列设置如下3种属性;

Shrinkable 如果一个列被标志为Shrinkable,则该列的宽度可以进行收缩,以使表格能够适应其父容器的大小;

Stretchable 如果一个列被标志位Stretchable,则该列的宽度可以进行拉伸,以 填满表格中空闲的空间。

Collapsed,则该列会被隐藏;

 

TableLyout继承LinearLayout类,TableLyout类特有的属性和方法如下:

SetColumnCollapsed(int,boolean)

列号从0开始,设定指定列号的列为Collapsed

同样,可以设置Shrinkable,Stretchable;

RelativeLayout

在相对布局中,子控件的位置是相对兄弟控件或父容器而决定的;

属 性 名 称

属 性 说 明

android:layout_centerHorizontal

当前控件位于父控件的横向中间位置

android:layout_centerVertical

当前控件位于父控件的纵向中间位置

android:layout_centerInParent

当前控件位于父控件的中央位置

android:layout_alignParentBottom

当前控件底端与父控件底端对齐

android:layout_alignParentLeft

当前控件左侧与父控件左侧对齐

android:layout_alignParentRight

当前控件右侧与父控件右侧对齐

android:layout_alignParentTop

当前控件顶端与父控件顶端对齐

android:layout_alignWithParentIfMissing

参照控件不存在或不可见时参照父控件

 接下来再来看属性值为其他控件id的属性,如表3-6所示。

表3-6  相对布局中取值为其他控件id的属性及说明

属 性 名 称

属 性 说 明

android:layout_toRightOf

使当前控件位于给出id控件的右侧

android:layout_toLeftOf

使当前控件位于给出id控件的左侧

android:layout_above

使当前控件位于给出id控件的上方

android:layout_below

使当前控件位于给出id控件的下方

android:layout_alignTop

使当前控件的上边界与给出id控件的上边界对齐

android:layout_alignBottom

使当前控件的下边界与给出id控件的下边界对齐

android:layout_alignLeft

使当前控件的左边界与给出id控件的左边界对齐

android:layout_alignRight

使当前控件的右边界与给出id控件的右边界对齐

 

最后要介绍的是属性值以像素为单位的属性及说明,如表3-7所示。

表3-7  相对布局中取值为像素的属性及说明

 

属 性 名 称

属 性 说 明

android:layout_marginLeft

当前控件左侧的留白

android:layout_marginRight

当前控件右侧的留白

android:layout_marginTop

当前控件上方的留白

android:layout_marginBottom

当前控件下方的留白

 

FrameLayout类

帧布局

FrameLayout帧布局在屏幕上开辟了一块区域,在这块区域中可以添加多个子控件,但是所有的子控件都被对齐到屏幕的左上角,帧布局的大小由子控件中尺寸最大的那个子控件来决定,如果子控件一样大,同一时刻只能看到最上面的子控件;

 

FrameLayout继承自ViewGroup,FrameLayout所特有的属性和方法如下:

Android:foreground

SetForeground(Drawable)

设置绘制所有子控件之上的内容

Android:foregroundGravity

SetForegroundGraviety(int)

设置绘制所有子控件之上内容的gravity属性

 

在FrameLayout中,子控件是通过栈来绘制的,所以后添加的子控件会被绘制在上层;

 

AbsoluteLayout类

所谓绝对布局,是指屏幕中所有控件摆放的控件位置由坐标来指定;

 

03 Android应用界面编程