把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

相关推荐
兄弟加油,别颓废了。13 分钟前
ctf.show_web4
android
哔哔龙2 小时前
Android OpenCV 实战:图片轮廓提取与重叠轮廓合并处理
android·算法
tangweiguo030519873 小时前
Android SSE 流式接收:从手写到框架的进阶之路
android
大尚来也3 小时前
PHP 反序列化漏洞深度解析:从原理利用到 allowed_classes 防御实战
android·开发语言·php
sp42a4 小时前
通过 RootEncoder 进行安卓直播 RTSP 推流
android·推流·rtsp
SY.ZHOU4 小时前
移动端架构体系(一):组件化
android·ios·架构·系统架构
恋猫de小郭6 小时前
Android 17 新适配要求,各大权限进一步收紧,适配难度提升
android·前端·flutter
流星白龙6 小时前
【MySQL】9.MySQL内置函数
android·数据库·mysql
进击的cc6 小时前
Android Kotlin:扩展函数如何优雅封装Android API
android·kotlin
进击的cc6 小时前
Android Kotlin:空安全机制在Android中的实战应用
android·kotlin