Android編程指南

Android編程指南

《Android編程指南》是2021年人民郵電出版社出版的圖書。

基本介紹

  • 中文名:Android編程指南
  • 作者:[美]克莉絲汀·馬西卡諾(Kristin Marsicano),[美]布賴恩·加
  • 出版時間:2021年
  • 出版社:人民郵電出版社
  • ISBN:9787115559647
  • 開本:128 開
  • 裝幀:平裝-膠訂
內容簡介,作者簡介,目 錄,

內容簡介

Big Nerd Ranch是美國一家專業的移動開發技術培訓機構。本書主要以其Android訓練營教學課程為基礎,融合了幾位作者多年的心得體會,是一本完全面向實戰的Android 編程權威指南。全書共32章,詳細介紹了七個Android套用的開發過程。通過這些精心設計的套用,讀者可掌握很多重要的理論知識和開發技巧,獲得寶貴的開發經驗。第4版較之前版本做了重大更新,每一章的內容都做了修改;同時,開發語言從Java換成了Kotlin,全面引入了Android Jetpack組件庫並開始使用第三方庫。

作者簡介

克莉絲汀·馬西卡諾(Kristin Marsicano),Big Nerd Ranch高級工程經理、講師、Android開發者。她對學習、套用開發以及二者的交集充滿熱情。閒暇時,克莉絲汀喜歡跑步、彈尤克里里,或與孩子一起搭樂高積木。 布賴恩·加德納(Brian Gardner),Big Nerd Ranch講師、Android開發者。他是個學習狂,目前正在深入研究的Android庫,此外還在攻讀喬治亞理工學院的機器學習碩士學位。閒暇時,布賴恩喜歡繪畫、烘焙和旅行。 比爾·菲利普斯(Bill Phillips),Instagram軟體工程師,前Big Nerd Ranch講師。他與人合作開發了廣受好評的Android訓練營培訓課程,並為之編寫教材(包括本書的第1版和第2版)。比爾非常懂得生活的平衡之道,能把工作、音樂創作和音頻硬體項目這些事安排得井井有條。 克里斯·斯圖爾特(Chris Stewart),Big Nerd Ranch工程副總裁,前Android訓練營講師。他致力於不斷取得進步和精進技能。工作之餘,克里斯喜歡遠足和旅行。 【譯者簡介】 畢業於華東理工大學。軟體開發及項目管理者,擁有十餘年軟體開發及項目管理經驗。除了翻譯本書前三版之外,另譯有《Kotlin編程權威指南》。

目 錄

第 1 章 Android開發初體驗 1
1.1 Android開發基礎 2
1.2 創建Android項目 2
1.3 Android Studio使用導航 6
1.4 用戶界面設計 7
1.4.1 視圖層級結構 12
1.4.2 部件屬性 12
1.4.3 創建字元串資源 13
1.4.4 預覽布局 14
1.5 從布局XML到視圖對象 16
1.6 部件的實際套用 19
1.6.1 引用部件 20
1.6.2 設定監聽器 20
1.7 創建提示訊息 22
1.8 使用模擬器運行套用 24
1.9 深入學習:Android編譯過程 26
1.10 關於挑戰練習 28
1.11 挑戰練習:定製toast訊息 28
第 2 章 Android與MVC設計模式 29
2.1 創建新類 30
2.2 Android與MVC設計模式 31
2.3 更新視圖層 33
2.4 更新控制器層 35
2.5 添加圖示資源 38
2.5.1 向項目中添加資源 39
2.5.2 在XML檔案中引用資源 41
2.6 螢幕像素密度 41
2.7 在物理設備上運行套用 43
2.8 挑戰練習:為TextView添加監聽器 45
2.9 挑戰練習:添加後退按鈕 45
2.10 挑戰練習:從按鈕到圖示按鈕 46
第 3 章 activity的生命周期 48
3.1 旋轉GeoQuiz套用 48
3.2 activity狀態與生命周期回調 49
3.3 日誌跟蹤理解activity生命周期 51
3.3.1 輸出日誌信息 51
3.3.2 使用LogCat 53
3.4 activity生命周期如何回響用戶操作 54
3.4.1 暫時離開activity 54
3.4.2 結束使用activity 57
3.4.3 旋轉activity 58
3.5 設備配置改變與activity生命周期 58
3.6 深入學習:UI刷新與多視窗模式 62
3.7 深入學習:日誌記錄的級別與函式 62
3.8 挑戰練習:禁止一題多答 63
3.9 挑戰練習:答題評分 63
第 4 章 UI狀態的保存與恢復 64
4.1 引入ViewModel依賴 64
4.2 添加ViewModel 65
4.2.1 ViewModel生命周期與ViewModelProvider 67
4.2.2 向ViewModel添加數據 69
4.3 進程銷毀時保存數據 72
4.3.1 覆蓋onSaveInstanceState(Bundle)函式 73
4.3.2 保留實例狀態與activity記錄 76
4.4 ViewModel與保存實例狀態 77
4.5 深入學習:Jetpack、AndroidX與架構組件 78
4.6 深入學習:解決問題要徹底 79
第 5 章 Android套用的調試 81
5.1 異常與棧跟蹤 82
5.1.1 診斷套用異常 83
5.1.2 記錄棧跟蹤日誌 84
5.1.3 設定斷點 85
5.2 Android特有的調試工具 88
5.2.1 使用Android Lint 88
5.2.2 R類的問題 91
5.3 挑戰練習:探索布局檢查器 92
5.4 挑戰練習:探索Android性能分析器 92
第 6 章 第二個activity 93
6.1 創建第二個activity 94
6.1.1 創建新的activity 95
6.1.2 創建新的activity子類 98
6.1.3 在manifest配置檔案中聲明activity 98
6.1.4 為MainActivity添加CHEAT!按鈕 99
6.2 啟動activity 100
6.3 activity間的數據傳遞 102
6.3.1 使用intent extra 102
6.3.2 從子activity 獲取返回結果 105
6.4 activity的使用與管理 110
6.5 挑戰練習:堵住作弊漏洞 112
6.6 挑戰練習:按題記錄作弊狀態 112
第 7 章 Android SDK版本與兼容 113
7.1 Android SDK版本 113
7.2 Android編程與兼容性問題 114
7.2.1 比較合理的版本 114
7.2.2 SDK版本 115
7.2.3 SDK目標版本 116
7.2.4 SDK編譯版本 116
7.2.5 安全添加新版本API中的代碼 116
7.2.6 JETPACK庫 119
7.3 使用Android開發者文檔 120
7.4 挑戰練習:報告編譯版本 122
7.5 挑戰練習:限制作弊次數 122
第 8 章 UI fragment與fragment管理器 123
8.1 UI設計的靈活性需求 124
8.2 引入fragment 124
8.3 著手開發CriminalIntent 125
8.4 創建Crime數據類 128
8.5 創建UI fragment 129
8.5.1 定義CrimeFragment的布局 129
8.5.2 創建CrimeFragment類 131
8.6 託管UI fragment 137
8.6.1 定義容器視圖 138
8.6.2 向FragmentManager中添加UI fragment 139
8.7 採用fragment的套用架構 143
第 9 章 使用RecyclerView顯示列表 145
9.1 添加新Fragment和ViewModel 146
9.2 添加RecyclerView 149
9.3 創建列表項視圖布局 151
9.4 ViewHolder實現 153
9.5 使用Adapter填充RecyclerView 155
9.6 循環使用視圖 159
9.7 清理綁定 159
9.8 回響點擊 160
9.9 深入學習:ListView與GridView 161
9.10 挑戰練習:RecyclerView的ViewType 162
第 10 章 使用布局與部件創建用戶界面 163
10.1 初識ConstraintLayout布局 164
10.2 圖形布局編輯器 165
10.3 使用ConstraintLayout 168
10.3.1 騰出空間 169
10.3.2 添加部件 171
10.3.3 約束的工作原理 174
10.3.4 編輯屬性 175
10.3.5 動態設定列表項 179
10.4 深入學習布局屬性 180
10.5 深入學習:邊距與內邊距 182
10.6 深入學習:ConstraintLayout的發展動態 183
10.7 挑戰練習:日期格式化 183
第 11 章 資料庫與Room庫 185
11.1 Room架構組建庫 186
11.2 創建資料庫 187
11.2.1 定義實體 187
11.2.2 創建資料庫類 187
11.3 定義資料庫訪問對象 189
11.4 使用倉庫模式訪問資料庫 191
11.5 測試資料庫訪問 193
11.6 套用執行緒 196
11.7 使用LiveData 198
11.8 挑戰練習:解決Schema警告 203
11.9 深入學習:單例 204
第 12 章 Fragment Navigation 206
12.1 單Activity多Fragment 206
12.1.1 Fragment回調接口 207
12.1.2 替換fragment 209
12.2 Fragment argument 211
12.2.1 將argument附加到fragment 212
12.2.2 獲取argument 213
12.3 使用LiveData數據轉換 214
12.4 更新資料庫 217
12.4.1 使用executor 218
12.4.2 資料庫寫入與fragment生命周期 219
12.5 深入學習:為何要用Fragment Argument 220
12.6 深入學習:Navigation架構組件庫 221
12.7 挑戰練習:實現高效的RecyclerView刷新 222
第 13 章 對話框 223
13.1 創建DialogFragment 224
13.2 fragment間的數據傳遞 227
13.2.1 傳遞數據給DatePickerFragment 228
13.2.2 返回數據給CrimeFragment 230
13.3 挑戰練習:時間選擇對話框 232
第 14 章 套用欄 233
14.1 AppCompat默認套用欄 234
14.2 套用欄選單 235
14.2.1 在XML檔案中定義選單 235
14.2.2 創建選單 237
14.2.3 回響選單項選擇 240
14.3 使用Android Asset Studio 242
14.4 深入學習:套用欄、操作欄與工具列 244
14.5 深入學習:AppCompat版套用欄 246
14.6 挑戰練習:RecyclerView空視圖 246
第 15 章 隱式intent 247
15.1 添加按鈕部件 248
15.2 添加嫌疑人信息至模型層 249
15.3 使用格式化字元串 250
15.4 使用隱式intent 251
15.4.1 隱式intent的組成 252
15.4.2 傳送訊息 253
15.4.3 獲取聯繫人信息 256
15.4.4 檢查可回響任務的activity 261
15.5 挑戰練習:又一個隱式intent 263
第 16 章 使用intent拍照 264
16.1 布置照片 264
16.2 檔案存儲 267
16.2.1 使用FileProvider 268
16.2.2 指定照片存放位置 269
16.3 使用相機intent 270
16.4 縮放和顯示點陣圖 273
16.5 功能聲明 277
16.6 挑戰練習:最佳化照片顯示 278
16.7 挑戰練習:最佳化縮略圖載入 278
第 17 章 套用本地化 279
17.1 資源本地化 279
17.1.1 默認資源 282
17.1.2 檢查資源本地化完成情況 283
17.1.3 區域修飾符 284
17.2 配置修飾符 285
17.2.1 可用資源優先權排定 286
17.2.2 多重配置修飾符 288
17.2.3 尋找匹配的資源 289
17.3 測試備選資源 290
17.4 深入學習:確定設備螢幕尺寸 290
17.5 挑戰練習:日期顯示本地化 291
第 18 章 Android輔助功能 292
18.1 TalkBack 292
18.1.1 點擊瀏覽 294
18.1.2 線性瀏覽 295
18.2 實現非文字型元素可讀 297
18.2.1 添加內容描述 297
18.2.2 實現部件可聚焦 300
18.3 提升輔助體驗 301
18.4 深入學習:使用輔助功能掃描器 302
18.5 挑戰練習:最佳化列表項 305
18.6 挑戰練習:補全上下文信息 305
18.7 挑戰練習:事件主動通知 306
第 19 章 數據綁定與MVVM 307
19.1 為何要用MVVM架構 308
19.2 MVVM View Model與Jetpack ViewModel 308
19.3 創建BeatBox套用 308
19.4 實現簡單的數據綁定 309
19.5 導入assets 312
19.6 處理assets 314
19.7 使用assets 316
19.8 綁定數據 318
19.8.1 創建視圖模型 320
19.8.2 綁定至視圖模型 321
19.8.3 綁定數據觀察 323
19.9 深入學習:數據綁定再探 325
19.9.1 lambda表達式 325
19.9.2 更多語法糖 326
19.9.3 BindingAdapter 326
19.10 深入學習:LiveData和數據綁定 327
第 20 章 音頻播放與單元測試 329
20.1 創建SoundPool 329
20.2 訪問Assets 330
20.3 載入音頻檔案 330
20.4 播放音頻 332
20.5 測試依賴 332
20.6 創建測試類 333
20.7 配置測試類 335
20.8 編寫測試函式 336
20.9 數據綁定回調 341
20.10 釋放音頻 342
20.11 深入學習:整合測試 343
20.12 深入學習:模擬對象與測試 344
20.13 挑戰練習:播放進度控制 345
20.14 挑戰練習:設備旋轉問題 346
第 21 章 樣式與主題 347
21.1 顏色資源 348
21.2 樣式 348
21.3 主題 351
21.4 添加主題顏色 353
21.5 覆蓋主題屬性 354
21.6 修改按鈕屬性 358
21.7 深入學習:樣式繼承拾遺 361
21.8 深入學習:引用主題屬性 362
第 22 章 XML drawable 363
22.1 統一按鈕樣式 364
22.2 shape drawable 365
22.3 state list drawable 367
22.4 layer list drawable 368
22.5 深入學習:為什麼要用XML drawable 370
22.6 深入學習:使用mipmap圖像 370
22.7 深入學習:使用9-patch圖像 371
22.8 挑戰練習:按鈕主題 377
第 23 章 深入學習intent和任務 378
23.1 創建NerdLauncher項目 379
23.2 解析隱式intent 380
23.3 在運行時創建顯式intent 385
23.4 任務與回退棧 386
23.4.1 在任務間切換 387
23.4.2 啟動新任務 388
23.5 用NerdLauncher當主螢幕 391
23.6 深入學習:進程與任務 392
23.7 深入學習:並發文檔 394
23.8 挑戰練習:套用圖示 397
第 24 章 HTTP 與後台任務 398
24.1 創建PhotoGallery套用 399
24.2 Retrofit網路連線基本 402
24.2.1 定義Retrofit API接口 403
24.2.2 構建Retrofit對象並創建API實例 403
24.2.3 執行網路請求 405
24.2.4 獲取網路使用許可權 407
24.2.5 使用倉庫模式聯網 408
24.3 從Flickr 獲取JSON數據 411
24.4 應對設備配置改變 418
24.5 在RecyclerView里顯示結果 421
24.6 深入學習:其他JSON數據解析器和數據格式 423
24.7 深入學習:撤銷網路請求 423
24.8 深入學習:管理依賴 424
24.9 挑戰練習:自定義Gson反序列化器 425
24.10 挑戰練習:分頁 426
24.11 挑戰練習:動態調整格線列 426
第 25 章 Looper、Handler和HandlerThread 427
25.1 配置RecyclerView以顯示圖片 427
25.2 準備下載數據 430
25.3 批量下載縮略圖 431
25.4 創建後台執行緒 431
25.4.1 創建生命周期感知執行緒 432
25.4.2 啟停HandlerThread 435
25.5 Message與message handler 436
25.5.1 剖析Message 438
25.5.2 剖析Handler 438
25.5.3 使用handler 440
25.5.4 傳遞handler 443
25.6 觀察視圖的生命周期 446
25.7 保留fragment 450
25.7.1 設備旋轉與保留fragment 450
25.7.2 是否保留fragment 452
25.8 深入學習:解決圖片下載問題 452
25.9 深入學習:StrictMode 453
25.10 挑戰練習:觀察視圖LifecycleOwner的LiveData 454
25.11 挑戰練習:最佳化ThumbnailDownloader 454
25.12 挑戰練習:預載入以及快取 454
第 26 章 搜尋 456
26.1 搜尋Flickr網站 457
26.2 使用SearchView 460
26.3 使用sharedpreferences實現輕量級數據存儲 464
26.4 最佳化套用 467
26.5 用Android KTX編輯SharedPreferences 468
26.6 挑戰練習:最佳化PhotoGallery套用 469
第 27 章 WorkManager 470
27.1 創建Worker類 470
27.2 調度工作 471
27.3 檢查新圖片 473
27.4 通知用戶 476
27.5 服務的用戶控制 481
第 28 章 broadcast intent 486
28.1 普通intent與broadcast intent 486
28.2 過濾前台通知 487
28.2.1 傳送broadcast intent 487
28.2.2 創建並登記standalone receiver 488
28.2.3 使用私有許可權限制broadcast 489
28.2.4 創建並登記動態receiver 491
28.2.5 使用有序broadcast收發數據 493
28.3 receiver與長時運行任務 497
28.4 深入學習:本地事件 497
28.4.1 使用EventBus 498
28.4.2 使用RxJava 499
28.5 深入學習:受限的Broadcast Receiver 499
28.6 深入學習:探測fragment的狀態 500
第 29 章 網頁瀏覽 501
29.1 後一段Flickr數據 501
29.2 簡單方式:使用隱式intent 503
29.3 較難的方式:使用WebView 504
29.4 處理WebView的設備旋轉問題 511
29.5 WebView與定製UI 512
29.6 深入學習:注入JavaScript對象 512
29.7 深入學習:WebView升級 513
29.8 深入學習:Chrome Custom Tabs 513
29.9 挑戰練習:使用回退鍵瀏覽歷史網頁 514
第 30 章 定製視圖與觸摸事件 515
30.1 創建DragAndDraw項目 515
30.2 創建定製視圖 516
30.3 處理觸摸事件 518
30.4 onDraw(Canvas)函式內的圖形繪製 521
30.5 深入學習:GestureDetector 523
30.6 挑戰練習:設備旋轉問題 523
30.7 挑戰練習:旋轉矩形框 524
30.8 挑戰練習:輔助功能支持 524
第 31 章 屬性動畫 525
31.1 建立場景 525
31.2 簡單屬性動畫 527
31.2.1 視圖轉換屬性 530
31.2.2 使用不同的interpolator 531
31.2.3 色彩漸變 532
31.3 播放多個動畫 534
31.4 深入學習:其他動畫API 536
31.4.1 傳統動畫工具 536
31.4.2 轉場 536
31.5 挑戰練習 536
第 32 章 編後語 537
32.1 終極挑戰 537
32.2 插個廣告 537
32.3 致謝 538

相關詞條

熱門詞條

聯絡我們