Android 編程權威指南, 2/e

菲利普斯 (Bill Phillips), 斯圖爾特 (Chris Stewart), 哈迪 (Brian Hardy), 馬爾西卡諾 (Kristin Marsicano)

買這商品的人也買了...

商品描述

<內容介紹>

Big Nerd Ranch是美國一家專業的移動開發技術培訓機構。本書主要以其Android訓練營教學課程為基礎,融合了幾位作者多年的心得體會,是一本完全面向實戰的Android編程指南。全書共34章,詳細介紹了8個Android應用。通過這些精心設計的應用,讀者可掌握很多重要的理論知識和開發技巧,獲得前沿的開發經驗。
如果你熟悉Java語言,或者瞭解面向對象編程,那就立刻開始Android編程之旅吧!

<目錄>


第1章Android開發初體驗1
1.1應用開發基礎1
1.2創建Android項目2
1.3 Android Studio使用導航6
1.4用戶界面設計7
1.4.1視圖層級結構10
1.4.2組件屬性11
1.4.3創建字符串資源12
1.4.4預覽界面佈局12
1.5從佈局XML到視圖對象13
1.6組件的實際應用17
1.6.1引用組件18
1.6.2設置監聽器18
1.7創建提示消息20
1.8使用模擬器運行應用23
1.9深入學習: Android編譯過程25
第2章Android與MVC設計模式29
2.1創建新類29
2.2 Android與MVC設計模式32
2.3更新視圖層34
2.4更新控制層36
2.5在設備上運行應用40
2.5.1連接設備40
2.5. 2配置設備用於應用開發41
2.6添加圖標資源42
2.6.1向項目中添加資源43
2.6.2在XML文件中引用資源45
2.7關於挑戰練習46
2.8挑戰練習:為TextView添加監聽器46
2.9挑戰練習:添加後退按鈕46
2.10挑戰練習:從按鈕到圖標按鈕47
第3章Activity的生命週期49
3.1日誌跟蹤理解Activity生命週期50
3.1.1輸出日誌信息50
3.1.2使用LogCat 52
3.2設備旋轉與Activity生命週期55
3.3設備旋轉前保存數據59
3.4再探Activity生命週期61
3.5深入學習:測試onSaveInstanceState(Bundle)方法62
3.6深入學習:日誌記錄的級別與方法64
第4章Android應用的調試65
4.1異常與棧跟蹤66
4.1.1診斷應用異常67
4.1.2記錄棧跟蹤日誌68
4.1.3設置斷點69
4.1.4使用異常斷點72
4.2 Android特有的調試工具73
4.2.1使用Android Lint 73
4.2.2 R類的問題75
第5章第二個activity 76
5.1創建第二個activity 77
5.1.1創建新的activity 78
5.1.2創建新的activity子類81
5.1.3在manifest配置文件中聲明activity 81
5.1. 4為QuizActivity添加Cheat按鈕82
5.2啟動activity 84
5.3 activity間的數據傳遞86
5.3.1使用intent extra 86
5.3.2從子activity獲取返回結果89
5.4 activity的使用與管理94
5.5挑戰練習97
第6章Android SDK版本與兼容98
6.1 Android SDK版本98
6.2 Android編程與兼容性問題99
6.2.1比較合理的版本99
6.2.2 SDK最低版本101
6.2.3 SDK目標版本101
6.2.4 SDK編譯版本101
6.2.5安全添加新版本API中的代碼101
6.3使用Android開發者文檔104
6.4挑戰練習:報告編譯版本106
第7章UIfragment與fragment管理器107
7.1 UI設計的靈活性需求108
7.2 fragment的引入108
7.3著手開發CriminalIntent 109
7.3.1創建新項目112
7.3.2 fragment與支持庫113
7.3.3在Android Studio中增加依賴關係114
7.3.4創建Crime類117
7.4託管UI fragment 118
7.4.1 fragment的生命週期118
7.4.2託管的兩種方式119
7.4.3定義容器視圖119
7.5創建UI fragment 120
7.5.1定義CrimeFragment的佈局121
7.5.2創建CrimeFragment類122
7.6添加UIfragment到FragmentManager 125
7.6.1 fragment事務126
7.6.2 FragmentManager與fragment生命週期129
7.7採用fragment的應用架構130
7.8深入學習:為什麼應優先使用支持庫版fragment 131
7.9深入學習:使用操作系統內置版fragment 131
第8章使用佈局與組件創建用戶界面132
8.2更新佈局133
8.3生成並使用組件135
8.4深入探討XML佈局屬性136
8.4.1樣式、主題及主題屬性136
8.4.2 dp、sp以及屏幕像素密度137
8.4.3 Android開發設計原則138
8.4.4佈局參數139
8.4. 5邊距與內邊距139
8.5使用圖形佈局工具140
8.5.1創建水平模式佈局141
8.5.2添加新組件142
8.5.3在屬性視圖中編輯組件屬性143
8.5.4在框架視圖中重新組織組件144
8.5.5更新子組件的佈局參數145
8.5.6 android:layout_weight屬性的工作原理146
8.5.7圖形佈局工具使用總結147
8.5.8組件ID與多種佈局148
8.6挑戰練習:日期格式化148
第9章使用RecyclerView顯示列表150
9.2使用抽象activity託管fragment 153
9.2.1通用的fragment託管佈局153
9.2.2抽象activity類154
9.3 RecyclerView、Adapter和ViewHolder 158
9.3.1 ViewHolder和Adapter 159
9.3.2使用RecyclerView 161
9.3.3實現Adapter和ViewHolder 166
9.4.1創建列表項佈局166
9.4.2使用定製列表項視圖168
9.5響應點擊170
9.6深入學習:ListView和GridView 171
9.7深入學習:單例171
第10章使用fragment argument 173
10.1從fragment中啟動activity 173
10.1.1附加extra信息174
10.1.2獲取extra信息175
10.1.3使用Crime數據更新CrimeFragment視圖176
10.1.4直接獲取extra信息的缺點177
10.2 fragment argument 177
10.2.1附加argument給fragment 178
10.2.2獲取argument 179
10.3刷新顯示列表項180
10.4通過fragment獲取返回結果182
10.5挑戰練習:實現高效的RecyclerView刷新183
10.6深入學習:為何要用fragmentargument 183
第11章使用ViewPager 185
11.1創建CrimePagerActivity 186
11.1.1 ViewPager與PagerAdapter 187
11.1.2整合併配置使用CrimePagerActivity 188
11.2 FragmentStatePagerAdapter與FragmentPagerAdapter 190
11.3深入學習:ViewPager的工作原理192
11.4深入學習:以代碼的方式創建佈局193
第12章對話框194
12.1使用AppCompat兼容庫195
12.2創建DialogFragment 196
12.2.1顯示DialogFragment 198
12.2.2設置對話框的顯示內容199
12.3 fragment間的數據傳遞202
12.3.1傳遞數據給DatePickerFragment 203
12.3.2返回數據給CrimeFragment 204
12.4挑戰練習:更多對話框211
12.5挑戰練習:按設備類型展現DialogFragment 212
第13章工具欄213
13.1 AppCompat 213
13.2工具欄菜單216
13.2.1在XML文件中定義菜單217
13.2.2創建菜單221
13.2.3響應菜單項選擇223
13.3實現層級式導航225
13.4可選菜單項226
13.4.1切換菜單項標題227
13.4.2 “還有個問題” 229
13.5深入學習:工具欄與操作欄231
13.6挑戰練習:刪除crime記錄231
13.7挑戰練習:優化字符串資源顯示231
13.8挑戰練習:用於RecyclerView的空視圖232
第14章SQLite數據庫233
14.1定義Schema 233
14.2創建初始數據庫234
14.3修改CrimeLab類238
14.4寫入數據庫239
14.4 .1使用ContentValues ​​239
14.4.2插入和更新記錄240
14.5讀取數據庫242
14.5.1使用CursorWrapper 243
14.5.2創建模型層對象244
14.6深入學習:數據庫高級主題介紹247
14.7深入學習:應用上下文248
14.8挑戰練習:刪除Crime記錄248
第15章隱式intent 249
15.1添加按鈕組件250
15.2添加嫌疑人信息至模型層252
15.3使用格式化字符串254
15.4使用隱式intent 255
15.4.1隱式intent的組成255
15.4 .2發送消息256
15.4.3獲取聯繫人信息259
15.4.4檢查可響應任務的activity 263
15.5挑戰練習:ShareCompat 265
15.6挑戰練習:又一個隱式intent 265
第16章使用intent拍照266
16.1佈置照片266
16.2外部存儲269
16.3使用相機intent 272
16.3.1外部存儲使用權限272
16.3.2觸發拍照273
16.4縮放和顯示位圖274
16.5功能聲明277
16.6深入學習:使用include標籤278
16.7挑戰練習:優化照片顯示278
16.8挑戰練習:優化縮略圖加載279
第17章Master—Detail用戶界面280
17.1增加佈局靈活性281
17.1.1修改SingleFragmentActivity 282
17.1.2創建包含兩個fragment容器的佈局283
17.1.3使用別名資源284
17.1 .4創建平板設備專用可選資源285
17.2 Activity:fragment的託管者286
17.3深入學習:設備屏幕尺寸的確定295
第18章Assets 297
18.1為何使用assets 297
18.2創建BeatBox應用298
18.3導入assets 301
18.4處理assets 303
18.5使用Assets 305
18.6訪問Assets 308
18.7深入學習:什麼是non—assets 308
第19章使用SoundPool播放音頻309
19.1創建SoundPool 309
19.2加載音頻文件310
19.3播放音頻311
19.4釋放音頻313
19.5設備旋轉和對象保存314
19.5.1保留fragment 315
19.5.2旋轉和已保留fragment 316
19.6深入學習:是否要保留318
19.7深入學習:設備旋轉處理再探318
第20章樣式與主題321
20.1顏色資源321
20.2樣式322
20.3主題324
20.4添加主題顏色327
20.5覆蓋主題屬性328
20.6修改按鈕屬性332
20.7深入學習:樣式繼承拾遺334
20.8深入學習:引用主題屬性335
20.9挑戰練習:創建多版本主題335
第21章XMLdrawable 336
21.1統一按鈕樣式337
21.2 shape drawable 338
21.3 state list drawable 340
21.4 layer list drawable 341
21.5深入學習:為什麼要用XML drawable 342
21.6深入學習:使用9—patch圖像343
21.7深入學習:使用Mipmap圖像347
第22章深入學習intent和任務348
22.1創建NerdLauncher項目348
22.2解析隱式intent 351
22.3在運行時創建顯式intent 355
22.4任務與後退棧357
22.4.1在任務間切換357
22.4.2啟動新任務358
22.5使用NerdLauncher應用作為設備主屏幕361
22.6挑戰練習:應用圖標362
22.7深入學習:進程與任務362
22.8深入學習:並發文檔364
第23章HTTP與後台任務367
23.1創建PhotoGallery應用368
23.2網絡連接基本371
23.3使用AsyncTask在後台線程上運行代碼373
23.4線程與主線程374
23.5從Flickr獲取JSON數據376
23.6從AsyncTask回到主線程383
23.7清理AsyncTask 386
23.8深入學習:AsyncTask再探387
23.9深入學習:AsyncTask的替代方案388
23.10挑戰練習:Gson 388
23.11挑戰練習:分頁388
23.12挑戰練習:動態調整網格列389
第24章Looper、Handler和HandlerThread 390
24.1配置RecyclerView以顯示圖片390
24.2批量下載縮略圖393
24.3與主線程通信393
24.4創建並啟動後台線程394
24.5 Message與message handler 396
24.5.1消息的剖析397
24.5.2 Handler的剖析397
24.5.3使用handler 398
24.5.4傳遞handler 402
24.6深入學習:AsyncTask與線程407
24.7挑戰練習:預加載以及緩存407
24.8深入學習:解決圖片下載問題408
第25章搜索409
25.1搜索Flickr網站410
25.2使用SearchView 414
25.3使用sharedpreferences實現輕量級數據存儲419
25.4優化應用422
25.5挑戰練習:深度優化PhotoGallery應用423
第26章後台服務424
26.1創建IntentService 424
26.2服務的作用427
26.3查找最新返回結果428
26.4使用AlarmManager延遲運行服務430
26.4.1合理控制服務啟動的頻度432
26.4.2 PendingIntent 433
26.4.3使用PendingIntent管理定時器434
26.5控制定時器434
26.6通知信息437
26.7挑戰練習:可穿戴設備上的通知439
26.8深入學習:服務細節內容440
26.8.1服務的能與不能440
26.8.2服務的生命週期440
26.8.3 non—sticky服務440
26.8.4 sticky服務441
26.8.5綁定服務441
26.9深入學習:JobScheduler和JobService 442
26.10深入學習:Sync Adapter 445
26.11挑戰練習:在Lollipop設備上使用JobService 446
第27章broadcastintent 447
27.1一般intent和broadcastintent 447
27.2接收系統broadcast:重啟後喚醒448
27.2.1 standalone receiver 448
27.2.2使用receiver 450
27.3過濾前臺通知消息452
27.3.1發送broadcast intent 452
27.3.2動態broadcast receiver 453
27.3.3使用私有權限455
27.3.4使用有序broadcast 458
27.4 receiver與長時運行任務462
27.5深入學習:本地事件462
27.5.1使用EventBus 463
27.5.2使用Rxjava 463
27.6深入學習:檢測fragment的狀態464
第28章網頁瀏覽466
28.1最後一段Flickr數據466
28.2簡單方式:隱式intent 469
28.3較難方式:使用WebView 470
28.4處理WebView的設備旋轉問題476
28.5深入學習:註入JavaScript對象477
28.6深入學習:KitKat的WebView 478
28.7挑戰練習:使用後退鍵瀏覽歷史網頁478
28.8挑戰練習:非HTTP鏈接支持479
第29章定製視圖與觸摸事件480
29.1創建DragAndDraw項目480
29.1.1創建DragAndDrawActivity 481
29.1.2創建DragAndDrawFragment 481
29.2創建定製視圖482
29.3處理觸摸事件484
29.4 onDraw(...)方法內的圖形繪製488
29.5挑戰練習:設備旋轉問題490
29.6挑戰練習:旋轉矩形框490
第30章屬性動畫492
30.1建立場景492
30.2簡單屬性動畫495
30.2.1視圖屬性轉換498
30.2.2使用不同的interpolator 500
30.2.3色彩漸變500
30.3播放多個動畫502
30.4深入學習:其他動畫API 504
30.4.1傳統動畫工具504
30.4.2轉場504
30.5挑戰練習504
第31章地理位置和Play服務505
31.1地理位置和定位類庫505
31.2創建Locatr項目506
31.3 Play服務和模擬器507
31.4創建Locatr應用510
31.5配置Google Play服務512
31.6使用Google Play服務514
31.7基於地理位置的Flickr搜索516
31.8獲取定位數據517
31.9尋找並顯示圖片519
31.10挑戰練習:進度指示器521
第32章使用地圖522
32.1導入Play地圖服務庫522
32.2 Android上的地圖服務522
32.3地圖API設置523
32.4創建地圖525
32.5獲取更多地理位置數據526
32.6使用地圖529
32.7深入學習:團隊開發和API key 534
第33章material design 536
33.1 material surface 536
33.1.1 elevation和Z值538
33.1.2 state list animator 539
33.2動畫工具540
33.2.1 circular reveal 541
33.2.2 shared element transition 542
33.3新的視圖組件545
33.3.1 card 545
33.3.2 floating action button 547
33.3.3 snackbar 548
33.4深入學習material design 549
第34章編後語550
34.1終極挑戰550
34.2關於我們551
34.3致謝551