Android 完整资源类型以及其中布局资源的四种常用类型

3 阅读5分钟

Android 资源是应用中非代码的静态内容(布局、字符串、图片、颜色等),统一存放在 res/ 目录,编译后生成 R 类供代码引用,是实现多设备适配、国际化、主题化的核心。下面先完整列举所有资源类型,再重点详解布局资源的四种常用类型。

一、Android 完整资源类型(res 目录全分类)

res/ 下按功能分多个子目录,每个目录对应一类资源,以下是全量类型及用途:

表格

目录资源类型核心用途格式 / 说明
anim/补间动画资源定义视图的平移、缩放、旋转、渐变等补间动画XML 文件(如 fade_in.xml
animator/属性动画资源定义对象属性(如 xalpha)变化的属性动画(推荐)XML 文件(如 scale_anim.xml
color/颜色状态列表定义视图不同状态(按下、选中、禁用)的颜色切换XML 文件(如 button_color.xml
drawable/可绘制资源图片、形状、状态选择器、图层、矢量图等视觉资源PNG/JPG/WebP、.9.png、XML(shape/selector
mipmap/启动图标资源存放不同密度的应用启动图标(系统优化图标显示)位图文件(按 mipmap-hdpi/ 等密度区分)
layout/布局资源定义 UI 界面的视图结构与排列规则XML 文件(如 activity_main.xml
menu/菜单资源定义选项菜单、上下文菜单、子菜单的结构XML 文件(如 main_menu.xml
raw/原始资源存放音频、视频、文本等未编译的原始文件任意格式(MP3、MP4、txt 等)
values/值资源集中管理字符串、颜色、尺寸、样式、主题、数组等常量XML 文件(strings.xml/colors.xml/styles.xml 等)
xml/自定义 XML 资源存放应用配置、权限说明、自定义解析的 XML任意业务 XML 文件
font/字体资源引入自定义字体文件(TTF/OTF)字体文件(如 roboto.ttf
raw/assets/资产资源不参与编译、通过 AssetManager 访问的文件(可选)任意格式(大型文件、配置文件)

二、布局资源(layout/)核心:四种常用类型详解

布局资源是 Android UI 的基础,通过 XML 定义视图的排列规则,四种最常用类型为:LinearLayout(线性布局)、RelativeLayout(相对布局)、ConstraintLayout(约束布局)、FrameLayout(帧布局)

1. LinearLayout(线性布局)

核心特性

  • 单一方向(水平 / 垂直) 线性排列子视图,子元素依次排布,不可重叠。
  • 核心属性:android:orientationhorizontal/vertical)、android:layout_weight(权重,按比例分配剩余空间)。
  • 优点:简单直观、嵌套层级少、性能高;缺点:复杂布局需多层嵌套,适配性差。

常用属性

表格

属性说明
android:orientation排列方向:vertical(垂直,默认)、horizontal(水平)
android:layout_weight子视图权重,值越大占比越高(仅在对应方向有剩余空间时生效)
android:gravity子视图在布局内的对齐方式(center/left/right/top/bottom
android:layout_gravity当前子视图在父布局中的对齐方式

2. RelativeLayout(相对布局)

核心特性

  • 子视图相对于父布局或其他子视图定位,无需嵌套即可实现复杂排列。
  • 核心:通过 layout_alignParentXXX(相对于父)、layout_toRightOf/layout_below(相对于兄弟)等属性定位。
  • 优点:灵活性高、减少嵌套;缺点:属性繁多、复杂布局易混乱、性能略低于 LinearLayout(已逐渐被 ConstraintLayout 替代)。

3. ConstraintLayout(约束布局)

核心特性

  • Google 现代开发首选布局,通过双向约束关系定位视图,无需嵌套即可实现任意复杂布局。
  • 核心:每个视图至少需要水平 + 垂直各一条约束,支持相对定位、居中、链(Chain)、引导线(Guideline)、屏障(Barrier)等高级功能。
  • 优点:无嵌套、性能最优、可视化编辑友好、适配性极强;缺点:学习成本略高。

常用属性(以 app: 开头,需引入约束库)

4. FrameLayout(帧布局)

核心特性

  • 所有子视图层叠显示,默认对齐父布局左上角,后添加的视图覆盖先添加的。
  • 核心:无复杂排列规则,仅支持简单对齐与层级叠加,性能极高。
  • 优点:极简、性能最优、适合单视图或层叠场景;缺点:仅支持层叠,无法线性 / 相对排列。

常用属性

  • android:foreground:设置前景图(覆盖在所有子视图之上)。
  • android:foregroundGravity:前景图的对齐方式。
  • android:layout_gravity:子视图在帧布局内的对齐方式(center/bottom 等)。

三、四种布局核心对比(快速选型)

表格

布局排列方式核心优势核心劣势推荐场景
LinearLayout水平 / 垂直线性简单、性能高复杂布局需嵌套简单列表、均分布局
RelativeLayout相对定位灵活、少嵌套属性复杂、性能一般中等复杂度 UI(逐步淘汰)
ConstraintLayout约束关系无嵌套、性能最优、适配强学习成本略高所有场景(首选)
FrameLayout层叠极简、性能最高仅支持层叠单视图、层叠效果、Fragment

四、布局资源开发最佳实践

  1. 优先使用 ConstraintLayout,减少嵌套层级,提升绘制性能。
  2. 简单线性排列用 LinearLayout,配合 layout_weight 实现均分。
  3. 层叠 / 单视图场景用 FrameLayout,避免冗余布局。
  4. 布局文件命名规范:activity_xxx.xmlfragment_xxx.xmlitem_xxx.xml,便于维护。
  5. 多设备适配:用 layout-land/(横屏)、layout-sw600dp/(平板)等限定符区分布局。