AndroidCompose学习路线图
[[TOC]]
android compose 学习路线参考,仅整理了部分
📚 第一阶段:基础入门
🔥 重点:理解声明式UI范式和Compose核心机制
1.1 Compose基础概念
这是整个学习过程的核心基础,必须深入理解!
重点内容:
- 声明式UI vs 命令式UI ⭐⭐⭐⭐⭐
// 传统命令式UI
textView.text = "Hello"
textView.visibility = View.VISIBLE
// Compose声明式UI
@Composable
fun MyText(visible: Boolean) {
if (visible) {
Text("Hello")
}
}
重组(Recomposition)机制 ⭐⭐⭐⭐⭐
- 理解重组触发条件
- 重组优化策略
- 避免不必要的重组
@Composable注解 ⭐⭐⭐⭐
- 函数特点:无返回值、幂等性、可组合性
- 副作用处理:
LaunchedEffect
、DisposableEffect
1.2 基础UI组件 ⭐⭐⭐⭐
掌握这些组件是构建任何UI的基础
重点组件:
// 🔥 必须熟练掌握的组件
Text("Hello Compose") // 文本显示
Button(onClick = { }) { Text("Click") } // 按钮交互
Image(painter = painterResource(id = R.drawable.image), contentDescription = null) // 图片显示
Box { /* 容器组件 */ } // 堆叠布局
Column { /* 垂直布局 */ } // 垂直排列
Row { /* 水平布局 */ } // 水平排列
1.3 布局系统 ⭐⭐⭐⭐⭐
布局是UI构建的核心,必须深入掌握
重点布局:
- Column/Row ⭐⭐⭐⭐⭐
Column(
modifier = Modifier.fillMaxSize(),
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.Center
) {
Text("Item 1")
Text("Item 2")
}
- Box ⭐⭐⭐⭐
Box(
modifier = Modifier.fillMaxSize(),
contentAlignment = Alignment.Center
) {
Text("Centered Text")
}
重点修饰符:
// 🔥 最常用的修饰符
.padding(16.dp) // 内边距
.size(100.dp) // 固定尺寸
.fillMaxWidth() // 填充宽度
.fillMaxHeight() // 填充高度
.weight(1f) // 权重分配
1.4 状态管理基础 ⭐⭐⭐⭐⭐
状态管理是Compose的灵魂,必须深入理解!
重点状态管理:
// 🔥 核心状态管理模式
var text by remember { mutableStateOf("") }
var count by remember { mutableStateOf(0) }
// 状态提升 - 重要概念
@Composable
fun ParentComponent() {
var childState by remember { mutableStateOf("") }
ChildComponent(
state = childState,
onStateChange = { childState = it }
)
}
📚 第二阶段:进阶UI开发
🔥 重点:掌握复杂UI构建和性能优化
2.1 高级布局 ⭐⭐⭐⭐
复杂应用必备技能
重点布局:
- ConstraintLayout ⭐⭐⭐⭐
ConstraintLayout {
val (text, button) = createRefs()
Text(
"Hello",
modifier = Modifier.constrainAs(text) {
top.linkTo(parent.top)
start.linkTo(parent.start)
}
)
Button(
onClick = { },
modifier = Modifier.constrainAs(button) {
top.linkTo(text.bottom, margin = 16.dp)
start.linkTo(parent.start)
}
) {
Text("Click")
}
}
- LazyColumn/LazyRow ⭐⭐⭐⭐⭐
// 🔥 列表性能优化 - 必须掌握
LazyColumn {
items(items) { item ->
ListItem(item = item)
}
}
2.2 主题和样式 ⭐⭐⭐⭐
企业级应用必备
重点主题系统:
// 🔥 主题配置 - 重要
@Composable
fun MyApp() {
MaterialTheme(
colors = lightColors(
primary = Color.Blue,
secondary = Color.Green,
surface = Color.White
),
typography = Typography(
h1 = TextStyle(fontSize = 24.sp, fontWeight = FontWeight.Bold),
body1 = TextStyle(fontSize = 16.sp)
)
) {
// 应用内容
}
}
2.3 动画和过渡 ⭐⭐⭐⭐
提升用户体验的关键
重点动画:
// 🔥 基础动画 - 必须掌握
var expanded by remember { mutableStateOf(false) }
val animatedSize by animateDpAsState(
targetValue = if (expanded) 200.dp else 100.dp
)
// 高级动画
val transition = updateTransition(expanded)
val backgroundColor by transition.animateColor { isExpanded ->
if (isExpanded) Color.Green else Color.Red
}
2.4 手势处理 ⭐⭐⭐⭐
交互体验的核心
重点手势:
// 🔥 手势处理 - 重要
var offset by remember { mutableStateOf(Offset.Zero) }
val state = rememberDraggableState { delta ->
offset += Offset(delta, 0f)
}
Box(
modifier = Modifier
.offset { IntOffset(offset.x.roundToInt(), offset.y.roundToInt()) }
.draggable(state = state, orientation = Orientation.Horizontal)
) {
Text("Draggable Text")
}
📚 第三阶段:架构和模式
🔥 重点:掌握企业级架构模式和最佳实践
3.1 状态提升 ⭐⭐⭐⭐⭐
这是Compose架构的核心概念!
重点模式:
// 🔥 状态提升模式 - 必须深入理解
@Composable
fun ParentComponent() {
var sharedState by remember { mutableStateOf("") }
Column {
ChildComponent1(
state = sharedState,
onStateChange = { sharedState = it }
)
ChildComponent2(
state = sharedState,
onStateChange = { sharedState = it }
)
}
}
3.2 组合模式 ⭐⭐⭐⭐⭐
企业级应用架构基础
重点组合:
// 🔥 组合模式 - 重要
@Composable
fun MyScreen(
viewModel: MyViewModel = hiltViewModel()
) {
val uiState by viewModel.uiState.collectAsState()
when (uiState) {
is Loading -> LoadingScreen()
is Success -> SuccessScreen(uiState.data)
is Error -> ErrorScreen(uiState.message)
}
}
3.3 依赖注入 ⭐⭐⭐⭐
大型项目必备
重点集成:
// 🔥 Hilt集成 - 重要
@HiltViewModel
class MyViewModel @Inject constructor(
private val repository: MyRepository
) : ViewModel() {
// ViewModel实现
}
@Composable
fun MyScreen(
viewModel: MyViewModel = hiltViewModel()
) {
// UI实现
}
3.4 导航 ⭐⭐⭐⭐
多页面应用必备
重点导航:
// 🔥 Compose导航 - 重要
val navController = rememberNavController()
NavHost(navController, startDestination = "home") {
composable("home") { HomeScreen() }
composable("detail/{id}") { backStackEntry ->
DetailScreen(id = backStackEntry.arguments?.getString("id"))
}
}
📚 第四阶段:高级特性
🔥 重点:性能优化和自定义组件
4.1 性能优化 ⭐⭐⭐⭐⭐
这是区分初级和高级开发者的关键!
重点优化:
// 🔥 重组优化 - 核心技能
// 使用remember避免不必要的重组
val expensiveValue = remember(key1, key2) {
// 昂贵的计算
}
// 使用derivedStateOf优化派生状态
val derivedState by remember {
derivedStateOf {
// 基于其他状态的计算
}
}
// 使用LaunchedEffect处理副作用
LaunchedEffect(key1, key2) {
// 副作用处理
}
4.2 自定义组件 ⭐⭐⭐⭐
代码复用和维护的关键
重点自定义:
// 🔥 自定义组件 - 重要
@Composable
fun CustomButton(
text: String,
onClick: () -> Unit,
modifier: Modifier = Modifier,
enabled: Boolean = true
) {
Button(
onClick = onClick,
modifier = modifier,
enabled = enabled
) {
Text(text)
}
}
4.3 测试 ⭐⭐⭐⭐
质量保证的关键
重点测试:
// 🔥 UI测试 - 重要
@ComposeTest
fun testMyComponent() {
composeTestRule.setContent {
MyComponent()
}
composeTestRule.onNodeWithText("Hello").assertIsDisplayed()
composeTestRule.onNodeWithText("Click").performClick()
}
📚 第五阶段:实战项目
🔥 重点:综合运用所有技能
5.1 项目类型建议
- 社交应用 ⭐⭐⭐⭐⭐ - 练习列表、图片、用户交互
- 电商应用 ⭐⭐⭐⭐ - 练习复杂布局、状态管理
- 新闻应用 ⭐⭐⭐⭐ - 练习网络请求、缓存
- 工具应用 ⭐⭐⭐ - 练习自定义组件、动画
5.2 项目要求 ⭐⭐⭐⭐⭐
这些是必须掌握的企业级技能!
- 使用MVVM架构
- 集成Hilt依赖注入
- 使用Room数据库
- 实现网络请求
- 添加单元测试和UI测试
- 实现错误处理
- 添加加载状态
- 实现数据缓存
🎯 重点内容总结
⭐⭐⭐⭐⭐ 核心重点(必须掌握)
- 声明式UI概念和重组机制
- 状态管理和状态提升
- 基础布局系统(Column/Row/Box)
- 性能优化技巧
- MVVM架构模式
⭐⭐⭐⭐ 重要内容(建议掌握)
- LazyColumn/LazyRow性能优化
- 主题和样式系统
- 动画和手势处理
- 依赖注入(Hilt)
- 导航系统
⭐⭐⭐ 进阶内容(提升技能)
- 自定义组件开发
- 测试策略
- 平台集成
- 高级动画
- 性能分析
📋 学习检查清单
🔥 第一阶段检查(基础)
- 理解声明式UI vs 命令式UI的区别
- 掌握@Composable函数的特点
- 理解重组机制和优化策略
- 熟练使用Column/Row/Box布局
- 掌握基础状态管理(mutableStateOf)
- 理解状态提升概念
🔥 第二阶段检查(进阶)
- 掌握ConstraintLayout复杂布局
- 熟练使用LazyColumn/LazyRow
- 理解主题系统配置
- 实现基础动画效果
- 处理用户手势交互
- 完成中等复杂度项目
🔥 第三阶段检查(架构)
- 深入理解状态提升模式
- 掌握组合模式架构
- 集成Hilt依赖注入
- 实现Compose导航
- 完成架构化项目
- 理解单向数据流
🔥 第四阶段检查(高级)
- 掌握性能优化技巧
- 创建可复用自定义组件
- 编写UI测试用例
- 集成原生组件
- 完成复杂项目
- 进行性能分析
🛠️ 学习资源
🔥 官方资源(必读)
- Compose官方文档 ⭐⭐⭐⭐⭐
- Compose Samples ⭐⭐⭐⭐⭐
- Compose Codelabs ⭐⭐⭐⭐
📚 推荐书籍
- 《Jetpack Compose by Tutorials》 ⭐⭐⭐⭐⭐
- 《Android UI Development with Jetpack Compose》 ⭐⭐⭐⭐
🎯 学习建议
🔥 核心建议
- 理论结合实践 - 每个概念都要动手验证
- 项目驱动学习 - 通过完整项目巩固知识
- 性能优先 - 始终关注性能优化
- 代码审查 - 定期回顾和优化代码
- 社区参与 - 参与开源项目和讨论
⏰ 时间安排
- 每日学习时间: 2-3小时
- 周末项目时间: 4-6小时
- 总学习周期: 16-22周
🔥 记住:Compose是一个不断发展的技术,保持持续学习的态度很重要!重点内容要反复练习,直到完全掌握!