Jetpack Compose 实战:面向未来的大前端式客户端开发体验 郭效江 庞立
定 价:¥129
中 教 价:¥77.40 (6.00折)
库 存 数: 9
丛 书 名:计算机前沿技术丛书
《Jetpack Compose 实战:面向未来的大前端式客户端开发体验》从 Compose 项目背景介绍开始,到开发环境搭建、基础知识储备,再到基本使用方式、高阶用法展开讲解,结合示例,使读者从零开始逐步掌握 Compose 的使用。通过原理解析、最佳工程实践,以及创新性的 Compose Web3 实战项目,读者可更进一步深入了解和夯实 Compose 知识,循序渐进,由浅入深。《Jetpack Compose 实战:面向未来的大前端式客户端开发体验》为读者提供了全部案例的源代码下载和高清学习视频,读者可以直接扫描二维码观看。《Jetpack Compose 实战:面向未来的大前端式客户端开发体验》适合零基础或者有一定移动端开发经验,特别是 Android 开发经验的开发者、爱好者,另外也适合所有前端开发工程师、相关院校师生,以及所有对 Compose 声明式开发范式有兴趣的读者。
《Jetpack Compose 实战:面向未来的大前端式客户端开发体验》融合了移动端资深技术专家多年一线工作经验,通过Compose Web3 实战项目教你快速上手Compose,手把手步骤演练,结构紧凑、由浅入深,详尽的代码、图文讲解,配套资源丰富。书中操作部分配有二维码视频,使读者身临其境,迅速、深入地掌握各种经验和技巧。
Jetpack Compose(以下简称 Compose)是一种全新的声明式 UI 编程框架,可为以 Android 开发者为代表的移动端开发者更高效地构建现代化的应用。随着 Compose 的逐步成熟和普及,相信会有越来越多的开发者学习和使用这项技术。在这样的背景下,本书应运而生。本书的目的在于帮助读者在对 Compose 的产生背景有了解的基础下,快速入门和上手实践,并掌握一些高阶用法,以便搭建出丰富多彩的 UI 页面。本书采用直观易懂的方式讲解 Compose 的核心概念和技术,并提供了大量示例代码和图例等。最后还会通过一个较完整的 Compose Web3 相结合的实战项目来帮助读者深入理解和应用这些知识。本书的目标读者是客户端或前端开发者,以及对移动端开发有兴趣的学生等。本书中有少量对 Compose 和 Android 传统视图做对比的内容,如果你不是有过传统 Android 开发经验的开发者,或者对这样的对比无兴趣,可直接跳过这些内容。Compose 是以 Kotlin 语言为基础的,但如果读者不具备 Kotlin 知识,本书在第3章开头部分会有 Compose 方面 Kotlin 背景知识的储备内容。本书共分11章,其中:第1章整体介绍 Compose 项目。从产生背景、使命、优势,以及当前的发展阶段,到声明式 UI 的概念,再到与传统 Android View 体系的对比,最后介绍 Compose 的整体分层结构,比较全面地把 Compose 的整体样貌介绍给读者。第2章手把手带领读者一起搭建 Compose 的开发环境,介绍相关工具的使用,在此基础上带读者通过 Compose 版的Hello World来小试牛刀。第3章在前两章对 Compose 有了宏观认知并具备了开发条件之后,在系统性学习如何使用 Compose 进行开发之前,对学习 Compose 应该具备的 Kotlin 知识储备、Compose 的编程思想,以及什么是 Composable 函数、什么是副作用这些比较重要的知识储备进行了介绍。有了这些知识储备,后续的学习会更加顺利。第4章正式开始 Compose 框架系统学习,这一章着重讲解和演示了 Compose UI 编程中主题和基础控件的使用,这些基础控件是几乎每一个应用中都需要使用到的,如文字、按钮、图片。第5章单独讲解 Compose 的布局,包括布局使用的组件、布局修饰符、布局模型,以及自定义布局、自适应布局和约束布局等高阶使用,最后讲解了应用中常用的动态内容列表容器,以及其他 Material 的设计范式。第6章演示如何在 Compose 中通过绘制的方式自定义视图组件,可通过 Compose 中提供的画布和画笔,轻松实现多种多样的视图形式。第7章的内容是动画和手势。动画对于现代应用越来越重要,丰富生动的动画对于用户交互体验来说有锦上添花的效果。Compose 让动画变得简单易用,开发者可轻松实现多种多样的动画效果,也可以结合手势做出更多有创意又好用的功能。第8章开始属于进阶内容,在具备 Compose 开发知识之后,如果读者想更进一步知其所以然,可以通过本章内容对 Compose 的运行原理、智能重组的实现、修饰符和生命周期,以及 Compose 组件的渲染流程有更进一步的认知。Jetpack Compose 实战:面向未来的大前端式客户端开发体验第9章重点讲解了 Compose 中的数据和状态管理,介绍状态、数据流在 Compose 中的运作流程,以及如何合理地管理状态,可以帮助开发者设计出更加合理、无异常、高性能的技术架构。第10章从工程实践的角度,列举了 Compose 在项目中一般结合哪些工具包,特别是 Jetpack 中经典的工具包,在不同场景下这些工具的使用方式,以及如何在 Compose 中实现无障碍,如何做单元测试。第11章是实战项目,通过一个较完整的技术圈子App 的例子,复习巩固之前所学的Compose知识,包括常用 Composable 组件的使用、路由跳转、动画、视频播放、富文本等。值得一提的是,技术圈子 App 并不是传统意义上的 App,而是一款 DApp(Decentralized Application,去中心化 App)。因此本章除了带读者实践巩固 Compose 基础知识之外,还会为大家简单介绍 Web3 领域DApp的相关知识。由于 Compose 当前在移动端主要应用平台是 Android,因此本书也是以 Android 为基础进行讲解和演示的。但是 Compose Multiplatform 是可以跨平台的Android、Web、Desktop 都可支持, iOS 平台的 Compose 也刚刚发布了 Alpha 版本。幸运的是,在以 Android 为基础进行学习之后,其他平台需要极小的一些配置成本即可,可实现一码多端。或许读者认为当前大环境下,大多数企业不太想去尝试这样一种新的技术栈,这也确实是现实。笔者认为,这恰好是个先机,我们更应把握住,若等市场迫切需要时再学,也许就不占优势了。乔布斯曾在斯坦福那场著名的Stay Hungry, Stay Foolish演说中讲到关于自己的一个故事:他因觉得大学学习课程没有价值而辍学后,在里德学院找到了他更感兴趣的美术字课程,出于自己的直觉和好奇,他参加了这个课程,但在当时他并不知道这个课程将来会有什么用途。但正是因为这个机会,他学到了精美的字体设计,丰富了自己的艺术美感。回过头看,他在设计 Mac 系列产品的时候把这些知识和经验发挥得淋漓尽致,并且通过产品造福了无数人。所以,在面对一项看起来比较新潮的技术时,最好的办法就是去了解,拥抱它,或许你当前只是觉得它有趣,但是在不久的将来,它会在更广阔的范围内产生非常深远的影响。在书稿编写过程中,机械工业出版社的策划编辑李培培给出了非常专业详细的修改优化建议,从我们有这个题材想法开始,到最后得以出版,编辑老师们付出了巨大的努力。感谢他们的专业和付出。本书在创作过程中参考了大量的谷歌官方教程以及国内外先行者们的研究和分享,感谢巨人们提供的肩膀。另外作为本书第一作者,感谢第二作者庞立老师在工作和学业如此繁忙之际,还由于志趣相投,一起参与编写了本书核心的控件、布局、自定义视图、动画和手势等部分的内容。本书诞生的过程持续了很久,我作为第一作者在这不到两年时间里也经历了很多,有惊喜也有巨大的挑战,在此由衷地感谢家人们给予的无条件支持。本书在创作过程中尽可能地确保内容的准确性和实用性,但限于个人能力,错漏之处在所难免,欢迎广大读者批评指正。书中涉及的示例代码可以在以下链接中获取:https://github.com/guoxiaojiang/awesome_compose/tree/main/DemoApp实战项目可在如下链接中获取:https://github.com/guoxiaojiang/awesome_compose/tree/main/awesome_compose_techcircle
郭效江,美团,移动端资深开发工程师。长期深耕于移动端开发领域,关注移动互联网的技术迭代和变化。在移动开发领域从业十年,先后主导或参与了优酷视频、理想汽车智能驾仓系统、美团外卖等产品,涉及移动互联网和智能车联网。庞立,58同城原Android资深开发工程师,负责58同城Android应用基础框架的迭代开发和性能优化工作,持续关注和探索大前端技术的应用创新。有十年Android应用开发经验,先后在东软集团、理想汽车、58同城等国内知名软件和互联网公司任职,目前从事AIGC应用研发。在移动应用开发领域有丰富的开发和管理经验,获得了项目管理PMP认证。
第1章 认识Compose1.1Compose 是什么1.1.1Compose 产生背景1.1.2Compose 的使命1.1.3Compose 的优势1.1.4Compose 的发展阶段1.2声明式 UI1.2.1什么是命令式 UI1.2.2什么是声明式 UI1.3传统 View 与 Compose1.3.1庞大的 View 体系1.3.2传统 View 绘制和刷新流程1.3.3Compose 做了哪些突破1.3.4为什么选择 Compose1.3.5Compose 与 View 的关联1.4Compose 分层结构1.4.1运行时Runtime和编译器Compiler1.4.2与平台相关的其他层1.4.3架构分层使用原则1.4.4多平台支持1.5小结和训练第2章 Compose开发环境2.1Compose 开发环境的搭建2.1.1配置 Android Studio2.1.2新建 Compose 工程2.1.3在已有项目中添加 Compose 支持2.2Compose 工具2.2.1Compose 预览2.2.2Android Studio 快捷操作2.2.3实时更新预览2.2.4布局检查工具2.2.5动画检查工具2.3编写第一个 Compose 程序2.3.1用 Compose 实现Hello World2.3.2添加父容器并布局2.3.3修改主题和样式2.4小节和训练第3章 Compose知识储备3.1Kotlin 基础3.1.1默认参数值3.1.2高阶函数和 lambda 表达式3.1.3委托属性3.1.4解构声明3.1.5单例3.1.6类型安全的构建器和 DSL3.1.7协程3.1.8函数式编程3.2Compose 编程思想3.2.1声明性编程范式3.2.2Composable 函数3.2.3数据、事件和 UI3.2.4动态内容3.2.5重组3.3Composable 函数3.3.1Composable 函数的本质3.3.2Composable 函数的特点3.3.3Composable 函数的原理3.4副作用3.4.1Composable 生命周期3.4.2副作用 API和重启副作用3.5小结和训练第4章 Compose界面编程基础4.1Compose 的主题4.1.1设置主题4.1.2Material 主题4.1.3自定义主题4.2Compose 的文字控件4.2.1显示文字4.2.2文字的样式4.2.3与用户交互4.2.4编辑文字4.3Compose 的按钮控件4.3.1创建和使用按钮4.3.2Material 主题的按钮4.3.3自定义按钮4.4Compose 的图片控件4.4.1创建和使用图片控件4.4.2设置图片样式4.4.3加载网络图片4.5小结和训练第5章Compose的布局5.1Compose 布局基础5.1.1标准布局组件5.1.2布局中的修饰符5.1.3布局模型5.2Compose 布局进阶5.2.1自定义布局5.2.2自适应布局5.2.3约束布局5.3Compose 的复杂控件5.3.1列表5.3.2Scaffold 脚手架5.3.3Material 布局5.4小结和训练第6章 使用Compose绘制图形6.1Compose 绘制图形的基础6.1.1Compose 中的 Canvas6.1.2Compose 中的 Paint6.1.3图形混合模式6.2Compose 绘制点、线和矩形6.2.1使用 Canvas 绘制点6.2.2使用 Canvas 绘制线6.2.3使用 Canvas 绘制矩形6.3Compose 绘制圆、椭圆和弧形6.3.1使用 Canvas 绘制圆6.3.2使用 Canvas 绘制椭圆6.3.3使用 Canvas 绘制弧形6.4Compose 绘制图片和路径6.4.1使用 Canvas 绘制图片6.4.2使用 Canvas 绘制路径6.5小结和训练第7章 Compose的动画和手势7.1高级别动画API7.1.1可见性动画7.1.2布局内容动画7.1.3布局切换动画7.2低级别动画API7.2.1属性动画7.2.2帧动画7.2.3多动画管理API7.2.4无状态APIAnimation7.3动画的高级用法7.3.1自定义动画7.3.2手势和动画7.3.3多个动画组合7.4Compose 手势7.4.1Compose 点击事件7.4.2Compose 滚动事件7.4.3Compose 拖动事件7.4.4Compose 滑动事件7.4.5Compose 多点触控7.5小结和训练第8章 深入理解Compose UI体系8.1Compose运行原理简析8.1.1@Composable注解8.1.2Composer中的Gap Buffer8.1.3对比参数8.1.4发生重组8.2智能重组8.2.1重组的流程1MutableState的写入操作8.2.2重组的流程2通知MutableState写入操作给观察者8.2.3快照系统Snapshot8.2.4重组的范围8.3修饰符 Modifier8.3.1什么是修饰符8.3.2修饰符的实现原理8.3.3修饰符的作用范围8.4Composable 的生命周期8.4.1Composable 生命周期事件8.4.2Composable 生命周期事件监听8.4.3Composable 生命周期解析8.5Compose 渲染流程8.5.1三个阶段8.5.2分阶段读取状态8.5.3状态读取的优化8.5.4重组循环8.6小结和训练第9章 Compose数据和状态管理9.1什么是状态9.1.1应用中的状态定义9.1.2Compose 中的状态和事件9.1.3有状态和无状态的可组合项9.2单向数据流9.2.1状态提升9.2.2什么是单向数据流9.2.3使用单向数据流管理状态9.3Compose 状态存储和恢复9.3.1使用 remember 存储状态9.3.2remember 的作用范围9.3.3使用 rememberSaveable 存储与恢复状态9.3.4remember 和 rememberSaveable 原理探究9.4Compose 中的状态管理9.4.1管理状态的一般原则9.4.2直接使用 Composable 管理状态9.4.3使用封装类单独管理状态StateHolder9.4.4使用 ViewModel 管理状态9.5限定数据作用域工具CompositionLocal9.5.1CompositionLocal 介绍9.5.2compositionLocalOf 与 staticCompositionLocalOf 的区别