每位Android應用開發者都應該知道的:
Android 6工具、應用/UI設計、測試和發布等
《Android 6開發秘籍(第5版) 是一本緊貼實用的精品指南,介紹如何借助Android 6 SDK、Android Studio以及*的開發*實踐來構建健壯的商業級Android應用。這一版的內容更豐富、優質、詳實,涵蓋開始為新式Android設備開發專業應用需要掌握的所有知識。如果你想成為Android開發高手,本書將助你一臂之力,幫你構建任何你能想象的應用!
三位備受尊崇的專家在書中指導你設置開發環境、設計用戶界面、為不同設備開發應用以及優化整個應用開發過程。許多章節都包含多個示例應用,*的代碼清單指引你深刻領悟關鍵的API功能。
本書新增了介紹材質設計、設置應用樣式、設計模式以及SQLite查詢的章節,增加了闡述Gradle構建系統的附錄,并列出關于Android Studio使用技巧的大量提示,堪稱一座知識寶庫。
主要內容■ 介紹*的Android 5.1/6的API、工具、實用程序以及*實踐■ 新增了Android 6.0 授權模型■ 在應用中集成材質設計的卓越技術■ 新增一章介紹如何使用樣式以及重用通用UI組件■ 擴展介紹應用設計、架構和后向兼容■ 用一整章篇幅介紹如何使用SQLite數據庫持久保存應用數據■ 修訂后的測試題和練習題測試你對知識的掌握程度
Android是風靡于全球、自由且開源的移動平臺,已經迅速占領移動開發市場。本書為軟件開發小組提供了很多專業指導,包括如何設計、開發、測試、調試和發布專業的 Android 應用。如果你是一位經驗豐富的移動開發人員,可能會關注于簡化開發流程的提示和技巧,并充分利用Android的特性。如果你是移動開發新手,那么本書也同樣可以幫助你順利地從傳統軟件領域過渡到移動開發確切地說,就是最有前途的Android平臺。本書讀者對象本書包含多年來從移動領域成功項目中總結出來的技巧,也提供開發人員從項目設想到最終實現所需知道的一系列知識。書中涵蓋了移動端軟件開發流程與傳統軟件開發流程的區別,以及一些可以幫助節省寶貴時間、發現和解決避免陷阱的實用技巧。不論項目規模有多大,本書都適用。本書讀者對象包括:● 有志于開發專業Android應用的工程師。本書大部分內容都適用于那些有Java 經驗,但不一定做過移動端開發的軟件人員。對于經驗更豐富的移動開發人員,他們也能從本書中學到如何充分利用Android系統的優勢,并了解Android系統和當今市面上流行的其他移動平臺的本質區別。● 有志于測試 Android 應用的QA人員。無論他們面對的是黑盒還是白盒測試,QA人員都會覺得本書很有價值。我們專門占用幾個章節來分析QA人員所關心的問題,包括如何制定可靠的測試計劃、移動端的問題追蹤系統、如何管理手機,以及如何利用Android提供的可用工具來徹底測試應用等。● 有志于規劃和管理Android開發團隊的項目經理。項目經理們在整個項目流程中,都可借助本書來制定計劃、招聘人員,以及運作Android項目。我們會討論項目的風險管理,以及如何讓Android項目的運作更加順暢。● 其他讀者。本書除了適用于軟件開發人員外,也適用于那些想在垂直市場應用領域掘金,或者是想規劃很優秀的手機應用的人,抑或是單純只想在自己手機上找點樂子的業余愛好者。甚至是想評估Android是否符合它們需求(包括可行性分析)的商人們,也會在本書中找到一些有價值的信息。任何對移動應用有好想法,或者是自己有Android設備的人,都可以從中獲益,無論他們是為了賺錢,還是興趣使然。本書所要闡述的一些關鍵問題本書為讀者解答了如下疑問:(1) Android是什么?各個SDK 版本有何不同?(2) Android和其他移動技術有什么區別,開發人員又該如何利用這些差異?(3) 開發人員如何使用 Android Studio和 Android SDK 工具,在模擬器或真實設備上開發和調試 Android 應用?(4) Android 應用是如何組織的?(5) 開發人員如何設計出可靠的移動端用戶界面 特別是針對Android系統的界面?(6) Android SDK有哪些功能?開發人員又該如何正確地使用它們?(7) 什么是材質設計(Material Design),為什么它很重要?(8) 移動端開發流程和傳統桌面型應用的開發流程有何區別?(9) 針對Android開發的最好策略是什么?(10) 經理、開發人員或測試人員在規劃、開發和測試移動應用時,應該關注哪些方面?(11) 移動團隊如何開發出優質的Android應用?(12) 移動團隊如何對Android 應用打包以便部署?(13) 移動團隊如何從 Android 應用獲利?(14) 最后,作者在本次改版中添加了哪些新內容?本書的編排結構本書的側重點在于Android開發過程中的一些精華部分,包括設置開發環境、理解應用的生命周期、用戶界面設計、面向多種不同類型的設備進行開發,以及設計、開發、測試和發布商業級應用的整個軟件流程。本書分為6大部分。下面是對各部分的概述:● 第Ⅰ部分:Android平臺概述第Ⅰ部分介紹Android入門知識,闡述了它與其他移動平臺的區別。你會逐漸熟悉Android 的SDK工具,安裝開發平臺,以及編寫和運行第一個Android應用在模擬器上和在真機上。很多開發人員和測試人員(特別是白盒測試人員)對這一部分應該會尤其感興趣。● 第Ⅱ部分:應用基礎第Ⅱ部分介紹編寫 Android 應用的一些設計原則。將介紹Android應用的結構,以及如何在項目中導入資源,例如字符串、圖像和用戶界面元素等。了解Android中的核心用戶界面元素View。還將介紹Android SDK提供的很多常用的用戶界面控件和布局。開發人員對這一部分應該會感興趣。● 第Ⅲ部分:應用設計基礎第Ⅲ部分深入研究如何在Android中設計應用。將介紹材質設計、樣式和應用中常用的設計模式。還將介紹如何設計和規劃應用。開發人員對這一部分應該會感興趣。● 第Ⅳ部分:應用開發基礎第Ⅳ部分討論大多數 Android 應用會用到的特性,包括使用preferences來存儲應用數據;如何使用文件、文件夾、SQLite和內容提供者(content provider)。開發人員對這一部分應該會感興趣。● 第Ⅴ部分:應用交付基礎第Ⅴ部分討論完整的移動端軟件開發流程,為項目管理人員、軟件開發人員、用戶界面設計人員及QA人員提供了很多建議和技巧。● 第Ⅵ部分:附錄第Ⅵ部分包括了很多有用的附錄信息,幫助你運行和使用重要的Android工具。本部分包括了Android Studio開發工具的提示和技巧,對Android SDK開發工具的概述,三個有用的Android開發工具快速入門指南模擬器、Device Monitor和Gradle,以及每章最后的測試題的答案。本次改版所做的修改當我們開始撰寫本書第1版時,市面上還沒有Android設備。現如今全球已經有數以億計的 Android 設備了(與數千種不同的設備型號)手機、平板電腦、電子書閱讀器、智能手表以及一些有特色的設備,例如游戲主機、電視和谷歌眼鏡。另外,其他一些設備,諸如Google Chromecast之類的設備還可以讓Android設備和電視實現屏幕共享。與本書第1版出版時的Android平臺相比,Android平臺已經發生了非常大的變化。Android SDK有很多新的特性,開發工具也有不少必需的升級。Android系統作為一種科技平臺,已然是移動市場領域的王者。在這一版本中,我們借此機會加入了豐富的信息。但不用擔心,讀者仍然會像前幾個版本一樣喜愛這個最新版本;只是現在它更強大,覆蓋面更廣,還加入了不少最佳實踐建議。除新增了文字內容外,還對所有現存的內容(文本和范例代碼)進行了升級,并且使用了最新的Android SDK(當然,它們是向后兼容的)。我們提供了測試題來幫助讀者確認是否已經很好地掌握了每章的學習重點;我們還在章節末尾添加了練習題,讓讀者可以更深入地理解Android系統。有各種不同的Android 開發社區,而我們的目標就是面向所有的開發人員 不管他們的目標設備是什么。這其中也包括了那些希望為幾乎所有平臺提供服務的開發人員。因而一些老式 SDK的關鍵部分在本書中仍然被保留下來它們通常是考慮兼容性時最合理的選擇。在這一版本中,我們做了如下改進和升級:● 整本書已經升級為最新的Android Studio IDE。本書以前的版本包含了 Eclipse IDE。所有的內容、圖像和代碼示例已經根據Android Studio做了更新。此外,還包含了最新和最優秀的Android工具和實用程序。● 定義清單文件一章覆蓋了新的 Android 6.0 Marshmallow(棉花糖,API級別23)權限模式,并提供了展示新權限模式的示例代碼。● 增加了全新的一章材質設計,演示了開發人員如何將常見的材質設計功能集成到應用中,并提供了示例代碼。● 增加了全新的一章使用樣式,介紹如何更好地組織樣式和重用常用UI組件,以便優化顯示渲染,并提供了示例代碼。● 增加了全新的一章架構設計模式,包含了應用架構的各種設計模式的內容,并提供了示例代碼。● 增加了全新的一章使用SQLite保存數據包含了使用數據庫持久化應用數據的內容,并提供了示例代碼。● 包含了使用 Android Studio的提示和技巧的一個附錄。● 包含了Gradle構建系統的一個附錄,以幫助了解Gradle是什么,以及為什么它很重要。● AdvancedLayouts示例代碼已被更新,GridView和ListView組件將分別使用Fragment類和ListFragment類。● 一些示例代碼,包括使用了新Toolbar的ActionBar示例,并使用支持庫,以便兼容運行老版本API的設備。必要時,更新應用清單文件以便支持父-子Activity關系,從而支持向上導航。● 許多示例代碼使用了AppCompatActivity類和appcompat-v7 支持庫。● 所有章節和附錄現在都有小測試和練習題,以便讀者可以評估學習成果。● 所有章節都已更新,通常還伴隨著一些全新的章節。● 所有的示例代碼和相應的應用都已升級,以保證可在最新SDK中運行。如你所見,本書涵蓋與Android相關的所有最熱門的、最令人興奮的特性。我們重新評估現有章節,更新內容,同時也添加了一些新章節。最后,還包含了很多附加的內容、聲明,以及針對各位讀者的回饋所做的修正。謝謝你們!本書所用的開發環境本書中的Android代碼是在以下開發環境中編寫的:● Windows 7、8和Mac OS X 10.9● Android Studio 1.3.2● Android SDK API Level 23 (在本書中為Android Marshmallow)● Android SDK Tools 24.3.4● Android SDK Platform Tools 23.0.0● Android SDK Build Tools 23.0.0● Android Support Repository 17(在適當時使用)● Java SE Development Kit (JDK) 7 Update 55● Android設備:Nexus 4、5和6(手機),Nexus 7(第一代和第二代7英寸平板電腦),Nexus 9和10 (大尺寸平板電腦), 以及其他各式流行設備。Android在與其他移動平臺(例如,Apple iOS、Windows Phone和Blackberry OS)的競爭中,仍然保持高速增長。不斷有各種令人興奮的Android新設備涌現。開發人員已經把Android 列為用戶今后一段時間的選擇重點。Android最近的一次平臺重大升級是Android Marshmallow,它帶來許多新功能。本書涵蓋最新的SDK和可用工具。本書旨在幫助開發人員支持市面上所有流行的設備,而不僅僅是一部分特殊機器。在本書撰寫階段,大概有9.7%的用戶的設備運行著Android Lollipop 5.0或5.1,而Android Marshmallow尚未在實際設備上發布。當然,有些設備將通過在線方式進行升級,有些用戶將會購買新的Lollipop和Marshmallow設備。但對于開發人員而言,他們要面對的是各種不同版本的Android平臺,以便能覆蓋到這一領域的大部分設備。另外, Android的下一個版本很可能在近期發布。那么這些對本書意味著什么呢?這意味著我們既要提供對以前API的支持,也要討論Android SDK中出現的那些新API。我們從兼容性角度討論了支持所有(至少是大部分)用戶設備所需要采用的策略。我們提供了截屏圖片來重點突出不同版本的 Android SDK的差異,因為任何大的版本升級在UI外觀上都會體現出來。換句話說,我們假設你正在下載最新的 Android 工具,所以提供了撰寫本書時的屏幕截圖和操作步驟。這是我們在對本書內容進行取舍時設定的界線。附加的可用資源本書示例的源代碼可從https://github.com/lambo4jos/introToAndroid5e下載;也可從本書的官網下載,網址為http://introductiontoandroid.blogspot.com/2015/08/5th-edition-book-code- samples.html。代碼示例以章節進行組織,并以zip格式進行下載,或者使用Git的命令行進行訪問。也可以在本書的官網中找到其他的Android討論話題(http://introductiontoandroid. blogspot.com)。另外,也可訪問www.tupwk.com.cn/downpage,輸入中文書名或中文ISBN,下載源代碼。或者掃描本書封底的二維碼,下載相關資料。本書的編寫約定本書使用了如下約定:● 代碼是以等寬字體格式提供的。● Java的import語句、異常處理,以及錯誤檢測通常會從書稿中移除,以便代碼清晰,并將篇幅控制在合理范圍之內。本書也以如下幾種形式提供了相關信息:
提示提供有用的信息或有關當前文本的提示。
注意提供額外的、可能很有趣的相關信息。
警告提供一些可能遇到的陷阱,以及規避它們的實用建議。
更多支持信息可在網上找到各種充滿活力且有用的Android開發人員社區其中包含了很多對Android開發人員和移動領域研究人員有價值的內容:● Android Developer官網以及Android SDK和開發人員參考資料網站:http://d.android.com/index.html和http://d.android.com● Google Plus: Android Developers Group:https://plus.google.com/ AndroidDevelopers/posts● YouTube: Android Developer和Google Design:https://www.youtube.com/user/androiddevelopershttps://www.youtube.com/channel/UClKO7be7O9cUGL94PHnAeOA● Google Material Design:https://www.google.com/design/spec/material-design/introduction.html● Stack Overflow,其中包含眾多 Android 方面的技術信息(完整的標記),以及官方的支持論壇:http://stackoverflow.com/questions/tagged/android● Android Open Source Project:https://source.android.com/index.html● Open Handset Alliance,面向Android 生產商、運營商和開發人員:http://openhandsetalliance.com● Google Play,可供購買和銷售Android應用:https://play.google.com/store● tuts 的Android開發指南:http://code.tutsplus.com/categories/android● Google Sample Apps,包含托管在GitHub上的開源Android應用:https://github.com/googlesamples● Android工具項目站點,工具團隊在此討論升級和修改:https://sites.google.com/a/android.com/tools/recent● FierceDeveloper是針對無線開發人員的每周快報:http://fiercedeveloper.com● XDA-Developers上的Android論壇:http://forum.xda-developers.com/android● Developer.com提供了面向移動開發人員的一系列文章:http://developer.com聯系作者我們歡迎各位讀者對本書做出評論、提出問題以及給出反饋。我們邀請你訪問我們的博客,網址如下:● http://introductiontoandroid.blogspot.com或者給我們發e-mail:● introtoandroid5e@gmail.com也可在LinkedIn上找到Joseph Annuzzi:● Joseph Annuzzi, Jr: https://www.linkedin.com/in/josephannuzzi也可在Google 中找到Joseph Annuzzi:● Joseph Annuzzi, Jr: http://goo.gl/FBQeL
第Ⅰ部分 Android平臺概述
第1章 Android概述 3
1.1
Android開源項目(AOSP) 3
1.2 開放手機聯盟 4
1.2.1
Google進入移動市場 4
1.2.2
開放手機聯盟介紹 4
1.2.3
加入開放手機聯盟 5
1.2.4
制造商:設計Android
設備 5
1.2.5
移動運營商:提供Android
體驗 5
1.2.6
應用驅動設備的銷售:
開發Android應用 6
1.2.7
利用所有Android設備的
優勢 6
1.2.8
Android:我們現在取得的
進展 7
1.3
Android平臺的獨特性 7
1.3.1
Android的由來 8
1.3.2
自由和開放源代碼 8
1.3.3
熟悉且廉價的開發工具 9
1.3.4
合理的開發學習曲線 9
1.3.5
功能強大的應用開發支持 9
1.3.6
豐富和安全的應用集成 10
1.3.7
沒有昂貴的開發費用 10
1.3.8
應用的自由市場 10
1.3.9
一個不斷發展的平臺 11
1.4
Android 平臺 11
1.4.1
Android 的底層架構 11
1.4.2
安全和權限 13
1.4.3
探索Android應用 14
1.5
OHA和GMS 之外的Android
版本 17
1.5.1
Amazon Fire OS 17
1.5.2
Cyanogen OS和
CyanogenMod 17
1.5.3
Maker Movement和開源
硬件 18
1.5.4
保持警覺 18
1.6 本章小結 18
1.7 小測驗 18
1.8 練習題 19
1.9 參考資料和更多信息 19
第2章 設置開發環境 21
2.1 配置你的開發環境 21
2.1.1
配置操作系統以便進行
設備調試 24
2.1.2
配置Android硬件以便
進行調試 24
2.1.3
更新Android Studio 26
2.1.4
更新Android SDK 26
2.1.5
Android Studio存在的
問題 27
2.1.6
Android SDK存在的問題 27
2.1.7
Android Studio的替代者:
IntelliJ IDEA 27
2.2 探索Android SDK
28
2.2.1
了解Android SDK許可
協議 28
2.2.2
閱讀Android SDK文檔 29
2.2.3
探索Android應用框架
核心 30
2.2.4
探索Android核心工具 31
2.2.5
探索Android示例應用 35
2.3 本章小結 36
2.4 小測驗 37
2.5 練習題 37
2.6 參考資料和更多信息 37
第3章 創建第一個Android應用 39
3.1 測試開發環境 39
3.1.1
在Android Studio中導入
BorderlessButtons示例 40
3.1.2
使用預裝的AVD運行
BorderlessButtons項目 42
3.1.3
在Android模擬器中運行
BorderlessButtons應用 42
3.2 構建第一個Android應用 44
3.2.1
創建并配置一個新的
Android 項目 44
3.2.2
了解Android符號視圖和
傳統Project視圖 48
3.2.3
Android 應用的核心文件和
目錄 49
3.2.4
在模擬器中運行Android
應用 50
3.2.5
在模擬器中調試Android
應用 52
3.2.6
為Android 應用增加日志
記錄 55
3.2.7
在硬件設備上調試應用 57
3.3 本章小結 58
3.4 小測驗 59
3.5 練習題 59
3.6 參考資料和更多信息 59
第Ⅱ部分 應用基礎
第4章 理解應用組件 63
4.1 掌握重要的Android術語 63
4.2 應用Context 64
4.2.1
獲取應用Context 64
4.2.2
使用應用Context 64
4.3 使用Activity執行應用任務 65
4.4 使用Fragment組織Activity
組件 71
4.5 使用Intent管理Activity之間的
切換 72
4.5.1
通過Intent切換Activity 73
4.5.2
通過Activity、Fragment
和Intent來組織應用導航 75
4.6 使用服務 75
4.7 接收和廣播Intent
76
4.8 本章小結 77
4.9 小測驗 77
4.10
練習題 77
4.11
參考資料和更多信息 78
第5章 定義清單文件 79
5.1 使用Android清單文件配置
Android應用 79
5.2 管理應用ID 82
5.3 設置應用的系統需求 83
5.3.1
設置應用的平臺需求 84
5.3.2
其他應用配置設置和
過濾器 86
5.4 在Android清單文件注冊
Activity 86
5.4.1
使用Intent過濾器為應用
指定主入口Activity 87
5.4.2
配置其他Intent過濾器 87
5.4.3
注冊其他應用組件 88
5.5 訪問權限 88
5.5.1
注冊應用所需的權限 89
5.5.2
注冊應用強制的權限 91
5.6 探索清單文件的其他設置
92
5.7 本章小結 93
5.8 小測驗 93
5.9 練習題 93
5.10
參考資料和更多信息 94
第6章 管理應用的資源 95
6.1 資源的含義 95
6.1.1
存儲應用資源 95
6.1.2
資源類型 96
6.1.3
以編程方式訪問資源 99
6.2 在Android
Studio中添加簡單
的資源值 100
6.3 使用不同類型的資源 103
6.3.1
使用字符串資源 103
6.3.2
使用格式化的字符串
資源 104
6.3.3
使用帶數量的字符串 105
6.3.4
使用字符串數組 106
6.3.5
使用布爾類型資源 107
6.3.6
使用整型資源 108
6.3.7
使用顏色資源 108
6.3.8
使用尺寸資源 109
6.3.9
以編程方式使用尺寸
資源 110
6.3.10
可繪制資源 110
6.3.11
使用圖像 112
6.3.12
使用顏色狀態列表 114
6.3.13
使用動畫 115
6.3.14
使用菜單 117
6.3.15
使用XML文件 119
6.3.16
使用原始文件 119
6.3.17
引用資源 120
6.4 使用布局 122
6.4.1
在Android Studio中設計
布局 123
6.4.2
以編程方式使用布局
資源 125
6.5 引用系統資源 126
6.6 本章小結 127
6.7 小測驗 127
6.8 練習題 127
6.9 參考資料和更多信息 128
第7章 探討構建塊 129
7.1
Android視圖和布局介紹 129
7.1.1
Android視圖 129
7.1.2
Android控件 129
7.1.3
Android布局 130
7.2 使用TextView向用戶顯示
文本 130
7.2.1
配置布局和大小 131
7.2.2
在文本中創建上下文
鏈接 132
7.3 使用文本字段從用戶端獲取
數據 134
7.3.1
使用EditText控件獲取
輸入文本 134
7.3.2
使用輸入過濾器限制用戶
輸入 135
7.3.3
使用自動完成功能幫助
用戶 136
7.4 使用Spinner控件讓用戶
選擇 138
7.5 使用Button和Switch允許
用戶簡單選擇 139
7.5.1
使用基本Button 140
7.5.2
使用CheckBox和
ToggleButton控件 142
7.5.3
使用RadioGroup和
RadioButton 143
7.6 使用Picker獲取日期、時間
和數字 145
7.7 使用Indicator為用戶顯示
進度和活動 148
7.7.1
使用ProgressBar指示
進度 148
7.7.2
向ActionBar添加進度
指示器 149
7.7.3
使用Activity Bar和Activity
Circle指示Activity 150
7.8 使用SeekBar調整進度 151
7.9 其他有價值的用戶界面
控件 152
7.9.1
使用RatingBar顯示評分
數據 152
7.9.2
使用Chronometer顯示
時間的流逝 153
7.9.3
顯示時間 154
7.9.4
使用VideoView播放
視頻 155
7.10
本章小結 156
7.11
小測驗 156
7.12
練習題 156
7.13
參考資料和更多信息 157
第8章 布局設計 159
8.1 在Android中創建用戶界面 159
8.1.1
使用XML資源文件創建
布局 159
8.1.2
以編程方式創建布局 161
8.2 組織用戶界面 164
8.2.1
使用ViewGroup子類來
設計布局 164
8.2.2
使用ViewGroup子類作為
View容器 164
8.3 使用內置的布局類 165
8.3.1
使用LinearLayout 167
8.3.2
使用RelativeLayout 168
8.3.3
使用FrameLayout 171
8.3.4
使用TableLayout 173
8.3.5
使用GridLayout 176
8.3.6
在屏幕上使用多個布局 179
8.4 使用容器控件類 180
8.4.1
使用數據驅動的容器 180
8.4.2
添加滾動支持 184
8.4.3
探索其他View容器 185
8.5 本章小結 186
8.6 小測驗 186
8.7 練習題 187
8.8 參考資料和更多信息 187
第9章 用Fragment拆分用戶
界面 189
9.1 理解Fragment
189
9.1.1
了解Fragment的生命
周期 191
9.1.2
管理Fragment修改 191
9.1.3
使用特殊類型的
Fragment 192
9.1.4
設計基于Fragment的
應用 193
9.2 使用Android 支持庫包 202
9.2.1
為舊應用添加Fragment
支持 202
9.2.2
在新應用中針對舊平臺
使用Fragment 203
9.2.3
將Android支持包鏈接到
項目 203
9.3 使用Fragment的其他方式 204
9.3.1
沒有用戶界面的行為
Fragment 205
9.3.2
探索嵌套的Fragment 205
9.4 本章小結 205
9.5 小測驗 205
9.6 練習題 206
9.7 參考資料和更多信息 206
第Ⅲ部分 應用設計基礎
第10章 架構設計模式 211
10.1
應用的導航架構 211
10.1.1 Android應用導航場景 212
10.1.2
啟動任務和導航回
退棧 214
10.1.3
Fragment導航 215
10.1.4
屏幕之間的關系 215
10.1.5
Android導航設計模式 216
10.2
引導操作 223
10.2.1
菜單 223
10.2.2
操作欄 223
10.2.3
浮動操作按鈕 227
10.2.4
來自應用上下文的
操作 229
10.2.5
對話框 229
10.3
本章小結 237
10.4
小測驗 237
10.5
練習題 237
10.6
參考資料和更多信息 237
第11章 使用樣式 239
11.1
樣式支持 239
11.2
主題和樣式 240
11.2.1
定義默認應用主題 240
11.2.2
主題和樣式繼承 241
11.3
顏色 242
11.4
布局 243
11.4.1
合并與包含 244
11.4.2
TextInputLayout 245
11.4.3
FloatingActionButton 245
11.4.4
工具欄作為底部欄 246
11.5
應用個性化 247
11.6
運用后的效果 249
11.7
排版 250
11.8
本章小結 251
11.9
小測驗 252
11.10
練習題 252
11.11
參考資料和更多信息 252
第12章 材質設計 255
12.1
理解材質 255
12.2
默認材質主題 256
12.3
SampleMaterial應用 256
12.4
實現SampleMaterial應用 257
12.4.1
依賴 257
12.4.2
材質支持樣式 257
12.4.3
顯示List中的數據集 257
12.5
本章小結 282
12.6
小測驗 282
12.7
練習題 283
12.8
參考資料和更多信息 283
第13章 設計兼容的應用 285
13.1
最大化應用的兼容性 285
13.2
設計兼容的用戶界面 287
13.2.1
使用Fragments 288
13.2.2
使用各種Android支持庫
API 288
13.2.3
支持特定的屏幕類型 289
13.2.4
使用九宮格可拉伸
圖形 289
13.3
提供替代應用資源 290
13.3.1
了解資源是如何被
解析的 290
13.3.2
使用限定符組織替代
資源 291
13.3.3
為不同屏幕方向提供
資源 296
13.3.4
以編程方式使用替代
資源 298
13.3.5
高效組織應用的資源 299
13.4
平板、電視設備 299
13.4.1
針對平板設備 300
13.4.2
針對電視設備 300
13.5
讓應用兼容手表和汽車 302
13.6
使用SafetyNet保證兼容性 302
13.7
本章小結 303
13.8
小測驗 304
13.9
練習題 304
13.10
參考資料和更多信息 304
第Ⅳ部分 應用開發基礎
第14章 使用Android首選項 309
14.1
使用應用首選項 309
14.1.1
確定首選項是否合適 309
14.1.2
保存不同類型的首選
項值 310
14.1.3
創建Activity私有的
首選項 310
14.1.4
創建多個Activity使用的
共享首選項 310
14.1.5
查找和讀取首選項 311
14.1.6
添加、更新和刪除
首選項
311
14.1.7
監聽首選項的變化 312
14.2
在文件系統中定位首選項
數據 312
14.3
創建可管理的用戶首選項 313
14.3.1
創建首選項資源文件 314
14.3.2
使用PreferenceActivity
類 316
14.3.3
通過標頭管理首選項 318
14.4
自動備份Android應用 321
14.5
本章小結 322
14.6
小測驗 322
14.7
練習題 323
14.8
參考資料和更多信息 323
第15章 訪問文件和目錄 325
15.1
使用設備上的應用數據 325
15.2
實現良好的文件管理 326
15.3
了解Android系統中的文件
權限 326
15.4
使用文件和目錄 327
15.4.1
探索Android應用的
目錄 328
15.4.2
使用Android文件系統
中的其他目錄和文件 332
15.5
本章小結 335
15.6
小測驗 335
15.7
練習題 335
15.8
參考資料和更多信息 336
第16章 使用SQLite保存數據 337
16.1
使用SQLite升級
SampleMaterial應用 337
16.2
使用數據庫 337
16.2.1
提供數據訪問 339
16.2.2
更新SampleMaterialActivity
類 340
16.2.3
更新SampleMaterialAdapter
構造函數 341
16.2.4
在主UI線程以外執行
數據庫操作 342
16.2.5
在數據庫中創建卡片 343
16.2.6
獲取所有卡片 344
16.2.7
添加新卡片 345
16.2.8
更新卡片 346
16.2.9
刪除卡片 347
16.3
本章小結 348
16.4
小測驗 349
16.5
練習題 349
16.6
參考資料和更多信息 349
第17章 使用內容提供者 351
17.1
探索Android的內容
提供者 351
17.1.1
使用Mediastore內容
提供者 352
17.1.2
使用CallLog內容
提供者 355
17.1.3
使用CalendarContract
內容提供者 356
17.1.4
使用UserDictionary
內容提供者 357
17.1.5
使用VoicemaillContract
內容提供者 357
17.1.6
使用Settings內容
提供者 357
17.1.7
介紹ContactsContract
內容提供者 357
17.2
修改內容提供者數據 360
17.2.1
添加記錄 360
17.2.2
更新記錄 361
17.2.3
刪除記錄 362
17.3
使用第三方內容提供者 363
17.4
本章小結 363
17.5
小測驗 364
17.6
練習 364
17.7
參考資料和更多信息 364
第Ⅴ部分 應用交付基礎
第18章 學習開發工作流 369
18.1
Android開發流程概覽 369
18.2
選擇正確的軟件方法論 370
18.2.1
理解瀑布開發模式的
危險性 370
18.2.2
理解迭代的價值 370
18.3
收集應用的需求 371
18.3.1
明確項目需求 371
18.3.2
為Android應用編寫
用例 373
18.3.3
結合第三方的需求和
建議 374
18.3.4
維護一個設備數據庫 374
18.4
評估項目風險 377
18.4.1
確定目標設備 377
18.4.2
獲取目標設備 379
18.4.3
確定應用需求的
可行性 379
18.4.4
理解QA的風險 380
18.5
編寫重要的項目文檔 381
18.5.1
為保證產品質量制定
測試計劃 381
18.5.2
為第三方提供需要的
文檔 382
18.5.3
為維護和移植提供
文檔 382
18.6
使用配置管理系統 382
18.6.1
選擇源碼管理系統 382
18.6.2
實現一個可用的應用
版本系統 382
18.7
設計Android應用 383
18.7.1
理解設備的資源限制 383
18.7.2
探討通用的Android
應用架構 383
18.7.3
設計應用的可擴展性和
易維護性 384
18.7.4
設計應用間的通信
方式 385
18.8
開發Android應用 385
18.9
測試Android應用 386
18.10
部署Android應用 387
18.11
支持和維護Android應用 387
18.11.1
跟蹤并解決用戶提交的
崩潰報告 388
18.11.2
測試固件升級 388
18.11.3
維護詳細的應用
文檔 388
18.11.4
管理服務端的在線
變化 388
18.11.5
識別低風險的移植
機會 388
18.11.6
應用功能的選擇 389
18.12
本章小結 389
18.13
小測驗 389
18.14
練習題 389
18.15
參考資料和更多信息 389
第19章 規劃用戶體驗 391
19.1
思考目標 391
19.1.1
用戶目標 391
19.1.2
團隊目標 392
19.1.3
其他利益相關者的
目標 392
19.2
集中研發精力的一些技巧 392
19.2.1
人物角色 393
19.2.2
用戶故事圖譜 393
19.2.3
發現和組織實體 394
19.2.4
規劃用戶交互 394
19.3
傳遞應用標識 395
19.4
設計屏幕的布局 396
19.4.1
草稿圖 396
19.4.2
線框圖 397
19.4.3
綜合設計圖 397
19.5
正確處理視覺反饋 397
19.6
觀察目標用戶 398
19.6.1
應用仿真模型 398
19.6.2
測試發布版本 399
19.7
本章小結 399
19.8
小測驗 399
19.9
練習題 400
19.10
參考資料和更多信息 400
第20章 交付質量可靠的應用 401
20.1
設計可靠應用的最佳實踐 401
20.1.1
滿足Android用戶的
需求 402
20.1.2
為Android設備設計
用戶界面 402
20.1.3
設計穩定并即時響應的
Android應用 403
20.1.4
設計安全的Android
應用 404
20.1.5
將應用利潤最大化 405
20.1.6
遵循Android應用的
質量指導方針 405
20.1.7
采用第三方質量標準 407
20.1.8
開發易于維護和升級的
Android應用 407
20.1.9
利用Android的工具
輔助應用的設計 409
20.2
避免在Android應用中犯
低級錯誤 409
20.3
開發可靠Android應用的
最佳實踐 409
20.3.1
設計適用于Android開發的研發流程 410
20.3.2
盡早并經常測試應用的
可行性
410
20.3.3
使用編碼標準、審閱及
單元測試來改進代碼
質量 410
20.3.4
處理單個設備中出現的
缺陷 412
20.3.5
利用Android工具來
開發 413
20.3.6
避免在Android應用
開發中犯低級錯誤 413
20.4
本章小結 414
20.5
小測驗 414
20.6
練習 414
20.7
參考資料和更多信息 414
第21章 測試應用 417
21.1
測試移動應用的最佳實踐 417
21.1.1
設計移動應用的缺陷追
蹤系統 417
21.1.2
管理測試環境 419
21.1.3
讓測試覆蓋率最大化 421
21.1.4
利用Android的SDK
工具來測試應用 427
21.1.5
避免Android應用測試
中的一些低級錯誤 428
21.2
Android應用測試精要 428
21.2.1
利用JUnit進行單元
測試 429
21.2.2
PasswordMatcher應用
簡介 430
21.2.3
確認測試的預期結果 433
21.2.4
為測試代碼創建一個
運行配置 433
21.2.5
編寫測試代碼 436
21.2.6
在Android Studio中
運行你的第一個測試 438
21.2.7
分析測試結果 438
21.2.8
添加其他測試 439
21.3
更多Android自動化測試
程序和API 442
21.4
本章小結 442
21.5
小測驗 443
21.6
練習題 443
21.7
參考資料和更多信息 443
第22章 分發應用 445
22.1
選擇正確的分發模型 445
22.1.1
保護你的知識產權 446
22.1.2
遵循Google Play的
政策 446
22.1.3
向用戶收費 447
22.2
為即將發布的應用打包 448
22.2.1
為打包工作準備好
代碼 448
22.2.2
打包應用并簽名 450
22.2.3
測試用于發布的
應用包 453
22.2.4
包含所有需要的資源 453
22.2.5
準備好你的服務器或者
服務 453
22.2.6
發布應用 453
22.3
在Google Play中發布應用 453
22.3.1
登錄Google Play 454
22.3.2
將應用上傳到Google
Play 457
22.3.3
上傳應用營銷相關的
資源 458
22.3.4
配置定價和發布詳情 458
22.3.5
配置額外的應用選項 459
22.3.6
管理其他開發人員控制臺
選項 460
22.3.7
將應用發布到Google
Play 460
22.3.8
在Google Play中管理
應用 461
22.4
Google Play上的階段性
展示產品 462
22.5
通過Google Play私有渠道
發布應用 462
22.6
翻譯應用 462
22.7
通過其他方式發布應用 463
22.8
自行發布應用 464
22.9
本章小結 465
22.10
小測驗 465
22.11
練習題 465
22.12
參考資料和更多信息 466
第Ⅵ部分 附錄
附錄A 提示與技巧:Android
Studio 469
附錄B 快速入門指南:Android
模擬器 481
附錄C 快速入門指南:Android設備
監視器 507
附錄D 精通Android SDK工具 523
附錄E 快速入門:Gradle構建
系統 539
附錄F 小測驗答案 557