Jetpack Compose 實(shí)戰(zhàn):面向未來的大前端式客戶端開發(fā)體驗(yàn) 郭效江 龐立
定 價:¥129
中 教 價:¥72.24 (5.60折)
庫 存 數(shù): 5
叢 書 名:計算機(jī)前沿技術(shù)叢書
《Jetpack Compose 實(shí)戰(zhàn):面向未來的大前端式客戶端開發(fā)體驗(yàn)》從 Compose 項(xiàng)目背景介紹開始,到開發(fā)環(huán)境搭建、基礎(chǔ)知識儲備,再到基本使用方式、高階用法展開講解,結(jié)合示例,使讀者從零開始逐步掌握 Compose 的使用。通過原理解析、最佳工程實(shí)踐,以及創(chuàng)新性的 Compose Web3 實(shí)戰(zhàn)項(xiàng)目,讀者可更進(jìn)一步深入了解和夯實(shí) Compose 知識,循序漸進(jìn),由淺入深。《Jetpack Compose 實(shí)戰(zhàn):面向未來的大前端式客戶端開發(fā)體驗(yàn)》為讀者提供了全部案例的源代碼下載和高清學(xué)習(xí)視頻,讀者可以直接掃描二維碼觀看。《Jetpack Compose 實(shí)戰(zhàn):面向未來的大前端式客戶端開發(fā)體驗(yàn)》適合零基礎(chǔ)或者有一定移動端開發(fā)經(jīng)驗(yàn),特別是 Android 開發(fā)經(jīng)驗(yàn)的開發(fā)者、愛好者,另外也適合所有前端開發(fā)工程師、相關(guān)院校師生,以及所有對 Compose 聲明式開發(fā)范式有興趣的讀者。
《Jetpack Compose 實(shí)戰(zhàn):面向未來的大前端式客戶端開發(fā)體驗(yàn)》融合了移動端資深技術(shù)專家多年一線工作經(jīng)驗(yàn),通過Compose Web3 實(shí)戰(zhàn)項(xiàng)目教你快速上手Compose,手把手步驟演練,結(jié)構(gòu)緊湊、由淺入深,詳盡的代碼、圖文講解,配套資源豐富。書中操作部分配有二維碼視頻,使讀者身臨其境,迅速、深入地掌握各種經(jīng)驗(yàn)和技巧。
Jetpack Compose(以下簡稱 Compose)是一種全新的聲明式 UI 編程框架,可為以 Android 開發(fā)者為代表的移動端開發(fā)者更高效地構(gòu)建現(xiàn)代化的應(yīng)用。隨著 Compose 的逐步成熟和普及,相信會有越來越多的開發(fā)者學(xué)習(xí)和使用這項(xiàng)技術(shù)。在這樣的背景下,本書應(yīng)運(yùn)而生。本書的目的在于幫助讀者在對 Compose 的產(chǎn)生背景有了解的基礎(chǔ)下,快速入門和上手實(shí)踐,并掌握一些高階用法,以便搭建出豐富多彩的 UI 頁面。本書采用直觀易懂的方式講解 Compose 的核心概念和技術(shù),并提供了大量示例代碼和圖例等。最后還會通過一個較完整的 Compose Web3 相結(jié)合的實(shí)戰(zhàn)項(xiàng)目來幫助讀者深入理解和應(yīng)用這些知識。本書的目標(biāo)讀者是客戶端或前端開發(fā)者,以及對移動端開發(fā)有興趣的學(xué)生等。本書中有少量對 Compose 和 Android 傳統(tǒng)視圖做對比的內(nèi)容,如果你不是有過傳統(tǒng) Android 開發(fā)經(jīng)驗(yàn)的開發(fā)者,或者對這樣的對比無興趣,可直接跳過這些內(nèi)容。Compose 是以 Kotlin 語言為基礎(chǔ)的,但如果讀者不具備 Kotlin 知識,本書在第3章開頭部分會有 Compose 方面 Kotlin 背景知識的儲備內(nèi)容。本書共分11章,其中:第1章整體介紹 Compose 項(xiàng)目。從產(chǎn)生背景、使命、優(yōu)勢,以及當(dāng)前的發(fā)展階段,到聲明式 UI 的概念,再到與傳統(tǒng) Android View 體系的對比,最后介紹 Compose 的整體分層結(jié)構(gòu),比較全面地把 Compose 的整體樣貌介紹給讀者。第2章手把手帶領(lǐng)讀者一起搭建 Compose 的開發(fā)環(huán)境,介紹相關(guān)工具的使用,在此基礎(chǔ)上帶讀者通過 Compose 版的Hello World來小試牛刀。第3章在前兩章對 Compose 有了宏觀認(rèn)知并具備了開發(fā)條件之后,在系統(tǒng)性學(xué)習(xí)如何使用 Compose 進(jìn)行開發(fā)之前,對學(xué)習(xí) Compose 應(yīng)該具備的 Kotlin 知識儲備、Compose 的編程思想,以及什么是 Composable 函數(shù)、什么是副作用這些比較重要的知識儲備進(jìn)行了介紹。有了這些知識儲備,后續(xù)的學(xué)習(xí)會更加順利。第4章正式開始 Compose 框架系統(tǒng)學(xué)習(xí),這一章著重講解和演示了 Compose UI 編程中主題和基礎(chǔ)控件的使用,這些基礎(chǔ)控件是幾乎每一個應(yīng)用中都需要使用到的,如文字、按鈕、圖片。第5章單獨(dú)講解 Compose 的布局,包括布局使用的組件、布局修飾符、布局模型,以及自定義布局、自適應(yīng)布局和約束布局等高階使用,最后講解了應(yīng)用中常用的動態(tài)內(nèi)容列表容器,以及其他 Material 的設(shè)計范式。第6章演示如何在 Compose 中通過繪制的方式自定義視圖組件,可通過 Compose 中提供的畫布和畫筆,輕松實(shí)現(xiàn)多種多樣的視圖形式。第7章的內(nèi)容是動畫和手勢。動畫對于現(xiàn)代應(yīng)用越來越重要,豐富生動的動畫對于用戶交互體驗(yàn)來說有錦上添花的效果。Compose 讓動畫變得簡單易用,開發(fā)者可輕松實(shí)現(xiàn)多種多樣的動畫效果,也可以結(jié)合手勢做出更多有創(chuàng)意又好用的功能。第8章開始屬于進(jìn)階內(nèi)容,在具備 Compose 開發(fā)知識之后,如果讀者想更進(jìn)一步知其所以然,可以通過本章內(nèi)容對 Compose 的運(yùn)行原理、智能重組的實(shí)現(xiàn)、修飾符和生命周期,以及 Compose 組件的渲染流程有更進(jìn)一步的認(rèn)知。Jetpack Compose 實(shí)戰(zhàn):面向未來的大前端式客戶端開發(fā)體驗(yàn)第9章重點(diǎn)講解了 Compose 中的數(shù)據(jù)和狀態(tài)管理,介紹狀態(tài)、數(shù)據(jù)流在 Compose 中的運(yùn)作流程,以及如何合理地管理狀態(tài),可以幫助開發(fā)者設(shè)計出更加合理、無異常、高性能的技術(shù)架構(gòu)。第10章從工程實(shí)踐的角度,列舉了 Compose 在項(xiàng)目中一般結(jié)合哪些工具包,特別是 Jetpack 中經(jīng)典的工具包,在不同場景下這些工具的使用方式,以及如何在 Compose 中實(shí)現(xiàn)無障礙,如何做單元測試。第11章是實(shí)戰(zhàn)項(xiàng)目,通過一個較完整的技術(shù)圈子App 的例子,復(fù)習(xí)鞏固之前所學(xué)的Compose知識,包括常用 Composable 組件的使用、路由跳轉(zhuǎn)、動畫、視頻播放、富文本等。值得一提的是,技術(shù)圈子 App 并不是傳統(tǒng)意義上的 App,而是一款 DApp(Decentralized Application,去中心化 App)。因此本章除了帶讀者實(shí)踐鞏固 Compose 基礎(chǔ)知識之外,還會為大家簡單介紹 Web3 領(lǐng)域DApp的相關(guān)知識。由于 Compose 當(dāng)前在移動端主要應(yīng)用平臺是 Android,因此本書也是以 Android 為基礎(chǔ)進(jìn)行講解和演示的。但是 Compose Multiplatform 是可以跨平臺的Android、Web、Desktop 都可支持, iOS 平臺的 Compose 也剛剛發(fā)布了 Alpha 版本。幸運(yùn)的是,在以 Android 為基礎(chǔ)進(jìn)行學(xué)習(xí)之后,其他平臺需要極小的一些配置成本即可,可實(shí)現(xiàn)一碼多端。或許讀者認(rèn)為當(dāng)前大環(huán)境下,大多數(shù)企業(yè)不太想去嘗試這樣一種新的技術(shù)棧,這也確實(shí)是現(xiàn)實(shí)。筆者認(rèn)為,這恰好是個先機(jī),我們更應(yīng)把握住,若等市場迫切需要時再學(xué),也許就不占優(yōu)勢了。喬布斯曾在斯坦福那場著名的Stay Hungry, Stay Foolish演說中講到關(guān)于自己的一個故事:他因覺得大學(xué)學(xué)習(xí)課程沒有價值而輟學(xué)后,在里德學(xué)院找到了他更感興趣的美術(shù)字課程,出于自己的直覺和好奇,他參加了這個課程,但在當(dāng)時他并不知道這個課程將來會有什么用途。但正是因?yàn)檫@個機(jī)會,他學(xué)到了精美的字體設(shè)計,豐富了自己的藝術(shù)美感。回過頭看,他在設(shè)計 Mac 系列產(chǎn)品的時候把這些知識和經(jīng)驗(yàn)發(fā)揮得淋漓盡致,并且通過產(chǎn)品造福了無數(shù)人。所以,在面對一項(xiàng)看起來比較新潮的技術(shù)時,最好的辦法就是去了解,擁抱它,或許你當(dāng)前只是覺得它有趣,但是在不久的將來,它會在更廣闊的范圍內(nèi)產(chǎn)生非常深遠(yuǎn)的影響。在書稿編寫過程中,機(jī)械工業(yè)出版社的策劃編輯李培培給出了非常專業(yè)詳細(xì)的修改優(yōu)化建議,從我們有這個題材想法開始,到最后得以出版,編輯老師們付出了巨大的努力。感謝他們的專業(yè)和付出。本書在創(chuàng)作過程中參考了大量的谷歌官方教程以及國內(nèi)外先行者們的研究和分享,感謝巨人們提供的肩膀。另外作為本書第一作者,感謝第二作者龐立老師在工作和學(xué)業(yè)如此繁忙之際,還由于志趣相投,一起參與編寫了本書核心的控件、布局、自定義視圖、動畫和手勢等部分的內(nèi)容。本書誕生的過程持續(xù)了很久,我作為第一作者在這不到兩年時間里也經(jīng)歷了很多,有驚喜也有巨大的挑戰(zhàn),在此由衷地感謝家人們給予的無條件支持。本書在創(chuàng)作過程中盡可能地確保內(nèi)容的準(zhǔn)確性和實(shí)用性,但限于個人能力,錯漏之處在所難免,歡迎廣大讀者批評指正。書中涉及的示例代碼可以在以下鏈接中獲取:https://github.com/guoxiaojiang/awesome_compose/tree/main/DemoApp實(shí)戰(zhàn)項(xiàng)目可在如下鏈接中獲取:https://github.com/guoxiaojiang/awesome_compose/tree/main/awesome_compose_techcircle
郭效江,美團(tuán),移動端資深開發(fā)工程師。長期深耕于移動端開發(fā)領(lǐng)域,關(guān)注移動互聯(lián)網(wǎng)的技術(shù)迭代和變化。在移動開發(fā)領(lǐng)域從業(yè)十年,先后主導(dǎo)或參與了優(yōu)酷視頻、理想汽車智能駕倉系統(tǒng)、美團(tuán)外賣等產(chǎn)品,涉及移動互聯(lián)網(wǎng)和智能車聯(lián)網(wǎng)。龐立,58同城原Android資深開發(fā)工程師,負(fù)責(zé)58同城Android應(yīng)用基礎(chǔ)框架的迭代開發(fā)和性能優(yōu)化工作,持續(xù)關(guān)注和探索大前端技術(shù)的應(yīng)用創(chuàng)新。有十年Android應(yīng)用開發(fā)經(jīng)驗(yàn),先后在東軟集團(tuán)、理想汽車、58同城等國內(nèi)知名軟件和互聯(lián)網(wǎng)公司任職,目前從事AIGC應(yīng)用研發(fā)。在移動應(yīng)用開發(fā)領(lǐng)域有豐富的開發(fā)和管理經(jīng)驗(yàn),獲得了項(xiàng)目管理PMP認(rèn)證。
第1章 認(rèn)識Compose1.1Compose 是什么1.1.1Compose 產(chǎn)生背景1.1.2Compose 的使命1.1.3Compose 的優(yōu)勢1.1.4Compose 的發(fā)展階段1.2聲明式 UI1.2.1什么是命令式 UI1.2.2什么是聲明式 UI1.3傳統(tǒng) View 與 Compose1.3.1龐大的 View 體系1.3.2傳統(tǒng) View 繪制和刷新流程1.3.3Compose 做了哪些突破1.3.4為什么選擇 Compose1.3.5Compose 與 View 的關(guān)聯(lián)1.4Compose 分層結(jié)構(gòu)1.4.1運(yùn)行時Runtime和編譯器Compiler1.4.2與平臺相關(guān)的其他層1.4.3架構(gòu)分層使用原則1.4.4多平臺支持1.5小結(jié)和訓(xùn)練第2章 Compose開發(fā)環(huán)境2.1Compose 開發(fā)環(huán)境的搭建2.1.1配置 Android Studio2.1.2新建 Compose 工程2.1.3在已有項(xiàng)目中添加 Compose 支持2.2Compose 工具2.2.1Compose 預(yù)覽2.2.2Android Studio 快捷操作2.2.3實(shí)時更新預(yù)覽2.2.4布局檢查工具2.2.5動畫檢查工具2.3編寫第一個 Compose 程序2.3.1用 Compose 實(shí)現(xiàn)Hello World2.3.2添加父容器并布局2.3.3修改主題和樣式2.4小節(jié)和訓(xùn)練第3章 Compose知識儲備3.1Kotlin 基礎(chǔ)3.1.1默認(rèn)參數(shù)值3.1.2高階函數(shù)和 lambda 表達(dá)式3.1.3委托屬性3.1.4解構(gòu)聲明3.1.5單例3.1.6類型安全的構(gòu)建器和 DSL3.1.7協(xié)程3.1.8函數(shù)式編程3.2Compose 編程思想3.2.1聲明性編程范式3.2.2Composable 函數(shù)3.2.3數(shù)據(jù)、事件和 UI3.2.4動態(tài)內(nèi)容3.2.5重組3.3Composable 函數(shù)3.3.1Composable 函數(shù)的本質(zhì)3.3.2Composable 函數(shù)的特點(diǎn)3.3.3Composable 函數(shù)的原理3.4副作用3.4.1Composable 生命周期3.4.2副作用 API和重啟副作用3.5小結(jié)和訓(xùn)練第4章 Compose界面編程基礎(chǔ)4.1Compose 的主題4.1.1設(shè)置主題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創(chuàng)建和使用按鈕4.3.2Material 主題的按鈕4.3.3自定義按鈕4.4Compose 的圖片控件4.4.1創(chuàng)建和使用圖片控件4.4.2設(shè)置圖片樣式4.4.3加載網(wǎng)絡(luò)圖片4.5小結(jié)和訓(xùn)練第5章Compose的布局5.1Compose 布局基礎(chǔ)5.1.1標(biāo)準(zhǔn)布局組件5.1.2布局中的修飾符5.1.3布局模型5.2Compose 布局進(jìn)階5.2.1自定義布局5.2.2自適應(yīng)布局5.2.3約束布局5.3Compose 的復(fù)雜控件5.3.1列表5.3.2Scaffold 腳手架5.3.3Material 布局5.4小結(jié)和訓(xùn)練第6章 使用Compose繪制圖形6.1Compose 繪制圖形的基礎(chǔ)6.1.1Compose 中的 Canvas6.1.2Compose 中的 Paint6.1.3圖形混合模式6.2Compose 繪制點(diǎn)、線和矩形6.2.1使用 Canvas 繪制點(diǎn)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小結(jié)和訓(xùn)練第7章 Compose的動畫和手勢7.1高級別動畫API7.1.1可見性動畫7.1.2布局內(nèi)容動畫7.1.3布局切換動畫7.2低級別動畫API7.2.1屬性動畫7.2.2幀動畫7.2.3多動畫管理API7.2.4無狀態(tài)APIAnimation7.3動畫的高級用法7.3.1自定義動畫7.3.2手勢和動畫7.3.3多個動畫組合7.4Compose 手勢7.4.1Compose 點(diǎn)擊事件7.4.2Compose 滾動事件7.4.3Compose 拖動事件7.4.4Compose 滑動事件7.4.5Compose 多點(diǎn)觸控7.5小結(jié)和訓(xùn)練第8章 深入理解Compose UI體系8.1Compose運(yùn)行原理簡析8.1.1@Composable注解8.1.2Composer中的Gap Buffer8.1.3對比參數(shù)8.1.4發(fā)生重組8.2智能重組8.2.1重組的流程1MutableState的寫入操作8.2.2重組的流程2通知MutableState寫入操作給觀察者8.2.3快照系統(tǒng)Snapshot8.2.4重組的范圍8.3修飾符 Modifier8.3.1什么是修飾符8.3.2修飾符的實(shí)現(xiàn)原理8.3.3修飾符的作用范圍8.4Composable 的生命周期8.4.1Composable 生命周期事件8.4.2Composable 生命周期事件監(jiān)聽8.4.3Composable 生命周期解析8.5Compose 渲染流程8.5.1三個階段8.5.2分階段讀取狀態(tài)8.5.3狀態(tài)讀取的優(yōu)化8.5.4重組循環(huán)8.6小結(jié)和訓(xùn)練第9章 Compose數(shù)據(jù)和狀態(tài)管理9.1什么是狀態(tài)9.1.1應(yīng)用中的狀態(tài)定義9.1.2Compose 中的狀態(tài)和事件9.1.3有狀態(tài)和無狀態(tài)的可組合項(xiàng)9.2單向數(shù)據(jù)流9.2.1狀態(tài)提升9.2.2什么是單向數(shù)據(jù)流9.2.3使用單向數(shù)據(jù)流管理狀態(tài)9.3Compose 狀態(tài)存儲和恢復(fù)9.3.1使用 remember 存儲狀態(tài)9.3.2remember 的作用范圍9.3.3使用 rememberSaveable 存儲與恢復(fù)狀態(tài)9.3.4remember 和 rememberSaveable 原理探究9.4Compose 中的狀態(tài)管理9.4.1管理狀態(tài)的一般原則9.4.2直接使用 Composable 管理狀態(tài)9.4.3使用封裝類單獨(dú)管理狀態(tài)StateHolder9.4.4使用 ViewModel 管理狀態(tài)9.5限定數(shù)據(jù)作用域工具CompositionLocal9.5.1CompositionLocal 介紹9.5.2compositionLocalOf 與 staticCompositionLocalOf 的區(qū)別