本站支持尊重有效期内的版权/著作权,所有的资源均来自于互联网网友分享或网盘资源,一旦发现资源涉及侵权,将立即删除。希望所有用户一同监督并反馈问题,如有侵权请联系站长或发送邮件到ebook666@outlook.com,本站将立马改正
Jetpack Compose是Google官方推出的用于构建原生界面的现代Android工具包,能够帮助开发者用更少的代码实现更多功能,轻松地构建精美且易于维护的高性能应用程序。本书系统、细致地讲解了Compose,“手把手”教开发者如何在实际项目中使用Compose。首先介绍了如何搭建Compose的开发环境,以及编写第一个Hello World程序,然后介绍了Compose的各类简单或复杂的控件、布局、视图,接着介绍了Compose中的动画和手势操作以及如何与其他Jetpack库搭配使用,最后带领读者从头到尾完整地开发一个简单的项目。
朱江
现在联想(北京)有限公司担任Android开发工程师,从事Android开发工作多年,有丰富的项目经验,负责及参与开发过多款移动应用程序,同时还是多个开源项目的作者。2017年开始在CSDN发表Android技术相关博文,得到了大量网友的认可,荣获CSDN认证博客专业人士,在2020年CSDN博客之星评选活动中进入全网前50名。
前言
第 *章 先做好准备工作 *
*.* Compose 简介 *
*.2 搭建开发环境 2
*.2.* 在Windows上搭建开发环境 2
*.2.2 在macOS上搭建开发环境 8
*.2.3 将Compose添加到现有项目 9
*.3 温习Kotlin *0
*.3.* 默认参数 **
*.3.2 **函数 **
*.3.3 解构数据类 *2
*.4 小结 *3
第 2章 开启Compose旅程 *4
2.* *建第 *个Compose应用程序 *4
2.*.* *建Hello World *4
2.*.2 运行项目 *7
2.*.3 分析第 *个Compose应用程序 *8
2.*.4 使用Preview 20
2.2 Compose编程思想 22
2.2.* 声明式编程 22
2.2.2 可组合函数 22
2.2.3 重组 23
2.3 智能重组 24
2.3.* 控件按任何顺序执行 24
2.3.2 控件并行运行 24
2.3.3 重组会跳过尽可能多的内容 26
2.3.4 重组是乐观的操作 26
2.4 Compose状态 27
2.4.* Compose中的状态 27
2.4.2 ViewModel和状态 29
2.4.3 使用其他类型的状态 30
2.5 Compose生命周期 3*
2.5.* 可组合项的生命周期 3*
2.5.2 状态和效应用例 32
2.5.3 重启效应 34
2.6 小结 35
第3章 使用Compose的简单控件 36
3.* Compose中的主题 36
3.*.* 主题设置 36
3.*.2 Color设置 37
3.*.3 字体设置 40
3.*.4 Shape设置 42
3.2 Compose中的“TextView ” 43
3.2.* 显示文字 43
3.2.2 设置文字样式 46
3.2.3 设置文字选择 58
3.3 Compose中的“EditText” 6*
3.3.* 输入文字 6*
3.3.2 显示样式 64
3.3.3 键盘选项 66
3.4 Compose中的“Button” 7*
3.4.* *建Button 72
3.4.2 Button源码解析 72
3.5 Compose中的“ImageView” 77
3.5.* 简单显示 77
3.5.2 设置图片样式 79
3.5.3 显示网络图片 82
3.6 Compose中的“ProgressBar” 84
3.6.* 使用圆形进度条 84
3.6.2 使用条形进度条 87
3.7 小结 90
第4章 了解Compose的布局 9*
4.* 竖向线性布局——Column 9*
4.*.* Android View中的竖向线性布局 92
4.*.2 Compose中的竖向线性布局 93
4.*.3 Column源码解析 94
4.2 横向线性布局——Row 99
4.2.* 简单上手 *00
4.2.2 Row源码解析 *0*
4.3 帧布局——Box *02
4.3.* Box源码解析 *02
4.3.2 Box简单上手 *03
4.4 修饰符——Modifier *05
4.4.* 内边距padding *05
4.4.2 设置控件的尺寸 *07
4.4.3 Row和Column中的weight修饰符 *08
4.4.4 给控件添加*事件 *09
4.4.5 为控件添加圆角 *09
4.5 脚手架——Scaffold ***
4.5.* 简单了解 Scaffold ***
4.5.2 Scaffold抽屉实现 **3
4.6 约束布局——ConstraintLayout **4
4.7 小结 **6
第5章 尝试Compose的复杂控件 **7
5.* 竖向列表LazyColumn **7
5.*.* 简单使用 **7
5.*.2 LazyListScope **9
5.*.3 多Type使用 *22
5.*.4 粘性标题 *24
5.*.5 回到** *28
5.2 横向列表 LazyRow *29
5.2.* 简单使用 *29
5.2.2 LazyRow源码解析 *29
5.2.3 使用项键Key *30
5.3 网格列表LazyVerticalGrid *3*
5.3.* 简单使用 *3*
5.3.2 LazyVerticalGrid源码解析 *32
5.4 底*导航栏 *36
5.4.* 简单使用 *36
5.4.2 BottomNavigation源码解析 *38
5.5 小结 *40
第6章 尝试Compose的自定义View *4*
6.* 简单认识Compose中的Canvas *4*
6.*.* Android View中的Canvas *4*
6.*.2 Compose中的Canvas *42
6.2 使用Canvas绘制点 *43
6.2.* 绘制点*须填写的参数 *43
6.2.2 绘制点可选的参数 *46
6.2.3 使用Brush绘制渐变 *49
6.3 使用Canvas绘制线和矩形 *53
6.3.* 绘制线 *53
6.3.2 绘制矩形 *55
6.3.3 绘制圆角矩形 *58
6.4 使用Canvas绘制圆及椭圆 *59
6.4.* 绘制圆 *60
6.4.2 绘制椭圆 *6*
6.5 使用 Canvas绘制圆弧、图片及Path *63
6.5.* 绘制圆弧 *63
6.5.2 绘制图片 *66
6.5.3 绘制Path *68
6.6 使用混合模式 *72
6.6.* Android View中的混合模式 *73
6.6.* Compose 中的混合模式 *73
6.7 小结 *75
第7章 动画的点点滴滴 *76
7.* 简单使用动画 *76
7.*.* 可见性动画 *76
7.*.2 布局大小动画 *8*
7.*.3 布局切换动画 *83
7.2 低级别动画 *85
7.2.* 属性动画 *85
7.2.2 帧动画 *87
7.2.3 多动画同步 *88
7.2.4 多动画重复 *9*
7.3 自定义动画 *92
7.3.* 动画规格——AnimationSpec *92
7.3.2 矢量动画——AnimationVector *95
7.4 Compose中的手势 *96
7.4.* Compose中的*事件 *96
7.4.2 Compose中的滚动事件 *98
7.4.3 Compose中的嵌套滚动 200
7.4.4 拖动事件 202
7.4.5 滑动事件 204
7.5 小结 206
第8章 和其他Jetpack库搭配使用 207
8.* 使用ViewModel 207
8.*.* ViewModel的简单使用 207
8.*.2 在Compose中使用ViewModel 2**
8.*.3 Compose中ViewModel的进*使用 2*3
8.2 使用数据流 2*6
8.2.* Flow的使用 2*6
8.2.2 RxJava的使用 2*7
8.3 使用Navigation实现页面跳转 2*8
8.3.* 简单使用 2*8
8.3.2 传递单个参数 22*
8.3.3 传递多个参数 223
8.3.4 解析参数类型 225
8.3.5 添加可选参数 227
8.3.6 添加实体类参数 229
8.4 使用Jetpack中的其他库 23*
8.4.* 使用Hilt进行依赖注入 23*
8.4.2 使用Paging进行列表加载 232
8.5 小结 234
第9章 和老代码搭配使用 235
9.* 在 Compose中使用Android View 235
9.*.* 简单控件的使用 235
9.*.2 复杂控件使用 237
9.*.3 嵌入XML布局 240
9.2 在Android View中使用Compose 243
9.2.* 在代码中使用 243
9.2.2 在布局中使用 246
9.3 Compose与现有页面集成 248
9.3.* *建Android View和Compose中通用的控件 248
9.3.2 Compose中的屏幕适配 25*
9.4 小结 254
第 *0章 Compose实战——玩Android 255
*0.* 搭建项目框架 255
*0.*.* *建项目 255
*0.*.2 搭建项目架构 257
*0.*.3 使用Navigation处理页面跳转 258
*0.*.4 使用BottomNavigation*建主页框架 260
*0.2 实现项目*页 262
*0.2.* 实现*页逻辑层 263
*0.2.2 实现*页UI层 269
*0.3 实现项目页面 277
*0.3.* 实现项目页面的逻辑层 278
*0.3.2 实现项目页面的UI层 28*
*0.4 实现其他页面 284
*0.4.* 实现文章详情页面 284
*0.4.2 实现我的页面 287
*0.5 小结 290