1章 Android入門 1
1.1 Android簡介 1
1.2 Android的發展史 2
1.3 Android架構 4
1.4 應用程序架構 7
1.4.1 組件 7
1.4.2 資源 25
1.4.3 Manifest文件 33
1.4.4 應用程序包 36
1.4.5 安裝Android SDK 36
1.4.6 安裝Android平颱 39
1.4.7 創建Android虛擬設備 42
1.4.8 啓動AVD 44
1.4.9 Univerter簡介 48
1.4.10 創建Univerter 50
1.4.11 安裝和運行Univerter 52
1.4.12 準備Univerter在Google Play
上發布 55
1.4.13 移植到Eclipse 60
1.4.14 用Eclipse創建和運行
Univerter 63
1.5 小結 66
第2章 用戶界麵範例 67
2.1 自定義窗口 67
2.1.1 問題 67
2.1.2 解決方案 67
2.1.3 實現機製 67
2.2 創建並顯示視圖 77
2.2.1 問題 77
2.2.2 解決方案 77
2.2.3 實現機製 78
2.3 監控單擊動作 79
2.3.1 問題 79
2.3.2 解決方案 80
2.3.3 實現機製 80
2.4 適用於多種屏幕分辨率的
圖形資源 81
2.4.1 問題 81
2.4.2 解決方案 81
2.4.3 實現機製 82
2.5 鎖定Activity方嚮 83
2.5.1 問題 83
2.5.2 解決方案 83
2.5.3 實現機製 83
2.6 動態方嚮鎖定 84
2.6.1 問題 84
2.6.2 解決方案 84
2.6.3 實現機製 84
2.7 手動處理鏇轉 86
2.7.1 問題 86
2.7.2 解決方案 86
2.7.3 實現機製 87
2.8 創建彈齣菜單動作 88
2.8.1 問題 88
2.8.2 解決方案 88
2.8.3 實現機製 88
2.9 顯示一個用戶對話框 93
2.9.1 問題 93
2.9.2 解決方案 93
2.9.3 實現機製 94
2.10 自定義選項菜單 98
2.10.1 問題 98
2.10.2 解決方案 98
2.10.3 實現機製 98
2.11 自定義返迴按鍵 101
2.11.1 問題 101
2.11.2 解決方案 101
2.11.3 實現機製 101
2.12 模擬Home按鍵 104
2.12.1 問題 104
2.12.2 解決方案 104
2.12.3 實現機製 104
2.13 監控TextView的變動 105
2.13.1 問題 105
2.13.2 解決方案 105
2.13.3 實現機製 105
2.14 自動滾動的TextView 107
2.14.1 問題 107
2.14.2 解決方案 108
2.14.3 實現機製 108
2.15 動畫視圖 109
2.15.1 問題 109
2.15.2 解決方案 109
2.15.3 實現機製 109
2.16 布局變化時的動畫 119
2.16.1 問題 119
2.16.2 解決方案 119
2.16.3 實現機製 120
2.17 用Drawable做背景 122
2.17.1 問題 122
2.17.2 解決方案 123
2.17.3 實現機製 123
2.18 創建自定義狀態的Drawable 128
2.18.1 問題 128
2.18.2 解決方案 128
2.18.3 實現機製 128
2.19 將遮罩應用到圖片 130
2.19.1 問題 130
2.19.2 解決方案 130
2.19.3 實現機製 130
2.20 創建持久的對話框 134
2.20.1 問題 134
2.20.2 解決方案 134
2.20.3 實現機製 134
2.21 實現針對具體場景的布局 136
2.21.1 問題 136
2.21.2 解決方案 136
2.21.3 實現機製 136
2.22 自定義鍵盤動作 143
2.22.1 問題 143
2.22.2 解決方案 144
2.22.3 實現機製 144
2.23 隱藏軟鍵盤 146
2.23.1 問題 146
2.23.2 解決方案 146
2.23.3 實現機製 147
2.24 自定義AdapterView的
空視圖 147
2.24.1 問題 147
2.24.2 解決方案 147
2.24.3 實現機製 147
2.25 自定義ListView行 149
2.25.1 問題 149
2.25.2 解決方案 149
2.25.3 實現機製 149
2.26 製作ListView的節頭部 153
2.26.1 問題 153
2.26.2 解決方案 153
2.26.3 實現機製 153
2.27 創建組閤控件 156
2.27.1 問題 156
2.27.2 解決方案 156
2.27.3 實現機製 157
2.28 處理復雜的單擊事件 160
2.28.1 問題 160
2.28.2 解決方案 160
2.28.3 實現機製 161
2.29 轉發觸摸事件 177
2.29.1 問題 177
2.29.2 解決方案 177
2.29.3 實現機製 177
2.30 創建拖放視圖 181
2.30.1 問題 181
2.30.2 解決方案 181
2.30.3 實現機製 182
2.31 自定義過渡動畫 188
2.31.1 問題 188
2.31.2 解決方案 188
2.31.3 實現機製 189
2.32 創建視圖變換 198
2.32.1 問題 198
2.32.2 解決方案 198
2.32.3 實現機製 198
2.33 視圖之間滑動 204
2.33.1 問題 204
2.33.2 解決方案 204
2.33.3 實現機製 204
2.34 創建模塊化接口 214
2.34.1 問題 214
2.34.2 解決方案 214
2.34.3 實現機製 214
2.35 高性能繪製 223
2.35.1 問題 223
2.35.2 解決方案 224
2.35.3 實現機製 224
2.36 實用工具推薦:Hierarchy
Viewer和Lint 234
2.37 Hierarchy Viewer 234
2.38 瀏覽View Hierarchy窗口 236
2.39 Tree View中的單個視圖 238
2.40 使用View Hierarchy進行
調試 238
2.41 瀏覽Pixel Perfect窗口 239
2.42 使用Pixel Perfect Overlays 241
2.43 Lint 241
2.44 運行Lint 242
2.45 小結 245
第3章 通信和聯網 247
3.1 顯示Web信息 247
3.1.1 問題 247
3.1.2 解決方案 247
3.1.3 實現機製 247
3.2 攔截WebView事件 251
3.2.1 問題 251
3.2.2 解決方案 251
3.2.3 實現機製 251
3.3 訪問帶JavaScript的WebView 253
3.3.1 問題 253
3.3.2 解決方案 253
3.3.3 實現機製 253
3.4 下載一個圖片文件 255
3.4.1 問題 255
3.4.2 解決方案 256
3.4.3 實現機製 256
3.5 完全在後颱下載 259
3.5.1 問題 259
3.5.2 解決方案 259
3.5.3 實現機製 259
3.6 訪問REST API 262
3.6.1 問題 262
3.6.2 解決方案 262
3.6.3 實現機製 263
3.7 解析JSON 286
3.7.1 問題 286
3.7.2 解決方案 286
3.7.3 實現機製 286
3.8 解析XML 289
3.8.1 問題 289
3.8.2 解決方案 289
3.8.3 實現機製 289
3.9 接收短信 299
3.9.1 問題 299
3.9.2 解決方案 299
3.9.3 實現機製 299
3.10 發送短信 300
3.10.1 問題 300
3.10.2 解決方案 301
3.10.3 實現機製 301
3.11 藍牙通信 303
3.11.1 問題 303
3.11.2 解決方案 303
3.11.3 實現機製 303
3.12 查詢網絡連接狀態 312
3.12.1 問題 312
3.12.2 解決方案 312
3.12.3 實現機製 312
3.13 使用NFC傳輸數據 314
3.13.1 問題 314
3.13.2 解決方案 314
3.13.3 實現機製 314
3.14 USB連接 321
3.14.1 問題 321
3.14.2 解決方案 321
3.14.3 實現機製 322
3.15 小結 330
第4章 實現設備硬件交互與
媒體交互 331
4.1 整閤設備位置 331
4.1.1 問題 331
4.1.2 解決方案 331
4.1.3 實現機製 332
4.2 地圖位置 335
4.2.1 問題 335
4.2.2 解決方案 335
4.2.3 實現機製 336
4.3 在地圖上標記位置 339
4.3.1 問題 339
4.3.2 解決方案 339
4.3.3 實現機製 339
4.4 拍攝照片和視頻 344
4.4.1 問題 344
4.4.2 解決方案 344
4.4.3 實現機製 344
4.5 自定義攝像頭覆蓋層 349
4.5.1 問題 349
4.5.2 解決方案 349
4.5.3 實現機製 349
4.6 錄製音頻 356
4.6.1 問題 356
4.6.2 解決方案 356
4.6.3 實現機製 356
4.7 自定義視頻采集 358
4.7.1 問題 358
4.7.2 解決方案 358
4.7.3 實現機製 358
輸齣格式方嚮 362
4.8 添加語音識彆 362
4.8.1 問題 362
4.8.2 解決方案 362
4.8.3 實現機製 363
4.9 播放音頻/視頻 365
4.9.1 問題 365
4.9.2 解決方案 365
4.9.3 實現機製 365
4.10 播放音效 373
4.10.1 問題 373
4.10.2 解決方案 373
4.10.3 實現機製 373
4.11 創建傾斜監控器 376
4.11.1 問題 376
4.11.2 解決方案 376
4.11.3 實現機製 376
4.12 監控羅盤的方嚮 379
4.12.1 問題 379
4.12.2 解決方案 379
4.12.3 實現機製 380
4.13 在媒體內容中獲取元數據 383
4.13.1 問題 383
4.13.2 解決方案 383
4.13.3 實現機製 383
4.14 實用工具推薦:
Sensor Simulator 386
4.15 獲得Sensor Simulator 387
4.16 啓動Sensor Simulator Settings
和Sensor Simulator 387
4.17 在自己的應用程序中訪問
Sensor Simulator 391
4.18 小結 392
第5章 數據持久化 393
5.1 製作設置界麵 393
5.1.1 問題 393
5.1.2 解決方案 393
5.1.3 實現機製 393
5.2 簡單數據存儲 398
5.2.1 問題 398
5.2.2 解決方案 399
5.2.3 實現機製 399
5.3 讀寫文件 403
5.3.1 問題 403
5.3.2 解決方案 403
5.3.3 實現機製 404
5.4 以資源的形式使用文件 409
5.4.1 問題 409
5.4.2 解決方案 409
5.4.3 實現機製 409
5.5 管理數據庫 412
5.5.1 問題 412
5.5.2 解決方案 412
5.5.3 實現機製 412
5.6 查詢數據庫 417
5.6.1 問題 417
5.6.2 解決方案 417
5.6.3 實現機製 418
5.7 備份數據 419
5.7.1 問題 419
5.7.2 解決方案 419
5.7.3 實現機製 419
5.8 分享數據庫 423
5.8.1 問題 423
5.8.2 解決方案 424
5.8.3 實現機製 424
5.9 分享SharedPreference 430
5.9.1 問題 430
5.9.2 解決方案 430
5.9.3 實現機製 431
5.10 分享其他數據 440
5.10.1 問題 440
5.10.2 解決方案 440
5.10.3 實現機製 440
5.11 實用工具推薦:SQLite3 446
5.12 Univerter和SQLite3 448
5.12.1 創建數據庫 450
5.12.2 擴展Category和
Conversion類 451
5.12.3 DBHelper類簡介 453
5.12.4 擴展Univerter類 457
5.12.5 運行改進後的Univerter
應用程序 458
5.13 小結 459
第6章 與係統交互 461
6.1 後颱通知 461
6.1.1 問題 461
6.1.2 解決方案 461
6.1.3 實現機製 461
6.2 創建定時和周期任務 469
6.2.1 問題 469
6.2.2 解決方案 469
6.2.3 實現機製 469
6.3 定時執行周期任務 470
6.3.1 問題 470
6.3.2 解決方案 471
6.3.3 實現機製 471
6.4 創建粘性操作 474
6.4.1 問題 474
6.4.2 解決方案 474
6.4.3 實現機製 475
6.5 長時間運行的後颱操作 479
6.5.1 問題 479
6.5.2 解決方案 479
6.5.3 實現機製 480
6.6 啓動其他應用程序 485
6.6.1 問題 485
6.6.2 解決方案 485
6.6.3 實現機製 486
6.7 啓動係統應用程序 489
6.7.1 問題 489
6.7.2 解決方案 489
6.7.3 實現機製 489
6.8 讓其他應用程序啓動你的
應用程序 493
6.8.1 問題 493
6.8.2 解決方案 494
6.8.3 實現機製 494
6.9 與聯係人交互 496
6.9.1 問題 496
6.9.2 解決方案 496
6.9.3 實現機製 496
6.10 設備媒體文件選擇器 503
6.10.1 問題 503
6.10.2 解決方案 503
6.10.3 實現機製 503
6.11 保存到MediaStore 505
6.11.1 問題 505
6.11.2 解決方案 505
6.11.3 實現機製 505
6.12 與日曆的交互 508
6.12.1 問題 508
6.12.2 解決方案 508
6.12.3 實現機製 508
6.13 執行日誌代碼 514
6.13.1 問題 514
6.13.2 解決方案 515
6.13.3 實現機製 515
6.14 創建後颱工作綫程 517
6.14.1 問題 517
6.14.2 解決方案 517
6.14.3 實現機製 517
6.15 自定義任務棧 522
6.15.1 問題 522
6.15.2 解決方案 522
6.15.3 實現機製 522
6.16 實現APPWidget 529
6.16.1 問題 529
6.16.2 解決方案 529
6.16.3 實現機製 530
6.17 小結 550
第7章 使用庫 551
7.1 創建Java庫JAR 551
7.1.1 問題 551
7.1.2 解決方案 551
7.1.3 實現機製 552
7.2 使用Java庫JAR 554
7.2.1 問題 554
7.2.2 解決方案 554
7.2.3 實現機製 554
7.3 創建Android庫項目 557
7.3.1 問題 557
7.3.2 解決方案 557
7.3.3 實現機製 557
7.4 使用Android庫項目 561
7.4.1 問題 561
7.4.2 解決方案 561
7.4.3 實現機製 561
7.5 繪圖 565
7.5.1 問題 565
7.5.2 解決方案 565
7.5.3 實現機製 565
7.6 消息推送實戰 577
7.6.1 問題 577
7.6.2 解決方案 577
7.6.3 實現機製 578
7.7 使用Google的支持包 585
7.7.1 問題 585
7.7.2 解決方案 585
7.7.3 實現機製 587
7.8 小結 590
第8章 使用Android NDK和
Renderscript 591
8.1 Android NDK 591
8.1.1 安裝NDK 592
8.1.2 瀏覽NDK 595
8.1.3 來自NDK的問候 596
8.1.4 NDK示例 602
8.2 發現本地Activity 604
8.2.1 問題 604
8.2.2 解決方案 604
8.2.3 實現機製 605
8.3 開發Low-Level本地
Activity 605
8.3.1 問題 605
8.3.2 解決方案 605
8.3.3 實現機製 607
8.4 開發High-Level的本地
Activity 615
8.4.1 問題 615
8.4.2 解決方案 615
8.4.3 實現機製 616
8.5 Renderscript 621
8.5.1 瀏覽Renderscript架構 622
8.5.2 使用Renderscript對圖像
進行灰度化處理 624
8.6 瞭解更多關於Renderscript的
知識 631
8.6.1 問題 631
8.6.2 解決方案 632
8.6.3 實現機製 632
8.7 小結 635
附錄A Android的腳本層 637
A.1 安裝SL4A 637
A.2 瀏覽SL4A 638
A.2.1 添加Shell腳本 639
A.2.2 訪問Linux Shell 641
A.3 安裝Python解釋器 641
A.4 編寫Python腳本 644
附錄B Android工具一覽 647
B.1 SDK工具 647
B.1.1 android 647
B.1.2 apkbuilder 652
B.1.3 ddms 652
B.1.4 dmtracedump 652
B.1.5 draw9patch 653
B.1.6 emulator 653
B.1.7 etc1tool 658
B.1.8 hierarchyviewer 658
B.1.9 hprof-conv 659
B.1.10 lint 659
B.1.11 mksdcard 660
B.1.12 monitor 661
B.1.13 monkeyrunner 661
B.1.14 sqlite3 662
B.1.15 systrace 663
B.1.16 traceview 665
B.1.17 OpenGL ES的Tracer
工具 665
B.1.18 zipalign 665
B.2 平颱工具 666
B.2.1 aapt 666
B.2.2 adb 667
B.2.3 aidl 668
B.2.4 dexdump 668
B.2.5 dx 669
B.2.6 fastboot 669
B.2.7 llvm-rs-cc 670
附錄C 應用程序設計指南 673
C.1 設計經過濾的應用程序 673
C.1.1 問題 673
C.1.2 解決方案 673
C.2 設計高性能的應用程序 675
C.2.1 問題 675
C.2.2 解決方案 675
C.3 設計快速響應的應用程序 676
C.3.1 問題 676
C.3.2 解決方案 677
C.4 設計無縫銜接的應用程序 677
C.4.1 問題 677
C.4.2 解決方案 678
C.5 設計安全的應用程序 679
C.5.1 問題 679
C.5.2 解決方案 679
附錄D Univerter的結構 681
D.1 源代碼 681
D.1.1 Converter接口 681
D.1.2 Conversion類 682
D.1.3 Category類 683
D.1.4 Univerter類 685
D.1.5 Univerter中的變量 686
D.1.6 Univerter的方法 688
· · · · · · (
收起)