http://blog.csdn.net/hccblack/article/details/7051332
Android中常见的几种布局方式:线性布局(LinearLayout)、相对布局(RelativeLayout)、表格布局(Tablelayout)、嵌套布局(FrameLayout)以及帧布局。
下面通过几个事例来解释一下这几种布局方式:
线性布局,显而易见,从字面上可以看出这周布局方式是在一条线上一样,可以是垂直的(vertical),也可以是水平的(horizontal),下面是一段事例的代码:
“Layout_width”是指该元素的宽度,可选值有三种:“fill_parent”、“wrap_content”、具体数字(单位为px)。其中“fill_parent”代表填满其父元素,对于顶级元素来说,其父元素就是整个手机屏幕(即在根节点出fill_parent代表的是全屏幕)。“wrap_content”代表该元素的大小仅包裹其自身内容,而数字则代表其占相应的px。
下面是虚拟机上运行的截图:
一般单纯的线性布局做出来的效果比较差,会用嵌套布局,后边嵌套布局会详解。
相对布局,就是利用相对位置布局,添加各个元素后,如果不加布局属性,会全部重叠在一起,下面的例子是一个梅花的形状,效果图是这样的,
它的原理就是,先把上边两个button的属性定义成“置顶”,左边的button用居左,右边的居右,中间的定义为在上边一层的下边和居中,下面的代码中会有详细注释,下边的两个button定义为在上一层的下边和分别居两边。
下面说一下表格布局,这个比较容易理解,里边的行是:<TableRow ></TableRow >可以在中间添加元素,下面一个示例:
效果图:
下面说一下嵌套布局,看下图,这是Android布局的图示,由图可以看出,可以多种布局方式互相包含,这就大大的增加了布局的灵活性。
下边是一个线性布局嵌套线性布局的示例,这是为了更好的实现效果:
效果图:
下面是一个线性布局嵌套相对布局的示例:
效果图:
帧布局中的每一个组件都代表一个画面,默认以屏幕左上角作为(0,0)坐标,按组件
定义的先后顺序依次逐屏显示,后面出现的会覆盖前面的画面。用该布局可以实现动画效果。
下面是一个示例,实现一个文字颜色变化过程,实质上是几个图片之间的循环切换:
编写main.xml文件其内容如下:
在该布局文件中定义一个id为frame的帧布局文件。在FramerLayoutTestActivity.java中编写java代码:
效果图:
由于FrameLayout中后出现的UI控件会覆盖前面出现的UI控件,每次只能显示一个UI控
件,因此,我们可以通过在Activity中对每次显示的图片内容进行切换以实现动画效果。或许可以开启一条线程来控制切换,但在非主线程中不能更新UI界面,所以,使用了Android提供的消息通讯类Handler。该类可以实现非主线程和负责UI的主线程之间的通信,进而间接实现非主线程更新UI界面。由于sleep方法中的sendMessageDelayed(obtainMessage(0),delayMillis);本身会延迟发送一个消息,该消息会被框架传递给handleMessage事件。我们在handleMessage()方法中再次调用sleep()方法,
形成一个循环调用。在我们对界面进行点击之前,两个方法会一直循环调用。前景图片也会不断的切换,进而实现动画的效果。