前言¶
在 Android 开发中,传统基于 XML 的 UI 构建方式需要维护两套视图逻辑(布局文件 + Activity/Fragment 代码),在复杂交互场景下容易产生不一致和样板代码。Jetpack Compose 提供了一种声明式 UI 构建范式,让开发者用 Kotlin 代码直接描述 UI 状态与结构,从而减少重复逻辑并提升维护效率。
是什么¶
Jetpack Compose 是 Android 官方提供的现代 UI 工具包,以声明式方式构建 UI,由 Google 在 2019 年推出,并已纳入 Android Jetpack 组件。它将 UI 代码从布局文件中抽离,用函数式组件描述界面,通过状态驱动更新视图,简化 UI 开发流程。
核心功能¶
- 声明式 UI 构建:用 Kotlin 函数描述 UI 结构,状态变化自动触发 UI 更新
- 组合式设计:通过可组合函数组合基础 UI 元素,形成复杂界面
- 声明式状态管理:UI 表达为状态的映射,状态改变时自动重组 UI
- 内置动画与过渡:提供开箱即用的动画与过渡支持
- 与现有技术兼容:可与传统 View 系统共存,逐步迁移
安装与启用¶
基础依赖(Gradle)¶
在 build.gradle 中添加 Compose BOM 依赖:
dependencies {
val composeBom = platform("androidx.compose:compose-bom:2024.09.02")
implementation(composeBom)
implementation("androidx.compose.ui:ui")
implementation("androidx.compose.material3:material3")
implementation("androidx.activity:activity-compose:1.9.2")
}
启用 Compose 的 Activity¶
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
MaterialTheme {
// UI 内容
}
}
}
}
典型用法¶
可组合函数示例¶
@Composable
fun Greeting(name: String) {
Text(text = "Hello, $name!")
}
@Composable
fun MyApp() {
var name by remember { mutableStateOf("World") }
Column {
Greeting(name = name)
Button(onClick = { name = "You" }) {
Text("Click me")
}
}
}
使用主题与 Material 组件¶
@Composable
fun ThemeAwareApp() {
MaterialTheme {
MyApp()
}
}
适用场景与注意¶
- 适合场景:新项目、渐进式迁移、需要频繁更新 UI 的应用、希望减少样板代码的开发者
- 注意点:需要 Kotlin 环境,部分旧项目迁移成本较高;部分第三方库可能尚未提供 Compose 版本支持
总结¶
Jetpack Compose 通过声明式 UI 和状态驱动更新,简化了 Android UI 的构建与维护流程。它适合希望降低 UI 开发复杂度的 Android 开发者,尤其在新项目或渐进式重构场景中。