# AndroidComposeBookSource **Repository Path**: jsjxsy/android-compose-book-source ## Basic Information - **Project Name**: AndroidComposeBookSource - **Description**: 《Jetpack Compose:Android全新UI编程》全书源代码 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 2 - **Created**: 2024-06-19 - **Last Updated**: 2025-06-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: Android, Compose, Kotlin ## README # ComposeBookSource 《Jetpack Compose:Android全新UI编程》全书源代码 ## 关注我的微信公众号学习更多技术 ## 我的博客 大家也可以关注我的博客,定期会有文章进行更新。 - [CSDN](https://zhujiang.blog.csdn.net/) - [掘金](https://juejin.cn/user/3913917127985240/posts) - 前言 - 第 1章 先做好准备工作 1 - 1.1 Compose 简介 1 - 1.2 搭建开发环境 2 - 1.2.1 在Windows上搭建开发环境 2 - 1.2.2 在macOS上搭建开发环境 8 - 1.2.3 将Compose添加到现有项目 9 - 1.3 温习Kotlin 10 - 1.3.1 默认参数 11 - 1.3.2 高阶函数 11 - 1.3.3 解构数据类 12 - 1.4 小结 13 - 第 2章 开启Compose旅程 14 - 2.1 创建第 一个Compose应用程序 14 - 2.1.1 创建Hello World 14 - 2.1.2 运行项目 17 - 2.1.3 分析第 一个Compose应用程序 18 - 2.1.4 使用Preview 20 - 2.2 Compose编程思想 22 - 2.2.1 声明式编程 22 - 2.2.2 可组合函数 22 - 2.2.3 重组 23 - 2.3 智能重组 24 - 2.3.1 控件按任何顺序执行 24 - 2.3.2 控件并行运行 24 - 2.3.3 重组会跳过尽可能多的内容 26 - 2.3.4 重组是乐观的操作 26 - 2.4 Compose状态 27 - 2.4.1 Compose中的状态 27 - 2.4.2 ViewModel和状态 29 - 2.4.3 使用其他类型的状态 30 - 2.5 Compose生命周期 31 - 2.5.1 可组合项的生命周期 31 - 2.5.2 状态和效应用例 32 - 2.5.3 重启效应 34 - 2.6 小结 35 - 第3章 使用Compose的简单控件 36 - 3.1 Compose中的主题 36 - 3.1.1 主题设置 36 - 3.1.2 Color设置 37 - 3.1.3 字体设置 40 - 3.1.4 Shape设置 42 - 3.2 Compose中的“TextView ” 43 - 3.2.1 显示文字 43 - 3.2.2 设置文字样式 46 - 3.2.3 设置文字选择 58 - 3.3 Compose中的“EditText” 61 - 3.3.1 输入文字 61 - 3.3.2 显示样式 64 - 3.3.3 键盘选项 66 - 3.4 Compose中的“Button” 71 - 3.4.1 创建Button 72 - 3.4.2 Button源码解析 72 - 3.5 Compose中的“ImageView” 77 - 3.5.1 简单显示 77 - 3.5.2 设置图片样式 79 - 3.5.3 显示网络图片 82 - 3.6 Compose中的“ProgressBar” 84 - 3.6.1 使用圆形进度条 84 - 3.6.2 使用条形进度条 87 - 3.7 小结 90 - 第4章 了解Compose的布局 91 - 4.1 竖向线性布局——Column 91 - 4.1.1 Android View中的竖向线性布局 92 - 4.1.2 Compose中的竖向线性布局 93 - 4.1.3 Column源码解析 94 - 4.2 横向线性布局——Row 99 - 4.2.1 简单上手 100 - 4.2.2 Row源码解析 101 - 4.3 帧布局——Box 102 - 4.3.1 Box源码解析 102 - 4.3.2 Box简单上手 103 - 4.4 修饰符——Modifier 105 - 4.4.1 内边距padding 105 - 4.4.2 设置控件的尺寸 107 - 4.4.3 Row和Column中的weight修饰符 108 - 4.4.4 给控件添加点击事件 109 - 4.4.5 为控件添加圆角 109 - 4.5 脚手架——Scaffold 111 - 4.5.1 简单了解 Scaffold 111 - 4.5.2 Scaffold抽屉实现 113 - 4.6 约束布局——ConstraintLayout 114 - 4.7 小结 116 - 第5章 尝试Compose的复杂控件 117 - 5.1 竖向列表LazyColumn 117 - 5.1.1 简单使用 117 - 5.1.2 LazyListScope 119 - 5.1.3 多Type使用 122 - 5.1.4 粘性标题 124 - 5.1.5 回到顶部 128 - 5.2 横向列表 LazyRow 129 - 5.2.1 简单使用 129 - 5.2.2 LazyRow源码解析 129 - 5.2.3 使用项键Key 130 - 5.3 网格列表LazyVerticalGrid 131 - 5.3.1 简单使用 131 - 5.3.2 LazyVerticalGrid源码解析 132 - 5.4 底部导航栏 136 - 5.4.1 简单使用 136 - 5.4.2 BottomNavigation源码解析 138 - 5.5 小结 140 - 第6章 尝试Compose的自定义View 141 - 6.1 简单认识Compose中的Canvas 141 - 6.1.1 Android View中的Canvas 141 - 6.1.2 Compose中的Canvas 142 - 6.2 使用Canvas绘制点 143 - 6.2.1 绘制点必须填写的参数 143 - 6.2.2 绘制点可选的参数 146 - 6.2.3 使用Brush绘制渐变 149 - 6.3 使用Canvas绘制线和矩形 153 - 6.3.1 绘制线 153 - 6.3.2 绘制矩形 155 - 6.3.3 绘制圆角矩形 158 - 6.4 使用Canvas绘制圆及椭圆 159 - 6.4.1 绘制圆 160 - 6.4.2 绘制椭圆 161 - 6.5 使用 Canvas绘制圆弧、图片及Path 163 - 6.5.1 绘制圆弧 163 - 6.5.2 绘制图片 166 - 6.5.3 绘制Path 168 - 6.6 使用混合模式 172 - 6.6.1 Android View中的混合模式 173 - 6.6.1 Compose 中的混合模式 173 - 6.7 小结 175 - 第7章 动画的点点滴滴 176 - 7.1 简单使用动画 176 - 7.1.1 可见性动画 176 - 7.1.2 布局大小动画 181 - 7.1.3 布局切换动画 183 - 7.2 低级别动画 185 - 7.2.1 属性动画 185 - 7.2.2 帧动画 187 - 7.2.3 多动画同步 188 - 7.2.4 多动画重复 191 - 7.3 自定义动画 192 - 7.3.1 动画规格——AnimationSpec 192 - 7.3.2 矢量动画——AnimationVector 195 - 7.4 Compose中的手势 196 - 7.4.1 Compose中的点击事件 196 - 7.4.2 Compose中的滚动事件 198 - 7.4.3 Compose中的嵌套滚动 200 - 7.4.4 拖动事件 202 - 7.4.5 滑动事件 204 - 7.5 小结 206 - 第8章 和其他Jetpack库搭配使用 207 - 8.1 使用ViewModel 207 - 8.1.1 ViewModel的简单使用 207 - 8.1.2 在Compose中使用ViewModel 211 - 8.1.3 Compose中ViewModel的进阶使用 213 - 8.2 使用数据流 216 - 8.2.1 Flow的使用 216 - 8.2.2 RxJava的使用 217 - 8.3 使用Navigation实现页面跳转 218 - 8.3.1 简单使用 218 - 8.3.2 传递单个参数 221 - 8.3.3 传递多个参数 223 - 8.3.4 解析参数类型 225 - 8.3.5 添加可选参数 227 - 8.3.6 添加实体类参数 229 - 8.4 使用Jetpack中的其他库 231 - 8.4.1 使用Hilt进行依赖注入 231 - 8.4.2 使用Paging进行列表加载 232 - 8.5 小结 234 - 第9章 和老代码搭配使用 235 - 9.1 在 Compose中使用Android View 235 - 9.1.1 简单控件的使用 235 - 9.1.2 复杂控件使用 237 - 9.1.3 嵌入XML布局 240 - 9.2 在Android View中使用Compose 243 - 9.2.1 在代码中使用 243 - 9.2.2 在布局中使用 246 - 9.3 Compose与现有页面集成 248 - 9.3.1 创建Android View和Compose中通用的控件 248 - 9.3.2 Compose中的屏幕适配 251 - 9.4 小结 254 - 第 10章 Compose实战——玩Android 255 - 10.1 搭建项目框架 255 - 10.1.1 创建项目 255 - 10.1.2 搭建项目架构 257 - 10.1.3 使用Navigation处理页面跳转 258 - 10.1.4 使用BottomNavigation创建主页框架 260 - 10.2 实现项目首页 262 - 10.2.1 实现首页逻辑层 263 - 10.2.2 实现首页UI层 269 - 10.3 实现项目页面 277 - 10.3.1 实现项目页面的逻辑层 278 - 10.3.2 实现项目页面的UI层 281 - 10.4 实现其他页面 284 - 10.4.1 实现文章详情页面 284 - 10.4.2 实现我的页面 287 - 10.5 小结 290