Android 资源类型完整列举 + 四大常用布局详细介绍
一、Android 常见资源类型(完整清单)
Android 资源统一放在 res/ 目录下,按用途分为以下几大类:
1. anim:补间动画资源(透明度、缩放、平移、旋转) 2. animator:属性动画资源(更强大的动画,基于对象属性) 3. color:颜色状态列表资源(如按钮按下、选中变色) 4. drawable:图片与图形资源
- 位图:png、jpg、webp、gif
- 矢量图:vector
- 形状:shape
- 状态选择器:selector
- 图层:layer-list 5. layout:布局资源文件(核心,下文重点讲) 6. menu:菜单资源(选项菜单、上下文菜单、底部菜单) 7. mipmap:应用启动图标(不同密度适配) 8. raw:原始文件资源(音频、视频、任意二进制文件,不编译) 9. values:值资源
- strings:字符串
- colors:颜色值
- dimens:尺寸
- styles:样式与主题
- arrays:数组
- integers:整数
- bools:布尔值 10. xml:任意自定义 XML 配置文件 11. font:字体资源(ttf、otf) 12. raw、assets:原生文件(assets 不按分辨率区分)
二、布局资源(layout)四种最常用类型详解
布局资源用于控制界面控件的排列方式,文件后缀为 .xml ,存放于 res/layout/ 。
- LinearLayout(线性布局)
核心特点:控件按水平或垂直一条线排列,最基础、最常用。
- 关键属性
- android:orientation
- vertical :垂直排列(从上到下)
- horizontal :水平排列(从左到右)
- android:layout_weight :权重,按比例分配剩余空间
- android:gravity :内部控件对齐方式
- android:layout_gravity :自身在父布局中的对齐
- 适用场景
- 简单单列/单行排列
- 表单、列表项、登录界面等规整线性结构
- 优点:简单、轻量、性能好
- 缺点:复杂界面嵌套过多会导致层级过深
- RelativeLayout(相对布局)
核心特点:控件相对于父布局或其他控件定位,灵活度极高。
- 关键属性
- 相对于父布局
- layout_centerInParent
- layout_alignParentTop/Bottom/Left/Right
- 相对于其他控件
- layout_toLeftOf / layout_toRightOf
- layout_above / layout_below
- layout_alignTop/alignBottom 对齐另一控件边缘
- 适用场景
- 控件位置不规则、需要互相依赖对齐
- 减少布局嵌套层级
- 优点:灵活,可大幅减少嵌套
- 缺点:复杂关系会增加测量计算成本,性能略低
- ConstraintLayout(约束布局 · 推荐首选)
核心特点:通过约束线定位控件,功能最强、层级最少、性能最优,Google 官方推荐。
- 关键概念
- 每个控件至少需要水平 + 垂直各一条约束
- 常见约束:
- layout_constraintLeft_toLeftOf
- layout_constraintEnd_toEndOf
- layout_constraintTop_toTopOf
- layout_constraintBottom_toBottomOf
- layout_constraintGuide_begin 辅助参考线
- bias 比例偏移
- chain 链样式(spread、packed 等)
- 适用场景
- 复杂 UI、多设备适配
- 希望零嵌套 / 少嵌套实现任何界面
- 优点
- 层级扁平,绘制性能高
- 可视化编辑器友好
- 强大的比例、居中和适配能力
- 缺点:简单界面略显繁琐
- FrameLayout(帧布局 / 框架布局)
核心特点:所有控件叠加在一起,默认左上角对齐,后添加的覆盖在先添加的之上。
- 关键属性
- android:layout_gravity :控制控件在帧内的位置
- 常用于配合 ViewPager 、 Fragment
- 适用场景
- 图层叠加(如图片+角标、视频+控制栏)
- Fragment 容器
- 加载动画、弹窗遮罩
- 优点:结构最简单、效率最高
- 缺点:控件重叠,不适合复杂排版
三、四种常用布局快速对比
布局 排列方式 优点 缺点 推荐场景 LinearLayout 线性(横/竖) 简单高效 嵌套易层级深 简单规整界面 RelativeLayout 相对定位 灵活少嵌套 测量略耗时 中等复杂度UI ConstraintLayout 约束定位 功能最强、性能好 简单界面稍复杂 绝大多数现代UI FrameLayout 层叠叠加 最轻量高效 只能重叠 图层、Fragment容器