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