Android 资源类型与常用布局

Android 主要的资源类型及存放目录

资源类型 目录 说明
布局 (Layout) res/layout/ XML 文件,定义界面 UI 结构。
字符串 (String) res/values/strings.xml 存放文本字符串,支持国际化。
图片 (Drawable) res/drawable/ 存放位图 (PNG/JPG) 或 XML 定义的图形 (Shape, Selector)。
颜色 (Color) res/values/colors.xml 定义颜色值。
尺寸 (Dimension) res/values/dimens.xml 定义尺寸大小 (dp/sp)。
样式 / 主题 (Style/Theme) res/values/styles.xml 定义 UI 外观风格和应用主题。
菜单 (Menu) res/menu/ 定义选项菜单或上下文菜单。
动画 (Anim) res/anim/ 定义补间动画 (Tween Animation)。
原生资源 (Raw) res/raw/ 存放任意原始文件 (如音频、视频),通过 R.raw.filename 访问。
资产 (Assets) assets/ 存放任意文件结构,通过 AssetManager 访问,不生成资源 ID。

布局资源 (Layout) 的四种常用类型

1. LinearLayout (线性布局)

核心特性 :子元素按垂直 (vertical) 或水平 (horizontal) 方向依次排列。

常用属性

go 复制代码
  `android:orientation`: 排列方向 (`horizontal` / `vertical`)。
  `android:layout_weight`: 权重,按比例分配剩余空间(需配合 `layout_width="0dp"` 或 `layout_height="0dp"` 使用)。

适用场景:简单的横向或纵向列表、表单输入框、底部导航栏。

2. RelativeLayout (相对布局)

核心特性:子元素通过相对于父容器或其他兄弟元素的位置来确定自己的位置。

常用属性

go 复制代码
  相对于父容器:`layout_alignParentTop`, `layout_centerInParent`。
  相对于兄弟元素:`layout_toRightOf`, `layout_below`, `layout_alignBaseline`。

适用场景:复杂的层叠关系 UI(如头像在左,文字在右,按钮在最右)。

注意:在复杂层级中性能略低于 ConstraintLayout,Google 推荐优先使用 ConstraintLayout。

3. FrameLayout (帧布局)

核心特性:最简单的布局,所有子元素默认堆叠在屏幕左上角(层叠效果)。

常用属性

go 复制代码
  `android:layout_gravity`: 控制子元素在父容器中的重心位置。

适用场景

复制代码
  Fragment 的容器。
  展示单一张图片。
  视图叠加效果(如视频播放器上的悬浮控制条)。

4. ConstraintLayout (约束布局)

核心特性:目前 Android Studio 的默认布局,功能最强大。它通过 "约束"(Constraint)来定义子元素的位置,旨在减少布局的嵌套层级(扁平化),提升渲染性能。

常用概念

go 复制代码
  相对定位:类似于 RelativeLayout,但更灵活。例如 `app:layout_constraintTop_toBottomOf="@id/viewA"`。
  居中与偏移:通过 `bias` 控制在两个约束之间的偏移比例。
  链条 (Chains) :将多个视图互相关联形成链,实现类似 LinearLayout 的权重分布 (`layout_constraintHorizontal_weight`)。
  Guideline:辅助线,用于定位而不显示在界面上。

适用场景 :几乎所有复杂界面都推荐使用,能有效避免 RelativeLayout 的性能问题和 LinearLayout 的深层嵌套。

相关推荐
Listen·Rain36 分钟前
Vue3:setup详解
前端·javascript·vue.js
Patrick_Wilson1 小时前
修好 bug 只是开始:一次由监控需求反向重构日志结构的复盘
前端·监控·数据可视化
kyriewen2 小时前
面试官让我优化一个卡死的表格,我打开 Claude 五秒重写,他放下咖啡问我要不要来当组长
前端·javascript·面试
小粉粉hhh2 小时前
React(二)——dom、组件间通信、useEffect
前端·javascript·react.js
Csvn2 小时前
🤖 AI 生成前端代码的 5 个典型翻车现场及修复指南
前端
IT_陈寒3 小时前
SpringBoot自动装配坑了我一天,原来问题出在这
前端·人工智能·后端
索西引擎4 小时前
【React】key 属性:协调算法中的元素标识机制与最佳实践
前端·javascript·react.js
只会cv的前端攻城狮5 小时前
动态组件架构设计:从配置到事件驱动全链路解析
前端·vue.js
飞天狗5 小时前
Next.js 16 App Router 实战:服务端组件与流式渲染
前端·next.js
OpenTiny社区5 小时前
TinyEngine 2.11版本发布:AI 进一步融入画布,Vue 工程可一键转DSL
前端·vue.js·github