Jetpack Compose:Android 全新 UI 編程
內容描述
Jetpack Compose是Google官方推出的用於構建原生界面的現代Android工具包,能夠幫助開發者用更少的代碼實現更多功能,輕松地構建精美且易於維護的高性能應用程序。本書系統、細致地講解了Compose,“手把手”教開發者如何在實際項目中使用Compose。首先介紹瞭如何搭建Compose的開發環境,以及編寫第一個Hello World程序,然後介紹了Compose的各類簡單或復雜的控件、佈局、視圖,接著介紹了Compose中的動畫和手勢操作以及如何與其他Jetpack庫搭配使用,最後帶領讀者從頭到尾完整地開發一個簡單的項目。
目錄大綱
前言
第 1章 先做好準備工作 1
1.1 Compose 簡介 1
1.2 搭建開發環境 2
1.2.1 在Windows上搭建開發環境 2
1.2.2 在macOS上搭建開發環境 8
1.2.3 將Compose添加到現有項目 9
1.3 溫習Kotlin 10
1.3.1 默認參數 11
1.3.2 高階函數 11
1.3.3 解構數據類 12
1.4 小結 13
第 2章 開啟Compose旅程 14
2.1 創建第 一個Compose應用程序 14
2.1.1 創建Hello World 14
2.1.2 運行項目 17
2.1.3 分析第 一個Compose應用程序 18
2.1.4 使用Preview 20
2.2 Compose編程思想 22
2.2.1 聲明式編程 22
2.2.2 可組合函數 22
2.2.3 重組 23
2.3 智能重組 24
2.3.1 控件按任何順序執行 24
2.3.2 控件並行運行 24
2.3.3 重組會跳過盡可能多的內容 26
2.3.4 重組是樂觀的操作 26
2.4 Compose狀態 27
2.4.1 Compose中的狀態 27
2.4.2 ViewModel和狀態 29
2.4.3 使用其他類型的狀態 30
2.5 Compose生命週期 31
2.5.1 可組合項的生命週期 31
2.5.2 狀態和效應用例 32
2.5.3 重啟效應 34
2.6 小結 35
第3章 使用Compose的簡單控件 36
3.1 Compose中的主題 36
3.1.1 主題設置 36
3.1.2 Color設置 37
3.1.3 字體設置 40
3.1.4 Shape設置 42
3.2 Compose中的“TextView ” 43
3.2.1 顯示文字 43
3.2.2 設置文字樣式 46
3.2.3 設置文字選擇 58
3.3 Compose中的“EditText” 61
3.3.1 輸入文字 61
3.3.2 顯示樣式 64
3.3.3 鍵盤選項 66
3.4 Compose中的“Button” 71
3.4.1 創建Button 72
3.4.2 Button源碼解析 72
3.5 Compose中的“ImageView” 77
3.5.1 簡單顯示 77
3.5.2 設置圖片樣式 79
3.5.3 顯示網絡圖片 82
3.6 Compose中的“ProgressBar” 84
3.6.1 使用圓形進度條 84
3.6.2 使用條形進度條 87
3.7 小結 90
第4章 了解Compose的佈局 91
4.1 豎向線性佈局——Column 91
4.1.1 Android View中的豎向線性佈局 92
4.1.2 Compose中的豎向線性佈局 93
4.1.3 Column源碼解析 94
4.2 橫向線性佈局——Row 99
4.2.1 簡單上手 100
4.2.2 Row源碼解析 101
4.3 幀佈局——Box 102
4.3.1 Box源碼解析 102
4.3.2 Box簡單上手 103
4.4 修飾符——Modifier 105
4.4.1 內邊距padding 105
4.4.2 設置控件的尺寸 107
4.4.3 Row和Column中的weight修飾符 108
4.4.4 給控件添加點擊事件 109
4.4.5 為控件添加圓角 109
4.5 腳手架——Scaffold 111
4.5.1 簡單了解 Scaffold 111
4.5.2 Scaffold抽屜實現 113
4.6 約束佈局——ConstraintLayout 114
4.7 小結 116
第5章 嘗試Compose的複雜控件 117
5.1 豎向列表LazyColumn 117
5.1.1 簡單使用 117
5.1.2 LazyListScope 119
5.1.3 多Type使用 122
5.1.4 粘性標題 124
5.1.5 回到頂部 128
5.2 橫向列表 LazyRow 129
5.2.1 簡單使用 129
5.2.2 LazyRow源碼解析 129
5.2.3 使用項鍵Key 130
5.3 網格列表LazyVerticalGrid 131
5.3.1 簡單使用 131
5.3.2 LazyVerticalGrid源碼解析 132
5.4 底部導航欄 136
5.4.1 簡單使用 136
5.4.2 BottomNavigation源碼解析 138
5.5 小結 140
第6章 嘗試Compose的自定義View 141
6.1 簡單認識Compose中的Canvas 141
6.1.1 Android View中的Canvas 141
6.1.2 Compose中的Canvas 142
6.2 使用Canvas繪製點 143
6.2.1 繪製點必須填寫的參數 143
6.2.2 繪製點可選的參數 146
6.2.3 使用Brush繪製漸變 149
6.3 使用Canvas繪製線和矩形 153
6.3.1 繪製線 153
6.3.2 繪製矩形 155
6.3.3 繪製圓角矩形 158
6.4 使用Canvas繪製圓及橢圓 159
6.4.1 繪製圓 160
6.4.2 繪製橢圓 161
6.5 使用 Canvas繪製圓弧、圖片及Path 163
6.5.1 繪製圓弧 163
6.5.2 繪製圖片 166
6.5.3 繪製Path 168
6.6 使用混合模式 172
6.6.1 Android View中的混合模式 173
6.6.1 Compose 中的混合模式 173
6.7 小結 175
第7章 動畫的點點滴滴 176
7.1 簡單使用動畫 176
7.1.1 可見性動畫 176
7.1.2 佈局大小動畫 181
7.1.3 佈局切換動畫 183
7.2 低級別動畫 185
7.2.1 屬性動畫 185
7.2.2 幀動畫 187
7.2.3 多動畫同步 188
7.2.4 多動畫重複 191
7.3 自定義動畫 192
7.3.1 動畫規格——AnimationSpec 192
7.3.2 矢量動畫——AnimationVector 195
7.4 Compose中的手勢 196
7.4.1 Compose中的點擊事件 196
7.4.2 Compose中的滾動事件 198
7.4.3 Compose中的嵌套滾動 200
7.4.4 拖動事件 202
7.4.5 滑動事件 204
7.5 小結 206
第8章 和其他Jetpack庫搭配使用 207
8.1 使用ViewModel 207
8.1.1 ViewModel的簡單使用 207
8.1.2 在Compose中使用ViewModel 211
8.1.3 Compose中ViewModel的進階使用 213
8.2 使用數據流 216
8.2.1 Flow的使用 216
8.2.2 RxJava的使用 217
8.3 使用Navigation實現頁面跳轉 218
8.3.1 簡單使用 218
8.3.2 傳遞單個參數 221
8.3.3 傳遞多個參數 223
8.3.4 解析參數類型 225
8.3.5 添加可選參數 227
8.3.6 添加實體類參數 229
8.4 使用Jetpack中的其他庫 231
8.4.1 使用Hilt進行依賴注入 231
8.4.2 使用Paging進行列表加載 232
8.5 小結 234
第9章 和老代碼搭配使用 235
9.1 在 Compose中使用Android View 235
9.1.1 簡單控件的使用 235
9.1.2 複雜控件使用 237
9.1.3 嵌入XML佈局 240
9.2 在Android View中使用Compose 243
9.2.1 在代碼中使用 243
9.2.2 在佈局中使用 246
9.3 Compose與現有頁面集成 248
9.3.1 創建Android View和Compose中通用的控件 248
9.3.2 Compose中的屏幕適配 251
9.4 小結 254
第 10章 Compose實戰——玩Android 255
10.1 搭建項目框架 255
10.1.1 創建項目 255
10.1.2 搭建項目架構 257
10.1.3 使用Navigation處理頁面跳轉 258
10.1.4 使用BottomNavigation創建主頁框架 260
10.2 實現項目首頁 262
10.2.1 實現首頁邏輯層 263
10.2.2 實現首頁UI層 269
10.3 實現項目頁面 277
10.3.1 實現項目頁面的邏輯層 278
10.3.2 實現項目頁面的UI層 281
10.4 實現其他頁面 284
10.4.1 實現文章詳情頁面 284
10.4.2 實現我的頁面 287
10.5 小結 290
作者介紹
朱江
現在聯想(北京)有限公司擔任Android開發工程師,從事Android開發工作多年,有豐富的項目經驗,負責及參與開發過多款移動應用程序,同時還是多個開源項目的作者。
2017年開始在CSDN發表Android技術相關博文,得到了大量網友的認可,榮獲CSDN認證博客專業人士,在2020年CSDN博客之星評選活動中進入全網前50名。