新書推薦:
《
万千教育学前·透视学前儿童的发展:解析幼儿教师常问的那些问题
》
售價:HK$
58.2
《
慈悲与玫瑰
》
售價:HK$
87.4
《
启蒙的辩证:哲学的片简(法兰克福学派哲学经典,批判理论重要文本)
》
售價:HK$
76.2
《
云中记
》
售價:HK$
76.2
《
中国古代妇女生活(中国古代生活丛书)
》
售價:HK$
47.0
《
你的认知正在阻碍你
》
售價:HK$
65.0
《
我们身边的小鸟朋友:手绘观鸟笔记
》
售價:HK$
78.2
《
拯救免疫失衡
》
售價:HK$
55.8
|
編輯推薦: |
《Jetpack Compose 实战:面向未来的大前端式客户端开发体验》融合了移动端资深技术专家多年一线工作经验,通过Compose Web3 实战项目教你快速上手Compose,手把手步骤演练,结构紧凑、由浅入深,详尽的代码、图文讲解,配套资源丰富。书中操作部分配有二维码视频,使读者身临其境,迅速、深入地掌握各种经验和技巧。
|
內容簡介: |
《Jetpack Compose 实战:面向未来的大前端式客户端开发体验》从 Compose 项目背景介绍开始,到开发环境搭建、基础知识储备,再到基本使用方式、高阶用法展开讲解,结合示例,使读者从零开始逐步掌握 Compose 的使用。通过原理解析、最佳工程实践,以及创新性的 Compose Web3 实战项目,读者可更进一步深入了解和夯实 Compose 知识,循序渐进,由浅入深。
《Jetpack Compose 实战:面向未来的大前端式客户端开发体验》为读者提供了全部案例的源代码下载和高清学习视频,读者可以直接扫描二维码观看。
《Jetpack Compose 实战:面向未来的大前端式客户端开发体验》适合零基础或者有一定移动端开发经验,特别是 Android 开发经验的开发者、爱好者,另外也适合所有前端开发工程师、相关院校师生,以及所有对 Compose 声明式开发范式有兴趣的读者。
|
關於作者: |
郭效江,美团,移动端资深开发工程师。长期深耕于移动端开发领域,关注移动互联网的技术迭代和变化。在移动开发领域从业十年,先后主导或参与了优酷视频、理想汽车智能驾仓系统、美团外卖等产品,涉及移动互联网和智能车联网。
庞立,58同城原Android资深开发工程师,负责58同城Android应用基础框架的迭代开发和性能优化工作,持续关注和探索大前端技术的应用创新。有十年Android应用开发经验,先后在东软集团、理想汽车、58同城等国内知名软件和互联网公司任职,目前从事AIGC应用研发。在移动应用开发领域有丰富的开发和管理经验,获得了项目管理PMP认证。
|
目錄:
|
第1章 认识Compose
1.1Compose 是什么
1.1.1Compose 产生背景
1.1.2Compose 的使命
1.1.3Compose 的优势
1.1.4Compose 的发展阶段
1.2声明式 UI
1.2.1什么是命令式 UI
1.2.2什么是声明式 UI
1.3传统 View 与 Compose
1.3.1庞大的 View 体系
1.3.2传统 View 绘制和刷新流程
1.3.3Compose 做了哪些突破
1.3.4为什么选择 Compose
1.3.5Compose 与 View 的关联
1.4Compose 分层结构
1.4.1运行时Runtime和编译器Compiler
1.4.2与平台相关的其他层
1.4.3架构分层使用原则
1.4.4多平台支持
1.5小结和训练
第2章 Compose开发环境
2.1Compose 开发环境的搭建
2.1.1配置 Android Studio
2.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 World”
2.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类型安全的构建器和 DSL
3.1.7协程
3.1.8函数式编程
3.2Compose 编程思想
3.2.1声明性编程范式
3.2.2Composable 函数
3.2.3数据、事件和 UI
3.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 中的 Canvas
6.1.2Compose 中的 Paint
6.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高级别动画API
7.1.1可见性动画
7.1.2布局内容动画
7.1.3布局切换动画
7.2低级别动画API
7.2.1属性动画
7.2.2帧动画
7.2.3多动画管理API
7.2.4无状态API——Animation
7.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 Buffer
8.1.3对比参数
8.1.4发生重组
8.2智能重组
8.2.1重组的流程1——MutableState的写入操作
8.2.2重组的流程2——通知MutableState写入操作给观察者
8.2.3快照系统——Snapshot
8.2.4重组的范围
8.3修饰符 Modifier
8.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使用封装类单独管理状态——StateHolder
9.4.4使用 ViewModel 管理状态
9.5限定数据作用域工具CompositionLocal
9.5.1CompositionLocal 介绍
9.5.2compositionLocalOf 与 staticCompositionLocalOf 的区别
|
內容試閱:
|
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
|
|