商品簡介
第 1章帶領你搭建Android開發環境,完成你的一個Android程序。
第 2到13章完整地講解了Android開發中的各種基本知識和關鍵技術,包括四大組件、UI、碎片、廣播機制、數據存儲、服務、多媒體、網絡、定位服務、傳感器,以及分布式版本控制系統Git的使用等等。在部分章節會穿插相關技術的高 級使用技巧。
第 14章和第 15章則將帶領你編寫一個完整的項目,教會你如何打包、上架、嵌入廣告並獲得盈利。
本書內容通俗易懂,既適合初學者循序漸進地閱讀,也可作為一本參考手冊,隨時查閱。
作者簡介
郭霖
Android軟體發展工程師。從事Android開發工作四年,有著豐富的專案實戰經驗,負責及參與開發過多款移動應用與遊戲,對Android系統架構及應用層開發有著深入的理解。
2013年3月開始,在CSDN上發表Android技術相關博文,很快就獲得了大量網友的好評。短短一年時間博客訪問量超過50萬次,評價近3000條。榮獲CSDN認證專家,並被評選為2013年CSDN年度博客之星。
現就職於蝸牛移動,繼續從事Android開發工作。
博客:blog.csdn.net/guolin_blog
名人/編輯推薦
編輯推薦
CSDN超人氣博主、CSDN 2013年度十大博客之星、資深Android開發者郭霖力作!
第一本引入經驗值、升級與寶物系統的電腦書!見證自己從菜鳥到鷹的成長!
全球最大中文Android開發者社區(eoe.cn)、安卓巴士(www.apkbus.com) 連袂推薦
我揮舞著鍵盤和本子,
發誓要把世界寫個明明白白。
先來說說較之其他Android書,這本書有哪些特點:
一、 這本書的內容嶄新,是基於Android 4的。在作者動手寫這本書時,Android 4.2剛剛發佈。
二、 內容安排符合大腦工程學。對於那些簡單的、一看就懂或幾乎沒實用價值的內容,作者對其篇幅進行了極大壓縮,一帶而過或壓根兒無視,而對於那些真正的難點、疑點,作者進行了透徹而充分的講解。
三、 語言簡練而通俗易懂,無廢話。用相對不那麼厚的篇幅,讓你進得去出得來,對整個的Android開發世界有一個全面而地道的掌握,所有值得一看的景點你都不會錯過。
四、 考慮初學者的感受,提供一攬子解決方案。當你進行像樣點的開發時,不會使用版本控制工具是不可想像的,讀本書時,你順便會學會分散式版本控制系統Git的典型使用。
五、 開發最終是為了幹嘛,是為了APP上架銷售,產生回報。本書把這件最後但相當重要的事情一絲不苟地做好了,在國外和國內多種盈利模式怎麼上架收款都寫得清清楚楚。
此外,非常值得讚揚的一點是,在相當多的作者無視交稿期限的今天,在眾多作者心平氣和地看著交稿期限就這麼雄赳赳氣昂昂地從眼前走過的今天,本書作者郭霖後生可畏,以身作則地捍衛了出版合同的法律意義,儘管工作時常加班,但他算好了時間,起早貪黑,保質保量地、確確實實地在交稿期限內完成了這本書的創作,這不能不說是一個奇跡。
這本書是“第一行代碼”系列的第一本書。
從名字上就能看出,這個系列是寫給初學者的。為了讓初學者能更好地閱讀這個系列的圖書,除了在策劃思路、內容安排、語言風格、寫作上的筆墨分配等方面做了很多工作外,最顯而易見的部分是引入了一個經驗值、升級、寶物系統。我希望通過這個系統的引入,讓讀者直觀地看到自己水準的提升。以前的技術書,無論你讀了多少章,看過多少頁,但你並不知道你的水準到什麼程度了,缺少一種推動力。
但這本書不同。在你閱讀本書時,當你看完這一節時,你獲得了多少經驗,級別升到了什麼層次,當你讀罷這一章後,你又獲得了多少經驗,撿到或贏得了什麼寶物,升到了什麼級別,所有這些都交代得明明白白。通過不斷增加的經驗值,不斷出現的匪夷所思的寶物,以及讓人提氣的新的級別,讓讀者的閱讀過程有更多的樂趣和激動人心的時刻,以促使和激勵讀者更迅速地學完本書。
因為郭霖不擅長寫這個升級系統的文字,因此,本書中的經驗值、升級、寶物系統中的文字都是我本人寫的。我希望它的引入能帶給讀者一些有趣的體驗。
如果你對這個升級系統或第一行代碼這個系列有任何感受、回饋或建議,歡迎告訴我(neosaga@126.com)。
本書策劃編輯:陳冰
2014年4月28日
目次
1.1 瞭解全貌,Android王國簡介 2
1.1.1 Android系統架構 2
1.1.2 Android已發佈的版本 3
1.1.3 Android應用開發特色 4
1.2 手把手帶你搭建開發環境 5
1.2.1 準備所需要的軟體 5
1.2.2 搭建開發環境 6
1.3 創建你的第一個Android項目 11
1.3.1 創建HelloWorld項目 11
1.3.2 運行HelloWorld 14
1.3.3 分析你的第一個Android程式 16
1.3.4 詳解專案中的資源 20
1.4 前行必備,掌握日誌工具的使用 22
1.4.1 添加LogCat到你的Eclipse 22
1.4.2 使用Android的日誌工具Log 23
1.4.3 為什麼使用Log而不使用System.out 24
1.5 小結與點評 26
第2章 先從看得到的入手,探究活動 28
2.1 活動是什麼 28
2.2 活動的基本用法 28
2.2.1 手動創建活動 29
2.2.2 創建和載入佈局 30
2.2.3 在AndroidManifest檔中註冊 34
2.2.4 隱藏標題列 35
2.2.5 在活動中使用Toast 36
2.2.6 在活動中使用Menu 38
2.2.7 銷毀一個活動 41
2.3 使用Intent在活動之間穿梭 41
2.3.1 使用顯式Intent 41
2.3.2 使用隱式Intent 44
2.3.3 更多隱式Intent的用法 46
2.3.4 向下一個活動傳遞資料 51
2.3.5 返回資料給上一個活動 52
2.4 活動的生命週期 55
2.4.1 返回棧 55
2.4.2 活動狀態 56
2.4.3 活動的生存期 56
2.4.4 體驗活動的生命週期 58
2.4.5 活動被回收了怎麼辦 66
2.5 活動的啟動模式 68
2.5.1 standard 68
2.5.2 singleTop 70
2.5.3 singleTask 72
2.5.4 singleInstance 74
2.6 活動的最佳實踐 77
2.6.1 知曉當前是在哪一個活動 77
2.6.2 隨時隨地退出程式 78
2.6.3 啟動活動的最佳寫法 80
2.7 小結與點評 81
第3章 軟體也要拼臉蛋,UI開發的點點滴滴 83
3.1 該如何編寫程式介面 83
3.2 常見控制項的使用方法 84
3.2.1 TextView 84
3.2.2 Button 88
3.2.3 EditText 90
3.2.4 ImageView 95
3.2.5 ProgressBar 97
3.2.6 AlertDialog 101
3.2.7 ProgressDialog 103
3.3 詳解四種基本佈局 105
3.3.1 LinearLayout 105
3.3.2 RelativeLayout 112
3.3.3 FrameLayout 116
3.3.4 TableLayout 117
3.4 系統控制項不夠用?創建自訂控制項 120
3.4.1 引入佈局 121
3.4.2 創建自訂控制項 124
3.5 最常用和最難用的控制項——ListView 127
3.5.1 ListView的簡單用法 127
3.5.2 定制ListView的介面 129
3.5.3 提升ListView的運行效率 133
3.5.4 ListView的點擊事件 135
3.6 單位和尺寸 137
3.6.1 px和pt的窘境 137
3.6.2 dp和sp來幫忙 139
3.7 編寫介面的最佳實踐 141
3.7.1 製作Nine-Patch圖片 141
3.7.2 編寫精美的聊天介面 145
3.8 小結與點評 151
第4章 手機平板要兼顧,探究碎片 153
4.1 碎片是什麼 153
4.2 碎片的使用方式 155
4.2.1 碎片的簡單用法 157
4.2.2 動態添加碎片 160
4.2.3 在碎片中模擬返回棧 163
4.2.4 碎片和活動之間進行通信 164
4.3 碎片的生命週期 165
4.3.1 碎片的狀態和回檔 165
4.3.2 體驗碎片的生命週期 168
4.4 動態載入佈局的技巧 171
4.4.1 使用限定詞 171
4.4.2 使用最小寬度限定詞 174
4.5 碎片的最佳實踐——一個簡易版的新聞應用 175
4.6 小結與點評 187
第5章 全域大喇叭,詳解廣播機制 188
5.1 廣播機制簡介 188
5.2 接收系統廣播 189
5.2.1 動態註冊監聽網路變化 190
5.2.2 靜態註冊實現開機啟動 194
5.3 發送自訂廣播 196
5.3.1 發送標準廣播 197
5.3.2 發送有序廣播 199
5.4 使用本地廣播 202
5.5 廣播的最佳實踐——實現強制下線功能 205
5.6 Git時間,初識版本控制工具 215
5.6.1 安裝Git 215
5.6.2 創建代碼倉庫 216
5.6.3 提交本地代碼 218
5.7 小結與點評 218
第6章 資料存儲全方案,詳解持久化技術 220
6.1 持久化技術簡介 220
6.2 檔存儲 221
6.2.1 將資料存儲到檔中 221
6.2.2 從檔中讀取資料 225
6.3 SharedPreferences存儲 228
6.3.1 將資料存儲到SharedPreferences中 229
6.3.2 從SharedPreferences中讀取數據 232
6.3.3 實現記住密碼功能 234
6.4 SQLite資料庫存儲 238
6.4.1 創建資料庫 239
6.4.2 升級資料庫 245
6.4.3 添加數據 248
6.4.4 更新資料 251
6.4.5 刪除資料 254
6.4.6 查詢資料 256
6.4.7 使用SQL操作資料庫 260
6.5 SQLite資料庫的最佳實踐 260
6.5.1 使用事務 261
6.5.2 升級資料庫的最佳寫法 263
6.6 小結與點評 266
第7章 跨程式共用資料,探究內容提供器 268
7.1 內容提供器簡介 268
7.2 訪問其他程式中的資料 269
7.2.1 ContentResolver的基本用法 269
7.2.2 讀取系統連絡人 271
7.3 創建自己的內容提供器 275
7.3.1 創建內容提供器的步驟 276
7.3.2 實現跨程式資料共用 281
7.4 Git時間,版本控制工具進階 292
7.4.1 忽略文件 292
7.4.2 查看修改內容 293
7.4.3 撤銷未提交的修改 295
7.4.4 查看提交記錄 296
7.5 小結與點評 297
第8章 豐富你的程式,運用手機多媒體 298
8.1 使用通知 298
8.1.1 通知的基本用法 298
8.1.2 通知的高級技巧 305
8.2 接收和發送短信 307
8.2.1 接收短信 308
8.2.2 攔截短信 313
8.2.3 發送短信 314
8.3 調用攝像頭和相冊 320
8.3.1 將程式運行到手機上 320
8.3.2 調用攝像頭拍照 322
8.3.3 從相冊中選擇照片 327
8.4 播放多媒體檔 331
8.4.1 播放音訊 332
8.4.2 播放視頻 336
8.5 小結與點評 340
第9章 後臺默默的勞動者,探究服務 341
9.1 服務是什麼 341
9.2 Android多執行緒程式設計 341
9.2.1 執行緒的基本用法 342
9.2.2 在子執行緒中更新UI 343
9.2.3 解析非同步消息處理機制 348
9.2.4 使用AsyncTask 349
9.3 服務的基本用法 353
9.3.1 定義一個服務 353
9.3.2 啟動和停止服務 355
9.3.3 活動和服務進行通信 359
9.4 服務的生命週期 363
9.5 服務的更多技巧 364
9.5.1 使用前臺服務 364
9.5.2 使用IntentService 367
9.6 服務的最佳實踐——後臺執行的定時任務 371
9.7 小結與點評 376
第10章 看看精彩的世界,使用網路技術 377
10.1 WebView的用法 377
10.2 使用HTTP協定訪問網路 380
10.2.1 使用HttpURLConnection 380
10.2.2 使用HttpClient 385
10.3 解析XML格式資料 388
10.3.1 Pull解析方式 391
10.3.2 SAX解析方式 394
10.4 解析JSON格式資料 398
10.4.1 使用JSONObject 399
10.4.2 使用GSON 401
10.5 網路程式設計的最佳實踐 404
10.6 小結與點評 408
第11章 Android特色開發,基於位置的服務 409
11.1 基於位置的服務簡介 409
11.2 找到自己的位置 409
11.2.1 LocationManager的基本用法 410
11.2.2 確定自己位置的經緯度 412
11.3 反向地理編碼,看得懂的位置資訊 415
11.3.1 Geocoding API的用法 416
11.3.2 對經緯度進行解析 417
11.4 使用百度地圖 420
11.4.1 申請API Key 420
11.4.2 讓地圖顯示出來 423
11.4.3 定位到我的位置 427
11.4.4 使用覆蓋物來增加更多功能 430
11.5 Git時間,版本控制工具的高級用法 434
11.5.1 分支的用法 434
11.5.2 與遠程版本庫協作 437
11.6 小結與點評 438
第12章 Android特色開發,使用感測器 439
12.1 感測器簡介 439
12.2 光照感測器 439
12.2.1 光照感測器的用法 440
12.2.2 製作簡易光照探測器 441
12.3 加速度感測器 443
12.3.1 加速度感測器的用法 443
12.3.2 模仿微信搖一搖 444
12.4 方向感測器 446
12.4.1 方向感測器的用法 446
12.4.2 製作簡易指南針 448
12.5 小結與點評 453
第13章 繼續進階,你還應該掌握的高級技巧 455
13.1 全域獲取Context的技巧 455
13.2 使用Intent傳遞物件 459
13.2.1 Serializable方式 459
13.2.2 Parcelable方式 461
13.3 定制自己的日誌工具 462
13.4 調試Android程式 464
13.5 編寫測試用例 468
13.5.1 創建測試工程 468
13.5.2 進行單元測試 471
13.6 總結 474
第14章 進入實戰,開發酷歐天氣 476
14.1 功能需求及技術可行性分析 476
14.2 Git時間,將代碼託管到GitHub上 478
14.3 創建資料庫和表 485
14.4 遍歷全國省市縣資料 494
14.5 顯示天氣資訊 507
14.6 切換城市和手動更新天氣 519
14.7 後臺自動更新天氣 523
14.8 修改圖示和名稱 526
14.9 你還可以做的事情 528
第15章 最後一步,將應用發佈到Google Play 530
15.1 生成正式簽名的APK檔 530
15.2 申請Google Play帳號 533
15.3 上傳和發佈應用程式 534
15.4 嵌入廣告進行盈利 541
15.4.1 註冊有米帳號和驗證身份 542
15.4.2 下載和接入有米SDK 544
15.4.3 重新發佈應用程式 550
15.5 結束語 553
書摘/試閱
歡迎你來到Android世界!Android系統是目前世界上市場佔有率最高的移動作業系統,不管你在哪裡,幾乎都可以看到人人手中都會有一部Android手機。雖然今天的Android世界欣欣向榮,可是你知道它的過去是什麼樣的嗎?我們一起來看一看它的發展史吧。
2003年10月,Andy Rubin等人一起創辦了Android公司。2005年8月穀歌收購了這家僅僅成立了22個月的公司,並讓Andy Rubin繼續負責Android專案。在經過了數年的研發之後,穀歌終於在2008年推出了Android系統的第一個版本。但自那之後,Android的發展就一直受到重重阻撓。約伯斯自始至終認為Android是一個抄襲iPhone的產品,裡面剽竊了諸多iPhone的創意,並聲稱一定要毀掉Android。而本身就是基於Linux開發的Android作業系統,在2010年被Linux團隊從Linux內核主線中除名。又由於Android中的應用程式都是使用Java開發的,甲骨文則針對Android侵犯Java智慧財產權一事對穀歌提起了訴訟……
可是,似乎再多的困難也阻擋不了Android快速前進的步伐。由於穀歌的開放政策,任何手機廠商和個人都能免費地獲取到Android作業系統的源碼,並且可以自由地使用和定制。三星、HTC、摩托、索愛等公司都推出了各自系列的Android手機,Android市場上百花齊放。僅僅推出兩年後,Android就超過了已經霸佔市場逾十年的諾基亞Symbian,成為了全球第一大智慧手機作業系統,並且每天都還會有數百萬台新的Android設備被啟動。目前Android已經佔據了全球智慧手機作業系統70%以上的份額。
說了這些,想必你已經體會到Android系統炙手可熱的程度,並且迫不及待地想要加入到Android開發者的行列當中了吧。試想一下,十個人中有七個人的手機都可以運行你編寫的應用程式,還有什麼能比這個更誘人的呢?那麼從今天起,我就作為你Android旅途中的導師,一步步地引導你成為一名出色的Android開發者。
好了,現在我們就來一起初窺一下Android世界吧。
經驗值:+5 目前經驗值:5
級別:萌級小菜鳥
撿到寶物:Android前輩遺失的入門級通用修行卡一張。卡略有磨損,但仍可使用。
1.1 瞭解全貌,Android王國簡介
Android從面世以來到現在已經發佈了近二十個版本了。在這幾年的發展過程中,穀歌為Android王國建立了一個完整的生態系統。手機廠商、開發者、用戶之間相互依存,共同推進著Android的蓬勃發展。開發者在其中扮演著不可或缺的角色,因為再優秀的作業系統沒有開發者來製作豐富的應用程式也是難以得到大眾使用者喜愛的,相信沒有多少人能夠忍受沒有QQ、微信的手機吧?而穀歌推出的Google Play更是給開發者帶來了大量的機遇,只要你能製作出優秀的產品,在Google Play上獲得了用戶的認可,你就完全可以得到不錯的經濟回報,從而成為一名獨立開發者,甚至是成功創業!
那我們現在就以一個開發者的角度,去瞭解一下這個作業系統吧。純理論型的東西也比較無聊,怕你看睡著了,因此我只挑重點介紹,這些東西跟你以後的開發工作都是息息相關的。
1.1.1 Android系統架構
為了讓你能夠更好地理解Android系統是怎麼工作的,我們先來看一下它的系統架構。Android大致可以分為四層架構,五塊區域。
1. Linux內核層
Android系統是基於Linux 2.6內核的,這一層為Android設備的各種硬體提供了底層的驅動,如顯示驅動、音訊驅動、照相機驅動、藍牙驅動、Wi-Fi驅動、電源管理等。
2. 系統運行庫層
這一層通過一些C/C++庫來為Android系統提供了主要的特性支援。如SQLite庫提供了資料庫的支援,OpenGL|ES庫提供了3D繪圖的支援,Webkit庫提供了流覽器內核的支援等。
同樣在這一層還有Android運行時庫,它主要提供了一些核心庫,能夠允許開發者使用Java語言來編寫Android應用。另外Android運行時庫中還包含了Dalvik虛擬機器,它使得每一個Android應用都能運行在獨立的進程當中,並且擁有一個自己的Dalvik虛擬機器實例。相較於Java虛擬機器,Dalvik是專門為移動設備定制的,它針對手機記憶體、CPU性能有限等情況做了優化處理。
3. 應用框架層
這一層主要提供了構建應用程式時可能用到的各種API,Android自帶的一些核心應用就是使用這些API完成的,開發者也可以通過使用這些API來構建自己的應用程式。
4. 應用層
所有安裝在手機上的應用程式都是屬於這一層的,比如系統自帶的連絡人、短信等程式,或者是你從Google Play上下載的小遊戲,當然還包括你自己開發的程式。
結合圖1.1你將會理解得更加深刻,圖片源自維琪百科。
圖 1.1
1.1.2 Android已發佈的版本
2008年9月,穀歌正式發佈了Android 1.0系統,這也是Android系統最早的版本。隨後的幾年,穀歌以驚人的速度不斷地更新Android系統,2.1、2.2、2.3系統的推出使Android佔據了大量的市場。2011年2月,穀歌發佈了Android 3.0系統,這個系統版本是專門為平板電腦設計的,但也是Android為數不多比較失敗的版本,推出之後一直不見什麼起色,市場份額也少得可憐。不過很快,在同年的10月,穀歌又發佈了Android 4.0系統,這個版本不再對手機和平板進行差異化區分,既可以應用在手機上也可以應用在平板上,除此之外還引入了不少新特性。目前最新的系統版本已經是4.4 KitKat。
下表中列出了目前市場上主要的一些Android系統版本及其詳細資訊。你看到這張表格時,資料很可能已經發生了變化,查看最新的資料可以訪問http://developer.android.com/ about/dashboards/。
主題書展
更多書展今日66折
您曾經瀏覽過的商品
購物須知
大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。
特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。
無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。
為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。
若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。