Android布局管理器(贞布局)

  1. 贞布局有FrameLayout所代表,它直接继承了ViewGroup组建
  2. 贞布局为每个加入其中的组件创建一个空白区域(一帧),所以每个子组件占用一帧,这些贞都会根据gravity属性执行自动对齐
  3. 贞布局在游戏开发中使用较多

Xml属性


相关方法


说明


Android:foreground


setForeground


设置该贞的前景图形


Android:foregroundGravity


SetForegroundGavity


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

布局代码:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <TextView android:id="@+id/View01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:width="210dp"
        android:height="50dp"
        android:background="#ff0000"
        />
    <TextView android:id="@+id/View02"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:width="180dp"
        android:height="50dp"
        android:background="#dd0000"
        />
    <TextView android:id="@+id/View03"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:width="150dp"
        android:height="50dp"
        android:background="#bb0000"
        />
    <TextView android:id="@+id/View04"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:width="120dp"
        android:height="50dp"
        android:background="#990000"
        />
    <TextView android:id="@+id/View05"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:width="90dp"
        android:height="50dp"
        android:background="#770000"
        />
    <TextView android:id="@+id/View06"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:width="60dp"
        android:height="50dp"
        android:background="#550000"
        />
    <TextView android:id="@+id/View07"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:width="30dp"
        android:height="50dp"
        android:background="#330000"
        />
</FrameLayout>

Activity代码

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.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;

public class MainActivity 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
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        for(int i = 0 ; i<7 ;i++){
            views[i] = (TextView) findViewById(names[i]);
        }
        //使用Handler进行获得系统消息,进行更新UI
        final Handler handler = new Handler(){
              public void handleMessage(Message msg) {
                  if(msg.what == 0x1122){
                     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]);
                     }
                  }
              }
         };
         //定义一个线程周期
         new Timer().schedule(new TimerTask() {

            @Override
            public void run() {
                // TODO Auto-generated method stub
                currentColor++;
                if(currentColor>=6){
                    currentColor=0;
                }
                //发送一条消息通知系统
                Message m = new Message();
                //给该信息定义一个唯一标识
                m.what = 0x1122;
                handler.sendMessage(m);
            }
        }, 0,1000);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

效果:

时间: 2024-10-08 01:11:43

Android布局管理器(贞布局)的相关文章

android的布局管理器

理论上通过setContentView(view)能够把一个view设置到activity中,但当你有很多个view控件的时候,就需要用android的布局管理器来管理view控件了. android布局管理器有以下几种: 1.线性布局 LinearLayout 2.框架布局 FrameLayout 3.表格布局 TableLayout 4.相对布局 RelativeLayout 5.绝对布局 AbsoluteLayout 一.LinearLayout 线性布局管理器 线性布局分为水平布局和垂直

布局管理器(章节摘要)

1,使用布局管理器可以对组件的布局进行管理,在Android中提供了4种布局管理器:LinearLayout,FrameLayout,TableLayout和RelativeLayout. 2,所有的布局管理器既可以通过配置文件实现,也可以通过Activity程序动态生成. 3,表格布局管理器可以以表格的形式对数据显示进行排列,在列表操作中使用较多. 4,布局管理器可以通过嵌套实现更加复杂的布局显示. 5,在Android 2.3.3之后不再支持绝对布局管理器.布局管理器(章节摘要)

QT开发(二十一)——QT布局管理器

QT开发(二十一)--QT布局管理器 一.布局管理器简介 QT中使用绝对定位的布局方式无法自适应窗口的变化. QT中提供了对界面组件进行布局管理的类,用于对界面组件进行管理,能够自动排列窗口中的界面组件,窗口大小变化后自动更新界面组件的大小. QLayout是QT中布局管理器的抽象基类,通过对QLayout的继承,实现了功能各异且互补的布局管理器. 布局管理器不是界面组件,而是界面组件的定位策略. 任意容器类型的组件都可以指定布局管理器. 同一个布局管理器管理中的组件拥有相同的父组件,在设置布局

Java之GUI编程(二)——布局管理器

在上篇博客Java之GUI编程(一)中我已经对GUI编程的组件和事件做了简单介绍了,现在来看看另外一部分关于组件在各个平台是如何做到仍能保持自己合理的位置大小以及外观的. 已经说了Java是跨平台运行的,但是不同的平台对于点及坐标的定义不完全相同.而且屏幕的解析度分辨率不同也会造成位置的变化,为了确保每个组件的相对位置和大小以及外观,java就设计了布局管理器. 布局管理器是对容器中的元素进行管理,按照一定的规则排放容器里面的元素.它控制了组件的摆放. 布局管理器分类: FlowLayout:浮

Java FlowLayout、BorderLayout、GridLayout、GridBagLayout、CardLayout布局管理器

作者:卿笃军 原文地址:http://blog.csdn.net/qingdujun/article/details/40985027 一.FlowLayout布局管理器 FlowLayout() 构造一个新的 FlowLayout,它是居中对齐的,默认的水平和垂直间隙是 5 个单位. FlowLayout(int align) 构造一个新的 FlowLayout,它具有指定的对齐方式,默认的水平和垂直间隙是 5 个单位. FlowLayout(int align, int hgap, int

JavaSE学习55:GUI编程之布局管理器

一布局管理器概述 Java语言中,提供了布局管理器类的对象可以管理. 管理Component对象在Container对象中的布局,不必直接设置Component对象位置和大小.每个Container对象 都有一个布局管理器对象,当容器需要对某个组件进行特定或判断其大小尺寸时,就会调用其对应的布局管理器,调 用Container对象的setLayout()方法改变其布局管理器对象. AWT提供了5种布局管理器,分别为: FlowLayout布局管理器 BorderLayout布局管理器 GridL

swing布局管理器简介

转载:http://stevencjh.blog.163.com/blog/static/1218614612010101775336729/ swing布局管理器简介 一 .BorderLayout布局管理器:BorderLayout 也是一种非常简单的布局策略,它把容器内的空间简单地划分为东.西.南.北.中无个区域,没加入一个组件都应该指明把这个组件加在哪个区域中. BorderLayout是顶层容器( JFrame, JDialog, 和 JApplet )的默认布局管理器.有五个位置组件

Qt布局管理器(详解)

1.存在的问题 (1)目前的GUI开发方式:绝对定位 --直接在像素级指定各个组件的位置和大小 void QWidget::move(int x, int y) void QWidget::resize(int w, int h) (2)问题 --组件位置和大小无法自适应父窗口的变化 2.布局管理器 (1)解决方案:布局管理器 --提供相关的类对界面组件进行布局管理 @1:能够自动排列窗口中的界面组件 @2:窗口变化后自动更新界面组件的大小 (2)QLayout是Qt中布局管理器的抽象基类 (3

10.4 使用布局管理器3(CardLayout)

3)CardLayout布局管理器 CardLayout布局管理器以时间而非空间来管理它里面的组件,它将加入容器的所有组件看成一叠卡片,每次只要最上面的那个Component才可见.就好像一副扑克牌,它们叠在一起,每次只有最上面的一张扑克牌可见. CardLayout提供了如下两个构造器: 1)CardLayout():创建默认的CardLayout布局管理器. 2)CardLayout(int hgap,int vgap):通过指定卡片与容器左右边界的间距(hgap).上下边界(vgap)的间

【Java Swing探索之路系列】之三:Java Swing布局管理器组件

作者:郭嘉 邮箱:[email protected] 博客:http://blog.csdn.net/allenwells github:https://github.com/AllenWell 一 BorderLayout BorderLayout是一种简单的布局策略,可以将其看作一个组件.它把容器分为东.南.西.北.中5个区域,每个组件将占据某个区域.而 这5个区域分别被命名为NORTH, WEST, EAST, CENTER, SOUTH,它们都被定义为静态 常量.静态常量可以直接引用,如