Jetpack Compose 入门到实战:核心特性与迁移思路
Jetpack Compose 是 Android 官方提供的声明式 UI 工具包。它把界面、状态和更新逻辑放在同一套 Kotlin API 里,写法比传统 XML + View 更直接,也更适合做渐进式迁移。
我先说结论
Compose 不是'把 View 全部推翻重来',它更像是在现有 Android 体系上补了一层更顺手的 UI 方案。新项目上手快,老项目也能一点点替换,不必一开始就赌上整个工程。
Compose 的几个核心点
代码更少,心智负担也小一些
声明式 UI 的好处很直观:少写一堆样板代码,界面状态怎么变,页面就怎么跟着变。很多以前要手动同步的逻辑,现在可以直接跟着状态走。
API 比较顺手
Compose 基于 Kotlin,不需要再切回 XML 那套写法。Composable 函数本身就是 UI 组织单元,组合起来就能搭页面,读代码时也更像在看业务流程,而不是在 View 树里找关系。
和现有 View 系统能共存
这一点很重要。很多团队不是'要不要用 Compose',而是'现有项目怎么接得住'。Compose 可以和 View 混用,迁移时不用一次性重写,这比纯推倒重来现实得多。
学 Compose,我建议这么走
先把官方示例跑通,再做几个小 Demo。不要一上来就啃源码,先知道 @Composable、状态、重组、布局这些基本概念在干什么,后面看实现才不会散。
我比较认可的顺序是:先写能跑的页面,再去看源码和调试。源码不是不能看,而是最好带着问题看,不然很容易陷进细节里,最后只记住一堆名词。
Compose 的几个基础概念
声明式 UI
Compose 的核心思路可以概括成一句话:UI 是状态的函数。状态变了,界面就重新计算。这个模型比手动改每个控件的属性更干净,尤其适合表单、列表、详情页这类状态变化明显的场景。
Composable 函数
带有 @Composable 注解的函数是 Compose 的基本构建块。页面、组件、局部区域都可以拆成这种函数,组合起来形成完整 UI。
@Composable
fun Greeting(name: String) {
Text(text = "Hello $name!")
}
重组
当状态变化时,Compose 会只更新受影响的部分,而不是把整棵界面树都重建一遍。这个机制是它性能和开发体验的关键,也是很多人第一次接触时最容易误解的地方。
组合优于继承
Compose 更鼓励用小组件拼出复杂界面,而不是继承一堆基础类再往里塞逻辑。这个思路和现代前端很像,但落到 Android 上,写起来会更轻。
Compose 的基础模块
Compose 不是一个单独的大包,而是拆成了几个层次:
Core:底层能力。Foundation:基础组件和修饰能力。Material:Material Design 风格组件。
实际开发里你大多会直接碰到 Foundation 和 Material,Core 更多是框架内部的事情。
一些常见写法
依赖配置
dependencies {
def composeBom = platform('androidx.compose:compose-bom:2023.10.01')
implementation(composeBom)
implementation("androidx.compose.ui:ui")
implementation("androidx.compose.material3:material3")
}


