◆ 目录:◆
前言
第1章 全新的Android UI框架/
1.1Jetpack Compose是什么?/
1.1.1谷歌为什么要推出Compose?/
1.1.2命令式UI与声明式UI/
1.1.3Compose API设计原则/
1.1.4Compose与View的关系/
1.1.5不只是Android UI框架/
1.2搭建开发环境/
1.2.1准备所需要的开发工具/
1.2.2部署开发环境/
1.3创建第一个Compose应用/
1.3.1创建新的Compose项目/
1.3.2保持Compose版本更新/
1.3.3在模拟器中运行Compose应用/
1.3.4分析第一个Compose应用/
1.3.5对Compose应用进行预览/
1.3.6已有项目引入Compose/
1.4本章小结/
第2章 了解常用UI组件/
2.1Modifier修饰符/
2.1.1常用修饰符/
2.1.2作用域限定Modifier修饰符/
2.1.3Modifier实现原理/
2.2常用的基础组件/
2.2.1文字组件/
2.2.2图片组件/
2.2.3按钮组件/
2.2.4选择器/
2.2.5对话框/
2.3常用的布局组件/
2.3.1线性布局/
2.3.2帧布局/
2.3.3Spacer留白/
2.3.4ConstraintLayout约束布局/
2.3.5Scaffold脚手架/
2.4列表/
2.4.1Lazy Composables/
2.4.2LazyListScope作用域/
2.4.3内容填充/
2.5本章小结/
第3章 定制UI视图/
3.1构建UI页面/
3.1.1配置颜色、字体与形状/
3.1.2Welcome欢迎页/
3.1.3LoginIn登录页/
3.1.4Home主页/
3.1.5布局预览/
3.2主题/
3.2.1MaterialTheme介绍/
3.2.2理解MaterialTheme与
CompositionLocal/
3.2.3定制主题方案/
3.3本章小结/
第4章 状态管理与重组/
4.1状态管理/
4.1.1什么是状态?/
4.1.2单向数据流/
4.1.3Stateless与Stateful/
4.1.4状态的定义/
4.1.5状态上提/
4.1.6状态的持久化与恢复/
4.1.7使用ViewModel管理状态/
4.1.8LiveData、RxJava、Flow转State/
4.1.9状态的分层管理/
4.2重组与自动刷新/
4.2.1智能的重组/
4.2.2避免重组的“陷阱”/
4.2.3如何确定重组范围?/
4.2.4优化重组的性能/
4.3生命周期与副作用/
4.3.1Composable的生命周期/
4.3.2Composable的副作用/
4.3.3副作用API/
4.3.4异步处理的副作用API/
4.3.5状态创建的副作用API/
4.3.6副作用API的观察参数/
4.4本章小结/
第5章 Compose组件渲染流程/
5.1组合/
5.2布局/
5.2.1Layout Modifier/
5.2.2LayoutComposable/
5.2.3固有特性测量Intrinsic/
5.2.4SubcomposeLayout/
5.3绘制/
5.3.1Canvas Composable/
5.3.2DrawModifier/
5.3.3使用平台原生Canvas/
5.3.4实战:Canvas绘制波浪加载/
5.4本章小结/
第6章 让页面动起来:动画/
6.1动画分类/
6.2高级别动画API/
6.2.1AnimatedVisibiliy/
6.2.2AnimatedContent/
6.2.3Crossfade/
6.2.4Modifier.animateContentSize/
6.3低级别动画API/
6.3.1animate*AsState/
6.3.2Animatable/
6.4Transition过渡动画/
6.4.1updateTransition/
6.4.2rememberInfiniteTransition/
6.5AnimationSpec动画规格/
6.5.1spring弹跳动画/
6.5.2tween补间动画/
6.5.3keyframes关键帧动画/
6.5.4repeatable循环动画/
6.5.5infiniteRepeatable无限循环动画/
6.5.6snap快闪动画/
6.5.7使用Easing控制动画节奏/
6.6AnimationVector动画矢量值/
6.6.1TwoWayConverter/
6.6.2自定义实现TwoWayConverter/
6.7实战:Compose实现骨架屏的动画
效果/
6.7.1定义背景色/
6.7.2为Brush添加动画/
6.7.3实现骨架屏布局/
6.8实战:Compose实现收藏按钮动画
效果/
6.8.1实现方式1:高级别API
(AnimatedContent)/
6.8.2实现方式2:低级别API
(updateTransition)/
6.9本章小结/
第7章 增进交互体验:手势处理/
7.1常用的手势处理Modifier/
7.1.1Clickable点击/
7.1.2CombinedClickable复合点击/
7.1.3Draggable拖动/
7.1.4Swipeable滑动/
7.1.5Transformable多点触控/
7.1.6Scrollable滚动/
7.1.7NestedScroll嵌套滑动/
7.2定制手势处理/
7.2.1使用PointerInput Modifier/
7.2.2手势事件方法作用域
awaitPointerEventScope/
7.3手势结合动画/
7.4本章小结/
第8章 为Compose添加页面导航/
8.1在Compose中使用Navigation/
8.1.1认识Jetpack Navigation/
8.1.2Navigation for Compose/
8.1.3导航时携带参数/
8.1.4Navigation搭配底部导航栏/
8.1.5嵌套导航图Nested Navigation
Graph/
8.1.6导航DeepLinks/
8.1.7Navigation对ViewModel的
支持/
8.2在Compose中使用Hilt/
8.2.1认识Dagger Hilt/
8.2.2在Compose中使用Hilt/
8.3本章小结/
第9章 Accompanist与第三方组件库/
9.1Accompanist/
9.1.1SystemUiController/
9.1.2Pager/
9.1.3SwipeRefresh/
9.1.4Flow Layouts/
9.1.5Insets/
9.2Lottie/
9.2.1配置依赖/
9.2.2Lottie动画资源/
9.2.3创建Lottie动画/
9.3Coil/
9.3.1配置依赖/
9.3.2AsyncImage/
9.3.3SubcomposeAsyncImage/
9.3.4AsyncImagePainter/
9.4本章小结/
第10章 项目实战:小游戏Tetris/
10.1整体项目架构/
10.2砖块矩阵(BrickMatrix)/
10.2.1drawBrick绘制砖块单元/
10.2.2drawMatrix绘制砖块
矩阵/
10.3下落中的砖块(Sprite)/
10.3.1Shape砖块组合形状/
10.3.2Sprite定义下落砖块/
10.3.3drawSprite绘制下落砖块/
10.4游戏机体(GameBody)/
10.4.1GameButton/
10.4.2组装Button、发送Action/
10.4.3Clicable:分发事件/
10.5订阅游戏状态(ViewState)/
10.5.1ViewState/
10.5.2Action/
10.5.3reduce/
10.6预览游戏画面/
第11章 项目实战:聊天应用Chatty/
11.1整体系统架构/
11.2登录注册模块/
11.3IM聊天模块/
11.3.1对话列表页/
11.3.2对话详情页/
11.4联系人模块/
11.4.1通讯录页/
11.4.2添加搜索页/
11.4.3二维码扫描页/
11.4.4陌生人信息页/
11.5用户信息模块/
11.5.1个人信息页/
11.5.2信息编辑页/
11.5.3联系人信息页/
11.6发现模块/
11.7适配暗黑主题/