android资源类型与布局资源详细介绍

11 阅读4分钟

一、Android 资源类型全列举

Android 资源是存放在 res/ 目录下的非代码文件(图片、布局、字符串、样式等),系统会自动生成对应 R 类索引,核心资源类型如下: 表格

资源目录资源类型作用
res/drawable/图片 / 矢量资源存放位图(png/jpg)、矢量图(xml)、形状资源
res/layout/布局资源定义界面结构、控件摆放规则
res/values/值资源字符串(strings.xml)、颜色(colors.xml)、尺寸(dimens.xml)、样式(styles.xml)、数组(arrays.xml)
res/mipmap/启动图标存放不同分辨率的应用启动图标
res/anim/补间动画定义透明度、缩放、平移、旋转动画
res/animator/属性动画高级动画(控制控件属性、时长、插值器)
res/menu/菜单资源定义选项菜单、上下文菜单、底部导航菜单
res/raw/原生资源存放音频、视频、文本等直接读取的文件
res/xml/自定义 XML配置文件、数据解析文件
res/font/字体资源自定义 TTF/OTF 字体文件

二、布局资源 4 种常用类型(详细介绍)

布局资源(res/layout/*.xml)是 Android 最核心的资源,用于定义界面中控件的位置、大小、层级关系,以下是开发中最常用的 4 种布局:

1. LinearLayout(线性布局)

核心特点

  • 最基础、最常用的布局,按水平 / 垂直方向依次排列子控件
  • 子控件会按顺序排队,不会重叠
  • 通过 orientation 属性控制排列方向

关键属性

  1. android:orientation

    • vertical:垂直排列(从上到下)
    • horizontal:水平排列(从左到右)
  2. android:layout_weight:权重,按比例分配剩余空间(实现自适应尺寸)

  3. android:gravity:子控件在布局内的对齐方式(居中、居左、居右等)

适用场景

  • 简单的线性界面(登录表单、列表项、按钮横排)
  • 需要按比例分配控件大小的场景

示例代码

image.png

2. RelativeLayout(相对布局)

核心特点

  • 以子控件之间的相对位置 / 与父布局的相对位置定位
  • 自由度极高,可实现复杂界面,减少布局嵌套
  • 无需依赖排列方向,通过属性精准控制位置

关键属性

  1. 相对于父布局:

    • android:layout_centerInParent:居中
    • android:layout_alignParentTop:顶部对齐
    • android:layout_alignParentRight:右侧对齐
  2. 相对于其他控件:

    • android:layout_below:在某控件下方
    • android:layout_toRightOf:在某控件右侧
    • android:layout_alignTop:与某控件顶部对齐

适用场景

  • 控件位置不规则的界面(个人中心、详情页、复杂表单)
  • 需要减少嵌套、优化性能的场景

示例代码

image.png

3. TableLayout(表格布局)

核心特点采用行和列的表格形式排列控件,结构整齐规范继承自线性布局,默认垂直方向排列每一行使用 TableRow 包裹,内部控件自动成为一列列宽自动适配,整体对齐效果统一

关键属性android:stretchColumns:设置可拉伸的列,自动填满布局宽度android:shrinkColumns:设置可收缩的列,内容过长时自动压缩android:collapseColumns:隐藏指定列TableRow 内部控件无需设置宽高,自动按列排列

适用场景登录、注册类表单页面整齐对齐的信息展示页(个人资料、设置项)需要严格行列对齐的界面

示例代码

image.png

4. FrameLayout(帧布局)

核心特点

  • 最简单的布局,所有子控件默认叠加在左上角
  • 后添加的控件会覆盖在先添加的控件之上
  • 无复杂定位属性,轻量、渲染速度极快

关键属性

  • android:layout_gravity:控制子控件在布局内的对齐(居中、居右等)
  • 无方向、无权重、无相对定位属性

适用场景

  • 图层叠加(Fragment 容器、图片 + 文字遮罩、加载动画)
  • 单一控件展示(头像、图标、卡片背景)
  • 作为容器占位

示例代码

image.png

三、四种布局对比总结

表格

布局定位方式优点缺点推荐场景
LinearLayout线性排列简单易用、支持权重复杂界面嵌套多、性能差简单线性界面
RelativeLayout相对位置自由度高、减少嵌套复杂约束易混乱、性能一般中等复杂度界面
TableLayout表格行列自动对齐、适合表单不够灵活、仅支持表格结构表单、信息展示页
FrameLayout图层叠加最轻量、渲染最快仅支持叠加 / 简单对齐图层覆盖、容器占位