Andorid Compose 笔记一(初识)

61 阅读3分钟

Android Compose 是 Google 推出的用于构建 Android 原生 UI 的现代声明式 UI 工具包,于 2021 年正式发布。它旨在彻底改变 Android 界面开发方式,替代传统的 XML 布局 + View 系统 模式。


核心特点与理念

  1. 声明式 UI
    • 传统方式(命令式):你需要手动更新 UI(例如 findViewById 然后 setText),明确告诉系统“如何做”。
    • Compose 方式(声明式):你只需描述 UI 应该是什么样子(根据当前状态),当状态变化时,框架会自动、高效地更新 UI。你只需关心“是什么”。

image.png

  1. 用 Kotlin 编写

    • 完全用 Kotlin 代码定义 UI,无需 XML。这带来了 Kotlin 的语言特性优势(如类型安全、空安全、更简洁的语法)。
    • 利用 Kotlin 的高阶函数和 Lambda 表达式,使 UI 代码更紧凑、可读。
  2. 函数即组件

    • UI 由一系列可组合函数 构成。这些是带有 @Composable 注解的普通 Kotlin 函数。
    • 每个函数负责绘制 UI 的一部分,它们可以嵌套和复用,构建出复杂的界面。
    • 例如:
      @Composable
      fun Greeting(name: String) {
          Text(text = "Hello, $name!")
      }
      
  3. 状态驱动

    • UI 是应用程序状态的函数:UI = f(State)
    • 当与 UI 相关的状态发生变化时,受影响的 Composable 函数会被自动重新执行(称为 重组),从而反映出最新的状态。
    • 状态管理(如使用 mutableStateOf, ViewModel)是 Compose 的核心。
  4. 智能重组

    • Compose 框架非常智能,在重组时只会更新状态发生变化的特定部分 UI,而不是整个屏幕,这带来了高性能。

与传统 View 系统的对比

特性传统 View 系统 (XML + View)Jetpack Compose
范式命令式。手动操作 View 对象树。声明式。描述 UI 基于状态。
语言XML (布局) + Kotlin/Java (逻辑)纯 Kotlin
组件模型基于类的继承(如 TextView, Button)。基于函数的组合。
状态管理手动同步状态与 UI,容易出错。内建响应式状态管理,自动同步。
预览与实时编辑有预览,但功能有限。强大的交互式预览,可实时看到代码更改效果。
API 设计历史悠久,API 复杂且不一致。现代、简洁、一致。
学习曲线需要学习 View 生命周期、测量布局等复杂概念。概念更简单,但需要转变思维(声明式)。

主要优势

  • 代码更少、更直观:用更少的代码实现相同的 UI,逻辑和 UI 紧密结合,更易维护。
  • 提升开发效率:强大的实时预览和热重载功能,极大地缩短了设计-实现-调试的循环。
  • 更少的错误:状态与 UI 自动绑定,避免了视图状态不一致的常见错误。
  • 高性能:智能重组机制确保了高效的 UI 更新。
  • 无缝兼容:可以与现有的基于 View 的应用程序共存,你可以逐步采用。

核心组件

  • Material Design 3 组件:Compose 提供了全面的 Material Design 3 实现(如 Button, Card, TopAppBar)。
  • 布局Column, Row, Box, ConstraintLayout 等,用于排列 UI 元素。
  • 状态 APImutableStateOf, remember, ViewModel
  • 主题与样式:强大的主题系统,轻松实现深色/浅色模式。
  • 动画 API:声明式且简单的动画 API。
  • 与架构组件集成:完美配合 ViewModel, LiveData, Flow, Navigation 等 Jetpack 组件。

适用场景

  • 全新 Android 项目:强烈推荐使用 Compose 作为默认的 UI 框架。
  • 现有项目现代化:可以逐步将新功能或重构的屏幕用 Compose 实现。
  • 需要快速迭代的 UI:其高效的开发体验非常适合 UI 频繁变化的产品。

官方文档developer.android.com/jetpack/com…