Android 资源类型全梳理 + 四大常用布局详解

13 阅读4分钟

在 Android 开发中,资源(Resources)是支撑 App 界面、样式、文本、图片等内容的核心组成部分,合理使用资源不仅能让代码结构更清晰,还能方便实现多语言、多屏幕适配。Android 对资源进行了严格的类型划分,每种资源都存放于 res/ 目录下对应的子文件夹中。

一、Android 全部资源类型完整列举

Android 资源按用途可分为界面布局、界面组件、文本、图片、样式、数据、动画、音频等大类,所有标准资源及对应目录如下:

  1. **布局资源(layout)**存放 XML 格式的界面布局文件,定义 App 页面的控件排列结构,对应目录 res/layout/,是开发中最常用的资源类型。

  2. 图片与绘图资源(drawable/mipmap)

    • res/drawable/:存放矢量图、形状 XML、.png/.jpg/.webp 等位图,也可存放状态选择器;
    • res/mipmap/:专门存放应用启动图标,系统会根据不同屏幕密度自动适配。
  3. **文本资源(values)**存放字符串、尺寸、颜色、数组、样式等常量配置,目录 res/values/,包含:

    • strings.xml:文本字符串,支持多语言适配;
    • dimens.xml:尺寸大小(dp/sp/px);
    • colors.xml:颜色值;
    • arrays.xml:数组资源;
    • styles.xml:样式与主题。
  4. 动画资源(anim/animator)

    • res/anim/:补间动画(平移、缩放、旋转、透明度);
    • res/animator/:属性动画,支持对控件任意属性做动画。
  5. **菜单资源(menu)**存放选项菜单、上下文菜单的 XML 布局,对应目录 res/menu/,定义菜单项文本、图标、点击事件。

  6. **布局碎片资源(xml)**存放通用 XML 配置文件,如偏好设置界面、应用搜索配置,目录 res/xml/

  7. **原始资源(raw)**存放音频、视频、文本文件等无需系统编译的原始文件,目录 res/raw/,可通过资源 ID 直接访问。

  8. **资产资源(assets)**不属于标准 res 资源,但属于 App 资源,可存放任意格式文件(如字体、网页、数据库),需通过文件流读取。

  9. **字体资源(font)**存放自定义字体文件(.ttf/.otf),目录 res/font/,直接在布局中引用替换系统字体。

  10. **颜色状态资源(color)**存放控件状态对应的颜色(如按钮按下、选中、禁用),目录 res/color/

二、布局资源四大常用类型详细介绍

布局资源是 Android 界面的核心,负责管理控件的位置、大小、层级关系。Android 提供多种布局容器,其中LinearLayout、RelativeLayout、FrameLayout、ConstraintLayout是开发中最常用的四种,下面逐一详解。

1. 线性布局 LinearLayout

LinearLayout 是最基础、最常用的布局,特点是所有子控件按单一方向线性排列,分为水平和垂直两种方向。

核心属性

  • android:orientation:排列方向,vertical(垂直)、horizontal(水平);
  • android:layout_weight:权重属性,按比例分配剩余空间,实现自适应布局;
  • android:gravity:子控件在布局内的对齐方式(居中、居左、居右等);
  • android:layout_gravity:当前控件在父布局中的对齐方式。

适用场景

简单的线性排列界面,如登录页面的输入框垂直排列、底部导航栏水平排列、列表项单行布局。

2. 相对布局 RelativeLayout

RelativeLayout 以控件之间的相对位置相对于父容器的位置进行排列,无需嵌套即可实现复杂布局。

核心属性

  • 相对于父容器:layout_centerInParent(居中)、layout_alignParentTop(顶部对齐)、layout_alignParentEnd(右侧对齐);
  • 相对于其他控件:layout_toLeftOf(在某控件左侧)、layout_below(在某控件下方)、layout_alignTop(与某控件顶部对齐)。

适用场景

控件位置关联紧密的界面,如头像旁显示用户名、按钮固定在右下角、标签紧贴文本右侧。

3. 帧布局 FrameLayout

FrameLayout 是最简单的布局,所有子控件默认叠加在布局左上角,后添加的控件会覆盖在先添加的控件之上。

核心属性

  • 仅支持简单的对齐属性:layout_gravity(控制控件在布局内的位置);
  • 无复杂排列规则,层级由控件添加顺序决定。

适用场景

图层叠加、碎片(Fragment)容器、加载动画覆盖层、卡片圆角背景叠加、视频播放界面。

4. 约束布局 ConstraintLayout

ConstraintLayout 是 Android 官方推荐的高级布局,可实现扁平化嵌套,通过约束关系定位控件,性能远优于多层嵌套的 RelativeLayout。

核心约束属性

  • 相对约束:layout_constraintLeft_toLeftOflayout_constraintTop_toBottomOf
  • 居中约束:layout_constraintStart_toStartOf + layout_constraintEnd_toEndOf 实现水平居中;
  • 比例约束:layout_constraintDimensionRatio 按宽高比固定控件大小;
  • 链约束:多个控件形成链式排列,均匀分配空间。

适用场景

复杂 UI 界面、需要减少布局嵌套提升性能、响应式适配不同屏幕尺寸的页面。

三、总结

Android 资源覆盖界面、文本、动画、媒体等全场景,而布局资源是构建 UI 的基础。LinearLayout 适合线性排列,RelativeLayout 适合相对定位,FrameLayout 适合图层叠加,ConstraintLayout 适合复杂扁平化布局。实际开发中,可根据页面复杂度组合使用,既保证布局合理性,又能提升界面渲染性能。