嵌入式系统常见布局方式常见布局方式
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VIEW类及VIEWGROUP类
ViewGroup类是View的子类
是布局对象的父类 布局常以XML的形式出现 XML布局文件定义在res/layout文件夹下
布局类之间的关系如下:
子类继承父类属性
View
ViewGroup
FrameLayout
LinearLayout
RalativeLayout
andriod:orientation:设置排列方向 按控件大小填充 android:layout_width:设置宽 android:layout_height:设置高 android:layout_weight:设置控件的重要程度。默认为零,根 据weight值分配控件暂用屏幕大小。 andriod:gravity:设置内部元素的对齐方式等。
自定义视图
单独定义View类,在布局文件中引用。 创建项目如下:
自定义视图
MyView.java代码如下:
自定义视图
布局文件main.xml代码如下:
运行效果
作业:
1、简述自定义视图的三种方法及其操作步骤 2、如何在一个界面里布局4个按钮
要求:4个按钮分为两行、两列,与屏幕上下、水平居中对齐, 请写出布局代码
例子2
自定义视图
在主Activity中直接重写View类,对View类(包含 View类的子类)进行实例化即可。
例子3
自定义视图
单独定义View类,在主Activity中引用
public class My2D extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(new MyView(this)); } }
<!--
子组件 --> 帧布局的结束标记
</FrameLayout>
帧布局(FRAMELAYOUT)
例子
① ②
新建一个项目
在res/layout文件夹 中删除原有的布局文
件
③
在该文件夹下新建一 个andriod XML layout 文件
帧布局(FRAMELAYOUT)
例子
⑤
向布局中拖拽3个文本
列表布局(LISTVIEW)
类中自定义数据,在listView中显示
想一想: 在活动中把视图加载 的方法是什么呢?
setContentView(R.layout.main); setContentView(view); 上一个例子使用的是那种方法?为 什么?
自定义视图
自定义视图的三种方法
XML文档结构如下:
XML编码的固定格式
<?xml version="1.0" encoding="utf-8"?> <FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height=“match_parent”>
填充整个屏幕宽度
线性布局(LINEARLAYOUT)
例子
嵌套线 性布局1
垂直布局
线性布局
嵌套线 性布局2
此视图占去 屏幕的1/(1+3)
水平布局
此按钮占去 子布局的 2/(2+3)
想一想: 如果要想让嵌套的两个 线性布局,均分屏幕, 应该怎么设置?
表格布局(TABLELAYOUT)
以多行多列的方式显示子对象。
在主Activity中直接重写View类 单独定义View类,在主Activity中引用
单独定义View类,在布局文件中引用
自定义视图
在主Activity中直接重写View类,对View类(包含 View类的子类)进行实例化即可。
例子1
自定义视图
在主Activity中直接重写View类,对View类(包含 View类的子类)进行实例化即可。
listView要显示数据,数据一般有以下几个来源:
自定义的array,需要预先定义array,在listview中 使用android:entries="@array/xxx“
数据库,需要先查询数据库,再操作 在类中自定义的数组,直接使用adapter即可
列表布局(LISTVIEW)
<!--
子组件 -->
</FrameLayout>
帧布局(FRAMELAYOUT)
XML文档结构如下:
<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height=“match_parent”> 定义该布局大小 match_parent与父控件相同 wrap_content与内容大小相同 可以给定具体的数值,单位最 好为dp
<!--
子组件 -->
</FrameLayout>
帧布局(FRAMELAYOUT)
XML文档结构如下:
<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height=“match_parent”> XML命名空间
<!--
子组件 -->
</FrameLayout>
帧布局(FRAMELAYOUT)
XML文档结构如下:
<?xml version="1.0" encoding="utf-8"?> <FrameLayout 帧布局开始
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height=“match_parent”>
控件
⑥
改变文本控件属性, 具体代码如右图
线性布局(LINEARLAYOUT)
LinearLayout(线性布局)
是最常用的布局方式。 以水平或垂直的方式排列子对象。 一个方向只能有一个对象。 可以嵌套:一个线性布局内还可以定义线性布局。
垂直排列
LinearLayout 常用属性(布局参数):
AbsoluteLayout
TableLayout
帧布局(FRAMELAYOUT)
分层显示,每层一个组件 最后放入的组件在顶层 默认组件左上角对齐(如右上图) 如果想更改组件对齐方式,每个子组件内添加 layout_gravity属性(右下图的子组件属性为center)
帧布局(FRAMELAYOUT)
<!--
子组件 -->
</FrameLayout>
帧布局(FRAMELAYOUT)
XML文档结构如下:
<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height=“match_parent”>
相对布局(RELATIVELAYOUT)
XML属性如下:
属性 含义
layout_centerHorizontal 取值true时,水平居中 layout_centerInParent 取值true时,居中显示
layout_alignParentLeft
layout_toRightOf
取值true时,水平居左
<!--
子组件 -->
Android支持的各种组件,在 下一章将详细阐述
</FrameLayout>
帧布局(FRAMELAYOUT)
XML文档结构如下:
<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height=“match_parent”>
自定义的array
列表布局(LISTVIEW)
要显示数据库和自定义的数组时,一般需要使用适配 器(Adapter)。
使用listview.setAdapter(ListAdapter)方法来加载数 据资源。
listView 中常用的适配器有ArrayAdapter,
SimpleAdapter和SimpleCursorAdapter等。
属性 含义
ຫໍສະໝຸດ Baidu
android:background
android:clickable android:visible android:focusable android:id
设置背景,可以是drawable,也可以是色彩
是否响应单击事件 控制View的可见性 控件View是否可以获取焦点 View标识符,可通过findViewById方法获取
表格布局(TABLELAYOUT)
XML文档格式
行 列,每个组件为一列
表格布局
想一想: 一行里能放多列吗?
动手验证: 多列组件,超过屏幕 宽度怎么办?超出的还 显示吗?实验课上,请 你自己实验验证一下
相对布局(RELATIVELAYOUT)
相对于其他对象的位置显示子对象,常用于表单中。 是设计UI的有力工具,通常用于比较复杂的布局。
id,在id组件的右侧
layout_alignTop
layout_marginBottom
取值id,上边界与id组件上边界对齐
int值,单位dp,底端间距
列表布局(LISTVIEW)
ListView可以显示多条内容,当内容超出屏幕高度时, 可以上下滚动显示
ListView也继承View类
列表布局(LISTVIEW)
帧布局(FrameLayout) 线性布局(LinearLayout) 表格布局(TableLayout) 相对布局(RelativeLayout)
列表布局(ListView)
自定义视图 事件控制方法
VIEW类及VIEWGROUP类
View类是屏幕元素的基类。所有界面元素都是其子类。 View类的属性如下:
每一行为一个TableRow 。 每一行可以拥有0个或多个的单元格(cell)。
每个单元格内是一个View对象。
TableLayout 容器不会显示行 、列 或单元格的边框线。 列的属性
Shrinkable:设置列的宽度是否可收缩,收缩指表格能够适应其 父容器的大小。
Stretchable:设置列的宽度是否可拉伸,拉伸指可填满表格中空 余的空间。 Collapsed:设置列是否被隐藏。
常见布局方式
回顾
上一节我们学习了以下几个内容:
活动生命周期,活动定义及使用方法 意图的定义及使用
服务生命周期,服务的使用 内容提供者的基本含义
引入
每个活动都有一个界面,手机屏幕的不同,界面布局
不同。设计时,该如何考虑界面布局呢?
本章主要知识
View类及ViewGroup类