本書介紹了Android應用開發的主要內容,包括開發環境搭建、Android語言基礎、常用布局及控件、四大組件、圖形圖像技術、多媒體應用、數據處理技術、觸摸和手勢識別、多線程、網絡技術、定位、藍牙以及VR和NDK開發等知識。
編寫本書的目的
隨著Android系統的迅猛發展,它已經成為全球范圍內具有廣泛影響力的操作系統,越來越多的廠商加入到Android的陣營,至2017年1月,Google公司對外公布,其旗下所屬的Android系統全球市場占有率已經高達90%。各大中小型手機制造商近些年都在引入Android工程師,開發基于Android系統的智能手機。Android系統早就不僅僅是一款手機的操作系統,越來越廣泛地應用于平板電腦、可佩戴設備、電視、數碼相機等,造就了目前Android開發人才需求的快速增長。從大趨勢上看,Android軟件人才的需求將越來越大。
在這種背景下,Android開發學習者的隊伍漸漸龐大起來,但是市場上適合Android開發者學習使用的書籍雖然并不少,但大多版本都已過時,有很多還是基于Android4/5編寫的,甚至有一些是基于Android2.3的。Android發展到今天,已經推出了7.0版本,使用舊版本書籍進行學習會有諸多問題,嚴重時甚至會使讀者開發的應用崩潰。另一個比較重要的問題是,幾乎所有書籍使用的IDE都是Eclipse加ADT插件,但是,在大部分企業中Android開發早已使用AndroidStudio作為IDE了。這些都導致一些書籍的實用性大大下降。
本書由一線資深軟件開發工程師基于目前廣泛使用的Android6/7和AndroidStudio2.x開發環境傾力編撰,旨在幫助Android初學者和開發人員盡快掌握在AndroidStudio環境下進行應用開發的方法和技術。
本書主要內容
本書共15章,各章內容說明如下:
第1章對Android的發展史與現狀和Android系統的特性做簡單介紹,講解如何搭建Android開發環境,并介紹如何使用AndroidStudio來創建第一個Android程序。
第2章通過一個工程實例來闡述AndroidApp是如何運行的,并引出Activity這一在Android開發中極其重要的組件。在本章中,系統地講解了Activity的概念、生命周期、多個Activity之間的跳轉,以及Activity的4種啟動模式。另外,本章還介紹Intent在Activity組件中的應用,并且講述如何使用Log。
第3章主要介紹布局管理器的作用,并介紹Android中的6種布局管理器,即Linear Layout、Relative Layout、Table Layout、Frame Layout、Absolute Layout、Grid Layout。所有的布局管理器既可以通過配置文件實現,也可以在Activity中用代碼實現。布局管理器直接可以通過互相嵌套使用來實現更復雜的布局。
第4章系統地講解在Android開發中常用的一些控件,同時結合控件講解Android中的事件處理,對實際開發中經常使用的控件ListView進行了重點講解。
第5章系統地講述Fragment的使用場景、使用方法和生命周期,并將其與Activity的生命周期做比較,以便加深對Fragment的理解。同時,對ListFragment與DialogFragment這兩個特殊的Fragment進行深入的講解,對其用法和特性也都進行了分析。在本章最后還根據開發中的經驗向讀者闡釋一些Fragment使用中常見的問題。
第6章非常詳細地講述ViewPager、RecyclerView這兩個View控件的使用。這兩個控件都是比較新的控件,在已有的Android開發書籍中很少提及,而在實際的開發過程中又經常使用,所以這里花較多篇幅對其講解。同時,針對一些特殊情況,比如官方提供的控件無法解決的問題,如何通過自定義控件來解決也進行了講解。
第7章主要講解數據操作的內容,系統地講述4種數據存儲的具體方式。同時,本章引入動態權限的概念,提醒讀者在使用Android6.0以上版本進行開發時,添加權限應該是動態獲取,而不是靜態獲取。
第8章講解Service是什么、Service的分類、為什么需要使用Service以及Service的幾種使用方法,同時結合Service講解Handler機制和AsyncTask的用法。
第9章闡述廣播機制,并通過實例告訴讀者如何使用系統廣播,以及通過對普通廣播和有序廣播的介紹講解如何自定義廣播。另外,本章還講述Android為了能夠簡單地解決廣播的安全性問題而引入的一套本地廣播機制——本地廣播。
第10章對Android中的網絡通信技術進行系統的分析與總結,講解如何使用HTTP及Socket進行網絡通信,同時針對一些特殊的需要講解WebView的使用,重點介紹OkHttp這一實際開發中經常使用的、非常重要的HTTP請求框架。
李瑞奇,北京航空航天大學軟件工程碩士,從事軟件開發多年,熟悉JAVA、Android、Hadoop等技術,對客戶端開發有獨特心得,流行App《我要寫歌》的Android客戶端開發者。目前在某知名企業從事計算廣告及推薦系統的開發工作。
第1章 初識Android
1.1 Android發展史與現狀
1.2 Android系統架構與特性
1.2.1 Android系統架構
1.2.2 Dalvik VM和JVM的區別
1.2.3 Android系統平臺的優勢
1.3 Android開發環境搭建
1.3.1 下載安裝Java并配置環境變量
1.3.2 下載安裝Android Studio和Android SDK
1.4 Android Studio的使用與工程目錄解析
1.4.1 建立新的Android應用
1.4.2 創建模擬器并使用模擬器運行應用
1.4.3 工程目錄分析
1.4.4 Android Studio常見問題
1.5 小結
第2章 界面組件Activity
2.1 從第一個工程開始
2.1.1 App是如何運行的
2.1.2 項目中的資源
2.1.3 理解Activity
2.2 Activity生命周期
2.2.1 Activity生命周期概述
2.2.2 Activity生命周期實例
2.3 Intent與Activity之間的跳轉
2.3.1 Intent簡介
2.3.2 使用Intent進行Activity跳轉
2.4 Activity啟動模式
2.4.1 standard模式
2.4.2 singleTop模式
2.4.3 singleTask模式
2.4.4 singleInstance模式
2.5 小結
第3章 用戶界面UI的開發
3.1 布局管理器概述
3.2 LinearLayout:線性布局管理器
3.2.1 LinearLayout實例及屬性詳解
3.2.2 使用代碼控制線性布局管理器
3.3 TableLayout:表格布局管理器
3.3.1 TableLayout實例與屬性詳解
3.3.2 使用代碼控制表格布局管理器
3.4 RelativeLayout:相對布局管理器
3.4.1 RelativeLayout實例及屬性詳解
3.4.2 使用代碼控制相對布局管理器
3.5 FrameLayout: 幀布局管理器
3.5.1 FrameLayout布局實例
3.5.2 使用代碼控制幀布局管理器
3.6 AbsoluteLayout:絕對布局管理器
3.7 GridLayout:網格布局管理器
3.7.1 GridLayout實例及屬性詳解
3.7.2 使用代碼控制網格布局管理器
3.8 布局管理器之間互相嵌套
3.9 小結
第4章 基本控件與事件處理
4.1 常用基本控件的使用
4.1.1 基本控件的使用
4.1.2 Android中的尺寸問題
4.2 Android中的事件處理
4.2.1 點擊事件
4.2.2 長按事件
4.2.3 觸摸事件
4.2.4 按鍵事件
4.2.5 下拉列表的選中事件
4.2.6 單選按鈕的改變事件
4.2.7 焦點事件
4.3 ListView的使用
4.3.1 使用ArrayAdapter實現ListView
4.3.2 使用SimpleAdapter實現ListView
4.3.3 繼承BaseAdapter自定義Adapter來實現ListView
4.3.4 item的事件處理
4.4 小結
第5章 Fragment詳解
5.1 Fragment的創建與使用
5.1.1 靜態使用Fragment
5.1.2 動態使用Fragment
5.1.3 使用Fragment時常用的類和方法
5.2 Fragment生命周期
5.3 ListFragment的使用
5.4 用DialogFragment創建對話框
5.4.1 通過重寫onCreateView方法來實現對話框
5.4.2 通過重寫onCreateDialog方法來實現對話框
5.5 Fragment在開發中遇到的一些常見問題
5.5.1 旋轉屏幕問題
5.5.2 Fragment返回棧
5.5.3 Fragment與Activity之間的數據通信
5.6 小結
第6章 更多的控件與控件開發
6.1 ViewPager的使用
6.1.1 ViewPager的使用
6.1.2 ViewPager與Fragment
6.1.3 ViewPager與TabLayout
6.2 RecyclerView的使用
6.2.1 RecyclerView的實現
6.2.2 item分隔線及動畫效果
6.2.3 點擊事件的實現
6.3 自定義View控件
6.3.1 自繪控件
6.3.2 繼承控件
6.3.3 組合控件
6.4 小結
第7章 數據存儲
7.1 SharedPreferences
7.2 文件存儲
7.2.1 在應用私有文件夾中讀寫數據
7.2.2 向SDCard寫入數據
7.3 SQLite數據庫
7.3.1 SQLite簡介
7.3.2 SQLite操作的核心類SQLiteDatabase與SQLiteOpenHelper
7.3.3 SQLite操作實例
7.4 ContentProvider
7.4.1 ContentProvider常用類簡介
7.4.2 自定義ContentProvider
7.5 動態權限
7.5.1 動態權限簡介
7.5.2 讀取通話記錄
7.6 小結
第8章 Service詳解
8.1 Service綜述
8.1.1 Service的分類
8.1.2 為什么不使用線程
8.1.3 Service的創建與啟動
8.1.4 Service生命周期
8.2 Service的簡單實例
8.2.1 以start方式創建與啟動Service
8.2.2 以bind方式創建與綁定Service
8.3 Android消息處理機制
8.3.1 Handler機制核心類介紹
8.3.2 Handler機制使用實例
8.3.3 Handler機制與AsyncTask比較分析
8.4 前臺服務
8.4.1 Notification簡介與使用
8.4.2 前臺服務使用實例
8.5 IntentService
8.6 小結
第9章 Android廣播機制
9.1 廣播機制概述
9.2 使用系統廣播
9.2.1 動態注冊廣播實例
9.2.2 靜態注冊廣播實例
9.3 自定義廣播:普通廣播與有序廣播
9.3.1 普通廣播實例
9.3.2 有序廣播實例
9.4 使用本地廣播
9.5 小結
第10章 網絡開發
10.1 Android網絡通信概述
10.1.1 TCP/IP
10.1.2 HTTP與Socket
10.2 使用HTTP協議進行網絡通信
10.2.1 HttpURLConnection簡介
10.2.2 HttpURLConnection使用實例
10.3 客戶端類庫OkHttp
10.3.1 OkHttp簡介
10.3.2 OkHttp中各種請求的實現
10.3.3 OkHttp使用實例
10.3.4 JSON簡介
10.4 使用Socket進行網絡通信
10.4.1 Socket簡介
10.4.2 基于TCP的Socket
10.5 WebView
10.5.1 WebView的基本使用
10.5.2 使用HTML進行UI設計
10.6 小結
第11章 多媒體開發
11.1 撥號功能與短信功能
11.1.1 撥號的實現
11.1.2 短信發送
11.1.3 接收短信
11.2 再論Notification
11.2.1 普通Notification回顧與拓展
11.2.2 折疊式Notification
11.2.3 懸掛式Notification
11.2.4 Notification的其他應用
11.3 動畫
11.3.1 幀動畫
11.3.2 補間動畫
11.3.3 屬性動畫
11.4 相機與相冊
11.4.1 相機的使用
11.4.2 相冊的使用
11.4.3 圖片的裁剪
11.5 媒體播放器的開發
11.5.1 開發一個音頻播放器
11.5.2 開發一個視頻器
11.6 錄視頻與錄音頻
11.6.1 錄制音頻
11.6.2 錄制視頻
11.7 小結
第12章 傳感器與地理位置定位
12.1 傳感器
12.1.1 傳感器簡介
12.1.2 加速度傳感器
12.1.3 光線傳感器
12.2 地理位置定位
12.2.1 LocationManager的使用
12.2.2 使用高德地圖
12.3 小結
第13章 VR開發入門
13.1 詳解VR
13.1.1 VR是什么
13.1.2 VR的關鍵技術
13.1.3 VR發展歷程
13.1.4 VR在技術層面上的現狀
13.1.5 VR當前市場現狀
13.1.6 VR的市場前景
13.1.7 主流的硬件設備形態
13.1.8 誰會領銜VR內容制作
13.2 基于Unity3D的Android平臺VR應用開發
13.2.1 下載Cardboard SDK for Unity
13.2.2 導入CardboardSDKForUnity.unitypackage
13.2.3 運行DemoScene
13.2.4 使用Unity3D創建一個自己的場景
13.3 小結
第14章 Android NDK開發入門
14.1 NDK簡介
14.2 使用Android Studio進行NDK開發
14.2.1 Android NDK開發環境搭建
14.2.2 第一個NDK應用
14.3 小結
第15章 完成并發布一個產品
15.1 功能需求分析
15.2 功能開發(上)
15.2.1 程序概覽
15.2.2 數據庫設計與開發
15.2.3 用戶登錄驗證
15.2.4 工具類
15.3 功能開發(下)
15.3.1 日記記錄
15.3.2 日記查詢
15.3.3 個人中心
15.3.4 AndroidManifest.xml及其他配置文件
15.4 將應用打包并發布到小米應用商店
15.4.1 應用打包
15.4.2 發布應用到小米應用商店
15.5 小結