本書是一線程序員多年開發經驗的結晶之作,深入淺出地講解Android移動應用開發所需要的幾乎全部基礎內容,幫助讀者快速進入Android應用開發,在項目中靈活應用各種開發技術和方法。
本書共29章,第1章討論全書的知識架構及在學習和工作中如何使用本書。第2~12章主要討論Java編程語言基礎知識,涉及Java編程語言、數據處理、常用JDK應用與設計模式等內容。第13~29章主要討論Android移動應用開發知識,首先討論Android SDK中各種基本組件的應用;然后對Android應用中的一些常用功能開始進行討論;*后創建一個完整的示例項目,討論如何應用不同版本的圖標、布局、語言等資源,并討論應用發布所需要做的工作和注意事項。
本書內容安排合理,架構清晰,注重理論與實踐相結合,適合作為零基礎學習Android移動應用開發的初學者的教程,也適合作為有一定編程基礎的程序員的參考用書。
一線程序員多年開發經驗的結晶之作,深入淺出講解Android移動應用開發所需要的幾乎全部基礎內容
前 言
無論是否有過編程的經歷,相信你已經在關注Android應用開發。手機、平板電腦、車載設備等市場中,Android設備的占有率是無法撼動的,所以選擇Android平臺就是選擇了一個巨大的移動應用市場。目標沒這么大?沒關系,給自己的Android設備開發一些應用也是非常有趣的。
軟件開發是充滿樂趣和挑戰的工作,其中,至少需要掌握一種編程語言和相應的開發資源。在Android平臺中,Java語言和Android SDK就是最基本的開發工具。
本書為所有需要進行Android應用開發的讀者而準備,無論是編程新手,還是從其他平臺轉換到Android平臺,本書都能幫你順利進入Android的精彩世界。
本書特點
從技術點到應用開發
本書從基本的Java代碼開始,逐漸介紹常用的JDK和Android SDK開發資源,并討論了軟件開發的一些基本方法,通過編程語言、功能介紹、開發流程和完整的項目,綜合演示了Android應用開發的方方面面。
突出實用性
書中介紹了大量的Java和Android開發資源,如各種Android組件、SQLite數據庫、傳感器等方面的應用和開發,從基本的使用方法到功能特點的演示,詳盡地展現了開發技術在項目中的綜合應用。
精心組織,隨時參考
從Java語言、JDK到Android SDK資源,從代碼到結構,從技術應用到項目開發,從不同的角度精心組織內容,不但可以幫助讀者循序漸進學習,而且在實際開發工作中也能夠快速參考相關內容。
讀者對象
本書面向Android平臺開發者,幫助讀者真正零基礎起步。無論是初學者,還是正在開發Android應用的朋友,本書都能提供從Java語言、JDK到Android SDK等方面的參考和幫助。重要的是,讀者可以從本書開始,邁向無限可能的移動應用開發世界。
如何閱讀本書
本書包含了Java編程語言、常用的JDK和大量的Android SDK資源、SQLite數據庫、高德地圖和百度地圖開發,以及項目的綜合演示和發布等,第1章分別介紹了后面各章的內容。
Java部分(第2~12章)主要討論Java編程語言和常用JDK資源的使用,包括數據類型及轉換、數據運算、面向對象編程、數組與集合、日期與時間、設計模式等。對于Java初學者,可以從第2章開始,逐漸學習Java編程語言和JDK的應用,并掌握使用設計模式優化代碼結構的基本方法;對于已經掌握Java的讀者,可以再次熟悉這些知識,并在實際開發工作中隨時參考相關內容。
Android部分(第13~29章)詳細介紹了Android應用開發的方方面面,包括基本組件、布局、網絡應用、SQLite數據庫、傳感器、高德地圖和百度地圖SDK的應用、項目綜合演示和發布準備等內容。掌握了這些內容,就可以開發并發布實用的Android應用了;對于這部分內容。讀者可以系統地學習,也可以在工作中隨時參考。
進一步學習建議
通過本書的學習,讀者應該能夠掌握Java編程語言和Android應用的開發,如果感興趣,還可以在本書的基礎上深入學習更多、更有趣的開發技術和方法。
比如移動游戲的開發,雖然Android SDK中包含了一些圖像和音頻處理資源,但它們更加接近系統底層的實現。對于游戲開發,還有太多的工作要做,所以建議使用一些成熟的游戲開發框架,如Unity等。
勘誤和支持
由于作者水平有限,書中難免會出現一些錯誤或不太合理的地方,而讀者的批評和指正,正是我們共同進步的強大動力?梢詫械腻e誤或建議與作者直接交流,作者的郵箱是chydev@163.com。
致謝
感謝清華大學出版社編輯老師耐心的交流與指導,使得本書能夠順利地與讀者見面。
感謝我的家人,他們為我創造了一個溫暖的家、一個安心的工作環境。特別是我的孩子們,他們總是說:爸爸在工作,我不打擾他。這些正是我快樂生活和努力工作的力量源泉。
謹以本書獻給我的家人,以及熱愛軟件開發的朋友!
曹化宇
目 錄
第1章 導讀 1
第2章 Java開發基礎 4
2.1 安裝JDK和NetBeans 4
2.2 第一個Java程序 6
2.2.1 語句與語句塊 8
2.2.2 注釋內容 9
2.3 保留字與標識符 10
2.4 基本數據類型 12
2.5 整數 13
2.5.1 算術運算 13
2.5.2 增量與減量運算 14
2.5.3 位運算 14
2.6 浮點數 16
2.7 類型轉換 17
2.8 char類型 19
2.9 boolean類型 20
2.10 枚舉類型 20
2.11 代碼的組織 21
第3章 面向對象編程 23
3.1 類與對象 23
3.1.1 構造函數與對象釋放 25
3.1.2 getter()和setter()方法 27
3.1.3 靜態成員與靜態初始化 28
3.2 方法 30
3.2.1 可變長參數 31
3.2.2 重載 31
3.3 繼承 32
3.3.1 java.lang.Object類 34
3.3.2 擴展與重寫 34
3.3.3 訪問級別 36
3.3.4 instanceof運算符 37
3.3.5 抽象類與抽象方法 37
3.4 數據類型處理 39
3.4.1 基本數據類型與包裝類 40
3.4.2 數據的傳遞 41
3.4.3 類型的動態處理 43
3.5 java.lang.Math類 44
3.6 java.util.Random類 45
第4章 接口 47
4.1 創建接口類型 47
4.2 實現接口 47
4.3 接口的繼承 48
4.4 對象復制 50
4.4.1 實現Cloneable接口 50
4.4.2 實現Serializable接口 51
第5章 流程控制 54
5.1 比較運算符 54
5.2 if-else語句和 :運算符 54
5.3 switch語句 56
5.4 循環語句 58
5.4.1 for語句 58
5.4.2 while語句 59
5.4.3 do-while語句 60
5.4.4 break語句與標簽 60
5.4.5 continue語句 61
5.5 異常處理 62
5.5.1 異常類 62
5.5.2 try-catch-finally語句 63
5.5.3 throw語句 64
5.5.4 throws關鍵字 64
5.5.5 try()語句結構 65
第6章 字符串 67
6.1 String類 67
6.1.1 字符串的運算與比較 67
6.1.2 常用方法 67
6.1.3 將字符串轉換為其他類型 70
6.2 StringBuffer類 71
6.2.1 基本操作 71
6.2.2 添加內容 72
6.2.3 刪除內容 72
6.2.4 查詢 73
6.2.5 替換 73
6.2.6 反向排列 73
6.3 StringBuilder類 74
6.4 正則表達式 74
6.5 獲取MD5和SHA-1編碼 75
6.6 獲取GUID 76
第7章 泛型 77
7.1 泛型類 77
7.2 泛型方法 78
7.3 泛型接口 79
7.4 泛型限制 79
第8章 數組與集合 82
8.1 數組 82
8.2 List接口及相關類型 84
8.3 Map接口及相關類型 86
第9章 日期與時間 89
9.1 傳統的日期和時間處理方法 89
9.1.1 Date類 89
9.1.2 格式化日期和時間 90
9.1.3 Calendar類 91
9.1.4 TimeZone類 92
9.1.5 Locale類 93
9.2 使用java.time包 93
9.2.1 獲取本地日期與時間 93
9.2.2 處理年、月、日數據 95
9.2.3 處理時區 95
9.3 封裝CDateTime類 96
第10章 輸入輸出 103
10.1 文件與目錄 103
10.2 文件的讀寫操作 104
10.2.1 流 104
10.2.2 讀寫文本內容 105
10.3 使用java.nio資源 107
第11章 多線程與定時器 109
11.1 線程 109
11.2 定時器 110
第12章 設計模式 112
12.1 策略模式 112
12.2 單件模式 115
12.3 訪問者模式 116
第13章 Android應用開發基礎 119
13.1 Android Studio的安裝 119
13.2 項目創建與測試 120
13.2.1 使用AVD測試 122
13.2.2 使用真實設備測試 124
13.2.3 判斷Android版本 124
13.3 再看Android Studio開發環境 127
13.3.1 項目資源的組織 127
13.3.2 代碼字體設置 128
13.3.3 查看日志 128
13.4 第一次修改應用配置(隱藏標題欄) 129
13.5 Android應用的基本要素 131
第14章 Activity 132
14.1 基本應用 132
14.2 運行周期 135
14.3 Activity的啟動與關閉 136
14.3.1 啟動Activity 136
14.3.2 Activity返回棧 139
14.3.3 Activity的啟動模式 140
14.4 數據傳遞 142
14.4.1 使用Intent 142
14.4.2 接收返回數據 144
14.4.3 Bundle(數據自動保存與載入) 147
14.5 Intent的更多應用 148
第15章 常用組件 151
15.1 按鈕與事件響應 151
15.1.1 響應單擊操作 153
15.1.2 響應長按操作并振動 154
15.1.3 響應觸摸事件 156
15.2 文本組件 157
15.2.1 TextView 157
15.2.2 EditText 157
15.3 消息與對話框 158
15.3.1 Toast 159
15.3.2 AlertDialog 159
15.3.3 ProgressDialog 161
15.4 菜單 162
15.5 單選按鈕 165
15.6 復選框 168
15.7 下拉列表 171
15.8 圖像組件 177
15.9 列表 178
15.9.1 綁定列表數據 178
15.9.2 響應列表項單擊 180
15.9.3 獲取正確的項目索引 182
15.10 進度條 184
15.11 滑塊 186
15.12 選擇日期和時間對話框 188
15.13 更多組件 191
15.14 圖像處理 192
15.14.1 Bitmap和Matrix類 193
15.14.2 縮放 193
15.14.3 旋轉 195
15.14.4 扭曲 195
第16章 布局與容器 197
16.1 尺寸單位 197
16.2 線性布局 197
16.3 相對布局 201
16.4 ScrollView和HorizontalScrollView 204
16.5 搜索功能 204
16.6 自定義組件 206
16.6.1 創建布局 207
16.6.2 創建組件類 209
16.6.3 使用9-Patch圖片 212
第17章 通知與服務 214
17.1 通知 214
17.1.1 創建簡單的通知 214
17.1.2 響應通知操作 216
17.1.3 更多設置 217
17.2 服務 218
17.2.1 Service類 218
17.2.2 IntentService類 222
17.2.3 循環服務(使用AlarmManager) 224
第18章 廣播 228
18.1 接收廣播(判斷網絡狀態) 228
18.2 發送廣播 230
18.3 有序廣播 232
18.4 本地廣播 234
第19章 網絡應用 236
19.1 配置IIS網站 236
19.2 獲取網絡資源 238
19.2.1 使用HttpURLConnection對象 240
19.2.2 讀取文本內容(GET方式) 240
19.2.3 使用參數(GET方式) 242
19.2.4 使用POST方式 243
19.2.5 將獲取的內容顯示到TextView中 244
19.3 處理JSON數據 245
19.3.1 處理JSONObject對象 246
19.3.2 處理JSONArray對象 248
19.4 處理XML數據 249
19.5 將文件上傳到服務器 252
19.5.1 準備接收服務器(ASP.NET) 252
19.5.2 上傳文件 253
19.6 封裝CHttp類 256
19.6.1 使用GET方式獲取文本 256
19.6.2 使用POST方式獲取文本 257
19.6.3 獲取JSON數據 259
19.6.4 測試 261
第20章 保存數據 263
20.1 使用Context保存數據 263
20.1.1 保存文件 265
20.1.2 讀取文件 266
20.2 使用SharedPreferences保存數據 266
20.2.1 保存數據 268
20.2.2 載入數據 269
第21章 SQLite數據庫 270
21.1 數據庫 270
21.1.1 打開與關閉數據庫 272
21.1.2 SQLiteOpenHelper類 272
21.2 數據表與字段 276
21.2.1 字段類型 276
21.2.2 創建表 277
21.2.3 刪除表 278
21.2.4 修改表結構 278
21.2.5 索引 279
21.3 添加記錄 279
21.3.1 insert語句 279
21.3.2 參數 280
21.3.3 SQLiteDatabase.insert()方法 281
21.4 查詢記錄 282
21.4.1 select語句 282
21.4.2 SQLiteDatabase.rawQuery()方法 283
21.4.3 使用Cursor類讀取數據 285
21.4.4 查詢練習 286
21.5 修改記錄 287
21.5.1 update語句 287
21.5.2 SQLiteDatabase.update()方法 287
21.6 刪除記錄 288
21.6.1 delete語句 288
21.6.2 SQLiteDatabase.delete()方法 288
21.7 高級查詢 289
21.7.1 函數 289
21.7.2 排序 290
21.7.3 分組 291
21.8 主鍵與外鍵 292
21.8.1 創建一對多數據結構 292
21.8.2 join關鍵字 294
21.9 視圖 295
21.10 使用DB Browser練習SQL語句 297
第22章 Android SDK定位功能 299
22.1 獲取權限與基本位置信息 299
22.2 跟蹤位置變化 303
22.3 獲取一次最新位置信息 306
第23章 高德地圖SDK 307
23.1 準備工作 307
23.2 封裝RequestPermission ActivityBase類 312
23.3 定位 315
23.4 顯示地圖 319
23.5 小結 324
第24章 百度地圖SDK 325
24.1 準備工作 325
24.2 定位 329
24.3 顯示地圖 332
第25章 傳感器 338
25.1 傳感器對象 338
25.2 加速計(制作水平儀) 339
25.3 陀螺儀 342
25.4 亮度傳感器(控制相機閃光燈) 343
第26章 應用之間的數據傳遞 346
26.1 向其他應用提供數據 (ContentProvider) 346
26.1.1 訪問內容的Uri 347
26.1.2 數據初始化onCreate()方法 349
26.1.3 添加數據insert()方法 349
26.1.4 更新數據update()方法 350
26.1.5 刪除數據delete()方法 350
26.1.6 查詢數據query()方法 351
26.1.7 數據類型(MIME)getType()方法 351
26.2 操作外部數據(ContentResolver) 352
26.3 路徑處理 358
26.4 相機和圖庫 360
26.4.1 保存照片 364
26.4.2 讀取照片 364
26.5 播放音頻(極簡音樂播放器) 366
26.6 播放視頻 371
26.7 讀取通訊錄(打電話與發短信) 373
第27章 資源與本地化 378
27.1 資源應用限定符 378
27.2 應用圖標 380
27.3 豎屏與橫屏 381
27.4 語言 384
27.5 顏色 385
第28章 項目演示:迷你賬本 387
28.1 數據庫操作(CAccount類) 389
28.1.1 初始化 389
28.1.2 添加記錄 391
28.1.3 刪除記錄 391
28.1.4 賬目查詢 391
28.1.5 賬目統計 394
28.2 主界面 395
28.2.1 自定義賬目顯示組件 398
28.2.2 基本查詢 401
28.2.3 賬目刪除 402
28.3 添加賬目 403
28.4 查詢 407
28.5 統計 412
28.6 其他工作 415
第29章 應用發布 416
29.1 創建Key與APK文件 416
29.2 發布應用的多個版本 419