1. 程式人生 > >Android開發權威指南(第2版)新書釋出(免費下載隨書光碟內容,包括Android原始碼)

Android開發權威指南(第2版)新書釋出(免費下載隨書光碟內容,包括Android原始碼)

第1章 初識Android平臺 1
1.1 Android簡介 1
1.2 Android的制勝法寶 2
1.3 Android的版本發展歷程 3
1.3.1 Android 1.5(紙杯蛋糕) 3
1.3.2 Android 1.6(甜甜圈) 4
1.3.3 Android 2.1(鬆餅) 4
1.3.4 Android 2.2(凍酸奶) 5
1.3.5 Android 2.3(薑餅) 5
1.3.6 Android 3.0(蜂巢) 6
1.3.7 Android 4.0(冰激凌三明治) 6
1.3.8 Android 4.1/4.2(果凍豆) 7
1.4 Android的系統架構 8
1.5 小結 9

第2章 搭建Android開發和測試環境 10
2.1 搭建Android開發環境需要些什麼 10
2.2 安裝Java開發環境 10
2.2.1 安裝JDK 11
2.2.2 安裝和配置Eclipse 11
2.3 安裝Android開發環境 12
2.3.1 下載和安裝Android SDK 13
2.3.2 下載和安裝Android NDK 13
2.3.3 安裝和配置Eclipse外掛:ADT 14
2.4 配置Android測試環境 15
2.4.1 建立Android虛擬裝置(AVD) 15
2.4.2 啟動Android模擬器 16
2.4.3 安裝真機測試環境 17
2.5 小結 18

第3章 第一個Android應用程式 19
3.1 從第一個Android程式中可以學到什麼 19
3.2 建立Android工程 19
3.3 Android工程的結構 21
3.4 在視窗上放兩個按鈕 22
3.5 編寫視窗類 23
3.6 修改字串資源 24
3.7 執行Android應用程式 25
3.8 除錯Android應用程式 27
3.9 簽名Android應用程式 27
3.10 小結 29

第4章 Android應用程式架構 30
4.1 Android應用程式中的資源 30
4.1.1 資源存放在哪裡 30
4.1.2 資源的基本使用方法 30
4.2 Android的應用程式元件 32
4.2.1 視窗(Activity)元件 32
4.2.2 服務(Service)元件 32
4.2.3 廣播接收者(Broadcast receivers)元件 33
4.2.4 內容提供者(Content Provider)元件 33
4.3 AndroidManifest.xml檔案的結構 33
4.4 小結 34

第5章 視窗(Activity)與檢視(View) 35
5.1 宣告和使用Activity 35
5.1.1 Activity的基本用法 35
5.1.2 同時適合手機和平板電腦的視窗風格 38
5.2 Activity的生命週期 40
5.3 視窗的常用事件 43
5.3.1 設定視窗標題事件(onTitleChanged) 44
5.3.2 鍵盤按下和擡起事件(onKeyDown和onKeyUp) 45
5.3.3 任意情況下捕捉鍵盤事件(dispatchKeyEvent) 48
5.3.4 回退事件(onBackPressed) 49
5.3.5 按鍵長按事件(onKeyLongPress) 50
5.3.6 螢幕觸控事件(onTouchEvent) 50
5.3.7 視窗獲得焦點事件(onWindowFocusChanged) 51
5.4 在不同Activity之間傳遞資料 52
5.4.1 使用Intent傳遞資料 53
5.4.2 使用靜態變數傳遞資料 54
5.4.3 使用剪貼簿傳遞資料 55
5.4.4 使用全域性物件傳遞資料 57
5.5 從Activity返回資料 59
5.6 檢視(View) 61
5.6.1 檢視簡介 61
5.6.2 使用XML佈局檔案定義檢視 61
5.6.3 在程式碼中控制檢視 62
5.7 顯示系統視窗 64
5.7.1 直接撥號 65
5.7.2 將電話號傳入撥號程式 65
5.7.3 呼叫撥號程式 65
5.7.4 瀏覽網頁 65
5.7.5 檢視聯絡人 66
5.7.6 顯示系統設定介面(設定主介面、Wi-Fi設定介面) 66
5.7.7 啟動處理音訊的程式 66
5.7.8 回到Home視窗(相當於按Home鍵) 66
5.8 與Activity相關的技巧與特效 67
5.8.1 全屏顯示(隱藏標題欄和狀態列) 67
5.8.2 定製視窗標題欄 71
5.8.3 為程式新增Splash 75
5.8.4 改變視窗大小、位置和透明度 76
5.8.5 按兩次關閉視窗 79
5.8.6 關閉所有的視窗 79
5.8.7 視窗截圖 80
5.9 小結 82

第6章 Intent與Intent Filter 83
6.1 Android系統的信使:Intent 83
6.2 Intent物件 84
6.2.1 Intent物件可以封裝和傳遞哪些資訊 84
6.2.2 元件名(Component name) 84
6.2.3 動作(Action) 85
6.2.4 種類(Category) 86
6.2.5 資料(Data) 87
6.2.6 附加資料(Extra) 88
6.2.7 標誌(Flags) 89
6.3 顯式和隱式訪問視窗 89
6.4 跨應用程式訪問視窗 90
6.5 Android系統的過濾機制大揭祕 96
6.5.1 過濾條件的設定 96
6.5.2 過濾器的篩選規則 97
6.5.3 示例:過濾機制應用演示 101
6.6 Android原始碼與過濾器 104
6.6.1 系統內建程式有哪些視窗可以利用 104
6.6.2 顯示計算器(Calculator) 105
6.6.3 用瀏覽器(Browser)顯示網頁 106
6.6.4 撥打電話(Phone)與授權 108
6.7 獲取第三方程式中可呼叫的視窗 109
6.8 傳遞附加資料(Extra) 111
6.9 解析資料 113
6.10 小結 114

第7章 視窗(Activity)高階技術 115
7.1 Activity XML屬性詳解 115
7.1.1 設定Activity的基本資訊 115
7.1.2 螢幕方向切換(android:screenOrientation) 117
7.1.3 阻止Activity銷燬和重建(android:configChanges) 119
7.1.4 允許Activity被例項化(android:enabled) 123
7.1.5 在最近應用列表中顯示(android:excludeFromRecents) 124
7.1.6 允許其他程式訪問當前視窗(android:exported) 124
7.1.7 硬體加速(android:hardwareAccelerated) 125
7.1.8 在多程序中建立視窗例項(android:multiprocess) 125
7.1.9 無法返回的Activity(android:noHistory) 125
7.1.10 指定要返回的視窗(android:parentActivityName) 126
7.1.11 使視窗受到許可權的保護(android:permission) 126
7.1.12 改變視窗所在的程序(android:process) 127
7.1.13 不儲存視窗的狀態(android:stateNotNeeded) 129
7.1.14 視窗的主題(android:theme) 129
7.1.15 擴充套件視窗UI(android:uiOptions) 129
7.1.16 設定輸入法顯示模式(android:windowSoftInputMode) 130
7.2 深入探索Activity從建立到銷燬的過程 130
7.2.1 任務(Task)與回退棧(Back Stack) 131
7.2.2 儲存視窗(Activity)狀態 133
7.2.3 管理任務和回退棧 134
7.2.4 Activity的4種建立模式 135
7.2.5 用Java程式碼設定視窗建立模式 141
7.2.6 視窗的乾坤大挪移(affinity) 144
7.2.7 銷燬不再使用的視窗 147
7.3 Activity的別名 149
7.4 小結 151

第8章 佈局 152
8.1  Android的五大布局 152
8.1.1 框架佈局(FrameLayout) 152
8.1.2 線性佈局(LinearLayout) 154
8.1.3 相對佈局(RelativeLayout) 158
8.1.4 表格佈局(TableLayout) 159
8.1.5 絕對佈局(AbsoluteLayout) 160
8.2 屬性資源與Android名稱空間 160
8.3 佈局屬性 162
8.4 佈局高階技術 163
8.4.1 佈局別名 163
8.4.2 重用佈局 164
8.4.3 優化佈局 166
8.4.4 動態裝載佈局 167
8.4.5 動態設定佈局屬性 169
8.4.6 從右到左佈局(RTL Layout) 169
8.5 小結 170

第9章 選單 171
9.1 選單的基本用法 171
9.1.1 建立選項選單(Options Menu) 171
9.1.2 關聯Activity 173
9.1.3 響應選單的單擊動作 173
9.1.4 動態新增、修改和刪除選項選單 174
9.1.5 帶複選框和選項按鈕的子選單 175
9.1.6 上下文選單 176
9.1.7 選單事件 177
9.1.8 從選單資源中裝載選單 177
9.2 選單特效 177
9.2.1 自定義選單 178
9.2.2 模擬UCWeb選單效果 180
9.3 小結 184

第10章 Android的資源詳解(一) 185
10.1 建立資源 185
10.1.1 手工建立資原始檔 185
10.1.2 用ADT模板建立本地化圖示資源 186
10.1.3 用ADT模板建立XML檔案資源 188
10.2 使用資源 188
10.2.1 生成資源類檔案(R.java) 188
10.2.2 從XML檔案中訪問資源 190
10.2.3 使用Java程式碼訪問資源 191
10.2.4 Java反射技術與列舉資源 192
10.3 字串(String)資源 193
10.3.1 普通字串 193
10.3.2 字串陣列 194
10.3.3 複數字串 194
10.3.4 在字串中使用引號 195
10.3.5 用佔位符格式化字串 195
10.3.6 用HTML標籤格式化字串資源 195
10.4 值(values)資源 196
10.4.1 整數(Integer)資源 196
10.4.2 尺寸(Dimension)資源 197
10.4.3 布林(Boolean)資源 198
10.4.4 顏色(Color)資源 198
10.4.5 ID資源 199
10.4.6 整數陣列(Integer-Array)資源 200
10.4.7 型別陣列(Typed-Array)資源 200
10.5 選單(menu)資源 200
10.6 影象(drawable)資源 203
10.6.1 普通影象資源 203
10.6.2 XML影象資源 204
10.6.3 Nine-Patch影象資源 204
10.6.4 XML Nine-Patch影象資源 205
10.6.5 圖層(Layer)資源 205
10.6.6 影象狀態(State)資源 206
10.6.7 影象級別(Level)資源 207
10.6.8 淡入淡出(Cross-fade)資源 208
10.6.9 嵌入(Inset)影象資源 210
10.6.10 剪下(Clip)影象資源 210
10.6.11 外形(Shape)資源 211
10.7 小結 212

第11章 Android的資源詳解(二) 213
11.1 動畫資源 213
11.1.1 屬性(Property)動畫 213
11.1.2 幀(Frame)動畫 215
11.1.3 移動補間(TranslateTween)動畫 217
11.1.4 迴圈向右移動的EditText與上下彈跳的球 218
11.1.5 縮放補間(Scale Tween)動畫 220
11.1.6 跳動的心 221
11.1.7 旋轉補間(Rotate Tween)動畫 222
11.1.8 旋轉的星系 222
11.1.9 透明度補間(Alpha Tween)動畫 223
11.1.10 投擲炸彈 224
11.1.11 震動渲染器(Shake Interpolator) 226
11.1.12 自定義渲染器(Interpolator) 227
11.2 風格(Style)資源與主題(Theme) 229
11.3 小結 232

第12章 資源的本地化 233
12.1 建立本地化的資源目錄 233
12.2 資源目錄的命名規則 237
12.3 建立別名資源 237
12.3.1 影象別名資源 237
12.3.2 佈局別名資源 238
12.3.3 字串別名資源 238
12.3.4 其他簡單值別名資源 238
12.4 資源目錄的優先順序 238
12.5 螢幕適配 239
12.5.1 螢幕適配要考慮的因素 239
12.5.2 適配不同螢幕可以採用的規則 241
12.5.3 螢幕尺寸和螢幕密度 241
12.5.4 位置、尺寸和字型應使用螢幕密度單位 244
12.5.5 與螢幕適配有關的識別符號 244
12.5.6 影響螢幕適配的重要因素:佈局和影象 245
12.5.7 典型的螢幕適配案例 246
12.5.8 在Google Play上限制螢幕尺寸和螢幕密度 247
12.5.9 在Android模擬器上測試各種螢幕尺寸和密度 248
12.6 小結 248

第13章 Android的控制元件詳解(一) 249
13.1 顯示文字的控制元件(TextView) 249
13.1.1 顯示富文字(URL、不同大小、字型、顏色的文字) 250
13.1.2 用標籤在TextView控制元件上顯示影象 252
13.1.3 單擊連結彈出Activity 254
13.1.4 為指定文字新增背景 256
13.2 編輯文字的控制元件(EditText) 258
13.2.1 像QQ一樣輸入表情影象 259
13.2.2 在EditText中輸入特定的字元 260
13.2.3 AutoCompleteTextView(自動完成輸入內容的控制元件) 261
13.3 按鈕(Button)和複選框(Checkbox)控制元件 263
13.3.1 Button(普通按鈕控制元件) 263
13.3.2 圖文混排的按鈕 265
13.3.3 ImageButton(影象按鈕控制元件) 266
13.3.4 RadioButton(選項按鈕控制元件) 267
13.3.5 ToggleButton(開關狀態按鈕控制元件) 267
13.3.6 CheckBox(複選框控制元件) 268
13.4 影象控制元件(ImageView) 270
13.4.1 ImageView控制元件的基本用法 270
13.4.2 顯示指定區域的影象 270
13.4.3 縮放和旋轉影象 272
13.5 時間與日期控制元件 273
13.5.1 DatePicker(輸入日期的控制元件) 273
13.5.2 TimePicker(輸入時間的控制元件) 274
13.5.3 DatePicker、TimePicker與TextView同步顯示日期和時間 274
13.5.4 AnalogClock和DigitalClock(顯示時鐘的控制元件) 275
13.6 小結 275

第14章 Android的控制元件詳解(二) 276
14.1 進度條控制元件 276
14.1.1 ProgressBar(進度條控制元件) 276
14.1.2 SeekBar(拖動條控制元件) 278
14.1.3 設定ProgressBar和SeekBar的顏色及背景圖 278
14.1.4 RatingBar(評分控制元件) 281
14.2 列表控制元件 282
14.2.1 ListView(普通列表控制元件) 282
14.2.2 為ListView列表項新增複選框和選項按鈕 285
14.2.3 對列表項進行增、刪、改操作 286
14.2.4 改變列表項的背景色 290
14.2.5 ListActivity(封裝ListView的Activity) 290
14.2.6 ExpandableListView(可擴充套件的列表控制元件) 291
14.2.7 Spinner(下拉列表控制元件) 293
14.3 GridView(網格控制元件) 296
14.4 TabHost(標籤控制元件) 298
14.5 ViewStub(惰性裝載控制元件) 299
14.6 小結 300

第15章 視覺化UI設計 301
15.1 拖放控制元件 301
15.2 設定檢視屬性 303
15.3 預覽各種螢幕尺寸 303
15.4 語言和地區的本地化測試 304
15.5 其他視覺化功能 304
15.6 小結 305

第16章 對話方塊、Toast與通知欄(Notification) 306
16.1 對話方塊 306
16.1.1 帶2個按鈕(確認/取消)的對話方塊 306
16.1.2 帶3個按鈕(覆蓋/忽略/取消)的對話方塊 307
16.1.3 簡單列表對話方塊 308
16.1.4 單選列表對話方塊 309
16.1.5 多選列表對話方塊 311
16.1.6 進度對話方塊 312
16.1.7 登入對話方塊 315
16.1.8 使用Activity託管對話方塊 316
16.2 Toast 318
16.3 通知(Notification) 319
16.3.1 在狀態列上顯示通知資訊 319
16.3.2 永久存在的Notification 322
16.3.3 自定義Notification 323
16.4 小結 324

第17章 封裝UI和程式碼利器——Fragment 325
17.1 Fragment簡介 325
17.2 什麼時候使用Fragment 326
17.3 按照Fragment設計原則編寫程式 328
17.4 Fragment的生命週期 332
17.5 建立Fragment 341
17.5.1 通過XML佈局檔案建立Fragment 341
17.5.2 通過Java程式碼建立Fragment 342
17.5.3 建立無UI的Fragment 344
17.5.4 在低版本Android中使用Fragment(Support Library) 345
17.6 Activity與Fragment之間的互動 346
17.6.1 Fragment與Activity之間的互動 346
17.6.2 Fragment的回撥機制 348
17.7 Fragment狀態的持久化 351
17.8 Fragment與回退棧(導航) 355
17.9 FragmentManager與FragmentTransaction 357
17.9.1 管理Fragment事務 357
17.9.2 查詢Fragment 357
17.9.3 跟蹤回退棧狀態 358
17.9.4 恢復歷史狀態 358
17.9.5 管理Fragment的狀態 359
17.9.6 新增、刪除和替換Fragment 359
17.9.7 分離(Detach)與附加(Attach)Fragment 360
17.9.8 顯示和隱藏Fragment 361
17.10 Fragment擴充套件 361
17.10.1 ListFragment 361
17.10.2 DialogFragment 363
17.10.3 其他Fragment擴充套件類 366
17.11 Fragment模板原始碼分析 366
17.12 小結 368

第18章 動作欄——ActionBar 369
18.1 ActionBar簡介 369
18.2 ActionBar基礎 370
18.2.1 隱藏/顯示ActionBar 370
18.2.2 新增和響應Action按鈕 372
18.3可上下兩分的ActionBar 374
18.4 應用程式圖示導航 376
18.5 收縮和展開Action View 377
18.6 ActionProvider 380
18.6.1 分享資訊(ShareActionProvider) 380
18.6.2 定製ActionProvider 382
18.7 導航標籤 384
18.8 下拉導航列表 388
18.9 小結 390

第19章 Android的拖放技術 391
19.1 Android中的拖放操作 391
19.2 拖放狀態與拖放處理 391
19.3 拖動陰影 392
19.4 示例:拖動複製影象 393
19.5 小結 395

第20章 資料儲存解決方案 396
20.1 讀寫key-value對:SharedPreferences 396
20.2 檔案流操作 397
20.2.1 openFileOutput和openFileInput方法 398
20.2.2 讀寫SD卡中的檔案 399
20.3 讀寫JSON格式的資料 400
20.4 SQLite資料庫 404
20.4.1 SQLite資料庫管理工具 404
20.4.2 SQLiteOpenHelper類與自動升級資料庫 405
20.4.3 資料繫結與SimpleCursorAdapter類 406
20.4.4 操作SD卡上的資料庫 409
20.4.5 將資料庫與應用程式一起釋出 410
20.4.6 記憶體資料庫 411
20.5 小結 412

第21章 內容提供者(Content Provider) 413
21.1 Content Provider的作用 413
21.2 獲得系統資料 413
21.2.1 讀取聯絡人資訊 414
21.2.2 檢視收件箱的簡訊 415
21.3 自定義Content Provider 417
21.3.1 查詢城市資訊 417
21.3.2 為Content Provider新增訪問許可權 422
21.4 如何查詢系統提供的Content Provider 423
21.5 小結 425

第22章 廣播接收器(Broadcast Receiver) 426
22.1 什麼是廣播 426
22.2 接收系統廣播 427
22.2.1 簡訊攔截 427
22.2.2 用程式碼註冊廣播接收器 429
22.2.3 廣播接收器的優先順序 429
22.2.4 來去電攔截 430
22.2.5 截獲螢幕休眠與喚醒 432
22.2.6 開機自動執行 433
22.2.7 顯示手機電池的當前電量 434
22.3 傳送廣播 434
22.4 小結 435

第23章 服務(Service) 436
23.1 Service基礎 436
23.1.1 Service的生命週期 436
23.1.2 開機啟動Service 438
23.2 跨程序訪問(AIDL服務) 439
23.2.1 什麼是AIDL服務 439
23.2.2 建立AIDL服務的步驟 439
23.2.3 建立和呼叫AIDL服務 440
23.2.4 傳遞複雜資料的AIDL服務 442
23.2.5 AIDL與來去電自動結束通話 445
23.3 小結 447

第24章 Android的元件開發 448
24.1 Android支援哪些元件開發方式 448
24.2 引用jar檔案 449
24.3 跨工程引用 450
24.4 引用NDK Library 451
24.5 動態引用APK檔案 451
24.6 動靜結合的元件 453
24.7 指令碼型別元件(JavaScript)與WebView控制元件 453
24.8 如何確定動態元件是否安裝 457
24.9 升級動態元件 459
24.10 小結 461

第25章 Android的藍芽開發技術 462
25.1 藍芽簡介 462
25.2 開啟和關閉藍芽裝置 462
25.3 搜尋藍芽裝置 463
25.4 藍芽資料傳輸 465
25.5 藍芽通訊一定需要UUID嗎 467
25.6 小結 467

第26章 近距離無線通訊——NFC技術 468
26.1 NFC簡介 468
26.2 NFC、藍芽和紅外之間的差異 469
26.3 NFC技術的未來前景 470
26.4 Android中的NFC技術 471
26.4.1 NDEF與非NDEF資料 471
26.4.2 NFC的三重過濾機制 471
26.4.3 開啟Android的NFC功能 472
26.4.4 編寫NFC程式的基本步驟 473
26.5 測試NFC程式需要的裝置 474
26.6 讓Android手機自動執行程式 475
26.6.1 向NFC標籤寫入資料的基本步驟 475
26.6.2 向NFC標籤寫入啟動Android應用程式的訊息 476
26.7 讓Android手機自動開啟網頁 483
26.8 讀寫NFC標籤中的文字 485
26.8.1 實現讀寫文字資料應用的基本思路 485
26.8.2 如何將NFC標籤變成NDEF文字格式 485
26.8.3 NDEF文字格式解析 486
26.8.4 實現讀寫文字資料的Android應用程式 490
26.9 讀寫NFC標籤中的Uri 496
26.9.1 NDEF Uri格式解析 496
26.9.2 實現讀寫Uri的Android應用程式 499
26.10 利用NFC標籤支援的資料格式進行過濾 502
26.11 處理任意NFC標籤 504
26.12 讀寫非NDEF格式的資料 505
26.13 Android Beam技術與資料互動 507
26.13.1 傳遞NDEF訊息 507
26.13.2 傳輸檔案 511
26.14 小結 513

第27章 Android的網路開發技術 514
27.1 提交HTTP GET和HTTP POST請求 514
27.2 HttpURLConnection類 516
27.3 上傳檔案 517
27.4 下載管理(DownloadManager) 519
27.5 Wi-Fi Direct 524
27.5.1 Wi-Fi Direct API的核心部分 524
27.5.2 建立監聽Wi-Fi Direct動作的廣播接收器 524
27.5.3 註冊廣播接收器 525
27.5.4 發現Wi-Fi Direct裝置 526
27.5.5 連線Wi-Fi Direct裝置 526
27.5.6 資料傳輸 527
27.6 Internet電話(SIP) 528
27.6.1 使用SIP的要求和限制 528
27.6.2 配置Android版SIP電話 528
27.6.3 建立SipManager 529
27.6.4 註冊SIP伺服器 529
27.6.5 開始打電話 530
27.6.6 接聽電話 530
27.7 小結 531

第28章 併發與定時器 532
28.1 Handler 532
28.1.1 更新UI 532
28.1.2 延遲執行 535
28.2 定時器 537
28.2.1 單秒迴圈的定時器:Chronometer 537
28.2.2 任意時間間隔的定時器:Timer 538
28.2.3 全域性定時器:AlarmManager 539
28.3 AsyncTask 541
28.4 小結 543

第29章 非同步裝載(Loader) 544
29.1 Loader簡介 544
29.2 Loader的核心類/介面 544
29.3 如何使用Loader 545
29.3.1 建立/重用Loader 545
29.3.2 遺棄舊的資料 546
29.3.3 LoaderManager與方法回撥 546
29.3.4 建立Loader物件(onCreateLoader) 547
29.3.5 完成資料裝載(onLoadFinished) 547
29.3.6 Loader被重置(onLoaderReset) 548
29.4 非同步裝載聯絡人(CursorLoader的應用) 548
29.5 小結 552

第30章 Android推送技術 553
30.1 IOS的推送方案 553
30.2 Windows Phone的推送方案 554
30.3 Android的推送方案 554
30.4 第三方推送服務:極光推送 556
30.5 自己搭建推送伺服器:AndroidPN 557
30.6 小結 558

第31章 Android的多媒體開發技術 559
31.1 音訊 559
31.1.1 音訊播放 559
31.1.2 錄製音訊 561
31.2 視訊 563
31.2.1 播放視訊 563
31.2.2 錄製視訊 564
31.3 相機 565
31.3.1 呼叫系統的拍照功能 565
31.3.2 自定義拍照功能 566
31.4 鈴聲 570
31.5 小結 572

第32章 Android的2D繪圖 573
32.1 繪製基本的圖形 573
32.1.1 繪製畫素點 573
32.1.2 繪製直線 574
32.1.3 繪製圓形 574
32.1.4 繪製圓弧 574
32.1.5 繪製文字 575
32.1.6 示例:繪製基本的圖形和文字 575
32.2 繪製點陣圖 578
32.2.1 繪製Bitmap物件 578
32.2.2 使用Drawable.draw方法繪製點陣圖 579
32.2.3 示例:用兩種方式繪製點陣圖 579
32.3 設定影象的透明度 580
32.4 旋轉影象 581
32.5 小結 583

第33章 3D繪圖之OpenGL ES 584
33.1 OpenGL ES簡介 584
33.2 在3D空間中繪圖 585
33.2.1 要繪製3D圖形了,第一步要做什麼 585
33.2.2 定義頂點 587
33.2.3 繪製三角形 588
33.2.4 三角形合併法繪製矩形 590
33.2.5 頂點法繪製矩形 592
33.2.6 頂點的選取順序 592
33.2.7 索引法繪製矩形 593
33.2.8 基於OpenGL ES的動畫原理 594
33.2.9 旋轉的矩形 594
33.3 檢視 595
33.3.1 有趣的比喻:照相機拍照 596
33.3.2 模型變換:立方體旋轉 597
33.3.3 用gluLookAt方法變換檢視 599
33.4 顏色 600
33.5 小結 602

第34章 Android的桌面上的“尤物” 603
34.1 視窗小部件(App Widget) 603
34.1.1 在Android桌面上新增App Widget 603
34.1.2 開發App Widget的步驟 603
34.1.3 數字時鐘 605
34.1.4 AppWidgetProvider類 607
34.1.5 向App Widget新增配置視窗 608
34.1.6 可以選擇風格的數字時鐘 608
34.2 動態桌布(隨機變換的圓圈) 612
34.3 小結 618

第35章 Android中的簡訊(SMS)與彩信(MMS)開發技術 619
35.1 通過系統程式發簡訊 619
35.2 直接傳送簡訊 619
35.3 儲存簡訊傳送記錄 620
35.4 監聽簡訊和彩信 621
35.5 顯示視訊縮圖 622
35.6 彩信內容與SMIL協議 624
35.7 小結 631

第36章 Android的感測器開發技術 632
36.1 如何使用感測器 632
36.2 加速度感測器(Accelerometer) 635
36.3 重力感測器(Gravity) 635
36.4 光線感測器(Light) 636
36.5 陀螺儀感測器(Gyroscope) 636
36.5 方向感測器(Orientation) 637
36.6 其他感測器 638
36.7 小結 638

第37章 Android的全球定位系統(GPS) 639
37.1 GPS的核心API 639
37.2 獲取位置提供者(LocationProvider) 641
37.2.1 獲取所有可用的LocationProvider 641
37.2.2 根據名稱獲取LocationProvider 642
37.2.3 根據條件(Criteria)獲取LocationProvider 642
37.3 實時獲取GPS定位資料 643
37.4 測量地球上任意兩點之間的距離 645
37.5 鄰近警告 646
37.6 小結 647

第38章 谷歌地圖(Google Map)開發應用 648
38.1 Google Map的跨平臺解決方案:Maps JavaScript API v3 648
38.2 Google Map的顯示與定位 648
38.3 在Google Map上插入影象標誌 651
38.4 插入多個影象標誌 653
38.5 帶陰影的位置座標資訊 653
38.6 地圖與Java互動 655
38.7 小結 657

第39章 Android中的人機互動設計 658
39.1 手勢(Gesture) 658
39.1.1 建立手勢檔案 658
39.1.2 通過手勢輸入字串 658
39.1.3 通過手勢呼叫程式 660
39.1.4 編寫自己的手勢建立器 661
39.2 多點觸控與放大/縮小操作 662
39.3 語音識別 664
39.4 讓手機說話(TTS) 665
39.5 小結 666

第40章 Android中的輸入法開發 667
40.1 Android輸入法簡介 667
40.2 控制輸入法 668
40.3 輸入法實戰 669
40.3.1 實現輸入法的步驟 669
40.3.2 編寫輸入法程式 669
40.3.3 輸入法服務的生命週期 672
40.3.4 預輸入文字 672
40.3.5 輸入法設定 673
40.4 小結 673

第41章 Android NDK開發 674
41.1 Android NDK簡介 674
41.2 安裝、配置和測試NDK開發環境 674
41.2.1 系統和軟體要求 675
41.2.2 下載和安裝Android NDK 675
41.2.3 下載和安裝Cygwin 675
41.2.4 配置Android NDK的開發環境 677
41.3 利用NDK Samples學習NDK開發 678
41.3.1 編譯NDK Samples 678
41.3.2 NDK程式的結構與命名規則 678
41.4 Android NDK配置檔案詳解 679
41.4.1 Android NDK定義的變數 680
41.4.2 Android NDK定義的函式 680
41.4.3 描述模組的變數 681
41.4.4 配置Application.mk檔案 682
41.5 第一個NDK示例:字母的大小寫轉換 682
41.5.1 編寫NDK程式 682
41.5.2 編寫呼叫NDK函式的Java程式 684
41.5.3 在Eclipse中開發和編譯NDK程式 684
41.6 NDK程式讀取Java欄位值 686
41.7 小結 687

第42章 Android的測試驅動開發(TDD) 688
42.1 JUnit測試框架 688
42.2 測試Activity 688
42.3 測試Content Provider 691
42.4 測試Service 692
42.5 測試普通類 692
42.6 小結 693

第43章 Android應用的效能優化 694
43.1 效能優化的基礎知識 694
43.2 編寫Java程式的最優化原則 695
43.2.1 用靜態工廠方法代替構造方法 695
43.2.2 避免建立重複的物件 695
43.2.3 防止記憶體洩漏 697
43.2.4 返回零長度的集合而不是null 697
43.2.5 通過介面引用物件 698
43.3 避免ANR 698
43.4 執行時間測試 699
43.5 記憶體消耗測試 700
43.6 測試效能的工具:traceview 701
43.7 小結 702

第44章 遊戲專案實戰:笑臉連連看 703
44.1 遊戲玩法 703
44.2 準備影象素材 703
44.3 實現主介面 704
44.4 隨機生成連連看影象 705
44.5 選中兩個相同影象後消失 705
44.6 用定時器限制遊戲時間 706
44.7 小結 707

第45章 開源專案實戰:NFC俠(NFCMan) 708
45.1 什麼是NFCMan 708
45.2 用Android模擬器和非NFC裝置測試NFC應用 709
45.3 NFCMan的實現原理 711
45.4 實現服務端程式(NFCMan) 711
45.4.1 視覺化SWT開發環境 712
45.4.2 建立NFC標籤 712
45.4.3 描述虛擬NFC標籤的NFCTag類 714
45.4.4 保證虛擬NFC標籤的全域性唯一 715
45.4.5 顯示與儲存虛擬NFC標籤 716
45.4.6 裝載已經存在的虛擬NFC標籤 719
45.4.7 開啟服務 720
45.4.8 處理客戶端請求 721
45.4.9 保證虛擬Android裝置全域性唯一 723
45.4.10 描述虛擬Android裝置 724
45.4.11 新增虛擬Android裝置 725
45.4.12 異常處理機制 727
45.5 客戶端與服務端之間的資料管道(NFCManService) 728
45.5.1 與NFCMan互動(Socket方式) 728
45.5.2 與ANFCMan互動(廣播方式) 732
45.6 客戶端Library(ANFCMan) 733
45.6.1 ANFCMan的資料結構和異常類 733
45.6.2 ANFCMan的入口類 734
45.6.3 模擬檢測到NFC標籤的廣播接收器 734
45.6.4 同時處理物理NFC標籤和虛擬NFC標籤的視窗 735
45.7 測試ANFCMan(TestANFCMan) 738
45.8 小結 739

相關推薦

Android開發權威指南2新書釋出免費下載光碟內容包括Android原始碼

第1章 初識Android平臺 11.1 Android簡介 11.2 Android的制勝法寶 21.3 Android的版本發展歷程 31.3.1 Android 1.5(紙杯蛋糕) 31.3.2 Android 1.6(甜甜圈) 41.3.3 Android 2.1(鬆餅) 41.3.4 Android

Android程式設計權威指南216章挑戰練習

16.7挑戰練習:優化照片顯示 (1)新建dialog_photo.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.androi

Android程式設計權威指南25章挑戰練習

5.5 挑戰練習 (1)使用者作弊後,可以旋轉CheatActivity來清除作弊痕跡 這個可以用書本前面讓題目橫屏後不重置的方法來進行: 新建兩個常量和一個變數 private static final String TAG = "CheatActivity"; pri

Android程式設計權威指南213章挑戰練習

13.6 挑戰練習:刪除crime記錄 這個比較簡單,分三步 第一步建立一個button 第二步在CrimeLab增加刪除方法 public void removeCrime(Crime c) {         mCrimes.remove(c);     } 第三步修改

Android程式設計權威指南22章挑戰練習

2.8 挑戰練習:為TextView新增監聽器 解說:直接新增監聽器即可 2.9 挑戰練習: 新增後退按鈕 for activity_quiz.xml 其實這裡的程式碼已經直接把按鈕改成了圖示按鈕,想看按鈕的效果請檢視註釋的灰色程式碼。注意xml裡面改成ImageBu

Android程式設計權威指南214章挑戰練習

14.8 挑戰練習:刪除Crime記錄 修改CrimeLab的deleteCrime方法 public void deleteCrime(Crime c) { //mCrimes.remove(c); mDatabase.delete(

Android程式設計權威指南220章挑戰練習

20.9 挑戰練習:建立多版本主題 用的模擬器版本是Lollipop (1)建立values-v21資料夾 (2)建立目錄下的styles.xml檔案 <?xml version="1.0" encoding="utf-8"?> <resources&g

《Netty權威指南(2)》pdf附網盤下載連結+附一個菜鳥的java學習之路

技術書閱讀方法論 一.速讀一遍(最好在1~2天內完成) 人的大腦記憶力有限,在一天內快速看完一本書會在大腦裡留下深刻印象,對於之後複習以及總結都會有特別好的作用。 對於每一章的知識,先閱讀標題,弄懂大概講的是什麼主題,再去快速看一遍,不懂也沒有關係,但是一定要在不懂的

《MongoDB大資料處理權威指南2》之MongoDB入門

    想象一下這樣的世界:資料庫使用是如此的簡單,以至於你忘記了正在使用它。再想象一下這樣的世界:不需要任何複雜配置或設定,資料庫仍然能夠快速執行,並且具有良好的擴充套件性。想一下,如何可以只關注gg於手上的任務,完成它,並可以按時下班。這聽起來有點神奇,但是Mon

HTML5+Canvas開發詳解2.pdf

繪圖 blog ipa img script 必備 交互式 src 教程 通過HTML5+Canvas開發詳解(第2版),你將學到如何使用Canvas進行繪圖、渲染文字、處理圖像、創建動畫,而這些是開發交互式Web遊戲的必備知識。 本書針對Canvas和HTML5技

Elasticsearch服務器開發2.pdf 含目錄

ast .com nbsp http lan sea target elastics bubuko Elasticsearch服務器開發(第2版) 下載地址:https://pan.baidu.com/s/1G-ltp5XfCDoyb8uXNjuz_A 關註微信公眾號

Python資料分析基礎教程:NumPy學習指南2 pdf 下載

罕見的NumPy中文入門教程,Python資料分析優選從基礎的知識講起,手把手帶你進入大資料探勘領域囊括大量具有啟發性與實用價值的實戰案例。 內容簡介   《圖靈程式設計叢書;Python資料分析基礎教程:NumPy學習指南(第2版)》是NumPy的入門教程,主要介紹NumPy以及相關

《CSS網站佈局實錄-基於Web標準的網站設計指南2》李超.掃描.pdf

書籍簡介: 《CSS網站佈局實錄-基於Web標準的網站設計指南(第2版)》是一本講述基於web標準的應用css進行網站佈局設計與重構的典範之作。 《CSS網站佈局實錄-基於Web標準的網站設計指南(第2版)》以例項為主,一步步地告訴大家如何進行符合web 2.0標準的css佈局設計。具備了

[分享]《Flask Web開發:基於Python的Web應用開發實戰2》中文PDF+源代碼

全面介紹 flask 技術 ESS nfs 圖片 ges web應用開發 復制粘貼 下載:Flask Web開發第二版《Flask Web開發:基於Python的Web應用開發實戰》第二版中文PDF,324頁,帶目錄和書簽,文字能夠復制粘貼;配套源代碼;經典書籍第二版,講解

SQL學習指南2修訂版

網站 更多書籍點選進入>> CiCi島 下載 電子版僅供預覽及學習交流使用,下載後請24小時內刪除,支援正版,喜歡的請購買正版書籍 電子書下載(皮皮雲盤-點選“普通下載”) 購買正版 封頁 內容簡介 本書全面系統地介紹了SQL

分享《Python地理空間分析指南2》中文PDF+英文PDF+源代碼

fff 下載 process ima ges 書簽 pro vpd 目錄 下載:https://pan.baidu.com/s/1PkoFDSnp0qadqFzXdSW7VA更多資料:http://blog.51cto.com/14050756 分享《Python地理空間分

《Spring MVC學習指南2》電子書附下載連結和30個總結JVM虛擬機器的技術文排版好收藏版

技術書閱讀方法論 一.速讀一遍(最好在1~2天內完成) 人的大腦記憶力有限,在一天內快速看完一本書會在大腦裡留下深刻印象,對於之後複習以及總結都會有特別好的作用。 對於每一章的知識,先閱讀標題,弄懂大概講的是什麼主題,再去快速看一遍,不懂也沒有關係,但是一定要在不懂的

《Redis入門指南2》摘要

緣起 想找一個開源技術點深入下去的,於是找到了redis,比較好的是,他有相應的學習曲線。 全書第1遍用了3h19min的樣子,20181117開始讀的,20181123讀完。還會繼續閱讀第2遍或第3遍,雖然原理性可能不太多,但我還沒有很好的消化它,雖然這本書不是

數據庫系統工程師教程2目錄

體系結構 多媒體 觸發 評估 實現 決策 可靠性 邏輯結構設計 視頻 北漂不易,為了所謂的“綠卡”,也為了以後能夠讓為孩子創造更好的條件;同時也為了充實下自己,終於下定決心,努力吧。 先從軟考開始《數據庫系統工程師教程》中級,以下純手碼,共勉 第

精通CSS:高級Web標準解決方式2

avi css dsm table 段落 空元素 支持 :after med 精通CSS:高級Web標準解決方式(第2版) 跳轉至: 導航、 搜索 層疊重要度:(也就是說。用戶!important能夠覆蓋inline style)