前言
本文将从Android Studio 跑通 Chapter02 的 4 个实战项目(线性布局、相对布局、表格布局、帧布局(霓虹灯))、四种布局资源深度解析两个核心维度展开,每个项目均附带完整运行步骤和截图,所有代码基于 Android Support 库开发,适配主流 Android Studio 版本。
目录
- 4 个项目源码说明
- 逐一跑通 4 个 Android 项目(含截图)
- Android 四种常用布局深度解析(结合项目实战)
- 四种布局的选型原则与对比
- 总结
一、 4 个项目源码说明
4 个项目源码结构说明
Chapter02 包含 4 个独立 Android 项目,对应 Android 四种常用布局,所有项目的包名、核心文件完全独立,源码核心文件如下(每个项目均包含 3 个核心 Java 文件,布局文件为res/layout/activity_main.xml):
| 项目名称 | 包名 | 核心 Java 文件 | 对应布局类型 |
|---|---|---|---|
| linearlayout | cn.edu.linearlayout | ExampleInstrumentedTest、ExampleUnitTest、MainActivity | 线性布局 |
| relativelayout | cn.edu.relativelayout | ExampleInstrumentedTest、ExampleUnitTest、MainActivity | 相对布局 |
| tablelayout | cn.edu.tablelayout | ExampleInstrumentedTest、ExampleUnitTest、MainActivity | 表格布局 |
| neonlamp | cn.edu.neonlamp | ExampleInstrumentedTest、ExampleUnitTest、MainActivity | 帧布局(霓虹灯效果) |
通用代码特点:
- 所有项目的
MainActivity均继承AppCompatActivity,在onCreate中加载activity_main.xml布局; - 单元测试(ExampleUnitTest)均为默认的加法测试,仪器化测试(ExampleInstrumentedTest)均验证包名正确性,确保项目可正常编译运行;
- 所有项目均使用 Android Support 库,未使用 AndroidX,无需做迁移适配。
二、逐一跑通 4 个 Android 项目(含截图)
各项目运行与截图
1 线性布局(linearlayout)项目
- 运行后界面:展示水平排列的控件(如 Button、TextView),体现线性布局的「单向排列」特性;
2 相对布局(relativelayout)项目
- 运行后界面:展示基于相对位置排列的控件(如 A 控件在 B 控件下方、C 控件居中),体现相对布局的「相对定位」特性;
3 表格布局(tablelayout)项目
- 运行后界面:展示行列形式的控件布局(如表单式的多行多列按钮 / 文本),体现表格布局的「网格排列」特性;
4 帧布局(neonlamp)霓虹灯项目
- 运行后界面:展示文字叠层的霓虹灯动画效果(多个 TextView 堆叠,交替变色),体现帧布局的「控件叠层」特性;
三、Android 四种常用布局深度解析(结合项目实战)
Android 布局资源用于定义界面的控件排列方式,存放在res/layout目录下,核心为 XML 文件。以下结合 4 个实战项目,从核心概念、核心 XML 属性、项目应用、运行效果四个维度解析四种布局。
3.1 线性布局(LinearLayout)- linearlayout 项目
核心概念
线性布局是 Android 最基础的布局,控件仅能沿「水平(horizontal)」或「垂直(vertical)」一个方向排列,不可同时多方向排列,超出屏幕时可通过scrollbars设置滚动。
核心 XML 属性
| 属性名 | 作用 |
|---|---|
| android:orientation | 必选,设置排列方向:horizontal(水平)/vertical(垂直) |
| android:layout_weight | 权重,分配控件的剩余空间,适用于多控件均分屏幕(核心属性) |
| android:gravity | 设置布局内控件的对齐方式(如 center、left、top) |
| android:layout_gravity | 设置当前布局在父布局中的对齐方式 |
| android:orientation | 排列方向,horizontal(水平)/vertical(垂直) |
项目应用
linearlayout 项目的activity_main.xml以线性布局为根布局,通过android:orientation设置排列方向,使用android:layout_weight实现控件的屏幕占比分配,例如 3 个 Button 均分水平屏幕。
运行效果
控件按指定方向依次排列,权重分配的控件按比例占据屏幕空间,界面简洁,符合「单向排列」的设计逻辑。
3.2 相对布局(RelativeLayout)- relativelayout 项目
核心概念
相对布局是最灵活的布局之一,控件基于父布局或其他控件的相对位置进行排列(如下、上、左、右、居中),无需考虑控件顺序,能减少布局嵌套,提升界面性能。
核心 XML 属性
分为基于父布局定位和基于其他控件定位两类,核心属性如下:
- 基于父布局:
android:layout_centerInParent(居中)、android:layout_alignParentTop(贴父布局顶部)、android:layout_alignParentLeft(贴父布局左侧); - 基于其他控件:
android:layout_below="@id/xxx"(在 xxx 控件下方)、android:layout_toRightOf="@id/xxx"(在 xxx 控件右侧)、android:layout_alignTop="@id/xxx"(与 xxx 控件顶部对齐); - 间距设置:
android:layout_marginTop(上间距)、android:layout_marginLeft(左间距)。
项目应用
relativelayout 项目的activity_main.xml以相对布局为根布局,通过上述属性实现控件的灵活定位,例如将一个 TextView 居中,一个 Button 放在 TextView 下方,无需嵌套其他布局。
运行效果
控件按预设的相对位置摆放,界面布局灵活,无多余嵌套,适配不同尺寸的手机屏幕。
3.3 表格布局(TableLayout)- tablelayout 项目
核心概念
表格布局继承自LinearLayout,以行(TableRow)和列的形式排列控件,无需定义列数,列数由包含控件最多的 TableRow 决定,每个 TableRow 中的控件为一列,适合实现表单、数据表格等界面。
核心 XML 属性
| 属性名 | 作用 |
|---|---|
| android:stretchColumns | 设置可拉伸的列(如 0 表示第 1 列),占满剩余空间 |
| android:shrinkColumns | 设置可收缩的列,避免控件超出屏幕 |
| android:collapseColumns | 设置隐藏的列 |
| android:layout_column | 控件在 TableRow 中的列位置 |
| android:layout_span | 控件跨列的数量 |
项目应用
tablelayout 项目的activity_main.xml以 TableLayout 为根布局,嵌套多个 TableRow,每个 TableRow 中添加 Button/TextView 作为列,通过android:stretchColumns实现列的自适应拉伸,适配屏幕宽度。
运行效果
界面呈现标准的表格形式,行列清晰,列宽自适应,适合展示结构化的控件组合。
3.4 帧布局(FrameLayout)- neonlamp 霓虹灯项目
核心概念
帧布局是最简单的布局,无复杂的排列规则,所有控件默认堆叠在布局的左上角,后添加的控件会覆盖先添加的控件,核心特性是控件叠层,适合实现叠层效果(如霓虹灯、图片加水印、控件遮罩)。
核心 XML 属性
| 属性名 | 作用 |
|---|---|
| android:layout_gravity | 设置控件在帧布局中的对齐方式(突破左上角默认位置,核心属性) |
| android:foreground | 设置帧布局的前景图,始终显示在所有控件最上层 |
| android:foregroundGravity | 前景图的对齐方式 |
项目应用
neonlamp 霓虹灯项目是帧布局的经典实战,以 FrameLayout 为根布局,嵌套多个内容相同的 TextView(叠层摆放),通过 Android 动画为每个 TextView 设置不同的颜色渐变和闪烁效果,实现霓虹灯的视觉效果。
运行效果
多个文字控件叠层显示,配合动画实现交替变色的霓虹灯效果,完美体现帧布局的「叠层」特性。
四、四种布局的选型原则与对比
实际开发中,布局的选择直接影响界面性能和开发效率,核心原则是减少布局嵌套、适配不同屏幕,以下为四种布局的适用场景和核心优缺点对比,方便选型:
表格
| 布局类型 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| 线性布局 | 简单的单向排列界面(如导航栏、列表项) | 开发简单、逻辑清晰 | 多方向排列需嵌套,性能低 |
| 相对布局 | 复杂的灵活定位界面(如首页、详情页) | 布局灵活、无多余嵌套 | 需关注控件 id,定位逻辑稍复杂 |
| 表格布局 | 结构化的行列界面(如表单、数据表格、登录页) | 行列清晰、适配简单 | 不适合非结构化布局 |
| 帧布局 | 叠层效果界面(如霓虹灯、图片加水印、遮罩) | 实现简单、叠层效果友好 | 仅支持简单的叠层排列 |
五、总结
本文通过跑通 Chapter02 的 4 个实战项目,详细解析了 Android 最常用的线性布局、相对布局、表格布局、帧布局,核心要点如下:
- 四种布局各有特性,线性布局是基础,相对布局最灵活,表格布局适合结构化界面,帧布局适合叠层效果;
- 实际开发中需根据界面需求选择布局,核心原则是减少嵌套,提升界面渲染性能;
- 本次 4 个项目均基于 Android Support 库开发,代码简洁,是入门 Android 布局的最佳实战案例,跑通项目后能快速理解布局的核心用法。
本文所有代码均可直接运行,若遇到问题可在掘金文章评论区留言,或检查 Android Studio 的 SDK 和 Gradle 配置。