Android 編程權威指南, 3/e (Android Programming: The Big Nerd Ranch Guide, 3/e)
比爾·菲利普斯, 克裡斯·斯圖爾特, 克莉絲汀·馬西卡諾
- 出版商: 人民郵電
- 出版日期: 2017-06-01
- 定價: $774
- 售價: 8.5 折 $658
- 語言: 簡體中文
- 頁數: 576
- ISBN: 711545759X
- ISBN-13: 9787115457592
-
相關分類:
Android
- 此書翻譯自: Android Programming: The Big Nerd Ranch Guide, 3/e (Paperback)
-
其他版本:
Android 編程權威指南, 4/e (Android Programming: The Big Nerd Ranch Guide, 4/e)
買這商品的人也買了...
-
$880$581 -
$520$411 -
$580$452 -
$860$731 -
$500精通 Android UI 設計
-
$352大話代碼架構 (項目實戰版)
-
$474$450 -
$580$452 -
$505Java 語言程序設計與數據結構 (基礎篇)(原書第11版)
-
$505Java 語言程序設計與數據結構 (進階篇)(原書第11版)
-
$560$476 -
$403Java 編程方法論:響應式 RxJava 與代碼設計實戰
-
$403Java 設計模式及實踐 (Design Patterns and Best Practices in Java: A comprehensive guide to building smart and reusable code in Java)
-
$350$315 -
$536Unity 游戲開發, 3/e (Sams Teach Yourself Unity 2018 Game Development in 24 Hours, 3/e)
-
$594$564 -
$1,670$1,587 -
$536精通Spring Cloud微服務架構
-
$520$406 -
$780$608 -
$780$515 -
$400$360 -
$458Spring Boot 企業級項目開發實戰
-
$650$507 -
$690$538
相關主題
商品描述
Big Nerd Ranch是美國一家專業的移動開發技術培訓機構。本書主要以其Android訓練營教學課程為基礎,融合了幾位作者多年的心得體會,是一本完全面向實戰的Android編程權威指南。全書共36章,詳細介紹了8個Android應用的開發過程。通過這些精心設計的應用,讀者可掌握很多重要的理論知識和開發技巧,獲得寶貴的開發經驗。第3版較之前版本增加了對數據綁定等新工具的介紹,同時新增了針對單元測試、輔助功能和MVVM架構等主題的章節。
作者簡介
作者:[美]比爾·菲利普斯克里斯·斯圖爾特克莉絲汀·馬西卡諾(Bill Phillips、 Chris Stewart、 Kristin Marsicano)譯者:王明發
Bill Phillips
Big Nerd Ranch資深講師。他與人合作開發了廣受好評的Android訓練營培訓課程,並為之編寫教材(包括本書的第1版和第2版)。Bill一直堅持撰寫博客、閱讀各類文學作品、作曲奏樂以及著書。
Chris Stewart
Big Nerd Ranch的Android團隊主管、Android訓練營資深講師。他致力於不斷取得進步和精進技能。工作之餘,Chris喜歡遠足和旅行。
Kristin Marsicano
Big Nerd Ranch資深講師、Android開發者。她喜歡分享知識,對學習、軟件開發以及二者的交集充滿熱情。在授課和開發應用之餘,Kristin會為家人烹調美食、練習瑜伽或學習新知識。
王明發
畢業於華東理工大學。軟件開發及項目管理者,擁有近十年的軟件開發及項目管理經驗;除了翻譯本書前兩版之外,另譯有《寫給大家看的項目管理書(第3版)》。
目錄大綱
第1章Android開發初體驗1
1.1 Android開發基礎2
1.2創建Android項目2
1.3 Android Studio使用導航6
1.4用戶界面設計6
1.4.1視圖層級結構10
1.4.2組件屬性10
1.4.3創建字符串資源11
1.4.4預覽佈局12
1.5從佈局XML到視圖對象13
1.6組件的實際應用16
1.6.1引用組件17
1.6.2設置監聽器17
1.7創建提示消息19
1.8使用模擬器運行應用21
1.9深入學習:Android編譯過程23
1.10關於挑戰練習25
1.11挑戰練習:定制toast消息25
第2章Android與MVC設計模式26
2.1創建新類26
2.2 Android與MVC設計模式29
2.3更新視圖層31
2.4更新控制器層33
2.5在物理設備上運行應用37
2.5.1連接設備37
2.5.2配置設備用於應用開發7
2.6添加圖標資源38
2.6.1向項目中添加資源39
2.6.2在XML文件中引用資源41
2.7挑戰練習:為TextView添加監聽器42
2.8挑戰練習:添加後退按鈕42
2.9挑戰練習:從按鈕到圖標按鈕42
第3章activity的生命週期45
3.1日誌跟踪理解activity生命週期46
3.1.1輸出日誌信息46
3.1.2使用LogCat 48
3.1.3 activity生命週期實例解析50
3.2設備旋轉與activity生命週期52
3.3保存數據以應對設備旋轉56
3.4再探activity生命週期58
3.5深入學習:activity內存清理現狀59
3.6深入學習:日誌記錄的級別與方法60
3.7挑戰練習:禁止一題多答61
3.8挑戰練習:評分61
第4章Android應用的調試62
4.1異常與棧跟踪63
4.1 .1診斷應用異常64
4.1.2記錄棧跟踪日誌65
4.1.3設置斷點66
4.1.4使用異常斷點68
4.2 Android特有的調試工具70
4.2.1使用Android Lint 70
4.2.2 R類的問題71
4.3挑戰練習:探索佈局檢查器72
4.4挑戰練習:探索內存分配跟踪72
第5章第二個activity 74
5.1創建第二個activity 75
5.1.1創建新的activity 75
5.1.2創建新的activity子類78
5.1.3在manifest配置文件中聲明activity 78
5.1.4為QuizActivity添加CHEAT按鈕79
5.2啟動activity 81
5.3 activity間的數據傳遞83
5.3.1使用intent extra 83
5.3.2從子activity獲取返回結果86
5.4 activity的使用與管理91
5.5挑戰練習:堵住漏洞93
第6章Android SDK版本與兼容94
6.1 Android SDK版本94
6.2 Android編程與兼容性問題95
6.2.1比較合理的版本95
6.2.2 SDK最低版本96
6.2.3 SDK目標版本97
6.2 .4 SDK編譯版本97
6.2.5安全添加新版本API中的代碼97
6.3使用Android開發者文檔100
6.4挑戰練習:報告編譯版本101
6.5挑戰練習:限製作弊次數102
第7章UI fragment與fragment管理器103
7.1 UI設計的靈活性需求104
7.2引入fragment 104
7.3著手開發Criminal Intent 105
7.3.1創建新項目107
7.3.2兩類fragment 108
7.3.3在Android Studio中增加依賴關係108
7.3.4創建Crime類111
7.4託管UI fragment 112
7.4.1 fragment的生命週期112
7.4.2託管的兩種方式113
7.4.3定義容器視圖113
7.5創建UI fragment 115
7.5.1定義Crime Fragment的佈局115
7.5.2創建Crime Fragment類117
7.6向Fragment Manager添加UI fragment 122
7.6.1 fragment事務123
7.6.2 Fragment Manager與fragment生命週期125
7.7採用fragment的應用架構126
7.8深入學習:fragment與支持庫127
7.9深入學習:為什麼優先使用支持庫版fragment 128
第8章使用Recycler View顯示列表129
8.1升級Criminal Intent應用的模型層130
8.2使用抽象activity託管fragment 132
8.2.1通用型fragment託管佈局133
8.2.2抽象activity類133
8.3 Recycler View、View Holder和Adapter 137
8.3.1 View Holder和Adapter 138
8.3.2使用Recycler View 141
8.3.3列表項視圖142
8.3.4實現View Holder和Adapter 143
8.4綁定列表項145
8.5響應點擊147
8.6深入學習:List View和Grid View 148
8.7深入學習:單例148
8.8挑戰練習:Recycler View View Type 149
第9章使用佈局與組件創建用戶界面150
9.1使用圖形佈局工具151
9.2引入Constraint Layout 151
9.2.1使用Constraint Layout 152
9.2.2約束編輯器153
9.2.3騰出空間155
9.2.4添加組件157
9.2. 5約束的XML形式159
9.2.6編輯屬性160
9.2.7動態設置列表項162
9.3深入學習佈局屬性163
9.3.1 dp、sp以及屏幕像素密度163
9.3.2邊距與內邊距165
9.3.3樣式、主題及主題屬性166
9.3.4 Android應用的設計原則166
9.4圖形佈局工具使用小結167
9.5挑戰練習:日期格式化167
第10章使用fragment argument 168
10.1從fragment中啟動activity 168
10.1.1附加extra信息169
10.1.2獲取extra信息170
10.1.3使用Crime數據更新Crime Fragment視圖171
10.1.4直接獲取extra信息的缺點172
10.2 fragment argument 172
10.2.1附加argument給fragment 173
10.2.2獲取argument 174
10.3刷新顯示列表項174
10.4通過fragment獲取返回結果176
10.5深入學習:為何要用fragment argument 177
10.6挑戰練習:實現高效的Recycler View刷新178
10.7挑戰練習:優化CrimeLab的表現178
第11章使用View Pager 179
11.1創建Crime Pager Activity 180
11.1.1 View Pager與Pager Adapter 181
11.1.2整合併配置使用Crime Pager Activity 182
11.2 FragmentState Pager Adapter與Fragment Pager Adapter 184
11.3深入學習:View Pager的工作原理186
11.4深入學習:以代碼的方式創建視圖187
11.5挑戰練習:恢復Crime Fragment的邊距187
11.6挑戰練習:添加Jump to First按鈕和Jump to Last按鈕188
第12章對話框189
12.1創建Dialog Fragment 190
12.1.1顯示Dialog Fragment 192
12.1.2設置對話框的顯示內容194
12.2 fragment間的數據傳遞196
12.2.1傳遞數據給Date Picker Fragment 197
12.2.2返回數據給Crime Fragment 199
12.3挑戰練習:更多對話框205
12.4挑戰練習:實現響應式Dialog Fragment 205
第13章工具欄207
13.1 App Compat 207
13.2工具欄菜單209
13.2.1在XML文件中定義菜單210
13.2.2創建菜單214
13.2.3響應菜單項選擇217
13.3實現層級式導航218
13.4可選菜單項219
13.4.1切換菜單項標題220
13.4.2“還有個問題”222
13.5深入學習:工具欄與操作欄224
13.6挑戰練習:刪除crime記錄224
13.7挑戰練習:複數字符串資源224
13.8挑戰練習:用於Recycler View的空視圖225
第14章SQLite數據庫226
14.1定義schema 226
14.2創建初始數據庫227
14.2.1使用Android Device Monitor查看文件230
14.2.2處理數據庫相關問題231
14.3修改CrimeLab類232
14.4寫入數據庫233
14.4.1使用ContentValues 233
14.4.2插入和更新記錄234
14.5讀取數據庫235
14.5.1使用CursorWrapper 236
14.5.2創建模型層對象238
14.6深入學習:數據庫高級主題介紹241
14.7深入學習:應用上下文241
14.8挑戰練習:刪除crime記錄242
第15章隱式intent 243
15.1添加按鈕組件244
15.2添加嫌疑人信息至模型層244
15.3使用格式化字符串246
15.4使用隱式intent 248
15.4.1隱式intent的組成248
15.4.2發送消息249
15.4.3獲取聯繫人信息252
15.4.4檢查可響應任務的activity 254
15.5挑戰練習:Share Compat 256
15.6挑戰練習:又一個隱式intent 256
第16章使用intent拍照258
16.1佈置照片258
16.2文件存儲260
16.2.1使用File Provider 261
16.2 .2指定照片存放位置262
16.3使用相機intent 263
16.4縮放和顯示位圖265
16.5功能聲明268
16.6挑戰練習:優化照片顯示269
16.7挑戰練習:優化縮略圖加載269
第17章雙版面主從用戶界面270
17.1增加佈局靈活性271
17.1.1修改Single Fragment Activity 272
17.1.2創建包含兩個fragment容器的佈局272
17.1.3使用別名資源274
17.1.4創建平板設備專用可選資源275
17.2 activity:fragment的託管者276
17.3深入學習:設備屏幕尺寸的確定284
17.4挑戰練習:添加滑動刪除功能285
第18章應用本地化286
18.1資源本地化286
18.1.1默認資源289
18.1.2檢查資源本地化完成情況291
18.1.3區域修飾符292
18.2配置修飾符294
18.2.1可用資源優先級排定295
18.2.2多重配置修飾符296
18.2.3尋找最匹配的資源297
18.3測試備選資源298
18.4挑戰練習:日期本地化298
第19章Android輔助功能299
19.1 Talk Back 299
19.1.1點擊瀏覽301
19.1.2線性瀏覽301
19.2實現非文字型元素可讀303
19.2.1添加內容描述303
19.2.2實現組件可聚焦305
19.3提升輔助體驗305
19.4深入學習:使用輔助功能掃描器309
19.5挑戰練習:優化列表項311
19.6挑戰練習:補全上下文信息311
19.7挑戰練習:事件主動通知311
第20章數據綁定與MVVM 313
20.1為何要用MVVM架構314
20.2創建Beat Box應用314
20.3導入assets 319
20.4處理assets 321
20.5使用assets 323
20.6綁定數據325
20.6.1創建視圖模型327
20.6.2綁定至視圖模型328
20.6.3綁定數據觀察330
20.7訪問assets 332
20.8深入學習:數據綁定再探333
20.8.1 lambda表達式333
20.8.2更多語法糖333
20.8.3 Binding Adapter 333
20.9深入學習:為何使用assets 334
20.10深入學習:什麼是non—assets 334
第21章音頻播放與單元測試335
21.1創建Sound Pool 335
21.2加載音頻文件336
21.3播放音頻337
21.4添加測試依賴338
21.5創建測試類339
21.6實現測試類341
21.7編寫測試方法342
21.8數據綁定回調346
21.9釋放音頻346
21.10設備旋轉和對象保存347
21.10.1保留fragment 348
21.10.2設備旋轉和已保留的fragment 349
21.11深入學習:是否保留fragment 351
21.12深入學習:Espresso與整合測試351
21.13深入學習:虛擬對象與測試352
21.14挑戰練習:播放進度控制353
第22章樣式與主題354
22.1顏色資源354
22.2樣式355
22.3主題357
22.4添加主題顏色359
22.5覆蓋主題屬性361
22.6修改按鈕屬性364
22.7深入學習:樣式繼承拾遺367
22.8深入學習:引用主題屬性367
第23章XML drawable 368
23.1統一按鈕樣式368
23.2 shape drawable 369
23.3 state list drawable 371
23.4 layer list drawable 372
23.5深入學習:為什麼要用XML drawable 373
23.6深入學習:使用mipmap圖像374
23.7深入學習:使用9—patch圖像375
23.8挑戰練習:按鈕主題379
第24章深入學習intent和任務380
24.1創建Nerd Launcher項目380
24.2解析隱式intent 382
24.3在運行時創建顯式intent 386
24.4任務與回退棧388
24.4.1在任務間切換389
24.4.2啟動新任務389
24.5使用Nerd Launcher應用作為設備主屏幕392
24.6挑戰練習:應用圖標393
24.7深入學習:進程與任務393
24.8深入學習:並發文檔395
第25章HTTP與後台任務398
25.1創建Photo Gallery應用399
25.2網絡連接基本401
25.3使用Async Task在後台線程上運行代碼403
25.4線程與主線程405
25.5從Flickr獲取JSON數據407
25.6從Async Task回到主線程413
25.7清理Async Task 416
25.8深入學習:Async Task再探416
25.9深入學習:Async Task的替代方案417
25.10挑戰練習:Gson 418
25.11挑戰練習:分頁418
25.12挑戰練習:動態調整網格列418
第26章Looper、Handler和Handler Thread 420
26.1配置Recycler View以顯示圖片420
26.2批量下載縮略圖422
26.3與主線程通信423
26.4創建並啟動後台線程424
26.5 Message與message handler 426
26.5.1剖析Message 426
26.5 .2剖析Handler 427
26.5.3使用handler 428
26.5.4傳遞handler 431
26.6深入學習:Async Task與線程436
26.7深入學習:解決圖片下載問題436
26.8深入學習:Strict Mode 437
26.9挑戰練習:預加載以及緩存438
第27章搜索439
27.1搜索Flickr網站439
27.2使用Search View 443
27.3使用shared preferences實現輕量級數據存儲447
27.4優化應用451
27.5挑戰練習:深度優化Photo Gallery應用451
第28章後台服務452
28.1創建Intent Service 452
28.2服務的作用454
28.3查找最新返回結果456
28.4使用Alarm Manager延遲運行服務458
28.4.1合理控制服務啟動的頻度460
28.4.2 Pending Intent 461
28.4.3使用Pending Intent管理定時器461
28.5控制定時器462
28.6通知信息464
28.7挑戰練習:可穿戴設備上的通知466
28.8深入學習:服務之細節467
28.8.1服務的能與不能467
28.8.2服務的生命週期467
28.8.3 non—sticky服務467
28.8.4 sticky服務468
28.8.5綁定服務468
28.9深入學習:Job Scheduler和Job Service 469
28.10挑戰練習:在Lollipop設備上使用Job Service 472
28.11深入學習:sync adapter 472
第29章broadcast intent 474
29.1普通intent和broadcast intent 474
29.2接收系統broadcast:重啟後喚醒475
29.2.1創建並登記standalone receiver 475
29.2.2使用receiver 477
29.3過濾前台通知消息479
29.3.1發送broadcast intent 479
29.3.2創建並登記動態receiver 480
29.3.3使用私有權限限制broadcast 482
29.3.4使用有序broadcast收發數據484
29.4 receiver與長時運行任務488
29.5深入學習:本地事件488
29.5.1使用Event Bus 489
29.5.2使用Rx Java 490
29.6深入學習:探測fragment的狀態490
第30章網頁瀏覽492
30.1最後一段Flickr數據492
30.2簡單方式:隱式intent 494
30.3較難方式:使用Web View 496
30.4處理Web View的設備旋轉問題502
30.5深入學習:注入Java Script對象502
30.6深入學習:Web View升級503
30.7挑戰練習:使用後退鍵瀏覽歷史網頁504
30.8挑戰練習:非HTTP鏈接支持504
第31章定制視圖與觸摸事件505
31.1創建Drag And Draw項目505
31.2創建定制視圖507
31.3處理觸摸事件509
31.4 on Draw(...)方法內的圖形繪製513
31.5挑戰練習:設備旋轉問題515
31.6挑戰練習:旋轉矩形框515
第32章屬性動畫516
32.1建立場景516
32.2簡單屬性動畫519
32.2.1視圖屬性轉換521
32.2.2使用不同的interpolator 523
32.2.3色彩漸變523
32.3播放多個動畫525
32.4深入學習:其他動畫API 527
32.4.1傳統動畫工具527
32.4.2轉場527
32.5挑戰練習527
第33章地理位置和Play服務528
33.1地理位置和定位類庫528
33.2創建Locatr項目529
33.3 Play服務定位和模擬器530
33.4創建Locatr應用532
33.5配置Google Play服務534
33.6使用Google Play服務536
33.7基於地理位置的Flickr搜索538
33.8獲取定位數據539
33.9獲取運行時權限542
33.10尋找並顯示圖片546
33.11挑戰練習:權限使用理由548
33.12挑戰練習:進度指示器549
第34章使用地圖550
34.1導入Play地圖服務庫550
34.2 Android上的地圖服務550
34.3獲取Maps API key 550
34.4創建地圖552
34.5獲取更多地理位置數據553
34.6使用地圖556
34.7深入學習:團隊開發和API key 560
第35章material design 562
35.1 material surface 562
35.1.1 elevation和Z值564
35.1.2 state list animator 565
35.2動畫工具566
35.2.1 circular reveal 567
35.2.2 shared element transition 568
35.3新的視圖組件571
35.3.1 card 571
35.3 .2 floating action button 572
35.3.3 snackbar 573
35.4深入學習material design 574
第36章編後語575
36.1終極挑戰575
36.2關於我們575
36.3致謝576