02Layout布局管理器ppt课件_第1页
02Layout布局管理器ppt课件_第2页
02Layout布局管理器ppt课件_第3页
02Layout布局管理器ppt课件_第4页
02Layout布局管理器ppt课件_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Android常用布局介绍Android常用布局介绍主讲人:陈树辉6种布局的继承关系在上面的UML图中可以看出, 绝对布局 帧布局 网格布局 相对布局 线性布局是直接继承ViewGroup,表格布局是继承LinearLayout; 简单的说:Activity就是布满整个窗口或者悬浮于其他窗口上的交互界面。在一个应用程序中通常由多个Activity构成,都会在Manifest.xml中指定一个主的Activity,如下设置 为了适应各种界面风格,Android提供了6种布局,这6种布局分别是: FrameLayout(帧布局)、LinearLayout(线性布局)、RelativeLayout(

2、相对布局)、TableLayout(表格布局)、GridLayout(网格布局)、AbsoluteLayout(绝对布局)(已过时,故此不讲等。 利用以上6种布局我们可以再手机屏幕上随心所欲的摆放各种控件。 布局管理器都是以ViewGroup为基类派生出来的; 使用布局管理器可以适配不同手机屏幕的分辨率,尺寸大小;规划(Layout)界面编程与视图View组件 Android应用的所有UI组件都继承自View类。 ViewGroup也是继承自View类,但是ViewGroup主要用作其他UI控件的容器。使用XML布局控制UI界面 Android推荐使用XML布局文件来控制视图。 将视图控制逻辑

3、从Java代码中分离出来,放入XML文件中控制,体现了MVC的设计思想。 通过如下代码在Activity中显示视图: setContentView(R.layout.); 通过如下方法访问指定的UI组件: findViewById(R.id.); Xml布局文件是android系统中定义的视图常用方法,所有的布局文件必须包含在res/layout目录中。定义XML布局的命名和定义注意事项如下: xml布局文件必须是以xml文件名结束,命名必须是符合java的规范 每一个xml布局文件的根节点可以是任意的控件标签 xml布局文件的根节点必须是包含android的命名空间,命名空间必须是xmlns

4、:android=schemas.android/apk/res/android 为xml文件布局中的控件指定的id需要使用这样的格式: android:id=“+id/控件名称“该标记会保存在R文件中,即生成 android:id=id/控件名称表示该控件的id名称已经在R文件生成了,可以引用了 每一个视图的id都会在R类中生成与之对应的变量,因此视图ID的值必须是符合java规范的使用XML布局文件定义视图 请翻到65页 Android表示单位长度的方式通常有三种表示方式。 px:表示屏幕实际的象素。例如,320*480的屏幕在横向有320个象素,在纵向有480个象素。 px : 像素,

5、每个px对应屏幕上的一个点; dip/dp : device independent pixels, 设备的独立像素, 这种单位基于屏幕密度, 在每英寸160点的显示器上 1dp = 1px, 随着屏幕密度改变, dp 与 px 换算会发生改变; sp : scale pixels, 比例像素, 处理字体的大小, 可以根据用户字体大小进行缩放; in : 英寸, 标准长度单位 mm : 毫米, 标准长度单位 pt : 磅, 标准长度单位, 1/72英寸;。Android中长度单位介绍 设计技巧: 如果设置表示长度、高度等属性时可以使用dp 或sp。但如果设置字体,需要使用sp。 dp是与密度无

6、关,sp除了与密度无关外,还与scale渐变尺寸伸缩动画效果无关 如果使用dp和sp,系统会根据屏幕密度的变化自动进行转换。Android中长度单位设计技巧概念清晰化Android LayoutParams简单说明其实这个LayoutParams类是用于child view子视图向 parent view父视图传达自己的意愿的一个东西孩子想变成什么样向其父亲说明) LayoutParams继承于Android.View.ViewGroup.LayoutParams. LayoutParams相当于一个Layout的信息包,它封装了Layout的位置、高、宽等信息。假设在屏幕上一块区域是由一个L

7、ayout占领的,如果将一个View添加到一个Layout中,最好告诉Layout用户期望的布局方式,也就是将一个认可的layoutParams传递进去。 可以这样去形容LayoutParams,在象棋的棋盘上,每个棋子都占据一个位置,也就是每个棋子都有一个位置的信息,如这个棋子在4行4列,这里的“4行4列就是棋子的LayoutParams。概念清晰化父容器与本容器属性 : android:layout_属性是本容器的属性, 定义在这个布局管理器的LayoutParams内部类中, 每个布局管理器都有一个LayoutParams内部类, android:、 是父容器用来控制子组件的属性. 如a

8、ndroid:layout_gravity 是控制组件本身的对齐方式, android:gravity是控制本容器子组件的对齐方式;控制本身元素属性与子元素属性 : 设备组件本身属性 : 带layout的属性是设置本身组件属性, 例如 android:layout_gravity设置的是本身的对齐方式; 设置子元素属性 : 不带layout的属性是设置其所包含的子元素, 例如android:gravity 设置的是该容器子控件的对齐方式;LayoutParams属性 : 所有的布局管理器都提供了相应的LayoutParams内部类, 这些内部类用于控制该布局本身, 如 对齐方式 layout_

9、gravity, 所占权重 layout_weight, 这些属性用于设置本元素在父容器中的对齐方式;容器属性 : 在android:后面没有layout的属性基本都是容器属性, android:gravity作用是指定指定本元素包含的子元素的对齐方式, 只有容器才支持这个属性;View类常用属性及方法任何继承自View的子类都将拥有View类的属性及对应方法 layout_margin是控件边缘相对于父控件的边距 取值为android:layout_marginTop=10dpAndroid布局中常用属性介绍android:layout_marginTop=10dpandroid:layou

10、t_marginTopandroid:layout_marginLeftandroid:layout_marginButtom=10dpandroid:layout_margin相对于父控件的间隔 layout_padding是控件内容相对于控件边缘的边距 取值也为:Android:padding=8dpAndroid布局中常用属性介绍Android:paddingTop=8dpAndroid:paddingButtom=8dpAndroid:paddingRightAndroid:paddingLeft 线性布局是最常用的布局线性布局在xml文件中使用来定义 线性布局可以分为水平和垂直的方向

11、的布局,可以通过android:orientation=“vertical来定义方向,该属性可以有horizontal和vertical两个方向。 标签中有一个很重要的属性gravity,该属性用于控制布局中视图的位置,如果设置多个值需要使用 | 进行分隔,属性如下:线性布局LinearLayout学云 为您提供高品质课件、学习督导服务、即时答疑、知识交易平台ixueyun线性布局 android:layout_width和android_layout_height属性说明线性布局LinearLayout android:layout_weight权重的描述 layout_weight 用于给

12、一个线性布局中的诸多视图(即LinearLayout的子元素)的重要度赋值。 所有的视图都有一个layout_weight值,默认为零,意思是需要显示 多大的视图就占据多大的屏幕空 间。若赋一个高于零的值,则将父视 图中的可用空间分割,分割大小具体取决于每一个视图的layout_weight 值以及该值在当前屏幕布局的整体 layout_weight值和在其它视图屏幕布 局的layout_weight值中所占的比率而定。线性布局LinearLayout线性布局实例使用线性布局实现如下界面老罗安卓视频,相对较易刘若翘杰作,相对有难度相对布局RelativeLayout 子控件的位置相对兄弟控件或

13、父容器而定 设计时按照依赖关系进行设计相对布局RelativeLayout1. RelativeLayout支持的属性(1) 对齐方式xml属性 : android:gravity;设置方法 : setGravity(int);作用 : 设置布局容器内子元素的对齐方式, 注意与android:layout_gravity区分, 后者是设置组件本身元素对齐方式;(2) 忽略对齐方式xml属性 : android:ignoreGravity;设置方法 : setIgnoreGravity(int);作用 : 设置该组件不受gravity属性影响, 因为gravity属性影响容器内所有的组件的对齐方

14、式, 设置了之后, 该组件就可以例外;相对布局RelativeLayout 只取True或False的属性2. LayoutParams属性例如:android:layout_centerVertical=“true”相对布局RelativeLayout 取值为其他控件ID的属性2. LayoutParams属性android:layout_above=id/button(控件名称)相对布局RelativeLayout 取值为像素的属性 避免出现循环依赖 android:layout_marginBottom=10dp 表示与下方有10dp的距离。p相对布局RelativeLayout请用请用

15、RelativeLayout实现以下的界面实现以下的界面要点 : 注意每个组件的属性, 先要确定方位, 再进行对齐, 组件左边界对齐, 组件上边界对齐两个按钮, 如果只有 android:layout_above=+id/bt1 会是这种情况 : 加上 android:layout_alignLeft=+id/bt1就会成为这种情况 :表格布局TableLayout1. 表格布局的一些概念继承关系 : 表格布局继承了LinearLayout, 其本质是线性布局管理器; 控制组件 : 表格布局采用 行, 列 形式管理子组件, 但是并不需要声明有多少 行列, 只需要添加TableRow 和 组件

16、就可以控制表格的行数和列数, 这一点与网格布局有所不同, 网格布局需要指定行列数;增加行的方法 : a. TableRow增加行列 : 向TableLayout中添加一个TableRow,一个TableRow就是一个表格行, 同时TableRow也是容器, 可以向其中添加子元素, 每添加一个组件, 就增加了一列;b. 组件增加行 : 如果直接向TableLayout中添加组件, 就相当于直接添加了一行;列宽 : TableLayout中, 列的宽度由该列最宽的单元格决定, 整个表格的宽度默认充满父容器本身;表格布局TableLayout常用属性及对应方法说明表格布局TableLayout一小段

17、代码:一小段代码: 剩下的请看Eclipse里的代码,本节的实践也为右图帧布局FrameLayout帧布局容器为每个组件控件创建一个空白区域, 一个区域成为一帧, 这些帧会根据FrameLayout中定义的gravity属性自动对齐;帧布局是最简单的布局方式、所有添加到这个布局中的视图都是以层叠的方式显示。第一个添加到帧布局中的视图显示在最底层,最后一个被放在最顶层,上一层的视图会覆盖下一层的视图,因此帧布局类似堆栈布局。帧布局FrameLayout1. 绘制霓虹灯布局要点 : 后挡前 : 后面的View组件会遮挡前面的View组件,越在前面, 被遮挡的概率越大;界面居中 : 将所有的Text

18、View组件的对齐方式 android:layout_gravity 设置为center;正方形 : 所有的TextView都设置android:height 和 android:width 属性, 用来设置其宽高, 这里设置成正方形, 宽高一样, 后面的组件比前面的边长依次少40;颜色 : 每个TextView的背景色都设置成不一样的;详细,请看工程代码网格布局GridLayout1. 网格布局介绍网格布局时Android4.0版本才有的, 在低版本使用该布局需要导入对应支撑库;GridLayout将整个容器划分成rows * columns个网格, 每个网格可以放置一个组件. 还可以设置一

19、个组件横跨多少列, 多少行. 不存在一个网格放多个组件情况;2. 网格布局常用属性(1) 设置对齐模式xml属性 : android:alignmentMode;设置方法 : setAlignmentMode(int);作用 : 设置网格布局管理器的对齐模式(2) 页边距xml属性 : android:useDefaultMargins;设置方法 : setUseDefaultMargins(boolean);作用 : 设置该布局是否使用默认的页边距;网格布局GridLayout(3) 设置列数xml属性 : android:columnCount;设置方法 : setColumnCount(

20、int);作用 : 设置该网格布局的列数;(5) 设置是否保留列序列号xml属性 : android:columnOrderPreserved;设置方法 : setColumnOrderPreserved(boolean);作用 : 设置网格容器是否保留列序列号;(4) 设置行数xml属性 : android:rowCount;设置方法 : setRowCount(int);作用 : 设置该网格的行数;(6) 设置是否保留行序列号xml属性 : android:rowOrderPreserved;设置方法 : setRowOrderPreserved(int);作用 : 设置该网格容器是否保留

21、行序列号;网格布局GridLayout3. GridLayout的LayoutParams属性(1) 设置位置列xml属性 : android:layout_column;作用 : 设置子组件在GridLayout的哪一列;(2) 横向跨列xml属性 : android:layout_columnSpan;作用 : 设置该子组件在GridLayout中横向跨几列;(3) 占据空间方式xml属性 : android:layout_gravity;设置方法 : setGravity(int);作用 : 设置该组件采用何种方式占据该网格的空间;(4) 设置行位置xml属性 : android:layout_row;作用 : 设置该子组件在GridLayout的第几行;(5) 设置横跨行数xml属性 : android:layout_rowSpan;作用 : 设置该子组件在GridLayout纵向横跨几行;网格布局GridLayout4. 实现一个计算机界面这里采用x

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论