在 Android 开发中,资源(Resources)是支撑 App 界面、样式、文本、图片等内容的核心组成部分,合理使用资源不仅能让代码结构更清晰,还能方便实现多语言、多屏幕适配。Android 对资源进行了严格的类型划分,每种资源都存放于 res/ 目录下对应的子文件夹中。
一、Android 全部资源类型完整列举
Android 资源按用途可分为界面布局、界面组件、文本、图片、样式、数据、动画、音频等大类,所有标准资源及对应目录如下:
-
**布局资源(layout)**存放 XML 格式的界面布局文件,定义 App 页面的控件排列结构,对应目录
res/layout/,是开发中最常用的资源类型。 -
图片与绘图资源(drawable/mipmap)
res/drawable/:存放矢量图、形状 XML、.png/.jpg/.webp 等位图,也可存放状态选择器;res/mipmap/:专门存放应用启动图标,系统会根据不同屏幕密度自动适配。
-
**文本资源(values)**存放字符串、尺寸、颜色、数组、样式等常量配置,目录
res/values/,包含:strings.xml:文本字符串,支持多语言适配;dimens.xml:尺寸大小(dp/sp/px);colors.xml:颜色值;arrays.xml:数组资源;styles.xml:样式与主题。
-
动画资源(anim/animator)
res/anim/:补间动画(平移、缩放、旋转、透明度);res/animator/:属性动画,支持对控件任意属性做动画。
-
**菜单资源(menu)**存放选项菜单、上下文菜单的 XML 布局,对应目录
res/menu/,定义菜单项文本、图标、点击事件。 -
**布局碎片资源(xml)**存放通用 XML 配置文件,如偏好设置界面、应用搜索配置,目录
res/xml/。 -
**原始资源(raw)**存放音频、视频、文本文件等无需系统编译的原始文件,目录
res/raw/,可通过资源 ID 直接访问。 -
**资产资源(assets)**不属于标准 res 资源,但属于 App 资源,可存放任意格式文件(如字体、网页、数据库),需通过文件流读取。
-
**字体资源(font)**存放自定义字体文件(.ttf/.otf),目录
res/font/,直接在布局中引用替换系统字体。 -
**颜色状态资源(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_toLeftOf、layout_constraintTop_toBottomOf; - 居中约束:
layout_constraintStart_toStartOf+layout_constraintEnd_toEndOf实现水平居中; - 比例约束:
layout_constraintDimensionRatio按宽高比固定控件大小; - 链约束:多个控件形成链式排列,均匀分配空间。
适用场景
复杂 UI 界面、需要减少布局嵌套提升性能、响应式适配不同屏幕尺寸的页面。
三、总结
Android 资源覆盖界面、文本、动画、媒体等全场景,而布局资源是构建 UI 的基础。LinearLayout 适合线性排列,RelativeLayout 适合相对定位,FrameLayout 适合图层叠加,ConstraintLayout 适合复杂扁平化布局。实际开发中,可根据页面复杂度组合使用,既保证布局合理性,又能提升界面渲染性能。