TOP
瀏覽紀錄
【反詐騙】接到不明來電說:升等為「高級會員」「購物滿意度調查」,這是詐騙!請絕對「不要依照指示操作ATM或網銀」
1/1
無庫存,下單後進貨(採購期約60個工作天)
Android編程權威指南(第4版)(簡體書)
人民幣定價:139元
定  價:NT$834元
優惠價: 79659
69暖身慶|滿$1000現折$100元
可得紅利積點:19 點

無庫存,下單後進貨(採購期約60個工作天)

商品簡介

作者簡介

名人/編輯推薦

目次

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編程權威指南》。

專業——源自大名鼎鼎的Big Nerd Ranch訓練營培訓講義,該訓練營已經為微軟、Google、Facebook等行業巨頭培養了眾多專業人才。
全面——涵蓋Android開發必備理論概念和技術知識點,從Android 5.0到Android 11.0都適用。
實用——七個Android應用開發實戰項目,傳授一線開發經驗。
易懂——以循序漸進的方式精心編排章節,一步一步寫出Android應用。

第4版較之前版本做了重大更新,每一章的內容都做了修改;
同時,開發語言從Java換成了Kotlin,全面引入了Android Jetpack組件庫並開始使用第三方庫;
隨書附贈Android開發速查表,隨用隨查。
第 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

購物須知

大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。

特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。

為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。

若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。