Compose 教学项目

Compose 教学项目

本文档汇总 MyFirstCompose 项目涉及的所有学习参考资料。

Gitee 仓库项目地址: 点击查看


官方文档

资料 链接
Jetpack Compose 官方文档 https://developer.android.com/develop/compose
Compose API 参考 https://developer.android.com/reference/kotlin/androidx.compose
Navigation Compose https://developer.android.com/develop/compose/navigation
Material3 设计指南 https://developer.android.com/develop/ui/views/components/material3

项目依赖版本

toml 复制代码
# gradle/libs.versions.toml
[versions]
agp = "8.11.2"
kotlin = "2.0.21"
composeBom = "2024.09.00"
lifecycleRuntimeKtx = "2.10.0"
activityCompose = "1.13.0"
lifecycleViewmodelCompose = "2.10.0"
navigationCompose = "2.7.7"
retrofit = "2.9.0"
coil = "2.6.0"
coroutines = "1.7.3"

核心依赖:

  • androidx.compose.bom:compose-bom:2024.09.00 --- Compose 版本统一管理
  • androidx.navigation:navigation-compose:2.7.7 --- 导航
  • com.squareup.retrofit2:retrofit:2.9.0 --- 网络请求
  • io.coil-kt:coil-compose:2.6.0 --- 图片加载

架构设计参考

主题 说明
MVVM 架构 ViewModel 管理 UI 状态,Composable 只负责渲染
sealed UiState Loading/Success/Error 三状态统一处理
Repository 模式 数据来源统一管理,网络/本地/缓存分层
单向数据流 用户操作 → ViewModel → UI 重组
StateFlow + collectAsState 响应式状态观察

关键技术点

1. Composable 函数

  • @Composable 标记 UI 构建函数
  • Modifier 配置布局/样式/交互
  • @Preview 支持 Android Studio 实时预览

2. ViewModel

  • viewModel() 委托创建,自动关联生命周期
  • viewModelScope.launch 开启协程
  • MutableStateFlow 内部写,StateFlow 对外暴露
  • NavHost + composable 注册页面
  • navigate() 跳转,popBackStack() 返回
  • arguments 声明路由参数

4. 网络与数据

  • suspend 挂起函数用于协程
  • RetrofitManager 单例管理 Retrofit
  • ArticleRepository 同时负责网络获取与内存缓存

项目文件索引

复制代码
app/src/main/java/com/example/myfirstcompose/
├── MainActivity.kt                    # 入口
├── navigation/
│   ├── AppNavGraph.kt                 # 导航图
│   └── AppRoutes.kt                  # 路由常量
├── data/
│   ├── api/
│   │   ├── ApiService.kt             # Retrofit 接口
│   │   └── RetrofitManager.kt       # Retrofit 单例
│   ├── model/
│   │   ├── ArticleBean.kt           # 商品数据模型
│   │   ├── ProductListResponse.kt   # API 响应
│   │   └── ProfileUser.kt           # 用户数据模型
│   └── repository/
│       ├── ArticleRepository.kt     # 文章仓库(网络+缓存)
│       └── ProfileRepository.kt     # 用户仓库(本地)
├── ui/
│   ├── component/
│   │   ├── ArticleItem.kt           # 列表项卡片
│   │   ├── ArticleImage.kt          # 图片组件
│   │   ├── BannerView.kt            # 轮播图
│   │   └── ProfileAvatar.kt         # 头像组件
│   ├── page/
│   │   ├── home/                    # 首页模块
│   │   ├── profile/                # 个人中心模块
│   │   └── detail/                 # 详情页模块
│   └── theme/                       # Material3 主题

延伸学习资源

资源 链接
Google Codelabs - Compose 基础 https://developer.android.com/codelabs/jetpack-compose-basics
Compose 中的动画 https://developer.android.com/develop/ui/compose/animation/introduction?hl=zh-cn
官方 Navigation 样例 https://developer.android.com/develop/ui/compose/navigation
Retrofit 官方文档 https://square.github.io/retrofit/
Coil 图片加载 https://coil-kt.github.io/coil/compose/

学习路径建议

第一阶段:环境搭建 + Compose 基础

第一章:项目概述与环境搭建
第二章:Compose入门---声明式UI编程

第二阶段:架构与状态管理

第三章:MVVM架构与ViewModel
第七章:状态管理实战与架构总结

第三阶段:导航与数据层

第四章:NavigationCompose页面导航
第五章:数据层---网络请求与Repository

第四阶段:UI 组件与实战

第六章:UI组件与Material3主题

相关推荐
故渊at几秒前
第四板块:Android 输入系统与触控事件 | 第十六篇:按键分发与软键盘(IME)的窗口协同
android·软键盘·输入系统·触控事件·按键分发
故渊at1 分钟前
第三板块:Android 图形渲染与窗口体系 | 第十四篇:View 绘制体系与 RenderThread 异步渲染
android·图形渲染·ui线程·renderthread·view体系
Coffeeee20 分钟前
准备升级到Android16,自适应布局应该如何适配
android·google·kotlin
神仙别闹24 分钟前
基于 PHP + MySQL 图书库存管理系统
android·mysql·php
zhangphil30 分钟前
Android内存回收:GC、kswapd 和 mm_vmscan_direct_reclaim概述
android
plainGeekDev37 分钟前
ContentProvider → Room + Repository
android·java·kotlin
plainGeekDev42 分钟前
SQLite 手动升级 → Room Migration
android·java·kotlin
MemoriKu43 分钟前
Flutter 相册 APP 视频模态稳定化实战:从视频抽帧、Embedding 元数据到 Android 真机启动修复
android·开发语言·前端·flutter·架构·音视频·embedding
Che2n3JigW1 小时前
Now in Android:它不是最佳实践,而是大型 Android 工程实践的展示
android·architecture·now in android
故渊at1 小时前
第三板块:Android 图形渲染与窗口体系 | 第十三篇:SurfaceFlinger 与 VSYNC 信号机制
android·图形渲染·surfaceflinger·帧率·窗口体系