您的位置:首页 > 移动开发 > Android开发

Android笔记---- Android应用的界面开发(1)View和布局管理器

2015-01-03 21:52 453 查看
界面编程与视图View

布局管理器(☆)

界面编程与视图View

1.1 用户界面

Android提供了大量功能丰富的UI组件,只要按照一定的规律把这些UI组件组合起来,就可以开发出优秀的图形用户界面。Android应用的大部分组件都放在android.widget包及子包、android.view包及其子包当中。所有的UI组件都继承了View类, View类有一个很重要的子类ViewGroup类。开发者可以对View和ViewGroup进行组合,来完成应用程序界面设计。



1.1.1 View

任何一个View对象都继承android.view.View类。它是一个存储有屏幕上特定的一个矩形布局和内容属性的数据结构。作为一个基类,View类为Widget服务, Widget则是一组用于绘制交互屏幕元素的完全实现子类。

1.1.2 ViewGroup

ViewGroup是一个android.view. ViewGroup类的对象。它的功能是装载和管理一组下层的View和其他的ViewGroup,作为一个基类, ViewGroup为Layout服务。

1.2 Android帮助文档

对于每个Android开发者而言, Android提供的官方文档是必看的。

在Android SDK安装目录下找到docs子目录,打开docs子目录index.html页面,并单击该页面上方的Dev Guide标签面,这就是Android 官方提供的开发指南文档。接着单击下图中的Reference标签页,看到的就是Android的API文档了。



1.3 控制UI界面的几种方式

Android控制组件行为的方式有以下三种:

在XML布局文件中通过XML属性进行控制

在Java程序代码中通过调用方法进行控制

XML布局文件和Java代码混合控制

其中,java代码中控制UI界面实例如下:

public class CodeView extends Activity {
// 当第一次创建该Activity时回调该方法
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 创建一个线性布局管理器
LinearLayout layout = new LinearLayout(this);
// 设置该Activity显示layout
super.setContentView(layout);
}
}


布局管理器(☆)

Android最大的优点就是代码(java)和布局(xml)分离。

Layout就负责管理控件在屏幕的位置的类,下面是android SDK已经内置的简单几种布局模型:

1、LinearLayout(线性布局)

2、RelativeLayout(相对布局)

3、TableLayout(表格布局)

4、FrameLayout(框架布局)

5、AbsoluteLayout(绝对布局)

2.1 LinearLayout 线性布局

线性布局由LinearLayout类来代表,将容器里的组件一个挨一个的进行排列起来。 Android 的线性布局不会换行,即当组件一个挨一个地排列到头之后,剩下的组件将不会被显示出来。LinearLayout在布局中纵向或者横向排列(系统自动生成的默认排版) 。

XML属性

方法

说明

android:orientation

setOrientation(int)

线性布局的朝向,纵向vertical或横向horizontal

android:gravity

setGravity(int)

设置布局管理器内的组件的对齐方式,支持:top/bottom/left/right/center_vertical/fill_vertical/center_horizontal/center等

2.1 线性布局

组件常用属性

android:id —— 为控件指定相应的ID

android:text —— 指定控件当中显示的文字,需要注意的是,这里尽量

使用strings.xml文件当中的字符串。

android:gravity —— 指定控件的基本位置,比如说居中,居右等位置

android:textSize —— 指定控件当中字体的大小

android:background —— 指定该控件所使用的背景色,RGB命名法

android:width —— 指定控件的宽度

android:height —— 指定控件的高度

android:padding —— 指定填充所有的边缘

android:singleLine —— 如果设置为true的话,则将控件的内容在同一行当中进行显示

android:layout_weight ——占据相对屏幕的大小。

android:layout_margin ——设置边距。

2.2 TableLayout 表格布局

TableLayout是比较常用的布局,采用行和列的形式来管理UI组件。并不需要明确声明行和列,而是通过添加TableRow、其他组件来控制表格的行数和列数。

每次向TableLayout中添加TableRow,该TableRow就是一个表格行,TableRow也是容器,也可以向其中添组件,每添加一个子组件该表格就增加一列。

如果直接向TableLayout中添加组件,那么该组件直接占一行。

在表格布局中,列的宽度由该列中最宽的那个单元格决定。整个表格布局的宽度取决于父容器的宽度。

2.2.1 表格布局例子如下:



2.2.2 表格布局

组件常用属性

android:collapseColumns:隐藏指定的列,多个列号用逗号隔开。

android:shrinkColumns:收缩指定的列以适合屏幕,不会挤出屏幕

android:stretchColumns:尽量把指定的列填充空白部分

android:layout_column:控件在TableRow中所处的列

android:layout_span:该控件所跨越的列数

2.3 RelativeLayout相对布局

相对布局由RelativeLayout代表,是指参考某一控件组件进行摆放,可以通过控制将组件摆放在一个指定组件的上、下、左、右等位置,可以通过各个组件提供的属性完成。

XML属性

相关方法

说明

android:ignoreGravity

setIgnoreGravity(int)

设置该布局容器内各子组件的对齐方式

android:gravity

setGravity(int)

设置该布局容器内部各子组件的对齐方式

为了控制该布局管理器中各子组件的布局分布, RelativeLayout提供了一个内部类: RelativeLayout.layoutParams,该类提供大量的XML属性来控制RelativeLayout布局容器中子组件的布局。

2.3.1 相对布局属性

android:alignParentBottom 如果该值为true,则将该控件的底部和父控件的底部对齐

android:layout_alignParentLeft 如果该值为true,则将该控件的左边与父控件的左边对齐

android:layout_alignParentRight 如果该值为true,则将该控件的右边与父控件的右边对齐

android:layout_alignParentTop 如果该值为true,则将空间的顶部与父控件的顶部对齐

android:layout_centerHorizontal 如果值为真,该控件将被至于水平方向的中央

android:layout_centerInParent 如果值为真,该控件将被至于父控件水平方向和垂直方向的中央

android:layout_centerVertical 如果值为真,该控件将被至于垂直方向的中央

2.3.1 相对布局中UI组件属性

android:layout_above 将该控件的底部至于给定ID的控件之上

android:layout_below 将该控件的顶部至于给定ID的控件之下

android:layout_toLeftOf 将该控件位于给定ID的控件的左边

android:layout_toRightOf 将该控件位于给定ID的控件的右边

android:layout_alignBottom 将该控件的底部边缘与给定ID控件的底部边缘对齐

android:layout_alignLeft 将该控件的左边缘与给定ID控件的左边缘对齐

android:layout_alignRight 将该控件的右边缘与给定ID控件的右边缘对齐

android:layout_alignTop 将给定控件的顶部边缘与给定ID控件的顶部对齐

2.4 FrameLayout框架布局

FrameLayout框架布局是在屏幕上开辟一个区域以填充所有的组件,使用框架布局会将所有的组件都放在屏幕的左上角,而且所有的组件层叠显示。

XML属性

相关方法

说明

android:foregroud

setForegroud(Drawable)

设置帧布局的前景图像

android:foregroudGravity

set ForegroudGravity(int)

定义绘制前景图像的gravity属性

2.5 AbsoluteLayout绝对布局

绝对定位AbsoluteLayout,又可以叫做坐标布局,可以直接指定子元素的绝对位置,这种布局简单直接,直观性强,但是由于手机屏幕尺寸差别比较大,使用绝对定位的适应性会比较差。

使用绝对布局时,每个子组件都要可指定如下两个XML属性。

android:layout_x:指定该子组件的X坐标。

android:layout_y:指定该子组件的X坐标。

2.5.1 AbsoluteLayout绝对布局

指明子元素确切的屏幕(X,Y)

坐标(0,0)是左上角,下移或右移时,坐标值增加

允许元素重叠(但是不推荐)

注意:

一般建议不使用AbsoluteLayout 除非你有很好的理由来使用它,因为它相当严格并且在不同的设备显示中不能很好地工作。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: