內容簡介
本書是一部Android開發的實戰教程,由淺入深、由基礎到高級,帶領讀者一步一步走進App開發的神奇世界。
全書共分為16章。其中,前8章是基礎部分,主要講解Android Studio的環境搭建、App開發的各種常用控制項、App的數據存儲方式、如何調試App並將App發布上線;後8章是進階部分,主要講解App開發的設備操作、網路通信、事件、動畫、多媒體、融合技術、第三方開發包、性能最佳化等。書中在講解知識點的同時給出了大量實戰範例,方便讀者迅速將所學的知識運用到實際開發中。通過本書的學習,讀者能夠掌握3類主流App的基本開發技術,包括購物App(電子商務)、聊天App(即時通信)、打車App(交通出行)。另外,能夠學會開發一些趣味套用,包括簡單計算器、房貸計算器、萬年曆、日程表、手機安全助手、指南針、衛星渾天儀、摳圖工具、動感影集、影視播放器、音樂播放器、WIFI共享器等。
本書適用於Android開發的廣大從業者、有志於轉型App開發的程式設計師、App開發的業餘愛好者,也可作為大中專院校與培訓機構的Android課程教材。
圖書目錄
第1章 Android Studio環境搭建 1
1.1 Android Studio簡介 2
1.2 Android Studio的安裝 2
1.2.1 開發機配置要求 2
1.2.2 安裝依賴的軟體 3
1.2.3 安裝Android Studio 5
1.3 運行小套用Hello World 7
1.3.1 創建新項目 7
1.3.2 編譯項目/模組 10
1.3.3 創建模擬器 10
1.3.4 在模擬器上運行App 11
1.4 App的工程結構 12
1.4.1 工程說明 12
1.4.2 編譯配置檔案build.gradle 13
1.4.3 App運行配置AndroidManifest.xml 15
1.4.4 在代碼中操縱控制項 15
1.5 準備開始 17
1.5.1 使用快捷鍵 17
1.5.2 安裝SVN工具 18
1.5.3 安裝常用外掛程式 19
1.5.4 導入ADT工程 21
1.6 小結 22
第2章 初級控制項 23
2.1 螢幕顯示 24
2.1.1 像素 24
2.1.2 顏色 25
2.2 簡單布局 27
2.2.1 視圖View的基本屬性 27
2.2.2 線性布局LinearLayout 30
2.2.3 滾動視圖ScrollView 32
2.3 簡單控制項 34
2.3.1 文本視圖TextView 34
2.3.2 按鈕Button 38
2.3.3 圖像視圖ImageView 39
2.3.4 圖像按鈕ImageButton 43
2.4 圖形基礎 45
2.4.1 Drawable 46
2.4.2 狀態列表圖形 47
2.4.3 形狀圖形 48
2.4.4 九宮格圖片 51
2.5 實戰項目:簡單計算器 52
2.5.1 設計思路 53
2.5.2 小知識:日誌Log/提示Toast 54
2.5.3 代碼示例 55
2.6 小結 58
第3章 中級控制項 59
3.1 其他布局 60
3.1.1 相對布局RelativeLayout 60
3.1.2 框架布局FrameLayout 64
3.2 特殊按鈕 65
3.2.1 複選框CheckBox 65
3.2.2 開關按鈕Switch 66
3.2.3 單選按鈕RadioButton 67
3.3 適配視圖基礎 68
3.3.1 下拉框Spinner 68
3.3.2 數組適配器ArrayAdapter 69
3.3.3 簡單適配器SimpleAdapter 70
3.4 編輯框 71
3.4.1 文本編輯框EditText 72
3.4.2 自動完成編輯框AutoCompleteTextView 77
3.5 Activity基礎 78
3.5.1 Activity的生命周期 78
3.5.2 使用Intent傳遞訊息 82
3.5.3 向下一個Activity傳遞參數 84
3.5.4 向上一個Activity返回參數 85
3.6 實戰項目:登錄App 88
3.6.1 設計思路 88
3.6.2 小知識:AlertDialog 89
3.6.3 代碼示例 91
3.7 小結 94
第4章 數據存儲 95
4.1 共享參數SharedPreferences 96
4.1.1 基本用法 96
4.1.2 實現記住密碼功能 97
4.2 資料庫SQLite 98
4.2.1 SQLite的基本用法 98
4.2.2 SQLiteOpenHelper 100
4.2.3 最佳化記住密碼功能 106
4.3 SD卡檔案操作 108
4.3.1 SD卡的基本操作 108
4.3.2 文本檔案讀寫 110
4.3.3 圖片檔案讀寫 111
4.4 Application基礎 112
4.4.1 Application的生命周期 112
4.4.2 利用Application操作全局變數 113
4.5 實戰項目:購物車 115
4.5.1 設計思路 115
4.5.2 小知識:選單Menu 116
4.5.3 代碼示例 119
4.6 小結 125
第5章 高級控制項 126
5.1 日期時間控制項 127
5.1.1 日期選擇器DatePicker 127
5.1.2 時間選擇器TimePicker 128
5.2 列表類視圖 129
5.2.1 基本適配器BaseAdapter 129
5.2.2 列表視圖ListView 133
5.2.3 格線視圖GridView 138
5.3 翻頁類視圖 142
5.3.1 翻頁視圖ViewPager 142
5.3.2 翻頁標題欄PagerTitleStrip/PagerTabStrip 145
5.3.3 簡單的啟動引導頁 147
5.4 碎片Fragment 150
5.4.1 靜態註冊 150
5.4.2 動態註冊/碎片適配器FragmentStatePagerAdapter 154
5.4.3 改進的啟動引導頁 157
5.5 Broadcast基礎 159
5.5.1 傳送/接收臨時廣播 159
5.5.2 定時器AlarmManager 162
5.6 實戰項目:日曆/日程表 163
5.6.1 設計思路 163
5.6.2 小知識:震動器Vibrator 165
5.6.3 代碼示例 165
5.7 小結 170
6.1 自定義視圖 172
6.1.1 聲明屬性 172
6.1.2 構造對象 175
6.1.3 測量尺寸 176
6.1.4 繪製視圖 179
6.2 自定義動畫 184
6.2.1 任務Runnable 184
6.2.2 下拉刷新動畫 185
6.2.3 圓弧進度動畫 186
6.3 自定義對話框 190
6.3.1 對話框Dialog 190
6.3.2 改進的日期對話框 191
6.3.3 自定義多級對話框 195
6.4 自定義通知欄 195
6.4.1 通知推送Notification 195
6.4.2 進度條ProcessBar 198
6.4.3 遠程視圖RemoteViews 199
6.5 Service基礎 202
6.5.1 Service的生命周期 203
6.5.2 推送服務到前台 207
6.6 實戰項目:手機安全助手 210
6.6.1 設計思路 210
6.6.2 小知識:套用包管理PackageManager 211
6.6.3 代碼示例 213
6.7 小結 216
第7章 組合控制項 217
7.1 標籤欄 218
7.1.1 標籤按鈕 218
7.1.2 實現底部標籤欄 219
7.2 導航欄 228
7.2.1 工具列Toolbar 228
7.2.2 溢出選單OverflowMenu 230
7.2.3 搜尋框SearchView 232
7.2.4 標籤布局TabLayout 235
7.3 橫幅條 240
7.3.1 自定義指示器 241
7.3.2 實現橫幅輪播Banner 243
7.4 增強型列表 247
7.4.1 循環視圖RecyclerView 247
7.4.2 布局管理器LayoutManager 252
7.4.3 動態更新循環視圖 256
7.5 實戰項目:仿淘寶主頁 258
7.5.1 設計思路 258
7.5.2 小知識:下拉刷新SwipeRefreshLayout 259
7.5.3 代碼示例 262
7.6 小結 266
第8章 調試與上線 267
8.1 調試工作 268
8.1.1 模擬器調試 268
8.1.2 真機調試 272
8.1.3 導出APK安裝包 274
8.2 準備上線 276
8.2.1 版本設定 276
8.2.2 上線模式 277
8.2.3 數據加密 281
8.3 安全加固 289
8.3.1 反編譯 289
8.3.2 代碼混淆 291
8.3.3 第三方加固及重簽名 294
8.4 發布到套用商店 296
8.4.1 註冊開發者賬號 296
8.4.2 創建並提交套用 297
8.5 小結 299
第9章 設備操作 300
9.1 攝像頭 301
9.1.1 表面視圖SurfaceView 301
9.1.2 使用Camera拍照 303
9.1.3 紋理視圖TextureView 308
9.1.4 使用Camera 2拍照 309
9.2 麥克風 311
9.2.1 拖動條SeekBar 312
9.2.2 音量控制 313
9.2.3 錄音與播音 314
9.2.4 錄像與放映 322
9.3 感測器 326
9.3.1 感測器的種類 327
9.3.3 指南針 330
9.3.4 計步器和感光器 333
9.4 手機定位 334
9.4.1 開啟定位功能 334
9.4.2 獲取定位信息 337
9.5 實戰項目:仿微信的發現功能 341
9.5.1 設計思路 341
9.5.2 小知識:衛星導航 343
9.5.3 代碼示例 345
9.6 小結 351
第10章 網路通信 352
10.1 多執行緒 353
10.1.1 訊息傳遞Message 353
10.1.2 進度對話框ProgressDialog 356
10.1.3 異步任務AsyncTask 359
10.1.4 異步服務IntentService 365
10.2 HTTP接口訪問 367
10.2.1 網路連線檢查 367
10.2.2 移動數據格式JSON 369
10.2.3 HTTP接口調用 371
10.2.4 HTTP圖片獲取 376
10.3 上傳和下載 378
10.3.1 下載管理器DownloadManager 378
10.3.2 檔案對話框 384
10.3.3 檔案上傳 385
10.4 套接字Socket 389
10.4.1 網路地址InetAddress 389
10.4.2 Socket通信 390
10.5 實戰項目:仿手機QQ的聊天功能 394
10.5.1 設計思路 394
10.5.2 小知識:可摺疊列表視圖ExpandableListView 397
10.5.3 代碼示例 401
10.6 小結 407
第11章 事件 408
11.1 按鍵事件 409
11.1.1 檢測軟鍵盤 409
11.1.2 檢測物理按鍵 411
11.1.3 音量調節對話框 413
11.2 觸摸事件 417
11.2.1 手勢事件的分發流程 417
11.2.2 手勢事件處理MotionEvent 421
11.2.3 手寫簽名 424
11.3 手勢檢測 426
11.3.1 手勢檢測器GestureDetector 426
11.3.2 飛掠視圖ViewFlipper 428
11.3.3 手勢控制橫幅輪播 431
11.4 手勢衝突處理 435
11.4.1 上下滾動與左右滑動的衝突處理 435
11.4.2 內部滑動與翻頁滑動的衝突處理 438
11.5 實戰項目:摳圖神器——美圖變變 443
11.5.1 設計思路 443
11.5.2 小知識:圖像的基本加工 444
11.5.3 代碼示例 445
11.6 小結 451
第12章 動畫 452
12.1 幀動畫 453
12.1.1 幀動畫的實現 453
12.1.2 顯示GIF動畫 455
12.1.3 淡入淡出動畫 456
12.2 補間動畫 457
12.2.1 補間動畫的種類 458
12.2.2 補間動畫的原理 462
12.2.3 集合動畫 465
12.2.4 在飛掠橫幅中使用補間動畫 466
12.3 屬性動畫 469
12.3.1 屬性動畫的用法 469
12.3.2 屬性動畫組合 472
12.3.3 插值器和估值器 473
12.4 動畫的實現手段 477
12.4.1 使用延時重繪 477
12.4.2 設定狀態參數 478
12.4.3 滾動器Scroller 479
12.5 實戰項目:仿QQ空間的動感影集 481
12.5.1 設計思路 481
12.5.2 小知識:畫布的繪圖層次 482
12.5.3 代碼示例 486
12.6 小結 492
第13章 多媒體 493
13.1 相冊 494
13.1.1 畫廊Gallery 494
13.1.2 圖像切換器ImageSwitcher 496
13.1.3 圖片查看器——青青相冊 499
13.2 視頻播放 502
13.2.1 視頻視圖VideoView 503
13.2.2 媒體控制條MediaController 505
13.2.3 影視播放器——愛看劇場 507
13.3 內容提供與處理 514
13.3.1 內容提供器ContentProvider 515
13.3.2 內容解析器ContentResolver 517
13.3.3 內容觀察器ContentObserver 521
13.4 實戰項目:音樂播放器——浪花音樂 524
13.4.1 設計思路 524
13.4.2 小知識:可變字元串SpannableString 526
13.4.3 代碼示例 529
13.5 小結 537
第14章 融合技術 538
14.1 網頁集成 539
14.1.1 資產管理器AssetManager 539
14.1.2 網頁視圖WebView 540
14.1.3 簡單瀏覽器 542
14.2 JNI開發 549
14.2.1 NDK環境搭建 550
14.2.2 創建JNI接口 552
14.2.3 JNI實現加解密 556
14.3.1 無線網路管理器WifiManager 559
14.3.2 藍牙BlueTooth 560
14.4 實戰項目:WIFI共享器 570
14.4.1 設計思路 570
14.4.2 小知識:NetBIOS協定 571
14.4.3 代碼示例 574
14.5 小結 582
第15章 第三方開發包 583
15.1 地圖SDK 584
15.1.1 查看簽名信息 584
15.1.2 百度地圖 586
15.1.3 高德地圖 591
15.2 分享SDK 596
15.2.1 QQ分享 596
15.2.2 微信分享 598
15.3 支付SDK 602
15.3.1 支付寶支付 603
15.3.2 微信支付 604
15.4 語音SDK 606
15.4.1 語音識別 606
15.4.2 語音合成 609
15.5 實戰項目:仿滴滴打車 610
15.5.1 設計思路 611
15.5.2 小知識:評分條RatingBar 611
15.5.3 代碼示例 614
15.6 小結 615
第16章 性能最佳化 616
16.1 布局檔案最佳化 617
16.1.1 減少重複布局 617
16.1.2 自適應調整布局 619
16.1.3 自定義視窗主題 621
16.2 記憶體泄漏處理 623
16.2.1 記憶體泄漏的檢測 623
16.2.2 記憶體泄漏的預防 628
16.3 執行緒池管理 631
16.3.1 普通執行緒池 631
16.3.2 定時器執行緒池 634
16.4 省電模式 634
16.4.1 檢測當前電量 635
16.4.2 檢測螢幕開關 636
16.5 實戰項目:圖片快取框架 638
16.5.1 設計思路 638
16.5.2 小知識:LRU快取策略 640
16.5.3 代碼示例 642
16.6 小結 649