Android 四种常用布局详解|跑通 Chapter02 四项目 + 实战演示

0 阅读7分钟

前言

本文将从Android Studio 跑通 Chapter02 的 4 个实战项目(线性布局、相对布局、表格布局、帧布局(霓虹灯))、四种布局资源深度解析两个核心维度展开,每个项目均附带完整运行步骤和截图,所有代码基于 Android Support 库开发,适配主流 Android Studio 版本。

目录

  1. 4 个项目源码说明
  2. 逐一跑通 4 个 Android 项目(含截图)
  3. Android 四种常用布局深度解析(结合项目实战)
  4. 四种布局的选型原则与对比
  5. 总结

一、 4 个项目源码说明

4 个项目源码结构说明

Chapter02 包含 4 个独立 Android 项目,对应 Android 四种常用布局,所有项目的包名、核心文件完全独立,源码核心文件如下(每个项目均包含 3 个核心 Java 文件,布局文件为res/layout/activity_main.xml):

项目名称包名核心 Java 文件对应布局类型
linearlayoutcn.edu.linearlayoutExampleInstrumentedTest、ExampleUnitTest、MainActivity线性布局
relativelayoutcn.edu.relativelayoutExampleInstrumentedTest、ExampleUnitTest、MainActivity相对布局
tablelayoutcn.edu.tablelayoutExampleInstrumentedTest、ExampleUnitTest、MainActivity表格布局
neonlampcn.edu.neonlampExampleInstrumentedTest、ExampleUnitTest、MainActivity帧布局(霓虹灯效果)

通用代码特点

  • 所有项目的MainActivity均继承AppCompatActivity,在onCreate中加载activity_main.xml布局;
  • 单元测试(ExampleUnitTest)均为默认的加法测试,仪器化测试(ExampleInstrumentedTest)均验证包名正确性,确保项目可正常编译运行;
  • 所有项目均使用 Android Support 库,未使用 AndroidX,无需做迁移适配。

二、逐一跑通 4 个 Android 项目(含截图)

各项目运行与截图

1 线性布局(linearlayout)项目

  • 运行后界面:展示水平排列的控件(如 Button、TextView),体现线性布局的「单向排列」特性;

image.png

2 相对布局(relativelayout)项目

  • 运行后界面:展示基于相对位置排列的控件(如 A 控件在 B 控件下方、C 控件居中),体现相对布局的「相对定位」特性;

image.png

3 表格布局(tablelayout)项目

  • 运行后界面:展示行列形式的控件布局(如表单式的多行多列按钮 / 文本),体现表格布局的「网格排列」特性;

image.png

4 帧布局(neonlamp)霓虹灯项目

  • 运行后界面:展示文字叠层的霓虹灯动画效果(多个 TextView 堆叠,交替变色),体现帧布局的「控件叠层」特性;

image.png

三、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 属性

分为基于父布局定位基于其他控件定位两类,核心属性如下:

  1. 基于父布局:android:layout_centerInParent(居中)、android:layout_alignParentTop(贴父布局顶部)、android:layout_alignParentLeft(贴父布局左侧);
  2. 基于其他控件:android:layout_below="@id/xxx"(在 xxx 控件下方)、android:layout_toRightOf="@id/xxx"(在 xxx 控件右侧)、android:layout_alignTop="@id/xxx"(与 xxx 控件顶部对齐);
  3. 间距设置: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 最常用的线性布局、相对布局、表格布局、帧布局,核心要点如下:

  1. 四种布局各有特性,线性布局是基础,相对布局最灵活,表格布局适合结构化界面,帧布局适合叠层效果;
  2. 实际开发中需根据界面需求选择布局,核心原则是减少嵌套,提升界面渲染性能;
  3. 本次 4 个项目均基于 Android Support 库开发,代码简洁,是入门 Android 布局的最佳实战案例,跑通项目后能快速理解布局的核心用法。

本文所有代码均可直接运行,若遇到问题可在掘金文章评论区留言,或检查 Android Studio 的 SDK 和 Gradle 配置。