第Ⅰ部分Android平臺概述第1章Android概述3
1.1Android開源項目(AOSP)3
1.2開放手機聯盟4
1.2.1Google進入移動市場4
1.2.2開放手機聯盟介紹4
1.2.3加入開放手機聯盟5
1.2.4制造商:設計Android
設備5
1.2.5移動運營商:提供Android
體驗5
1.2.6應用驅動設備的銷售:
開發Android應用6
1.2.7利用所有Android設備的
優勢6
1.2.8Android:我們現在取得的
進展7
1.3Android平臺的獨特性7
1.3.1Android的由來8
1.3.2自由和開放源代碼8
1.3.3熟悉且廉價的開發工具9
1.3.4合理的開發學習曲線9
1.3.5功能強大的應用開發支持9
1.3.6豐富和安全的應用集成10
1.3.7沒有昂貴的開發費用10
1.3.8應用的“自由市場”10
1.3.9一個不斷發展的平臺11
1.4Android平臺11
1.4.1Android的底層架構11
1.4.2安全和權限13
1.4.3探索Android應用14
1.5OHA和GMS之外的Android
版本17
1.5.1AmazonFireOS17
1.5.2CyanogenOS和
CyanogenMod17
1.5.3MakerMovement和開源
硬件18
1.5.4保持警覺18
1.6本章小結18
1.7小測驗18
1.8練習題19
1.9參考資料和更多信息19
第2章設置開發環境21
2.1配置你的開發環境21
2.1.1配置操作系統以便進行
設備調試24
2.1.2配置Android硬件以便
進行調試24
2.1.3更新AndroidStudio26
2.1.4更新AndroidSDK26
2.1.5AndroidStudio存在的
問題27
2.1.6AndroidSDK存在的問題27
2.1.7AndroidStudio的替代者:
IntelliJIDEA27
2.2探索AndroidSDK28
2.2.1了解AndroidSDK許可
協議28
2.2.2閱讀AndroidSDK文檔29
2.2.3探索Android應用框架
核心30
2.2.4探索Android核心工具31
2.2.5探索Android示例應用35
2.3本章小結36
2.4小測驗37
2.5練習題37
2.6參考資料和更多信息37
第3章創建第一個Android應用39
3.1測試開發環境39
3.1.1在AndroidStudio中導入
BorderlessButtons示例40
3.1.2使用預裝的AVD運行
BorderlessButtons項目42
3.1.3在Android模擬器中運行
BorderlessButtons應用42
3.2構建第一個Android應用44
3.2.1創建并配置一個新的
Android項目44
3.2.2了解Android符號視圖和
傳統Project視圖48
3.2.3Android應用的核心文件和
目錄49
3.2.4在模擬器中運行Android
應用50
3.2.5在模擬器中調試Android
應用52
3.2.6為Android應用增加日志
記錄55
3.2.7在硬件設備上調試應用57
3.3本章小結58
3.4小測驗59
3.5練習題59
3.6參考資料和更多信息59
第Ⅱ部分應用基礎
第4章理解應用組件63
4.1掌握重要的Android術語63
4.2應用Context64
4.2.1獲取應用Context64
4.2.2使用應用Context64
4.3使用Activity執行應用任務65
4.4使用Fragment組織Activity
組件71
4.5使用Intent管理Activity之間的
切換72
4.5.1通過Intent切換Activity73
4.5.2通過Activity、Fragment
和Intent來組織應用導航75
4.6使用服務75
4.7接收和廣播Intent76
4.8本章小結77
4.9小測驗77
4.10練習題77
4.11參考資料和更多信息78
第5章定義清單文件79
5.1使用Android清單文件配置
Android應用79
5.2管理應用ID82
5.3設置應用的系統需求83
5.3.1設置應用的平臺需求84
5.3.2其他應用配置設置和
過濾器86
5.4在Android清單文件注冊
Activity86
5.4.1使用Intent過濾器為應用
指定主入口Activity87
5.4.2配置其他Intent過濾器87
5.4.3注冊其他應用組件88
5.5訪問權限88
5.5.1注冊應用所需的權限89
5.5.2注冊應用強制的權限91
5.6探索清單文件的其他設置92
5.7本章小結93
5.8小測驗93
5.9練習題93
5.10參考資料和更多信息94
第6章管理應用的資源95
6.1資源的含義95
6.1.1存儲應用資源95
6.1.2資源類型96
6.1.3以編程方式訪問資源99
6.2在AndroidStudio中添加簡單
的資源值100
6.3使用不同類型的資源103
6.3.1使用字符串資源103
6.3.2使用格式化的字符串
資源104
6.3.3使用帶數量的字符串105
6.3.4使用字符串數組106
6.3.5使用布爾類型資源107
6.3.6使用整型資源108
6.3.7使用顏色資源108
6.3.8使用尺寸資源109
6.3.9以編程方式使用尺寸
資源110
6.3.10可繪制資源110
6.3.11使用圖像112
6.3.12使用顏色狀態列表114
6.3.13使用動畫115
6.3.14使用菜單117
6.3.15使用XML文件119
6.3.16使用原始文件119
6.3.17引用資源120
6.4使用布局122
6.4.1在AndroidStudio中設計
布局123
6.4.2以編程方式使用布局
資源125
6.5引用系統資源126
6.6本章小結127
6.7小測驗127
6.8練習題127
6.9參考資料和更多信息128
第7章探討構建塊129
7.1Android視圖和布局介紹129
7.1.1Android視圖129
7.1.2Android控件129
7.1.3Android布局130
7.2使用TextView向用戶顯示
文本130
7.2.1配置布局和大小131
7.2.2在文本中創建上下文
鏈接132
7.3使用文本字段從用戶端獲取
數據134
7.3.1使用EditText控件獲取
輸入文本134
7.3.2使用輸入過濾器限制用戶
輸入135
7.3.3使用自動完成功能幫助
用戶136
7.4使用Spinner控件讓用戶
選擇138
7.5使用Button和Switch允許
用戶簡單選擇139
7.5.1使用基本Button140
7.5.2使用CheckBox和
ToggleButton控件142
7.5.3使用RadioGroup和
RadioButton143
7.6使用Picker獲取日期、時間
和數字145
7.7使用Indicator為用戶顯示
進度和活動148
7.7.1使用ProgressBar指示
進度148
7.7.2向ActionBar添加進度
指示器149
7.7.3使用ActivityBar和Activity
Circle指示Activity150
7.8使用SeekBar調整進度151
7.9其他有價值的用戶界面
控件152
7.9.1使用RatingBar顯示評分
數據152
7.9.2使用Chronometer顯示
時間的流逝153
7.9.3顯示時間154
7.9.4使用VideoView播放
視頻155
7.10本章小結156
7.11小測驗156
7.12練習題156
7.13參考資料和更多信息157
第8章布局設計159
8.1在Android中創建用戶界面159
8.1.1使用XML資源文件創建
布局159
8.1.2以編程方式創建布局161
8.2組織用戶界面164
8.2.1使用ViewGroup子類來
設計布局164
8.2.2使用ViewGroup子類作為
View容器164
8.3使用內置的布局類165
8.3.1使用LinearLayout167
8.3.2使用RelativeLayout168
8.3.3使用FrameLayout171
8.3.4使用TableLayout173
8.3.5使用GridLayout176
8.3.6在屏幕上使用多個布局179
8.4使用容器控件類180
8.4.1使用數據驅動的容器180
8.4.2添加滾動支持184
8.4.3探索其他View容器185
8.5本章小結186
8.6小測驗186
8.7練習題187
8.8參考資料和更多信息187
第9章用Fragment拆分用戶
界面189
9.1理解Fragment189
9.1.1了解Fragment的生命
周期191
9.1.2管理Fragment修改191
9.1.3使用特殊類型的
Fragment192
9.1.4設計基于Fragment的
應用193
9.2使用Android支持庫包202
9.2.1為舊應用添加Fragment
支持202
9.2.2在新應用中針對舊平臺
使用Fragment203
9.2.3將Android支持包鏈接到
項目203
9.3使用Fragment的其他方式204
9.3.1沒有用戶界面的行為
Fragment205
9.3.2探索嵌套的Fragment205
9.4本章小結205
9.5小測驗205
9.6練習題206
9.7參考資料和更多信息206
第Ⅲ部分應用設計基礎
第10章架構設計模式211
10.1應用的導航架構211
10.1.1Android應用導航場景212
10.1.2啟動任務和導航回
退棧214
10.1.3Fragment導航215
10.1.4屏幕之間的關系215
10.1.5Android導航設計模式216
10.2引導操作223
10.2.1菜單223
10.2.2操作欄223
10.2.3浮動操作按鈕227
10.2.4來自應用上下文的
操作229
10.2.5對話框229
10.3本章小結237
10.4小測驗237
10.5練習題237
10.6參考資料和更多信息237
第11章使用樣式239
11.1樣式支持239
11.2主題和樣式240
11.2.1定義默認應用主題240
11.2.2主題和樣式繼承241
11.3顏色242
11.4布局243
11.4.1合并與包含244
11.4.2TextInputLayout245
11.4.3FloatingActionButton245
11.4.4工具欄作為底部欄246
11.5應用個性化247
11.6運用后的效果249
11.7排版250
11.8本章小結251
11.9小測驗252
11.10練習題252
11.11參考資料和更多信息252
第12章材質設計255
12.1理解材質255
12.2默認材質主題256
12.3SampleMaterial應用256
12.4實現SampleMaterial應用257
12.4.1依賴257
12.4.2材質支持樣式257
12.4.3顯示List中的數據集257
12.5本章小結282
12.6小測驗282
12.7練習題283
12.8參考資料和更多信息283
第13章設計兼容的應用285
13.1最大化應用的兼容性285
13.2設計兼容的用戶界面287
13.2.1使用Fragments288
13.2.2使用各種Android支持庫
API288
13.2.3支持特定的屏幕類型289
13.2.4使用九宮格可拉伸
圖形289
13.3提供替代應用資源290
13.3.1了解資源是如何被
解析的290
13.3.2使用限定符組織替代
資源291
13.3.3為不同屏幕方向提供
資源296
13.3.4以編程方式使用替代
資源298
13.3.5高效組織應用的資源299
13.4平板、電視設備299
13.4.1針對平板設備300
13.4.2針對電視設備300
13.5讓應用兼容手表和汽車302
13.6使用SafetyNet保證兼容性302
13.7本章小結303
13.8小測驗304
13.9練習題304
13.10參考資料和更多信息304
第Ⅳ部分應用開發基礎
第14章使用Android首選項309
14.1使用應用首選項309
14.1.1確定首選項是否合適309
14.1.2保存不同類型的首選
項值310
14.1.3創建Activity私有的
首選項310
14.1.4創建多個Activity使用的
共享首選項310
14.1.5查找和讀取首選項311
14.1.6添加、更新和刪除
首選項311
14.1.7監聽首選項的變化312
14.2在文件系統中定位首選項
數據312
14.3創建可管理的用戶首選項313
14.3.1創建首選項資源文件314
14.3.2使用PreferenceActivity
類316
14.3.3通過標頭管理首選項318
14.4自動備份Android應用321
14.5本章小結322
14.6小測驗322
14.7練習題323
14.8參考資料和更多信息323
第15章訪問文件和目錄325
15.1使用設備上的應用數據325
15.2實現良好的文件管理326
15.3了解Android系統中的文件
權限326
15.4使用文件和目錄327
15.4.1探索Android應用的
目錄328
15.4.2使用Android文件系統
中的其他目錄和文件332
15.5本章小結335
15.6小測驗335
15.7練習題335
15.8參考資料和更多信息336
第16章使用SQLite保存數據337
16.1使用SQLite升級
SampleMaterial應用337
16.2使用數據庫337
16.2.1提供數據訪問339
16.2.2更新SampleMaterialActivity
類340
16.2.3更新SampleMaterialAdapter
構造函數341
16.2.4在主UI線程以外執行
數據庫操作342
16.2.5在數據庫中創建卡片343
16.2.6獲取所有卡片344
16.2.7添加新卡片345
16.2.8更新卡片346
16.2.9刪除卡片347
16.3本章小結348
16.4小測驗349
16.5練習題349
16.6參考資料和更多信息349
第17章使用內容提供者351
17.1探索Android的內容
提供者351
17.1.1使用Mediastore內容
提供者352
17.1.2使用CallLog內容
提供者355
17.1.3使用CalendarContract
內容提供者356
17.1.4使用UserDictionary
內容提供者357
17.1.5使用VoicemaillContract
內容提供者357
17.1.6使用Settings內容
提供者357
17.1.7介紹ContactsContract
內容提供者357
17.2修改內容提供者數據360
17.2.1添加記錄360
17.2.2更新記錄361
17.2.3刪除記錄362
17.3使用第三方內容提供者363
17.4本章小結363
17.5小測驗364
17.6練習364
17.7參考資料和更多信息364
第Ⅴ部分應用交付基礎
第18章學習開發工作流369
18.1Android開發流程概覽369
18.2選擇正確的軟件方法論370
18.2.1理解瀑布開發模式的
危險性370
18.2.2理解迭代的價值370
18.3收集應用的需求371
18.3.1明確項目需求371
18.3.2為Android應用編寫
用例373
18.3.3結合第三方的需求和
建議374
18.3.4維護一個設備數據庫374
18.4評估項目風險377
18.4.1確定目標設備377
18.4.2獲取目標設備379
18.4.3確定應用需求的
可行性379
18.4.4理解QA的風險380
18.5編寫重要的項目文檔381
18.5.1為保證產品質量制定
測試計劃381
18.5.2為第三方提供需要的
文檔382
18.5.3為維護和移植提供
文檔382
18.6使用配置管理系統382
18.6.1選擇源碼管理系統382
18.6.2實現一個可用的應用
版本系統382
18.7設計Android應用383
18.7.1理解設備的資源限制383
18.7.2探討通用的Android
應用架構383
18.7.3設計應用的可擴展性和
易維護性384
18.7.4設計應用間的通信
方式385
18.8開發Android應用385
18.9測試Android應用386
18.10部署Android應用387
18.11支持和維護Android應用387
18.11.1跟蹤并解決用戶提交的
崩潰報告388
18.11.2測試固件升級388
18.11.3維護詳細的應用
文檔388
18.11.4管理服務端的在線
變化388
18.11.5識別低風險的移植
機會388
18.11.6應用功能的選擇389
18.12本章小結389
18.13小測驗389
18.14練習題389
18.15參考資料和更多信息389
第19章規劃用戶體驗391
19.1思考目標391
19.1.1用戶目標391
19.1.2團隊目標392
19.1.3其他利益相關者的
目標392
19.2集中研發精力的一些技巧392
19.2.1人物角色393
19.2.2用戶故事圖譜393
19.2.3發現和組織實體394
19.2.4規劃用戶交互394
19.3傳遞應用標識395
19.4設計屏幕的布局396
19.4.1草稿圖396
19.4.2線框圖397
19.4.3綜合設計圖397
19.5正確處理視覺反饋397
19.6觀察目標用戶398
19.6.1應用仿真模型398
19.6.2測試發布版本399
19.7本章小結399
19.8小測驗399
19.9練習題400
19.10參考資料和更多信息400
第20章交付質量可靠的應用401
20.1設計可靠應用的最佳實踐401
20.1.1滿足Android用戶的
需求402
20.1.2為Android設備設計
用戶界面402
20.1.3設計穩定并即時響應的
Android應用403
20.1.4設計安全的Android
應用404
20.1.5將應用利潤最大化405
20.1.6遵循Android應用的
質量指導方針405
20.1.7采用第三方質量標準407
20.1.8開發易于維護和升級的
Android應用407
20.1.9利用Android的工具
輔助應用的設計409
20.2避免在Android應用中犯
低級錯誤409
20.3開發可靠Android應用的
最佳實踐409
20.3.1設計適用于Android開發的研發流程410
20.3.2盡早并經常測試應用的
可行性410
20.3.3使用編碼標準、審閱及
單元測試來改進代碼
質量410
20.3.4處理單個設備中出現的
缺陷412
20.3.5利用Android工具來
開發413
20.3.6避免在Android應用
開發中犯低級錯誤413
20.4本章小結414
20.5小測驗414
20.6練習414
20.7參考資料和更多信息414
第21章測試應用417
21.1測試移動應用的最佳實踐417
21.1.1設計移動應用的缺陷追
蹤系統417
21.1.2管理測試環境419
21.1.3讓測試覆蓋率最大化421
21.1.4利用Android的SDK
工具來測試應用427
21.1.5避免Android應用測試
中的一些低級錯誤428
21.2Android應用測試精要428
21.2.1利用JUnit進行單元
測試429
21.2.2PasswordMatcher應用
簡介430
21.2.3確認測試的預期結果433
21.2.4為測試代碼創建一個
運行配置433
21.2.5編寫測試代碼436
21.2.6在AndroidStudio中
運行你的第一個測試438
21.2.7分析測試結果438
21.2.8添加其他測試439
21.3更多Android自動化測試
程序和API442
21.4本章小結442
21.5小測驗443
21.6練習題443
21.7參考資料和更多信息443
第22章分發應用445
22.1選擇正確的分發模型445
22.1.1保護你的知識產權446
22.1.2遵循GooglePlay的
政策446
22.1.3向用戶收費447
22.2為即將發布的應用打包448
22.2.1為打包工作準備好
代碼448
22.2.2打包應用并簽名450
22.2.3測試用于發布的
應用包453
22.2.4包含所有需要的資源453
22.2.5準備好你的服務器或者
服務453
22.2.6發布應用453
22.3在GooglePlay中發布應用453
22.3.1登錄GooglePlay454
22.3.2將應用上傳到Google
Play457
22.3.3上傳應用營銷相關的
資源458
22.3.4配置定價和發布詳情458
22.3.5配置額外的應用選項459
22.3.6管理其他開發人員控制臺
選項460
22.3.7將應用發布到Google
Play460
22.3.8在GooglePlay中管理
應用461
22.4GooglePlay上的階段性
展示產品462
22.5通過GooglePlay私有渠道
發布應用462
22.6翻譯應用462
22.7通過其他方式發布應用463
22.8自行發布應用464
22.9本章小結465
22.10小測驗465
22.11練習題465
22.12參考資料和更多信息466
第Ⅵ部分附錄
附錄A提示與技巧:Android
Studio469
附錄B快速入門指南:Android
模擬器481
附錄C快速入門指南:Android設備
監視器507
附錄D精通AndroidSDK工具523
附錄E快速入門:Gradle構建
系統539
附錄F小測驗答案557