一、Android资源类型列举
| 资源目录 | 存放内容 |
|---|---|
res/anim/ |
补间动画(XML),如平移、缩放、旋转、透明度 |
res/animator/ |
属性动画(XML) |
res/color/ |
颜色状态选择器(如按钮不同状态的颜色) |
res/drawable/ |
图片、形状、图层、状态列表等可绘制资源 |
res/layout/ |
布局资源,定义界面结构 |
res/menu/ |
菜单资源(选项菜单、上下文菜单等) |
res/mipmap/ |
应用图标,不同分辨率存放不同文件夹(mipmap-hdpi等) |
res/raw/ |
原始文件(如音频、视频),通过R.raw.filename访问 |
res/values/ |
简单值:strings.xml、colors.xml、dimens.xml、styles.xml、arrays.xml等 |
res/xml/ |
任意自定义XML文件,通过@xml/filename或Resources.getXML()获取 |
res/font/ |
字体文件(.ttf、.otf),支持可下载字体 |
二、布局资源四种常用类型
布局资源位于 res/layout/ 下,用于定义Activity、Fragment、列表项等UI结构。四种最常用的布局类型如下:
1. LinearLayout(线性布局)
按水平或垂直方向依次排列子视图。
-
特点
- 通过
android:orientation指定horizontal或vertical - 支持
layout_weight按比例分配剩余空间 - 嵌套过多会影响性能(可用
ConstraintLayout优化)
- 通过
-
适用场景
简单排列的表单、工具栏、纵向列表结构
xml
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView ... />
<Button ... />
</LinearLayout>
2. RelativeLayout(相对布局)
子视图通过与其他视图或父容器的相对位置进行定位。
-
特点
- 属性如
layout_toLeftOf、layout_below、layout_alignParentTop等 - 减少布局嵌套,但约束表达不如
ConstraintLayout直观
- 属性如
-
适用场景
避免多层嵌套,实现简单相对位置布局
xml
<RelativeLayout ...>
<TextView
android:id="@+id/title"
... />
<Button
android:layout_below="@id/title"
android:layout_alignParentRight="true"
... />
</RelativeLayout>
3. ConstraintLayout(约束布局)
通过约束关系定义视图位置,是 Android 官方推荐的灵活布局方式。
-
特点
- 几乎可以完全扁平化布局,避免嵌套
- 支持
alayout_constraint*系列属性,配合Guideline、Barrier等辅助组件 - 与布局编辑器配合良好,可拖拽生成约束
-
适用场景
几乎所有复杂界面,尤其适合减少布局层级、提高性能
xml
<androidx.constraintlayout.widget.ConstraintLayout ...>
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
alayout_constraintLeft_toLeftOf="parent"
alayout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
4. FrameLayout(帧布局)
所有子视图默认堆叠 在左上角,可通过 layout_gravity 控制位置。
-
特点
- 结构最简单,通常只放一个子视图
- 常用于 Fragment 容器 或叠加效果(如进度条浮于内容之上)
-
适用场景
Fragment 占位、单视图显示、浮层效果
xml
<FrameLayout ...>
<ImageView ... />
<ProgressBar
android:layout_gravity="center" ... />
</FrameLayout>
三、总结
| 布局类型 | 核心特点 | 常见场景 |
|---|---|---|
| LinearLayout | 线性排列、权重分配 | 简单列表、表单 |
| RelativeLayout | 相对定位 | 避免多层嵌套的简单界面 |
| ConstraintLayout | 灵活约束、扁平化 | 复杂界面,推荐首选 |
| FrameLayout | 堆叠、简单容器 | Fragment容器、浮层 |
在 Android 开发中,ConstraintLayout 已成为主流选择,配合布局编辑器能大幅提升效率和布局性能。