Android资源类型列举及四种常用的布局资源详细介绍

一、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.xmlcolors.xmldimens.xmlstyles.xmlarrays.xml
res/xml/ 任意自定义XML文件,通过@xml/filenameResources.getXML()获取
res/font/ 字体文件(.ttf.otf),支持可下载字体

二、布局资源四种常用类型

布局资源位于 res/layout/ 下,用于定义Activity、Fragment、列表项等UI结构。四种最常用的布局类型如下:

1. LinearLayout(线性布局)

按水平或垂直方向依次排列子视图。

  • 特点

    • 通过 android:orientation 指定 horizontalvertical
    • 支持 layout_weight 按比例分配剩余空间
    • 嵌套过多会影响性能(可用ConstraintLayout优化)
  • 适用场景

    简单排列的表单、工具栏、纵向列表结构

xml 复制代码
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">
    <TextView ... />
    <Button ... />
</LinearLayout>

2. RelativeLayout(相对布局)

子视图通过与其他视图或父容器的相对位置进行定位。

  • 特点

    • 属性如 layout_toLeftOflayout_belowlayout_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* 系列属性,配合 GuidelineBarrier 等辅助组件
    • 与布局编辑器配合良好,可拖拽生成约束
  • 适用场景

    几乎所有复杂界面,尤其适合减少布局层级、提高性能

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 已成为主流选择,配合布局编辑器能大幅提升效率和布局性能。

相关推荐
lee_curry2 小时前
AI Agent 工程师完整学习路线(面向生产级项目与面试)
人工智能·学习·ai·面试·agent
江湖十年2 小时前
在 Go 中使用 dyno 包处理动态对象
后端·面试·go
数智启示录3 小时前
PostgreSQL 内存调优实战(第 12 篇):work_mem 只调大 64 倍,峰值为什么远不止 64 倍
运维·数据库·经验分享·postgresql·面试
刀法如飞6 小时前
《理解道德经》简版第5章:天地不仁,以万物为刍狗
面试·机器人
wuyk5556 小时前
107.FreeRTOS 链表深度解析:从原理到面试满分答案
c语言·开发语言·数据结构·stm32·单片机·链表·面试
数智启示录9 小时前
PostgreSQL 执行计划实战(第 9 篇):SQL 和索引没变,计划为什么突然慢一百倍
数据库·经验分享·sql·postgresql·面试
数智启示录10 小时前
Apache Kafka Consumer 扩到 40 个仍不提速:Partition 上限锁死有效并行度 【Kafka合集】
数据库·经验分享·分布式·缓存·面试·kafka·apache
数智启示录10 小时前
Apache Kafka 幂等 Producer 的边界:Exactly-Once 到了 MySQL 为什么失效 【Kafka合集】
数据库·经验分享·分布式·mysql·面试·kafka·apache
CoderYanger10 小时前
A.每日一题:3622. 判断整除性
java·程序人生·算法·leetcode·面试·职场和发展·蓝桥杯
数智启示录10 小时前
Apache Kafka 不只是消息队列:日志与 Offset 分离如何让事件可重放 【Kafka合集】
经验分享·分布式·面试·kafka·apache