本書介紹了Android應用開發(fā)的主要內容,包括開發(fā)環(huán)境搭建、Android語言基礎、常用布局及控件、四大組件、圖形圖像技術、多媒體應用、數據處理技術、觸摸和手勢識別、多線程、網絡技術、定位、藍牙以及VR和NDK開發(fā)等知識。
編寫本書的目的
隨著Android系統(tǒng)的迅猛發(fā)展,它已經成為全球范圍內具有廣泛影響力的操作系統(tǒng),越來越多的廠商加入到Android的陣營,至2017年1月,Google公司對外公布,其旗下所屬的Android系統(tǒng)全球市場占有率已經高達90%。各大中小型手機制造商近些年都在引入Android工程師,開發(fā)基于Android系統(tǒng)的智能手機。Android系統(tǒng)早就不僅僅是一款手機的操作系統(tǒng),越來越廣泛地應用于平板電腦、可佩戴設備、電視、數碼相機等,造就了目前Android開發(fā)人才需求的快速增長。從大趨勢上看,Android軟件人才的需求將越來越大。
在這種背景下,Android開發(fā)學習者的隊伍漸漸龐大起來,但是市場上適合Android開發(fā)者學習使用的書籍雖然并不少,但大多版本都已過時,有很多還是基于Android4/5編寫的,甚至有一些是基于Android2.3的。Android發(fā)展到今天,已經推出了7.0版本,使用舊版本書籍進行學習會有諸多問題,嚴重時甚至會使讀者開發(fā)的應用崩潰。另一個比較重要的問題是,幾乎所有書籍使用的IDE都是Eclipse加ADT插件,但是,在大部分企業(yè)中Android開發(fā)早已使用AndroidStudio作為IDE了。這些都導致一些書籍的實用性大大下降。
本書由一線資深軟件開發(fā)工程師基于目前廣泛使用的Android6/7和AndroidStudio2.x開發(fā)環(huán)境傾力編撰,旨在幫助Android初學者和開發(fā)人員盡快掌握在AndroidStudio環(huán)境下進行應用開發(fā)的方法和技術。
本書主要內容
本書共15章,各章內容說明如下:
第1章對Android的發(fā)展史與現狀和Android系統(tǒng)的特性做簡單介紹,講解如何搭建Android開發(fā)環(huán)境,并介紹如何使用AndroidStudio來創(chuàng)建第一個Android程序。
第2章通過一個工程實例來闡述AndroidApp是如何運行的,并引出Activity這一在Android開發(fā)中極其重要的組件。在本章中,系統(tǒng)地講解了Activity的概念、生命周期、多個Activity之間的跳轉,以及Activity的4種啟動模式。另外,本章還介紹Intent在Activity組件中的應用,并且講述如何使用Log。
第3章主要介紹布局管理器的作用,并介紹Android中的6種布局管理器,即Linear Layout、Relative Layout、Table Layout、Frame Layout、Absolute Layout、Grid Layout。所有的布局管理器既可以通過配置文件實現,也可以在Activity中用代碼實現。布局管理器直接可以通過互相嵌套使用來實現更復雜的布局。
第4章系統(tǒng)地講解在Android開發(fā)中常用的一些控件,同時結合控件講解Android中的事件處理,對實際開發(fā)中經常使用的控件ListView進行了重點講解。
第5章系統(tǒng)地講述Fragment的使用場景、使用方法和生命周期,并將其與Activity的生命周期做比較,以便加深對Fragment的理解。同時,對ListFragment與DialogFragment這兩個特殊的Fragment進行深入的講解,對其用法和特性也都進行了分析。在本章最后還根據開發(fā)中的經驗向讀者闡釋一些Fragment使用中常見的問題。
第6章非常詳細地講述ViewPager、RecyclerView這兩個View控件的使用。這兩個控件都是比較新的控件,在已有的Android開發(fā)書籍中很少提及,而在實際的開發(fā)過程中又經常使用,所以這里花較多篇幅對其講解。同時,針對一些特殊情況,比如官方提供的控件無法解決的問題,如何通過自定義控件來解決也進行了講解。
第7章主要講解數據操作的內容,系統(tǒng)地講述4種數據存儲的具體方式。同時,本章引入動態(tài)權限的概念,提醒讀者在使用Android6.0以上版本進行開發(fā)時,添加權限應該是動態(tài)獲取,而不是靜態(tài)獲取。
第8章講解Service是什么、Service的分類、為什么需要使用Service以及Service的幾種使用方法,同時結合Service講解Handler機制和AsyncTask的用法。
第9章闡述廣播機制,并通過實例告訴讀者如何使用系統(tǒng)廣播,以及通過對普通廣播和有序廣播的介紹講解如何自定義廣播。另外,本章還講述Android為了能夠簡單地解決廣播的安全性問題而引入的一套本地廣播機制——本地廣播。
第10章對Android中的網絡通信技術進行系統(tǒng)的分析與總結,講解如何使用HTTP及Socket進行網絡通信,同時針對一些特殊的需要講解WebView的使用,重點介紹OkHttp這一實際開發(fā)中經常使用的、非常重要的HTTP請求框架。
李瑞奇,北京航空航天大學軟件工程碩士,從事軟件開發(fā)多年,熟悉JAVA、Android、Hadoop等技術,對客戶端開發(fā)有獨特心得,流行App《我要寫歌》的Android客戶端開發(fā)者。目前在某知名企業(yè)從事計算廣告及推薦系統(tǒng)的開發(fā)工作。
第1章 初識Android
1.1 Android發(fā)展史與現狀
1.2 Android系統(tǒng)架構與特性
1.2.1 Android系統(tǒng)架構
1.2.2 Dalvik VM和JVM的區(qū)別
1.2.3 Android系統(tǒng)平臺的優(yōu)勢
1.3 Android開發(fā)環(huán)境搭建
1.3.1 下載安裝Java并配置環(huán)境變量
1.3.2 下載安裝Android Studio和Android SDK
1.4 Android Studio的使用與工程目錄解析
1.4.1 建立新的Android應用
1.4.2 創(chuàng)建模擬器并使用模擬器運行應用
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的開發(fā)
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的創(chuàng)建與使用
5.1.1 靜態(tài)使用Fragment
5.1.2 動態(tài)使用Fragment
5.1.3 使用Fragment時常用的類和方法
5.2 Fragment生命周期
5.3 ListFragment的使用
5.4 用DialogFragment創(chuàng)建對話框
5.4.1 通過重寫onCreateView方法來實現對話框
5.4.2 通過重寫onCreateDialog方法來實現對話框
5.5 Fragment在開發(fā)中遇到的一些常見問題
5.5.1 旋轉屏幕問題
5.5.2 Fragment返回棧
5.5.3 Fragment與Activity之間的數據通信
5.6 小結
第6章 更多的控件與控件開發(fā)
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 動態(tài)權限
7.5.1 動態(tài)權限簡介
7.5.2 讀取通話記錄
7.6 小結
第8章 Service詳解
8.1 Service綜述
8.1.1 Service的分類
8.1.2 為什么不使用線程
8.1.3 Service的創(chuàng)建與啟動
8.1.4 Service生命周期
8.2 Service的簡單實例
8.2.1 以start方式創(chuàng)建與啟動Service
8.2.2 以bind方式創(chuàng)建與綁定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 使用系統(tǒng)廣播
9.2.1 動態(tài)注冊廣播實例
9.2.2 靜態(tài)注冊廣播實例
9.3 自定義廣播:普通廣播與有序廣播
9.3.1 普通廣播實例
9.3.2 有序廣播實例
9.4 使用本地廣播
9.5 小結
第10章 網絡開發(fā)
10.1 Android網絡通信概述
10.1.1 TCP/IP
10.1.2 HTTP與Socket
10.2 使用HTTP協(xié)議進行網絡通信
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章 多媒體開發(fā)
11.1 撥號功能與短信功能
11.1.1 撥號的實現
11.1.2 短信發(fā)送
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 媒體播放器的開發(fā)
11.5.1 開發(fā)一個音頻播放器
11.5.2 開發(fā)一個視頻器
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開發(fā)入門
13.1 詳解VR
13.1.1 VR是什么
13.1.2 VR的關鍵技術
13.1.3 VR發(fā)展歷程
13.1.4 VR在技術層面上的現狀
13.1.5 VR當前市場現狀
13.1.6 VR的市場前景
13.1.7 主流的硬件設備形態(tài)
13.1.8 誰會領銜VR內容制作
13.2 基于Unity3D的Android平臺VR應用開發(fā)
13.2.1 下載Cardboard SDK for Unity
13.2.2 導入CardboardSDKForUnity.unitypackage
13.2.3 運行DemoScene
13.2.4 使用Unity3D創(chuàng)建一個自己的場景
13.3 小結
第14章 Android NDK開發(fā)入門
14.1 NDK簡介
14.2 使用Android Studio進行NDK開發(fā)
14.2.1 Android NDK開發(fā)環(huán)境搭建
14.2.2 第一個NDK應用
14.3 小結
第15章 完成并發(fā)布一個產品
15.1 功能需求分析
15.2 功能開發(fā)(上)
15.2.1 程序概覽
15.2.2 數據庫設計與開發(fā)
15.2.3 用戶登錄驗證
15.2.4 工具類
15.3 功能開發(fā)(下)
15.3.1 日記記錄
15.3.2 日記查詢
15.3.3 個人中心
15.3.4 AndroidManifest.xml及其他配置文件
15.4 將應用打包并發(fā)布到小米應用商店
15.4.1 應用打包
15.4.2 發(fā)布應用到小米應用商店
15.5 小結