內容簡介
Android是由Google 公司發布的專門為移動設備開發的、完全免費的平台,使用它不需要授權費,可以完全定製。另外,由於Android 底層架構使用開源的Linux 作業系統,同時開放了應用程式開發工具,使所有程式開發人員都可以在統一的、開放的平台上進行開發,從而保證了
Android應用程式的可移植性。因此Android 已經成為全球最受歡迎的智慧型手機作業系統之一,受到越來越多編程愛好者的青睞。
本書知識系統全面,講解詳細,結合大量實例,幫助讀者更好地鞏固所學知識,提升能力。書中設定e 學碼,不易理解的專業術語、代碼難點只需用手機掃描文字下方的e 學碼即可獲取更多擴展解釋,隨時掃除學習障礙。此外,登錄明日學院還可以獲取更多學習資源和技術支持。
《Android 開發詳解》是一本綜合開發參考書,書中幾乎囊括了使用Android 進行程式開發的全部知識,既適合初學者入門,又適合開發者進階。本書共28 章,依次講解了Android 旅程之起點,Android Studio 的常用技巧,App UI 設計,初級UI 控制項,中級UI 控制項,高級UI 控制項,Android 許可權機制與支持庫的套用,
自定義控制項,主角(Activity)與配角(Intent),Android 程式的修理工,事件與手勢,Android 基本資源訪問,Android 高級資源的調用,Action Bar 的使用,訊息、通知、廣播與鬧鐘,圖形圖像處理技術,Android 中的動畫,播放音頻與視頻,拍照與顯示圖片,利用OpenGL 實現3D 圖形,數據存儲技術,默默付出的後台工作者,感測器套用,位置服務與地圖套用,網路編程及Internet 套用,Android 中的小部件,常用的第三方技術,發布你的App。書中所有知識都結合具體實例進行講解,實例代碼給出了詳細的注釋,可以逐步引導讀者學習並掌握Android 程式開發的知識、方法和技巧,快速提升開發技能。
目錄
第1章 Android 旅程之起點.....1
1.1 走近Android ................................1
1.1.1 智慧型手機作業系統....................1
1.1.2 Android發展史.......................2
1.1.3 Android套用領域.....................3
1.2 搭建Android開發環境........................4
1.2.1 開發環境概述........................4
1.2.2 集成Android開發環境的下載...........5
1.2.3 集成Android開發環境的安裝...........8
1.3 與Android套用初次相見.................... 15
1.3.1 創建Android應用程式............... 15
1.3.2 Android項目結構類型............... 21
1.3.3 使用Android模擬器................. 26
1.3.4 運行Android套用................... 30
1.4 知識回顧................................. 33
第2第2章 Android Studio 的常用技巧............ 34
2.1 Android Studio的基本了解.................. 34
2.1.1 了解配置界面...................... 34
2.1.2 外觀設定.......................... 37
2.1.3 Android Studio的主視窗............. 39
2.1.4 常用的工具視窗.................... 41
2.2 導入項目與模組........................... 43
2.2.1 導入Android Studio項目............ 43
2.2.2 導入Eclipse項目................... 45
2.2.3 導入模組.......................... 47
2.2.4 創建與導入.AAR包................. 48
2.3 自定義圖示............................... 51
2.4 Android Studio快捷鍵的使用................ 55
2.4.1 編輯類............................ 55
2.4.2 視圖類............................ 62
2.4.3 編碼類............................ 65
2.5 知識回顧................................. 68
第3第3章 App UI 設計.......... 69
3.1 UI設計相關的概念......................... 69
3.1.1 View ............................. 69
3.1.2 ViewGroup ........................ 70
3.2 設計UI界面............................... 72
3.2.1 使用XML布局檔案設計UI界面....... 72
3.2.2 在Java代碼中設計UI界面........... 74
3.2.3 使用XML和Java代碼混合設計UI界面.. 77
3.2.4 開發自定義的View類............... 78
3.3 布局管理器............................... 81
3.3.1 相對布局管理器.................... 81
3.3.2 線性布局管理器.................... 84
3.3.3 幀布局管理器...................... 88
3.3.4 表格布局管理器.................... 90
3.3.5 格線布局管理器.................... 93
3.3.6 布局管理器的嵌套.................. 97
3.4 常用App UI界面設計....................... 99
3.5 知識回顧................................ 107
第第4章 初級UI 控制項........ 108
4.1 文本類控制項(初級)...................... 108
4.1.1 文本框........................... 108
4.1.2 編輯框............................112
4.2 按鈕類控制項(初級).......................115
4.2.1 普通按鈕..........................116
4.2.2 圖片按鈕..........................119
4.3 圖像類控制項.............................. 123
III
4.3.1 圖像視圖......................... 124
4.3.2 格線視圖......................... 127
4.4 知識回顧................................ 130
第5章 中級UI 控制項......... 131
5.1 文本類控制項(中級)...................... 131
5.1.1 自動完成文本框................... 131
5.1.2 文本切換器....................... 134
5.2 按鈕類控制項(中級)...................... 137
5.2.1 狀態開關按鈕..................... 137
5.2.2 單選按鈕......................... 140
5.2.3 複選框........................... 145
5.3 進度條類控制項............................ 148
5.3.1 進度條........................... 149
5.3.2 拖動條........................... 153
5.3.3 星級評分條....................... 156
5.4 知識回顧................................ 160
第第6章 高級UI 控制項......... 161
6.1 圖像類控制項(高級)...................... 161
6.1.1 圖像切換器(ImageSwitcher)...... 161
6.1.2 畫廊視圖(Gallery)............... 166
6.2 列表類控制項.............................. 169
6.2.1 下拉列表框(Spinner)............ 169
6.2.2 列表視圖(ListView).............. 173
6.3 切換類控制項.............................. 177
6.3.1 控制項的切換(ViewFlipper)......... 178
6.3.2 翻頁控制項(ViewPager)............ 180
6.3.3 翻頁的標題欄(PagerTabStrip)..... 185
6.4 通用控制項................................ 188
6.4.1 滾動視圖......................... 188
6.4.2 選項卡........................... 192
6.4.3 搜尋框(SearchView)............... 195
6.5 知識回顧................................ 199
第7第7章 Android 許可權機制與
支持庫的套用........ 200
7.1 Android許可權機制.......................... 200
7.2 Android支持庫的常用控制項.................. 204
7.2.1 工具列(ToolBar)................. 204
7.2.2 摺疊標題欄
(CollapsingToolbarLayout)......... 208
7.2.3 卡片式布局(CardView)........... 212
7.2.4 滑動選單(DrawerLayout)......... 215
7.2.5 下拉刷新(SwipeRefreshLayout)... 219
7.3 增強型滾動控制項.......................... 222
7.3.1 RecyclerView的基礎用法........... 223
7.3.2 RecyclerView的格線布局........... 228
7.3.3 RecyclerView的瀑布流格線布局..... 230
7.4 知識回顧................................ 234
8.1 自定義控制項實現流程...................... 235
8.1.1 自定義屬性....................... 235
8.1.2 測量尺寸......................... 238
8.1.3 繪製View......................... 239
8.2 自定義控制項.............................. 242
8.2.1 嵌套在ScrollView中的列表.......... 242
8.2.2 外星人手機時鐘................... 243
8.3 知識回顧................................ 248
第第9章 主角(Activity)與配角(Intent)............ 249
9.1 主角的作用.............................. 249
9.2 主角的艱辛歷程.......................... 251
9.2.1 創建Activity....................... 251
9.2.2 配置Activity....................... 253
9.2.3 啟動和關閉Activity................. 253
9.3 主角之間的交流.......................... 256
9.3.1 配角很重要....................... 256
9.3.2 顯式Intent........................ 258
9.3.3 隱式Intent........................ 258
9.3.4 Intent過濾器...................... 262
9.3.5 多個Activity之間交換數據........... 266
9.3.6 調用另一個Activity並返回結果....... 269
9.4 使用碎片(Fragment).................... 273
9.4.1 Fragment的生命周期............... 273
9.4.2 創建Fragment..................... 274
IV
9.4.3 在Activity中添加Fragment.......... 275
9.5 知識回顧................................ 280
第1第10章 Android 程式的修理工................. 281
10.1 DDMS工具的使用....................... 281
10.1.1 在Android Studio中打開DDMS..... 281
10.1.2 DDMS常用功能詳解.............. 282
10.2 輸出日誌信息........................... 285
10.2.1 Log.e()方法...................... 286
10.2.2 Log.w()方法..................... 286
10.2.3 Log.i()方法...................... 286
10.2.4 Log.d()方法...................... 287
10.2.5 Log.v()方法...................... 287
10.3 程式調試............................... 288
10.3.1 Android Studio編輯器調試......... 288
10.3.2 Android Studio調試器調試......... 289
10.4 知識回顧............................... 291
第11第11章 事件與手勢......... 292
11.1 互動規則................................ 292
11.1.1 基於監聽的事件處理.............. 292
11.1.2 基於回調的事件處理.............. 293
11.2 物理按鍵互動............................ 293
11.3 觸控螢幕互動.............................. 296
11.3.1 單擊事件........................ 296
11.3.2 長按事件........................ 296
11.3.3 觸摸事件........................ 298
11.3.4 單擊事件與觸摸事件的區別........ 300
11.3.5 事件的綜合套用.................. 301
11.4 手勢檢測................................ 304
11.5 知識回顧................................ 307
第第12章 Android 基本資源訪問............ 308
12.1 字元串(string)資源.................... 308
12.1.1 定義字元串資源檔案.............. 308
12.1.2 使用字元串資源.................. 309
12.2 顏色(color)資源....................... 310
12.2.1 顏色值的定義.................... 310
12.2.2 定義顏色資源檔案................ 310
12.2.3 使用顏色資源.....................311
12.3 尺寸(dimen)資源...................... 312
12.3.1 Android支持的尺寸單位........... 312
12.3.2 使用尺寸資源.................... 312
12.4 布局(layout)資源...................... 316
12.5 數組(array)資源....................... 316
12.5.1 定義數組資源檔案................ 317
12.5.2 使用數組資源.................... 317
12.6 樣式(style)資源....................... 319
12.7 Android程式國際化....................... 321
12.8 知識回顧............................... 324
第13第13章 Android 高級資源的調用............... 325
13.1 選單(menu)資源...................... 325
13.1.1 定義選單資源檔案................ 325
13.1.2 使用選單資源.................... 326
13.2 圖像資源............................... 330
13.2.1 圖片資源........................ 330
13.2.2 StateListDrawable資源............ 333
13.2.3 ShapeDrawable資源.............. 337
13.2.4 LevelListDrawable資源............ 342
13.2.5 ClipDrawable資源................ 345
13.2.6 LayerDrawable資源............... 348
13.2.7 mipmap資源..................... 350
13.3 知識回顧............................... 351
第1第14章 Action Bar 的使用... 352
14.1 Action Bar概述.......................... 352
14.2 Action Bar基本套用...................... 353
14.2.1 顯示和隱藏Action Bar............. 353
14.2.2 添加Action Item選項.............. 355
14.2.3 添加Action View................. 357
14.2.4 Action Bar與Tab.................. 359
14.3 實現層級式導航......................... 363
14.3.1 啟用程式圖示導航................ 363
14.3.2 配置父Activity.................... 363
14.3.3 控制導航圖示的顯示.............. 364
V
14.4 知識回顧............................... 366
第15第15章 訊息、通知、廣播與鬧鐘............... 367
15.1 通過Toast類顯示訊息提示框............... 367
15.2 對話框與彈出視窗的使用................. 368
15.2.1 使用AlertDialog類實現對話框...... 368
15.2.2 TimePickerDialog與
DatePickerDialog的使用.......... 374
15.2.3 進度對話框(ProgressDialog)....... 377
15.2.4 彈出視窗(PopupWindow)....... 380
15.3 使用Notification在狀態欄上顯示通知....... 385
15.4 BroadcastReceiver使用.................. 388
15.4.1 BroadcastReceiver簡介........... 388
15.4.2 BroadcastReceiver套用........... 390
15.5 使用AlarmManager設定鬧鐘.............. 392
15.5.1 AlarmManager簡介............... 392
15.5.2 設定一個簡單的鬧鐘.............. 393
15.6 知識回顧............................... 395
第1第16章 圖形圖像處理技術... 396
16.1 常用繪圖類............................. 396
16.1.1 Paint類.......................... 396
16.1.2 Canvas類....................... 398
16.1.3 Path類.......................... 399
16.1.4 Bitmap類........................ 400
16.1.5 BitmapFactory類................. 401
16.2 繪製2D圖像............................. 401
16.2.1 繪製幾何圖形.................... 401
16.2.2 繪製文本........................ 404
16.2.3 繪製圖片........................ 405
16.2.4 繪製路徑........................ 407
16.3 知識回顧................................411
第1第17章 Android 中的動畫.... 412
17.1 逐幀動畫............................... 412
17.2 補間動畫............................... 414
17.2.1 旋轉動畫(RotateAnimation)..... 415
17.2.2 縮放動畫(ScaleAnimation)...... 416
17.2.3 平移動畫(Translate Animation).. 417
17.2.4 透明度漸變動畫(AlphaAnimation).. 418
17.3 屬性動畫............................... 421
17.3.1 屬性動畫的使用.................. 421
17.3.2 屬性動畫組合.................... 426
17.4 知識回顧............................... 430
第1第18章 播放音頻與視頻..... 431
18.1 播放音頻............................... 431
18.1.1 使用MediaPlayer播放音頻......... 431
18.1.2 使用SoundPool類播放音頻........ 436
18.1.3 動態顯示歌詞的音樂播放器........ 439
18.2 播放視頻............................... 444
18.2.1 使用VideoView播放視頻........... 444
18.2.2 使用MediaPlayer和SurfaceView
播放視頻........................ 446
18.2.3 添加視頻彈幕.................... 450
18.3 知識回顧............................... 455
第1第19章 拍照與顯示圖片..... 456
19.1 控制攝像頭............................. 456
19.1.1 拍照............................ 456
19.1.2 使用Camera2進行拍照........... 460
19.1.3 錄製視頻........................ 470
19.2 調用系統相機與圖庫..................... 475
19.2.1 使用Intent啟動系統相機........... 475
19.2.2 使用Intent瀏覽圖庫並選取圖片..... 478
19.3 知識回顧............................... 482
第第20章 利用OpenGL 實現3D圖形............... 483
20.1 OpenGL簡介............................ 483
20.2 繪製3D圖形............................. 484
20.2.1 構建3D開發的基本框架............ 484
20.2.2 繪製一個模型.................... 486
20.3 添加效果............................... 491
20.3.1 套用紋理貼圖.................... 491
20.3.2 旋轉............................ 493
20.3.3 光照效果........................ 494
20.3.4 透明效果........................ 496
20.4 知識回顧............................... 497
第2第21章 數據存儲技術....... 498
21.1 SharedPreferences存儲.................. 498
21.1.1 獲取SharedPreferences類......... 499
21.1.2 向SharedPreferences檔案中存儲數據... 499
21.1.3 讀取SharedPreferences檔案中
存儲的數據...................... 500
21.2 檔案存儲............................... 502
21.2.1 內部存儲........................ 502
21.2.2 外部存儲........................ 506
21.3 資料庫存儲............................. 509
21.3.1 創建資料庫...................... 509
21.3.2 數據操作........................ 509
21.4 使用Content Provider實現數據共享........ 515
21.4.1 Content Provider概述............. 515
21.4.2 創建Content Provider............. 517
21.4.3 使用Content Provider............. 519
21.5 知識回顧............................... 522
第22第22章 默默付出的後台工作者............. 523
22.1 多執行緒................................. 523
22.1.1 創建執行緒........................ 523
22.1.2 開啟執行緒........................ 524
22.1.3 執行緒的休眠...................... 524
22.1.4 中斷執行緒........................ 525
22.2 Handler訊息傳遞機制.................... 527
22.2.1 Handler類簡介................... 529
22.2.2 Handler類中的常用方法........... 529
22.2.3 Handler與Looper、MessageQueue的關係............................ 531
22.2.4 訊息類(Message).............. 532
22.3 Service的套用........................... 534
22.3.1 Service的分類................... 535
22.3.2 Service的生命周期............... 535
22.3.3 創建與配置Service............... 536
22.3.4 啟動和停止Service............... 539
22.3.5 Bound Service................... 542
22.3.6 IntentService.................... 545
22.4 知識回顧............................... 547
第2第23章 感測器套用......... 548
23.1 Android感測器概述....................... 548
23.1.1 Android的常用感測器............. 549
23.1.2 開發步驟........................ 550
23.2 方向感測器............................. 555
23.3
磁場感測器............................. 559
23.4
加速度感測器........................... 562
23.5 知識回顧............................... 564
第第24章 位置服務與地圖套用.. 565
24.1 位置服務............................... 565
24.1.1 獲取LocationProvider............. 567
24.1.2 獲取定位信息.................... 570
24.2 百度地圖服務........................... 573
24.2.1 獲取
地圖API密鑰................. 573
24.2.2 下載SDK開發包.................. 576
24.2.3 創建使用百度地圖API的項目....... 577
24.2.4 定位到我的位置.................. 580
24.3 知識回顧............................... 584
第2第25章 網路編程及Internet套用............... 585
25.1 通過HTTP訪問網路...................... 585
25.1.1 傳送GET請求.................... 586
25.1.2 傳送POST請求................... 589
25.2 通過OkHttp3訪問網路.................... 593
25.2.1 OkHttp3簡介..................... 593
25.2.2 OkHttp3的基本用法............... 594
25.3 解析JSON格式數據...................... 597
25.3.1 JSON簡介....................... 597
25.3.2 解析JSON數據................... 598
25.3.3 使用GSON解析數據.............. 600
25.4 使用WebView顯示網頁................... 603
25.4.1 使用WebView控制項瀏覽網頁........ 604
25.4.2 使用WebView載入HTML代碼...... 606
25.4.3 讓WebView支持JavaScript........ 608
25.5 知識回顧................................611
第26第26章 Android 中的小部件... 612
26.1 Widget簡介............................. 612
26.2 Widget基礎............................. 613
26.2.1 設計原則........................ 613
26.2.2 開發步驟........................ 615
26.2.3 安裝及刪除...................... 618
26.3 Widget配置............................. 618
26.3.1 在Widget元數據檔案中聲明Activity... 619
26.3.2 創建配置Widget的Activity.......... 619
26.3.3 獲取Widget的ID.................. 621
26.3.4 更新Widget...................... 621
26.3.5 設定返回信息並關閉Activity........ 621
26.4 Widget與Service........................ 622
26.5 知識回顧............................... 626
第2第27章 常用的第三方技術... 627
27.1 第三方登錄............................. 627
27.1.1 申請第三方賬號.................. 628
27.1.2 實現第三方登錄.................. 628
27.2 社會化分享............................. 636
27.2.1 QQ分享......................... 636
27.3 微信分享............................... 640
27.4
第三方支付............................. 645
27.4.1 微信支付........................ 645
27.4.2 支付寶支付...................... 646
27.5 知識回顧............................... 648
第2第28章 發布你的App....... 649
28.1 導出APK安裝包............................................. 649
28.2 發布App................................ 651
28.2.1 開發者實名認證.................. 651
28.2.2 上傳套用........................ 654
28.3 知識回顧............................... 654
附附錄1 快捷鍵介紹...............655
附附錄2 Android 代碼編寫規範..656