Jetpack Compose 從入門到實戰(zhàn)
定 價:¥109
中 教 價:¥67.58 (6.20折)
庫 存 數(shù): 0
叢 書 名:計算機前沿技術叢書
Jetpack Compose是谷歌推出的全新Android UI開發(fā)框架,它采用更為先進的聲明式開發(fā)思想,極大地提升了應用界面的開發(fā)效率。 Compose顛覆性的設計理念使得其學習曲線較為陡峭,因此本書對知識點進行了系統(tǒng)全面的整理和編排。全書共分11章,從寫第一行Hello World到實現(xiàn)一個全功能的產品級項目,幫助讀者規(guī)劃出了從入門到精通的*佳學習路徑。除了對知識點細致的講解之外,書中還穿插了大量源碼示例和*佳實踐,幫助讀者及時鞏固所學的內容,真正達到學以致用。本書適合Jetpack Compose初學者閱讀,同時書中的很多經驗總結,對于已經有一定基礎的開發(fā)者也同樣具有參考價值。
市面上的App種類繁多,但它們的設計目標都是一致的,即通過手機將信息更快、更好地呈現(xiàn)給用戶。Android自誕生至今的十余年間,雖然各種新技術、新架構層出不窮,但對于信息呈現(xiàn)的實現(xiàn)方式上仍然沿用著基于View的命令式UI開發(fā)方式。而這種命令式的代碼往往是Android應用架構中很多弊病的根源,而且隨著項目規(guī)模越來越大,病癥會越發(fā)明顯,讓信息更快、更好地呈現(xiàn)的產品目標越來越受到挑戰(zhàn)。Jetpack Compose的出現(xiàn)讓這一切有了轉機。作為Android平臺新一代UI開發(fā)框架,它直擊病灶,徹底摒棄傳統(tǒng)的命令式代碼,通過先進的聲明式UI幫助開發(fā)者用更少的代碼開發(fā)出更高質量的App,支撐了產品目標的達成。Compose在開發(fā)范式上的先進性讓我們無比看好它的未來。回想2017年谷歌發(fā)布Kotlinfirst到如今才短短數(shù)年,Kotlin就已經全面取代Java成為Android首選的開發(fā)語言,相信不用多久,我們也會迎來Composefirst的時代,屆時Compose必將全面取代View成為Android首選的UI開發(fā)標準。如果讀者想長期從事Android領域的研發(fā)或者是一個Android新技術的愛好者,那么從現(xiàn)在起,讓我們一起擁抱這門新技術吧!本書是Jetpack Compose初學者的良好入門教程,無論是否有Android傳統(tǒng)視圖的開發(fā)基礎都可以閱讀。但是希望讀者已經具備了一定的Kotlin開發(fā)經驗,不然閱讀本書中的代碼將十分吃力。書中也有不少進階的開發(fā)技巧和最佳實踐,對于已經有過Jetpack Compose使用經驗的開發(fā)者仍然具有參考意義。本書共11章,具體如下。 第1章介紹Compose的前世今生,讓讀者從源頭了解為什么需要學習這樣一門新技術,同時在這一章將運行第一個Hello World程序,帶領讀者正式開始學習之旅。 第2章將介紹Compose的各種常用的功能以及布局組件,這些組件覆蓋了絕大多數(shù)的開發(fā)需求,可以在完全脫離Android View的情況下開發(fā)各種樣式的UI界面。 第3章將手把手地帶讀者用Compose組件搭建功能完整的UI頁面。同時還會深入學習主題的使用方法和原理,以及Material Design的一些相關知識。 第4章將系統(tǒng)地學習Compose的狀態(tài)管理、重組、副作用等知識點,它們才是驅動UI變化的關鍵,讓使用Compose組件搭建的靜態(tài)頁面動起來。 第5章將了解Composable從組合到渲染再到屏幕的整個流程,并且可以通過相關API的學習,掌握自定義布局以及自定義繪制等高級用法,學會如何定制更復雜的UI效果。 第6章學習如何給UI添加炫酷的動畫。Compose提供了一系列豐富的動畫API,有的可以提供開箱即用的便利性,有的則提供了靈活多樣的定制能力,它們都可以幫助讀者化身為動畫達人。 第7章將學習常用的手勢處理、定制手勢處理、手勢結合動畫。Compose事件分發(fā)相關的API及其背后的實現(xiàn)原理〖DK〗。基于協(xié)程的事件處理API相較于傳統(tǒng)的事件處理方式更加簡潔〖DK〗。 第8章將學習如何基于Jetpack系列組件為Compose添加頁面導航和依賴注入等能力。這有助于讀者擺脫對Activity或Fragment的依賴,打造真正的Compose First項目。第9章將簡單了解一些常用三方庫對Compose的支持,特別是在Accompanist官方組件之外補充了不少新的工具,這些工具與基礎組件都將成為讀者日常開發(fā)中最得力的武器。 第10章和第11章都是實戰(zhàn)內容,編者將帶領讀者參與兩個不同類型產品的完整實現(xiàn),開發(fā)過程中需要對前面章節(jié)學習到的各種知識進行綜合運用。實戰(zhàn)項目有助于讀者鞏固已學到的內容,也能為讀者在生產環(huán)境中引入Compose建立決心和自信。本書在知識講解之外,也非常重視對實戰(zhàn)經驗的分享。書中穿插了大量類似經驗總結的小貼士,主要分為以下4種類型,輔助讀者更好地理解和運用學到的內容。正文內容之外補充知識點。比如關鍵詞的注解或者關聯(lián)知識點的介紹等。需要在實際開發(fā)中極力避免的事項。比如API的不合理使用,不推薦的實現(xiàn)方式等。開發(fā)出更高質量代碼的實戰(zhàn)經驗。所有最佳實踐會在本書的最后進行匯總,便于讀者進行查閱。本書鼓勵讀者對書中的內容親自動手實踐。讀者可以從配套的Github倉庫獲取書中出現(xiàn)的源碼,親自運行加深理解。倉庫地址為https://github.com/composemuseum/sampleapp/。由于作者水平有限,本書在編寫過程中難免出現(xiàn)錯誤和遺漏之處,還請讀者批評指正!
王鵬,谷歌開發(fā)者專家(GDE),字節(jié)跳動移動端架構師,CSDN、掘金知名博主,GDG 社區(qū)特邀講師,多次受邀在 Google DevFest、I/O Extended 等活動進行演講,國內首批一批接觸 Compose 的開發(fā)者,熱衷于 Android Jetpack 新技術的實踐與推廣。關振智, 北京郵電大學計算機系碩士,國內*早一批接觸 Compose 的開發(fā)者,Jetpack Compose 中文技術社區(qū)核心成員。掘金優(yōu)秀創(chuàng)作者, 谷歌開發(fā)者社區(qū)特邀嘉賓講師,產出的大量技術內容在社區(qū)廣受好評。熱愛技術,樂于分享。曾思淇,Jetpack Compose 中文技術社區(qū)主要維護者,開源技術愛好者,熱衷于 Compose 相關技術的研究與推廣,為社區(qū)貢獻了大量 Compose 入門教程,基于 Compose 開發(fā)過多個獨立 App。
前言第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搭建開發(fā)環(huán)境/1.2.1準備所需要的開發(fā)工具/1.2.2部署開發(fā)環(huán)境/1.3創(chuàng)建第一個Compose應用/1.3.1創(chuàng)建新的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實現(xiàn)原理/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章 狀態(tài)管理與重組/4.1狀態(tài)管理/4.1.1什么是狀態(tài)?/4.1.2單向數(shù)據(jù)流/4.1.3Stateless與Stateful/4.1.4狀態(tài)的定義/4.1.5狀態(tài)上提/4.1.6狀態(tài)的持久化與恢復/4.1.7使用ViewModel管理狀態(tài)/4.1.8LiveData、RxJava、Flow轉State/4.1.9狀態(tài)的分層管理/4.2重組與自動刷新/4.2.1智能的重組/4.2.2避免重組的陷阱/4.2.3如何確定重組范圍?/4.2.4優(yōu)化重組的性能/4.3生命周期與副作用/4.3.1Composable的生命周期/4.3.2Composable的副作用/4.3.3副作用API/4.3.4異步處理的副作用API/4.3.5狀態(tài)創(chuàng)建的副作用API/4.3.6副作用API的觀察參數(shù)/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實戰(zhàn):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動畫規(guī)格/6.5.1spring彈跳動畫/6.5.2tween補間動畫/6.5.3keyframes關鍵幀動畫/6.5.4repeatable循環(huán)動畫/6.5.5infiniteRepeatable無限循環(huán)動畫/6.5.6snap快閃動畫/6.5.7使用Easing控制動畫節(jié)奏/6.6AnimationVector動畫矢量值/6.6.1TwoWayConverter/6.6.2自定義實現(xiàn)TwoWayConverter/6.7實戰(zhàn):Compose實現(xiàn)骨架屏的動畫效果/6.7.1定義背景色/6.7.2為Brush添加動畫/6.7.3實現(xiàn)骨架屏布局/6.8實戰(zhàn):Compose實現(xiàn)收藏按鈕動畫效果/6.8.1實現(xiàn)方式1:高級別API(AnimatedContent)/6.8.2實現(xiàn)方式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導航時攜帶參數(shù)/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創(chuàng)建Lottie動畫/9.3Coil/9.3.1配置依賴/9.3.2AsyncImage/9.3.3SubcomposeAsyncImage/9.3.4AsyncImagePainter/9.4本章小結/第10章 項目實戰(zhàn):小游戲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、發(fā)送Action/10.4.3Clicable:分發(fā)事件/10.5訂閱游戲狀態(tài)(ViewState)/10.5.1ViewState/10.5.2Action/10.5.3reduce/10.6預覽游戲畫面/第11章 項目實戰(zhàn):聊天應用Chatty/11.1整體系統(tǒng)架構/11.2登錄注冊模塊/11.3IM聊天模塊/11.3.1對話列表頁/11.3.2對話詳情頁/11.4聯(lián)系人模塊/11.4.1通訊錄頁/11.4.2添加搜索頁/11.4.3二維碼掃描頁/11.4.4陌生人信息頁/11.5用戶信息模塊/11.5.1個人信息頁/11.5.2信息編輯頁/11.5.3聯(lián)系人信息頁/11.6發(fā)現(xiàn)模塊/11.7適配暗黑主題/