资源类型概览
-
定义预先确定的动画。
补间动画保存在res/anim/中,可通过R.anim类访问。
帧动画保存在res/drawable/中,可通过R.drawable类访问。 -
定义根据
View状态而变化的颜色资源。
保存在res/color/中,可通过R.color类访问。 -
使用位图或 XML 定义各种图形。
保存在res/drawable/中,可通过R.drawable类访问。 -
定义应用界面的布局。
保存在res/layout/中,可通过R.layout类访问。 -
定义应用菜单的内容。
保存在res/menu/中,可通过R.menu类访问。 -
定义字符串、字符串数组和复数形式,且包括字符串格式和样式设置。
保存在res/values/中,可通过R.string、R.array和R.plurals类访问。 -
定义界面元素的外观和格式。
保存在res/values/中,可通过R.style类访问。 -
在 XML 中定义字体系列并包含自定义字体。
保存在res/font/中,可通过R.font类访问。 -
将其他原始值定义为静态资源,具体包括:
布局资源
1. LinearLayout:线性布局
LinearLayout 是最直观的布局方式,它将子 View 按照水平(horizontal)或垂直(vertical)方向依次排列,适合结构简单、排列规则的界面。
核心特点:
- 通过
android:orientation指定排列方向。 - 支持
layout_weight权重属性,可让子 View 按比例分配父容器的剩余空间。 - 配合
gravity与layout_gravity控制对齐方式。
常用属性:
-
android:orientation:必选,值为horizontal或vertical。 -
android:layout_width/android:layout_height:常用match_parent或wrap_content。 -
android:gravity:容器内所有子 View 的对齐方式(如center、bottom)。 -
android:layout_gravity:当前子 View 在父容器中的对齐方式。 -
android:layout_weight:分配剩余空间的权重,通常将对应维度设为0dp后生效。 -
适用场景:
-
简单的表单界面、列表项(垂直排列)。
-
工具栏中的按钮组合(水平排列)。
-
需要按比例分配宽高(如两个按钮平分宽度)的界面。
2. RelativeLayout:相对布局
RelativeLayout 允许子 View 相对于父容器或其他兄弟 View 进行定位,通过声明彼此间的空间关系来构建复杂界面,避免了多层嵌套。
核心特点:
- 支持相对于父容器的对齐(如
layout_alignParentTop、layout_centerInParent)。 - 支持相对于其他 View 的定位(如
layout_above、layout_toRightOf、layout_alignBottom)。 - 在 ConstraintLayout 出现之前,是复杂布局的首选方案。
常用属性:
-
相对于父容器:
layout_alignParentTop、layout_alignParentBottom、layout_centerHorizontal等。 -
相对于兄弟 View:
layout_above、layout_below、layout_toLeftOf、layout_toRightOf、layout_alignTop等。 -
适用场景:
-
元素之间需要相互对齐、上下左右关联的界面。
-
需要减少布局嵌套以优化性能的场景(现代开发中推荐用 ConstraintLayout 替代)。
3. ConstraintLayout:约束布局
ConstraintLayout 是 Google 推出的强大布局容器,通过为子 View 添加"约束"来确定其位置和大小,它结合了 RelativeLayout 的灵活性,并支持扁平化布局,大幅减少嵌套层级,是当前 Android 开发的官方推荐。
编程
核心特点:
- 通过
layout_constraint[方向]_to[方向]Of系列属性建立约束。 - 支持 Guideline(参考线)、Barrier(屏障)、Group(组)等辅助组件,轻松实现响应式设计。
- 配合 Android Studio 的可视化编辑器,可快速拖拽构建界面,同时自动生成 XML。
- 支持链(Chains)、偏移(bias)等高级布局特性。
常用属性:
-
app:layout_constraintTop_toTopOf="parent":顶部与父容器顶部对齐。 -
app:layout_constraintLeft_toRightOf="@id/otherView":左侧位于另一个 View 的右侧。 -
app:layout_constraintHorizontal_bias等控制约束偏移。 -
适用场景:
-
几乎所有现代 Android 应用的界面布局,尤其是需要适配多种屏幕尺寸与分辨率时。
-
希望布局层级扁平化、提升渲染性能的复杂界面。
-
使用 Android Studio 可视化设计时,自动生成的默认布局。
4. FrameLayout:帧布局
FrameLayout 是最简单的布局容器,它将子 View 按添加顺序依次堆叠在左上角(默认),后添加的 View 会覆盖前面的。通常用于单子视图场景或作为 Fragment 的容器。
核心特点:
- 结构简单,占用资源少。
- 子 View 可通过
layout_gravity调整位置(如center、bottom)。 - 支持
android:foreground设置前景层,常用于加载遮罩或提示效果。
常用属性:
-
android:foreground:设置前景 drawable。 -
android:foregroundGravity:设置前景的对齐方式。 -
子 View 的
layout_gravity控制其在容器中的位置。 -
适用场景:
-
作为 Fragment 的根布局(如
FragmentContainerView)。 -
实现叠加效果,例如图片上的文字说明、加载提示层。
-
仅需容纳单个子视图的简单场景。