Android六大界面布局

Android六大界面布局方式:

声明Android程序布局有两种方式:

1) 使用XML文件描述界面布局;

2) 在Java代码中通过调用方法进行控制。

我们既可以使用任何一种声明界面布局的方式,也可以同时使用两种方式。

使用XML文件声明有以下3个特点:

  • 1) 将程序的表现层和控制层分离;
  • 2) 在后期修改用户界面时,无须更改程序的源程序;
  • 3) 可通过WYSIWYG可视化工具直接看到所设计的用户界面,有利于加快界面设计的过程。

建议尽量采用XML文件声明界面元素布局。在程序运行时动态添加界面布局会大大降低应用响应速度,但依然可以在必要时动态改变屏幕内容。

六大界面布局方式包括: 线性布局(LinearLayout)、框架布局(FrameLayout)、表格布局(TableLayout)、相对布局(RelativeLayout)、绝对布局(AbsoluteLayout)和网格布局(GridLayout) 。

1. LinearLayout线性布局

LinearLayout容器中的组件一个挨一个排列,通过控制android:orientation属性,可控制各组件是横向排列还是纵向排列。

LinearLayout的常用XML属性及相关方法

XML属性 相关方法 说明
android:gravity setGravity(int) 设置布局管理器内组件的对齐方式
android:orientation setOrientation(int) 设置布局管理器内组件的排列方式,可以设置为horizontal、vertical两个值之一

其中,gravity属性支持top, left, right, center_vertical, fill_vertical, center_horizontal, fill_horizontal, center, fill, clip_vertical, clip_horizontal。也可以同时指定多种对齐方式的组合。

LinearLayout子元素支持的常用XML属性及方法

XML属性 说明
android:layout_gravity 指定该子元素在LinearLayout中的对齐方式
android:layout_weight 指定子元素在LinearLayout中所占的权重

2. TableLayout表格布局

TableLayout继承自Linearout,本质上仍然是线性布局管理器。表格布局采用行、列的形式来管理UI组件,并不需要明确地声明包含多少行、多少列,而是通过添加TableRow、其他组件来控制表格的行数和列数。

每向TableLayout中添加一个TableRow就代表一行;

每向TableRow中添加一个一个子组件就表示一列;

如果直接向TableLayout添加组件,那么该组件将直接占用一行;

在表格布局中,可以为单元格设置如下三种行为方式:

  • Shrinkable:该列的所有单元格的宽度可以被收缩,以保证该表格能适应父容器的宽度;
  • Strentchable:该列所有单元格的宽度可以被拉伸,以保证组件能完全填满表格空余空间;
  • Collapsed:如果该列被设置为Collapsed,那么该列的所有单元格会被隐藏;

TableLayout的常用XML属性及方法

XML属性 相关方法 说明
android:collapseColumns setColumns(int, boolean) 设置需要被隐藏的列的序号,多个序号间用逗号分隔
android:shrinkColumns setShrinkAllColumns(boolean) 设置需要被收缩的列的序号
android:stretchColumns setStretchAllColumns(boolean) 设置允许被拉伸的列的序号

3. FrameLayout帧布局

FrameLayout直接继承自ViewGroup组件。帧布局为每个加入其中的组件创建一个空白的区域(称为一帧),每个子组件占据一帧,这些帧会根据gravity属性执行自动对齐。

FrameLayout的常用XM了属性及方法

XML属性 相关方法 说明
android:foreground setForeground(Drawable) 设置该帧布局容器的前景图像
android:foregroundGravity setForeGroundGraity(int) 定义绘制前景图像的gravity属性

4. RelativeLayout相对布局

RelativeLayout的XML属性及相关方法说明

XML属性 相关方法 说明
android:gravity setGravity(int)  
android:ignoreGravity setIgnoreGravity(int) 设置哪个组件不受gravity属性的影响

为了控制该布局容器的各子组件的布局分布,RelativeLayout提供了一个内部类:RelativeLayout.LayoutParams。

RelativeLayout.LayoutParams里只能设为boolean的XML属性

XML属性 说明
android:layout_centerHorizontal 设置该子组件是否位于布局容器的水平居中
android:layout_centerVertical  
android:layout_centerParent  
android:layout_alignParentBottom  
android:layout_alignParentLeft  
android:layout_alignParentRight  
android:layout_alignParentTop

RelativeLayout.LayoutParams里属性值为其他UI组件ID的XML属性

XML属性 说明
android:layout_toRightOf 控制该子组件位于给出ID组件的右侧
android:layout_toLeftOf  
android:layout_above  
android:layout_below  
android:layout_alignTop  
android:layout_alignBottom  
android:layout_alignRight  
android:layout_alignLeft

5. Android 4.0新增的网格布局GridLayout

GridLayout是Android4.0增加的网格布局控件,与之前的TableLayout有些相似,它把整个容器划分为rows × columns个网格,每个网格可以放置一个组件。性能及功能都要比tablelayout好,比如GridLayout布局中的单元格可以跨越多行,而tablelayout则不行,此外,其渲染速度也比tablelayout要快。

GridLayout提供了setRowCount(int)和setColumnCount(int)方法来控制该网格的行和列的数量。

GridLayout常用的XML属性和方法说明

XML属性 相关方法 说明
android:alignmentMode setAlignmentMode(int) 设置该布局管理器采用的对齐模式
android:columnCount setColumnCount(int) 设置该网格的列数量
android:columnOrderPreserved setColumnOrderPreserved(boolean) 设置该网格容器是否保留序列号
android:roeCount setRowCount(int) 设置该网格的行数量
android:rowOrderPreserved setRowOrderPreserved(boolean) 设置该网格容器是否保留行序号
android:useDefaultMargins setUseDefaultMargins(boolean) 设置该布局管理器是否使用默认的页边距

为了控制GridLayout布局容器中各子组件的布局分布,GridLayout提供了一个内部类:GridLayout.LayoutParams,来控制Gridlayout布局容器中子组件的布局分布。

GridLayout.LayoutParams常用的XML属性和方法说明

XML属性 说明
android:layout_column 设置该组件在GridLayout的第几列
android:layout_columnSpan 设置该子组件在GridLayout横向上跨几列
android:layout_gravity 设置该子组件采用何种方式占据该网格的空间
android:layout_row 设置该子组件在GridLayout的第几行
android:layout_rowSpan 设置该子组件在GridLayout纵向上跨几行

5. AbsoluteLayout绝对布局

即Android不提供任何布局控制,而是由开发人员自己通过X坐标、Y坐标来控制组件的位置。每个组件都可指定如下两个XML属性:

  • layour_x;
  • layout_y;

绝对布局已经过时,不应使用或少使用。

界面布局类型的选择和性能优化

首先得明确,界面布局类型的嵌套越多越深越复杂,会使布局实例化变慢,使Activity的展开时间延长。建议尽量减少布局嵌套,尽量减少创建View对象的数量。

1 . 减少布局层次,可考虑用RelativeLayout来代替LinearLayout。通过Relative的相对其他元素的位置来布局,可减少块状嵌套;

2 . 另一种减少布局层次的技巧是使用 <merge /> 标签来合并布局;

3 . 重用布局。Android支持在XML中使用 <include /> 标签, <include /> 通过指定android:layout属性来指定要包含的另一个XML布局。

如:

<code style="padding: 0.3em; font-family: Monaco, Menlo, Consolas, 'Courier New', monospace; border: 0px; display: block; overflow-y: auto;"><span class="tag" style="color: rgb(0, 0, 128);"><<span class="title">include</span> <span class="attribute" style="color: rgb(0, 128, 128);">android:id</span>=<span class="value" style="color: rgb(221, 17, 68);">"@+id/id1"</span> <span class="attribute" style="color: rgb(0, 128, 128);">android:layout</span>=<span class="value" style="color: rgb(221, 17, 68);">"@layout/mylayout"</span>></span>
<span class="tag" style="color: rgb(0, 0, 128);"><<span class="title">include</span> <span class="attribute" style="color: rgb(0, 128, 128);">android:id</span>=<span class="value" style="color: rgb(221, 17, 68);">"@+id/id2"</span> <span class="attribute" style="color: rgb(0, 128, 128);">android:layout</span>=<span class="value" style="color: rgb(221, 17, 68);">"@layout/mylayout"</span>></span>
<span class="tag" style="color: rgb(0, 0, 128);"><<span class="title">include</span> <span class="attribute" style="color: rgb(0, 128, 128);">android:id</span>=<span class="value" style="color: rgb(221, 17, 68);">"@+id/id3"</span> <span class="attribute" style="color: rgb(0, 128, 128);">android:layout</span>=<span class="value" style="color: rgb(221, 17, 68);">"@layout/mylayout"</span>></span></code>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一 Launcher默认界面配置(default workspace) 2 1 界面默认配置文件 2 2 LauncherProvider java的loadFavorites分析 3 二 Icon修改 界面布局调整 壁纸设置 5 1 图标大小和标题大小 5 2 Launcher 图标加入默认背景 6 3 更换Launcher默认壁纸 7 4 壁纸设置过程: 8 三 Launcher启动和初始化 9 1 Launcher进程启动过程 9 2 Launcher初始化――LauncherApplication 10 3 Launcher java初始化 12 1 Callbacks接口 15 2 数据加载流程 16 4 LoaderTask的run 方法 17 5 workspace加载数据 18 6 workspace绑定数据 20 7 ALL APP数据加载绑定 22 五 HotSeat分析 24 1 Hotseat配置文件 24 2 Hotseat构造函数 26 3 Hotseat加载数据 27 4 Hotseat绑定数据 27 5 Hotseat类 28 6 总结 30 六 页面滑动 PagedView 30 七 AllApp全部应用列表 AppsCustomizeTabHost 38 1 AllApp列表配置文件 38 2 AppsCustomizeTabHost分析 40 3 Tab变化时执行onTabChanged 41 八 AllApp界面拖拽元素 42 1 触摸拦截 43 2 handleTouchEvent方法 43 4 拖曳按钮 44 九 Launcher启动APP流程 45 1 WorkSpace触摸 45 2 CellLayout的onInterceptTouchEvent 方法 46 3 WorkSpace的onTouch 事件 47 4 BubbleTextView 48 5 onClick 方法 49 6 总结 50 1 常用类介绍 50 2 Launcher的数据库 51">一 Launcher默认界面配置(default workspace) 2 1 界面默认配置文件 2 2 LauncherProvider java的loadFavorites分析 3 二 Icon修改 界面布局调整 壁纸设置 5 1 图标大小和标题大小 5 2 Launcher 图标加入默认背景 6 3 更换Launcher默认壁纸 7 [更多]
1、AGps 资料 详细的介绍了3G中的A-GPS移动定位技术、AGPS原理、移动终端A_GPS定位功能的性能和一致性测试、有关Android中的AGPS。 2、Android YGPS 搜索并绘画 自绘视图View实现gps绘画、监听gps状态、监听gps位置变化、以及搜星。 3、Android 程序锁源码 Android 程序锁,共六个目标文件,锁屏用的程序。 4、Android 手机屏幕保护源码 共3个目标文件(后台服务实现),Android 手机上用的屏幕保护程序,具备锁屏、屏蔽home、屏蔽返回、屏蔽挂机键等功能,研究新型的Android系统,是手机操作系统的又 一方向。通过这些小而实用的系统开发,帮助你对Android系统开发有个更全面的了解。 5、Android 摇一摇源码 共两个目标文件,检测手机摇晃的监听器(设置重力感应监听器感应获得变化数据)。 6、Android 音乐快剪2.2源码(含文档) 共14个目标文件,具备录音、编辑音频文件……等。 7、android_gps_wifi_基站_定位集合 如题,如果gps设备没有获取到gps信息,则通过wifi以及基站获取信息(需要联网)。 8、Android2.2天气预报程序源码+开发文档 共10个目标文件,读取中央气象台的天气预报API得到天气数据,由此扩展出Android天气预报源码。虽然获取天气时你首先要知道对应的城市码,有点麻烦,其它的如稳定性与 广阔性也是很一流的,它可以精确到县和区,然后通过再Android访问全国任意一个地区的天气预报……。 9、AndroidManager优化大师 共20个目标文件,CPU管理、内存管理、文件操作、进程监视管理、获取机子信息……等等。 10、Android触摸界面产生气泡的源码 如题,共1个目标文件。 11、Android读写文件源码 共1个目标文件,文件操作! 12、Android愤怒的小鸟高仿源码 共18个目标文件,可以用来学习游戏的制作,分享学习用,谢绝商用! 13、Android进程管理软件-Melo+Process+Manager 共8个目标文件,简单!~ 14、Android开心电子书源代码 共15个目标文件,界面比较好,有翻书效果!数据库操作!~关键是Read的文件!~ 15、Android类似于放大镜源码 共一个目标文件,简单!只是设置文件显示大小!~ 16、Android平台下的手机管理软件源代码 共11个目标文件! 内容索引:Java源码,Android,Android,文件管理   Android平台下的手机系统管理软件,就像电脑系统一样包括进程管理、文件管理和系统管理,具体来说,包括:   1、系统信息,查看设备系统版本,运营商及其系统信息.   2、硬件信息查看包括CPU,硬盘,内存等硬件信息.   3、软件信息,查看已经安装的软件信息.   4、运行时信息,查看设备运行时的信息.   5、文件浏览器,浏览查看文件系统. 17、android去GPS及WIFI基站定位坐标源码 共4个目标文件!aGPS的获取!~ 18、Android手机里的滑动条源代码 共1个目标文件!简单。 19、Android团购信息源代码 共8个目标文件!简单的本地数据库操作!~ 20、Android网络交互判断网络连接的例子 共1个目标文件!简单。get方式访问一个url! 21、Android异步加载源码示例 共5个目标文件!简单。异步加载,通过异步加载外部网站的多张图片,来介绍和演示Android环境下如何去实现文件异步加载功能,想搞Android软件开发的新手,有必要掌握 的一个技巧,程序中考虑到捕获RejectedExecutionException同时加载的图片过多而导致程序崩溃,附加了异常处理程序。 22、Android应用程序的自动更新升级(自身升级、通过tomcat) 共4个目标文件!~如题。 23、Android游戏疯狂连连看源代码 共15个目标文件!~代码注释比较丰富,而且资源文件完整,还有文档,看上去一切都很规范,压缩包有9M多,值得参阅的Android游戏源代码。源代码内包括了封装图片ID与 图片本身的工具类,来自疯狂Java联盟。 根据游戏状态来绘制游戏界面上的全部方块。 24、Fireworks-烟花特效 共3个目标文件!~自定义了一个花类,使用SurfaceView绘画。 25、YQ即时聊天 有服务端以及客户端,服务端共计9个目标文件,循环监听端口,判断用户操作。 客户端共计23个目标文件,登陆、注册、聊天等操作!~ 26、屏幕滚动与布局设计 共2个目标文件!~一个布局,一个主界面!~~效果不错。 27、下载升级 共计2个目标文件!~~~简单! 28、页面特效集合 共计54个目标文件!~效果不错~~开源项目!~ 29、在线升级Android应用程序 共计1个目标文件!~~~简单!
Android学习文档 1 一、Android前言 3 1、Android发展历程 3 2、Android发展前景 8 3、Android 应用领域 9 二、准备工作 11 1、 Android开发环境搭建 11 1.1 第一种搭建Android的开发环境步骤: 12 1.2 第二种搭建Android的开发环境步骤: 12 2、AVD设备(模拟器) 13 3、Android的模拟器Emulator 14 4、DDMS调试 14 5、Android开发需知 14 5.1 Android目录结构 14 5.2 UI控件: 15 5.3 应用程序权限 15 6、第一个android应用程序 15 7、Android组件介绍 20 三、Android应用程序架构分析 21 1、Android布局组件介绍及其实例分析 21 2.1 布局组件概述 21 2.1.1 五大布局: 21 2.1.2 属性: 21 2.1.3 常用的长度单位解析: 21 2.2 线性布局 22 2.3 表格布局 22 2.4 相对布局 23 2.5 基本界面组件 23 2、Activity生命周期及其实例分析 24 1.1 Avtivity介绍 24 1.2 Activity的生命周期 25 1.2.1 Activity的三种状态 25 1.2.2 Activity在三种状态切换时调用的方法(7种) 25 1.2.3 Activity跳转与布局管理器 27 1.2.4 Activity中与跳转相关的方法 28 1.2.5 Activity的内部切换界面 28 1.2.6 Activity的用法 28 1.3 Avtivity的回调机制 28 四、事件处理机制 29 1、事件效果 29 2、事件监听器的处理模型 30 3、监听器的事件处理模型步骤 31 4、事件监听器必须实现事件监听器接口 31 5、实现事件监听器 31 6、基于回调的事件处理 32 7、基于回调的事件传播 32 五、 Android数据存储 32 1、android的数据存储 32 2、如何在android中使用SQlite数据库? 33 2.1 使用SharedPreferences 33 2.2 练习使用SharedPreferences 33 3、要读写其他应用的SharedPreferences怎么做? 33 六、 Json数据格式解析和xml解析 34 1、JSON简介 34 2、Gson介绍 34 3、JSON与XML 34 4、Android中对xml的解析 35 4.1 学习json数据格式,编写xml文件转化成实体bean的工具类 35 1.先写一个工具类,把list集合转化成xml格式,注意支持各种类型 35 分析:用dom4j来操作 35 2.涉及的知识 35 五、开发中会用到的技术 36 1、Selector技术 36 2、Tosat显示消息提示框技术 36 3、Handler消息传递机制 36 4、Handler类的主要作用 37 六、Android实例 38 1、做多米播放器的特效 38 2、做时钟的特效 39 1. 涉及的知识 40 一、完成”时钟”应用程序的操作 43 七、图形与图像处理 44
当涉及到Android开发的UI界面布局教学,有几个重要的概念和技术需要了解。下面我会介绍一些常用的布局方式和相关的教学资源。 1. 线性布局(LinearLayout):线性布局是最常用的布局方式之一,它可以使组件在水平或垂直方向上按照一定的顺序排列。你可以使用`android:orientation`属性来指定布局的方向。详细教程请参考CSDN的[Android开发之线性布局详解](https://blog.csdn.net/u013831257/article/details/52539859)。 2. 相对布局(RelativeLayout):相对布局允许你根据其他组件的位置和关系来定位组件。你可以使用各种规则(如`android:layout_alignParentTop`、`android:layout_below`等)来指定组件相对于父组件或其他组件的位置。详细教程请参考CSDN的[Android开发之相对布局详解](https://blog.csdn.net/u012702547/article/details/52461396)。 3. 约束布局(ConstraintLayout):约束布局是一种相对新的布局方式,它通过将组件之间的关系表示为约束来定位组件。这种布局方式在Android Studio中得到了很好的支持。你可以使用可视化编辑器轻松创建约束布局。详细教程请参考CSDN的[Android开发之约束布局详解](https://blog.csdn.net/u012702547/article/details/52580102)。 除了以上几种常用的布局方式,你还可以了解以下几个方面的内容来完善你的UI界面布局技能: - 使用嵌套布局:将多个布局嵌套在一起可以创建更复杂的UI界面。 - 使用自定义布局Android允许你根据自己的需求创建自定义的布局。 - 使用列表布局:列表布局(如RecyclerView)是在Android开发中非常常见的一种布局方式,它可以用来展示大量的数据。 希望以上资源对你有所帮助!如果你还有其他问题,可以继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值