把android资源类型详解

一、Android 主要资源类型

类型 目录
动画 anim/
属性动画 animator/
颜色 color/values/colors.xml
图片/形状 drawable/
布局 layout/
菜单 menu/
字符串 values/strings.xml
样式/主题 values/styles.xml
尺寸 values/dimens.xml
数组 values/arrays.xml
字体 font/
原始文件 raw/
任意XML xml/

二、四种常用布局资源

布局 特点 适用场景
LinearLayout 水平/垂直线性排列 简单列表、表单
RelativeLayout 相对定位(相对于父容器或其他控件) 中等复杂度的相对布局
FrameLayout 堆叠,默认左上角 Fragment容器、叠加效果
ConstraintLayout 约束定位,扁平化,性能好 复杂布局,替代多层嵌套

1、LinearLayout(线性布局)

核心特点

  • 子视图按水平垂直方向线性排列
  • 支持权重(weight) 分配剩余空间

关键属性

属性 说明
orientation horizontal(水平)/ vertical(垂直)
layout_weight 权重值,按比例分配剩余空间
gravity 子视图在布局中的对齐方式
layout_gravity 自身在父布局中的对齐方式

示例

xml

ini 复制代码
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="标题" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:text="按钮" />

</LinearLayout>

适用场景 :简单列表、表单页面
注意事项:嵌套过深会影响性能,建议控制层级


2. RelativeLayout(相对布局)

核心特点:通过相对关系定位(相对于父容器或其他控件),布局扁平。

关键属性

  • 相对于父容器layout_alignParentToplayout_centerInParent
  • 相对于其他控件layout_abovelayout_belowlayout_toLeftOf
  • 对齐属性layout_alignToplayout_alignBottom

示例代码

xml

ini 复制代码
<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:text="标题" />

    <Button
        android:id="@+id/btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/title"
        android:layout_centerHorizontal="true"
        android:text="确定" />

</RelativeLayout>

适用场景 :中等复杂度的相对定位布局
注意事项 :需要为参照控件设置 id


3、FrameLayout(帧布局)

核心特点

  • 子视图默认堆叠在左上角
  • 后添加的覆盖先添加的
  • 结构简单,通常只放一个子视图

关键属性

属性 说明
foreground 前景图片,始终在最上层
foregroundGravity 前景图片对齐方式
layout_gravity 子视图在容器中的位置

示例

xml

ini 复制代码
<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:src="@drawable/bg" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="加载中" />

</FrameLayout>

适用场景

  • Fragment 容器
  • 叠加层(进度条、遮罩)
  • 单个子视图的简单布局

4、ConstraintLayout(约束布局)

核心特点

  • 通过约束定义位置关系
  • 扁平化设计,避免多层嵌套
  • Google 官方推荐的主流布局

关键属性

属性 说明
layout_constraintLeft_toLeftOf 左边与目标左边对齐
layout_constraintLeft_toRightOf 左边位于目标右边
layout_constraintTop_toBottomOf 顶部位于目标底部
layout_constraintBottom_toTopOf 底部位于目标顶部
layout_constraintStart_toEndOf 推荐使用,支持 RTL
layout_constraintHorizontal_bias 水平偏向(0~1)
layout_constraintWidth_percent 宽度百分比

示例

xml

ini 复制代码
<androidx.constraintlayout.widget.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/title"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:text="标题"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/content"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toBottomOf="@id/title"
        app:layout_constraintBottom_toBottomOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

适用场景 :复杂布局、替代多层嵌套
注意事项 :需要添加依赖 androidx.constraintlayout:constraintlayout

相关推荐
努力努力再努力wz24 分钟前
【MySQL入门系列】掌握表数据的 CRUD:DML 核心语法与执行逻辑解析
android·开发语言·数据结构·数据库·c++·b树·mysql
zh_xuan3 小时前
Android gradle任务
android·gradle构建
Grackers3 小时前
Android Perfetto 系列 10:Binder 调度与锁竞争
android·binder
李白你好3 小时前
Android 自动化渗透测试指令生成
android·自动化
CeshirenTester4 小时前
Claude Code 不只是会写代码:这 10 个 Skills,才是效率分水岭
android·开发语言·kotlin
朝星6 小时前
Android开发[2]:Flow
android·kotlin
zzb15806 小时前
Android Activity 与 Intent 学习笔记
android·笔记·学习
studyForMokey6 小时前
【Android面试】动画 & Bitmap
android·面试·职场和发展
黑牛儿7 小时前
面试高频问题:从浏览器请求到PHP响应:完整流程拆解
android·后端·面试·php
y小花8 小时前
安卓USB服务概述
android·usb