Android Jetpack Compose 开发应用指南
第一章 初识 Jetpack
Jetpack 是 Google 推出的一套库、工具和指导原则,旨在简化 Android 开发。Jetpack Compose 是其中用于构建原生界面的声明式 UI 工具包。
JetPack 是什么
Jetpack 包含多个组件,如 Lifecycle、ViewModel、Navigation 等,帮助开发者处理生命周期、数据存储和导航等常见问题。
JetPack 和 AndroidX
AndroidX 是 Android Support Library 的继任者,提供了向后兼容的新 API。Compose 依赖于 AndroidX 生态。
AndroidX 的迁移
在旧项目中引入 Compose 时,通常建议先迁移到 AndroidX,确保依赖版本兼容。
第二章 Compose 的设计原理和基本概念
环境搭建
在 build.gradle 中添加以下依赖:
plugins {
id 'com.android.application'
}
android {
// ...
buildFeatures {
compose true
}
composeOptions {
kotlinCompilerExtensionVersion '1.5.0'
}
}
dependencies {
implementation platform('androidx.compose:compose-bom:2023.08.00')
implementation 'androidx.compose.ui:ui'
implementation 'androidx.compose.material3:material3'
}
新特性和组件依赖
Compose 引入了状态驱动 UI 的理念,减少了样板代码。主要依赖包括 ui, foundation, material3 等模块。
编程思想总结
核心思想是函数式编程与响应式状态的结合。UI 是状态的函数,状态改变时界面自动重组。
第三章 Compose 入门
基础案例
创建一个简单的 Composable 函数:
@Composable
fun Greeting(name: String) {
Text(text = "Hello $name!")
}
状态管理
使用 mutableStateOf 管理可观察的状态:
var count by remember { mutableStateOf(0) }
Button(onClick = { count++ }) {
Text("Count is $count")
}
第四章 Compose 布局
Compose State
状态必须被正确记住(remember),否则重组时会丢失。
Compose 样式(Theme)
通过 MaterialTheme 定义全局配色和字体:
MaterialTheme {
Surface(color = MaterialTheme.colorScheme.background) {
// Content
}
}
Compose 布局核心控件
- Box: 堆叠子元素。
- Column: 垂直排列。
- Row: 水平排列。
自定义布局
继承 Layout 类或组合现有控件实现复杂布局。
ConstraintLayout
使用 ConstraintLayout 进行更灵活的约束布局。
第五章 Compose 动画
SideEffect
用于处理副作用,如订阅外部数据源。
动画概述
Compose 提供内置动画 API,无需手动计算帧率。
Crossfade
实现淡入淡出效果:
Crossfade(targetState = visible, animationSpec = tween()) {
if (it) Image(...) else Empty()
}
animateContentSize
当内容大小变化时平滑过渡。
Animatable
控制数值变化的动画,如旋转角度或透明度。
自定义动画
结合 InfiniteTransition 创建循环动画。
第六章 Compose 图形
Compose Canvas
使用 Canvas 绘制自定义图形:
Canvas(modifier = Modifier.size(100.dp)) {
drawCircle(Color.Red)
}
绘制 API 分析
支持路径、形状、图像等多种绘制操作。
自定义绘制
重写 onDraw 方法实现像素级控制。
第七章 Compose 核心控件总结
Scaffold
提供标准的 Material Design 布局结构,包含 App Bar、Bottom Bar 和 Drawer。
LazyColumn
高效滚动列表,按需加载项:
LazyColumn {
items(items) { item ->
Text(item)
}
}
第八章 强化实战
底部按钮和首页 Banner
使用 Column 和 Row 组合实现首页结构,Banner 可使用 HorizontalPager。
导航规整并实现登录页
使用 NavHost 和 NavController 管理页面跳转:
NavHost(navController, startDestination = "login") {
composable("login") { LoginScreen() }
composable("home") { HomeScreen() }
}
分类页面
使用 Scaffold 配合 BottomNavigation 切换分类,流式布局可用 FlowRow 或自定义 Layout。
搜索页面
集成 Room 数据库存储搜索历史,使用 Flow 处理异步数据流。
项目页面
- 获取数据: 使用 Retrofit + Coroutines。
- 顶部滑动菜单: 使用
SwipeToDismissBox。 - Webview 使用: 嵌入 WebView 显示 H5 内容。
结语
Jetpack Compose 代表了 Android UI 开发的未来方向。通过声明式编程,开发者可以更专注于业务逻辑而非视图状态管理。建议参考官方文档持续学习最新特性,结合具体业务场景实践,打造高性能、易维护的 Android 应用。

