第1章 Android Studio環境搭建 1
1.1 Android Studio簡介 1
1.2 Android Studio的安裝 2
1.2.1 開發機配置要求 2
1.2.2 安裝依賴的軟件 2
1.2.3 安裝Android Studio 3
1.2.4 下載Android的SDK 5
1.3 運行小應用Hello World 6
1.3.1 創建新項目 6
1.3.2 編譯項目/模塊 8
1.3.3 創建模擬器 9
1.3.4 在模擬器上運行App 9
1.4 App的工程結構 11
1.4.1 工程目錄說明 11
1.4.2 編譯配置文件build.gradle 12
1.4.3 App運行配置AndroidManifest.xml 13
1.4.4 在代碼中操縱控件 14
1.5 準備開始 15
1.5.1 使用快捷鍵 15
1.5.2 安裝SVN工具 16
1.5.3 安裝常用插件 17
1.5.4 導入已經存在的工程 19
1.5.5 新建一個Activity頁麵 20
1.6 小結 22
第2章 初級控件 23
2.1 屏幕顯示 23
2.1.1 像素 23
2.1.2 顔色 25
2.1.3 屏幕分辨率 26
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 37
2.3.3 圖像視圖ImageView 39
2.3.4 圖像按鈕ImageButton 43
2.4 圖形基礎 45
2.4.1 圖形Drawable 45
2.4.2 狀態列錶圖形 46
2.4.3 形狀圖形 47
2.4.4 九宮格圖片 50
2.5 實戰項目:簡單計算器 53
2.5.1 設計思路 53
2.5.2 小知識:日誌Log/提示Toast 55
2.5.3 代碼示例 56
2.6 小結 57
第3章 中級控件 59
3.1 其他布局 59
3.1.1 相對布局RelativeLayout 59
3.1.2 框架布局FrameLayout 63
3.2 特殊按鈕 64
3.2.1 復選框CheckBox 64
3.2.2 開關按鈕Switch 65
3.2.3 單選按鈕RadioButton 66
3.3 適配視圖基礎 68
3.3.1 下拉框Spinner 68
3.3.2 數組適配器ArrayAdapter 69
3.3.3 簡單適配器SimpleAdapter 70
3.4 編輯框 72
3.4.1 文本編輯框EditText 72
3.4.2 自動完成編輯框AutoCompleteTextView 77
3.5 活動Activity基礎 78
3.5.1 Activity的生命周期 78
3.5.2 使用Intent傳遞消息 83
3.5.3 嚮下一個Activity傳遞參數 85
3.5.4 嚮上一個Activity返迴參數 86
3.6 實戰項目:房貸計算器 89
3.6.1 設計思路 89
3.6.2 小知識:文本工具TextUtils 90
3.6.3 代碼示例 91
3.7 實戰項目:登錄App 93
3.7.1 設計思路 93
3.7.2 小知識:提醒對話框AlertDialog 94
3.7.3 代碼示例 96
3.8 小結 98
第4章 數據存儲 100
4.1 共享參數SharedPreferences 100
4.1.1 共享參數的基本用法 100
4.1.2 實現記住密碼功能 102
4.2 數據庫SQLite 103
4.2.1 SQLite的基本用法 103
4.2.2 數據庫幫助器SQLiteOpenHelper 104
4.2.3 優化記住密碼功能 110
4.3 SD卡文件操作 112
4.3.1 SD卡的基本操作 112
4.3.2 公有存儲空間與私有存儲空間 114
4.3.3 文本文件讀寫 115
4.3.4 圖片文件讀寫 116
4.4 應用Application基礎 118
4.4.1 Application的生命周期 118
4.4.2 利用Application操作全局變量 119
4.5 內容提供與處理 121
4.5.1 內容提供器ContentProvider 121
4.5.2 內容解析器ContentResolver 123
4.5.3 內容觀察器ContentObserver 128
4.6 實戰項目:購物車 131
4.6.1 設計思路 131
4.6.2 小知識:菜單Menu 132
4.6.3 代碼示例 136
4.7 小結 139
第5章 高級控件 140
5.1 日期時間控件 140
5.1.1 日期選擇器DatePicker 140
5.1.2 時間選擇器TimePicker 142
5.2 列錶類視圖 144
5.2.1 基本適配器BaseAdapter 144
5.2.2 列錶視圖ListView 148
5.2.3 網格視圖GridView 154
5.3 翻頁類視圖 158
5.3.1 翻頁視圖ViewPager 158
5.3.2 翻頁標題欄PagerTitleStrip/PagerTabStrip 161
5.3.3 簡單的啓動引導頁 163
5.4 碎片Fragment 166
5.4.1 靜態注冊 166
5.4.2 動態注冊/碎片適配器FragmentStatePagerAdapter 170
5.4.3 改進的啓動引導頁 173
5.5 廣播Broadcast基礎 175
5.5.1 發送/接收臨時廣播 176
5.5.2 定時器AlarmManager 178
5.6 實戰項目:萬年曆 180
5.6.1 設計思路 180
5.6.2 小知識:月份選擇器MonthPicker 181
5.6.3 代碼示例 183
5.7 實戰項目:日程錶 184
5.7.1 設計思路 184
5.7.2 小知識:震動器Vibrator 185
5.7.3 代碼示例 185
5.8 小結 187
第6章 自定義控件 188
6.1 自定義視圖 188
6.1.1 聲明屬性 188
6.1.2 構造對象 191
6.1.3 測量尺寸 192
6.1.4 寬高尺寸的動態調整 195
6.1.5 繪製視圖 198
6.2 自定義動畫 204
6.2.1 任務Runnable 204
6.2.2 下拉刷新動畫 205
6.2.3 圓弧進度動畫 207
6.3 自定義對話框 208
6.3.1 對話框Dialog 208
6.3.2 改進的日期對話框 209
6.3.3 自定義多級對話框 213
6.4 自定義通知欄 214
6.4.1 通知推送Notification 214
6.4.2 進度條ProgressBar 218
6.4.3 遠程視圖RemoteViews 220
6.4.4 自定義通知的文本顔色設定 223
6.5 服務Service基礎 225
6.5.1 Service的生命周期 225
6.5.2 推送服務到前颱 229
6.6 實戰項目:手機安全助手 230
6.6.1 設計思路 230
6.6.2 小知識:應用包管理器PackageManager 232
6.6.3 代碼示例 234
6.7 小結 235
第7章 組閤控件 236
7.1 標簽欄 236
7.1.1 標簽按鈕 236
7.1.2 實現底部標簽欄 238
7.2 導航欄 246
7.2.1 工具欄Toolbar 246
7.2.2 溢齣菜單OverflowMenu 248
7.2.3 搜索框SearchView 250
7.2.4 標簽布局TabLayout 253
7.3 橫幅條 260
7.3.1 自定義指示器 260
7.3.2 實現橫幅輪播Banner 263
7.3.3 仿京東頂到狀態欄的Banner 267
7.4 增強型列錶 271
7.4.1 循環視圖RecyclerView 271
7.4.2 布局管理器LayoutManager 275
7.4.3 動態更新循環視圖 280
7.5 材質設計庫 282
7.5.1 協調布局CoordinatorLayout 282
7.5.2 應用欄布局AppBarLayout 285
7.5.3 可摺疊工具欄布局CollapsingToolbarLayout 287
7.6 實戰項目:仿支付寶的頭部伸縮特效 290
7.6.1 設計思路 291
7.6.2 小知識:導航欄的滾動標誌 292
7.6.3 代碼示例 293
7.7 實戰項目:仿淘寶主頁 298
7.7.1 設計思路 298
7.7.2 小知識:下拉刷新布局SwipeRefreshLayout 299
7.7.3 代碼示例 303
7.8 小結 305
第8章 調試與上綫 306
8.1 調試工作 306
8.1.1 模擬器調試 306
8.1.2 真機調試 311
8.1.3 導齣APK安裝包 313
8.2 準備上綫 315
8.2.1 版本設置 315
8.2.2 上綫模式 316
8.2.3 數據加密 320
8.3 安全加固 325
8.3.1 反編譯 325
8.3.2 代碼混淆 327
8.3.3 第三方加固及重簽名 329
8.4 發布到應用商店 331
8.4.1 注冊開發者賬號 331
8.4.2 創建並提交應用 332
8.5 小結 334
第9章 設備操作 335
9.1 攝像頭 335
9.1.1 錶麵視圖SurfaceView 335
9.1.2 使用Camera拍照 337
9.1.3 紋理視圖TextureView 343
9.1.4 使用Camera 2拍照 344
9.1.5 運行時動態授權管理 346
9.2 麥剋風 349
9.2.1 拖動條SeekBar 349
9.2.2 音量控製 350
9.2.3 錄音與播音 352
9.2.4 錄像與放映 360
9.3 傳感器 362
9.3.1 傳感器的種類 362
9.3.2 搖一搖——加速度傳感器 364
9.3.3 指南針——磁場傳感器 365
9.3.4 計步器、感光器和陀螺儀 368
9.4 手機定位 370
9.4.1 開啓定位功能 371
9.4.2 獲取定位信息 373
9.5 短距離通信 378
9.5.1 NFC近場通信 378
9.5.2 紅外遙控 384
9.5.3 藍牙BlueTooth 388
9.6 實戰項目:仿微信的發現功能 395
9.6.1 設計思路 395
9.6.2 小知識:全球衛星導航係統 397
9.6.3 代碼示例 399
9.7 小結 406
第10章 網絡通信 407
10.1 多綫程 407
10.1.1 消息傳遞Message 407
10.1.2 進度對話框ProgressDialog 411
10.1.3 異步任務AsyncTask 414
10.1.4 異步服務IntentService 420
10.2 HTTP接口訪問 423
10.2.1 網絡連接檢查 423
10.2.2 移動數據格式JSON 425
10.2.3 JSON串與實體類自動轉換 427
10.2.4 HTTP接口調用 428
10.2.5 HTTP圖片獲取 432
10.3 上傳和下載 434
10.3.1 下載管理器DownloadManager 435
10.3.2 文件對話框 441
10.3.3 文件上傳 442
10.4 套接字Socket 445
10.4.1 網絡地址InetAddress 445
10.4.2 Socket通信 446
10.5 實戰項目:仿應用寶的應用更新功能 451
10.5.1 設計思路 451
10.5.2 小知識:查看APK文件的包信息 452
10.5.3 代碼示例 454
10.6 實戰項目:仿手機QQ的聊天功能 457
10.6.1 設計思路 457
10.6.2 小知識:可摺疊列錶視圖ExpandableListView 459
10.6.3 代碼示例 464
10.7 小結 468
第11章 事件 469
11.1 按鍵事件 469
11.1.1 檢測軟鍵盤 469
11.1.2 檢測物理按鍵 472
11.1.3 音量調節對話框 474
11.2 觸摸事件 479
11.2.1 手勢事件的分發流程 479
11.2.2 手勢事件處理MotionEvent 483
11.2.3 手寫簽名 486
11.3 手勢檢測 488
11.3.1 手勢檢測器GestureDetector 488
11.3.2 飛掠視圖ViewFlipper 491
11.3.3 手勢控製橫幅輪播 494
11.4 手勢衝突處理 498
11.4.1 上下滾動與左右滑動的衝突處理 498
11.4.2 內部滑動與翻頁滑動的衝突處理 501
11.4.3 正常下拉與下拉刷新的衝突處理 506
11.5 實戰項目:摳圖神器——美圖變變 510
11.5.1 設計思路 510
11.5.2 小知識:二維圖像的基本加工 511
11.5.3 代碼示例 512
11.6 實戰項目:虛擬現實的全景圖庫 514
11.6.1 設計思路 514
11.6.2 小知識:三維圖形接口OpenGL 516
11.6.3 代碼示例 529
11.7 小結 532
第12章 動畫 534
12.1 幀動畫 534
12.1.1 幀動畫的實現 534
12.1.2 顯示GIF動畫 536
12.1.3 淡入淡齣動畫 538
12.2 補間動畫 539
12.2.1 補間動畫的種類 539
12.2.2 補間動畫的原理 544
12.2.3 集閤動畫 547
12.2.4 在飛掠橫幅中使用補間動畫 549
12.3 屬性動畫 551
12.3.1 屬性動畫的用法 551
12.3.2 屬性動畫組閤 555
12.3.3 插值器和估值器 557
12.4 矢量動畫 561
12.4.1 矢量圖形 561
12.4.2 可縮放矢量圖形SVG標記 563
12.4.3 利用屬性動畫實現矢量動畫 565
12.4.4 仿支付寶的支付成功動畫 568
12.5 動畫的實現手段 572
12.5.1 使用延時重繪 572
12.5.2 設置狀態參數 574
12.5.3 滾動器Scroller 575
12.6 實戰項目:仿QQ空間的動感影集 577
12.6.1 設計思路 577
12.6.2 小知識:畫布的繪圖層次 578
12.6.3 代碼示例 583
12.7 小結 584
第13章 多媒體 585
13.1 相冊 585
13.1.1 畫廊Gallery 585
13.1.2 圖像切換器ImageSwitcher 589
13.1.3 圖片查看器——青青相冊 592
13.2 音頻播放 596
13.2.1 鈴聲Ringtone 596
13.2.2 聲音池SoundPool 599
13.2.3 音軌錄播AudioTrack 602
13.3 視頻播放 605
13.3.1 視頻視圖VideoView 606
13.3.2 媒體控製條MediaController 609
13.3.3 自定義播放控製條 611
13.4 多窗口 613
13.4.1 分屏——多窗口模式 614
13.4.2 畫中畫——特殊的多窗口 617
13.4.3 自定義懸浮窗 619
13.4.4 截圖和錄屏 624
13.5 實戰項目:影視播放器——愛看劇場 626
13.5.1 設計思路 626
13.5.2 小知識:竪屏與橫屏切換 627
13.5.3 代碼示例 630
13.6 實戰項目:音樂播放器——浪花音樂 634
13.6.1 設計思路 634
13.6.2 小知識:可變字符串SpannableString 636
13.6.3 代碼示例 639
13.7 小結 644
第14章 融閤技術 646
14.1 網頁集成 646
14.1.1 資産管理器AssetManager 646
14.1.2 網頁視圖WebView 648
14.1.3 簡單瀏覽器 651
14.2 JNI開發 658
14.2.1 NDK環境搭建 658
14.2.2 創建JNI接口 661
14.2.3 JNI實現加解密 666
14.3 局域網共享 669
14.3.1 無綫網絡管理器WifiManager 670
14.3.2 連接指定WiFi 671
14.3.3 開關熱點 672
14.3.4 點對點藍牙傳輸 674
14.4 實戰項目:共享經濟弄潮兒——WiFi共享器 683
14.4.1 設計思路 683
14.4.2 小知識:NetBIOS協議 684
14.4.3 代碼示例 688
14.5 實戰項目:筆墨飄香之電子書架 693
14.5.1 設計思路 693
14.5.2 小知識: PDF文件渲染器PdfRenderer 694
14.5.3 代碼示例 696
14.6 小結 701
第15章 第三方開發包 702
15.1 地圖SDK 702
15.1.1 查看簽名信息 702
15.1.2 百度地圖 704
15.1.3 高德地圖 710
15.2 分享SDK 714
15.2.1 QQ分享 715
15.2.2 微信分享 716
15.3 支付SDK 721
15.3.1 支付寶支付 721
15.3.2 微信支付 723
15.4 語音SDK 724
15.4.1 文字轉語音TextToSpeech 724
15.4.2 語音識彆 729
15.4.3 語音閤成 733
15.5 實戰項目:仿滴滴打車 734
15.5.1 設計思路 734
15.5.2 小知識:評分條RatingBar 735
15.5.3 代碼示例 738
15.6 小結 739
第16章 性能優化 741
16.1 布局文件優化 741
16.1.1 減少重復布局 741
16.1.2 自適應調整布局 744
16.1.3 自定義窗口主題 746
16.2 內存泄漏處理 748
16.2.1 內存泄漏的檢測 748
16.2.2 內存泄漏的發生 749
16.2.3 內存泄漏的預防 755
16.3 綫程池管理 758
16.3.1 普通綫程池 758
16.3.2 定時器綫程池 760
16.4 省電模式 761
16.4.1 檢測當前電量 761
16.4.2 檢測屏幕開關 763
16.4.3 休眠模式對App的影響 765
16.5 實戰項目:網絡圖片緩存框架 768
16.5.1 設計思路 768
16.5.2 小知識:LRU緩存策略 769
16.5.3 代碼示例 772
16.6 小結 780
附錄 781
附錄一 仿流行App的常用功能 781
附錄二 Android各版本的新增功能說明 782
附錄三 手機硬件與App開發的關聯 784
附錄四 專業術語索引 785
· · · · · · (
收起)