布局管理器 3----- 帧布局
2012-11-07 00:00
232 查看
帧布局由FrameLayout所代表,FrameLayout 直接继承ViewGroup组件
帧布局容器为每个加入其中的组件创建一个空白的区域(称为一帧),所有每个子组件占据一帧,这些帧都会根据gravity属性执行自动对齐。也就是说,帧布局的效果有点类似于AWT编程的CardLayout,都是把组件一个个叠加在一起,与CardLayout的区别在于,CardLayout可以将下面的Card移上来,但FrameLayout则没有提供相应的方法。
例子:
霓虹灯效果
帧布局容器为每个加入其中的组件创建一个空白的区域(称为一帧),所有每个子组件占据一帧,这些帧都会根据gravity属性执行自动对齐。也就是说,帧布局的效果有点类似于AWT编程的CardLayout,都是把组件一个个叠加在一起,与CardLayout的区别在于,CardLayout可以将下面的Card移上来,但FrameLayout则没有提供相应的方法。
XML属性 | 相关方法 | 说明 |
android:foreground | setForeground(Drawable) | 设置该帧布局管理器的前景图像 |
android:foregroundGravity | setForegroundGravity(int) | 定义绘制前景图像的gravity属性 |
<?xml version="1.0" encoding="utf-8" ?> - <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> - <!-- 依次定义7个TextView,先定义的TextView位于底层 后定义的TextView位于上层 --> <TextView android:id="@+id/View01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:width="210px" android:height="50px" android:background="#ff0000" /> <TextView android:id="@+id/View02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:width="180px" android:height="50px" android:background="#dd0000" /> <TextView android:id="@+id/View03" android:layout_width="wrap_content" android:layout_height="wrap_content" android:width="150px" android:height="50px" android:background="#bb0000" /> <TextView android:id="@+id/View04" android:layout_width="wrap_content" android:layout_height="wrap_content" android:width="120px" android:height="50px" android:background="#990000" /> <TextView android:id="@+id/View05" android:layout_width="wrap_content" android:layout_height="wrap_content" android:width="90px" android:height="50px" android:background="#770000" /> <TextView android:id="@+id/View06" android:layout_width="wrap_content" android:layout_height="wrap_content" android:width="60px" android:height="50px" android:background="#550000" /> <TextView android:id="@+id/View07" android:layout_width="wrap_content" android:layout_height="wrap_content" android:width="30px" android:height="50px" android:background="#330000" /> </FrameLayout>
霓虹灯效果
package org.crazyit.framelayout; import java.util.Timer; import java.util.TimerTask; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.widget.TextView; /** * @author gufei * @version 1.0 */ public class FrameLayoutTest extends Activity { private int currentColor = 0; //定义一个颜色数组 final int[] colors = new int[] { R.color.color7, R.color.color6, R.color.color5, R.color.color4, R.color.color3, R.color.color2, R.color.color1, }; final int[] names = new int[] { R.id.View01, R.id.View02, R.id.View03, R.id.View04, R.id.View05, R.id.View06, R.id.View07 }; TextView[] views = new TextView[7]; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); for (int i = 0 ; i < 7 ; i++) { views[i] = (TextView)findViewById(names[i]); } final Handler handler = new Handler() { @Override public void handleMessage(Message msg) { //表明消息来自本程序所发送 if(msg.what == 0x1122) { //依次改变7个TextView的背景色 for(int i = 0 ; i < 7 - currentColor ; i++) { views[i].setBackgroundResource(colors[i + currentColor]); } for(int i = 7 - currentColor , j = 0 ; i < 7 ; i++ ,j++) { views[i].setBackgroundResource(colors[j]); } } super.handleMessage(msg); } }; //定义一个线程周期性的改变currentColor变量值 new Timer().schedule(new TimerTask() { @Override public void run() { currentColor++; if(currentColor >= 6) { currentColor = 0; } //发送一条消息通知系统改变7个TextView组件的背景色 Message m = new Message(); //给该消息定义一个标识 m.what = 0x1122; handler.sendMessage(m); } }, 0 , 100); } }
相关文章推荐
- 布局管理器——帧布局
- 布局管理器使用代码
- * * 三大常用布局管理器
- 布局管理器面面观
- Java AWT编程 布局管理器(五)CardLayout
- Android_02_帧布局
- 布局管理器的使用
- Qt综合使用布局管理器(QVBoxLayout,QHBoxLayout,QGridLayout)
- 布局管理器简介---------转自“天天快乐”的百度空间
- 关于布局管理器FlowLayout的思考:如何让FlowLayout自动换行(1)
- 布局管理器
- 布局管理器(章节摘要)
- 布局管理器 信号函数重载 函数指针
- 布局管理器之BorderLayout:边界布局管理器
- 第22课 布局管理器(一)
- 布局管理器-5
- 关于布局管理器FlowLayout的思考:如何让FlowLayout自动换行(2)
- Android应用开发学习笔记之帧布局
- 布局管理器
- Androidx学习笔记(8)--常见布局--帧布局