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 系列產品的時候把這些知識和經驗發揮得淋漓盡致,并且通過產品造福了無數人。所以,在面對一項看起來比較新潮的技術時,最好的辦法就是去了解,擁抱它,或許你當前只是覺得它有趣,但是在不久的將來,它會在更廣闊的范圍內產生非常深遠的影響。在書稿編寫過程中,機械工業出版社的策劃編輯李培培給出了非常專業詳細的修改優化建議,從我們有這個題材想法開始,到最后得以出版,編輯老師們付出了巨大的努力。感謝他們的專業和付出。本書在創作過程中參考了大量的谷歌官方教程以及國內外先行者們的研究和分享,感謝巨人們提供的肩膀。另外作為本書第一作者,感謝第二作者龐立老師在工作和學業如此繁忙之際,還由于志趣相投,一起參與編寫了本書核心的控件、布局、自定義視圖、動畫和手勢等部分的內容。本書誕生的過程持續了很久,我作為第一作者在這不到兩年時間里也經歷了很多,有驚喜也有巨大的挑戰,在此由衷地感謝家人們給予的無條件支持。本書在創作過程中盡可能地確保內容的準確性和實用性,但限于個人能力,錯漏之處在所難免,歡迎廣大讀者批評指正。書中涉及的示例代碼可以在以下鏈接中獲。篽ttps://github.com/guoxiaojiang/awesome_compose/tree/main/DemoApp實戰項目可在如下鏈接中獲。篽ttps://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 的區別