第一部分 準備篇
CHP.01 初識廬山真面目——Android 開發簡介
1.1 Android 的基本概念
1.1.1 Android 簡介
1.1.2 Android 的版本
1.1.3 Android 的系統構架
1.1.4 Android 的應用程式框架
1.2 JIL Widget 介紹
1.3 小結
CHP.02 工欲善其事,必先利其器——搭建和使用Android 開發環境
2.1 開發套件及工具的安裝
2.1.1 開發Android 程式都需要些什麼
2.1.2 安裝JDK 和設定Java 開發環境
2.1.3 Eclipse 的安裝與中文化
2.1.4 安裝Android SDK
2.1.5 安裝Eclipse 外掛程式ADT
2.2 真實體驗——撰寫第一個Android 程式(隨機繪製圓餅)
2.2.1 建立Android 專案
2.2.2 在模擬器中執行Android 程式
2.2.3 介面控制項的版面配置
2.2.4 撰寫程式
2.2.5 偵錯工具
2.2.6 在手機上執行和偵錯工具
2.3 遷移Android 專案可能發生的錯誤
2.4 不需要寫一行程式的開發工具:AppInventor
2.4.1 AppInventor 簡介
2.4.2 AppIntentor 的下載和安裝
2.4.3 用拖曳控制項的方式設計介面
2.4.4 像拼圖一樣拼裝程式
2.5 小結
第二部分 基礎篇
CHP.03 千里之行始於足下——Android 程式設計基礎
3.1 Android 應用程式框架
3.1.1 Android 專案的目錄結構
3.1.2 AndroidManifest
3.2 Android 應用程式中的資源
3.3 Android 的應用程式元件
3.3.1 Activity(Android 的表單)
3.3.2 Service(服務)
3.3.3 Broadcast Receiver(廣播接收器)
3.3.4 Content Provider(內容提供者)
3.4 Android 程式的UI 設計
3.4.1 手工設定XML 版面配置檔案
3.4.2 ADT 附帶的視覺化UI 設計器
3.4.3 使用DroidDraw 設計UI 版面配置
3.5 小結
CHP.04 我的UI 我做主——使用者介面開發基礎
4.1 Activity 的使用方法
4.1.1 建立Activity
4.1.2 設定Activity
4.1.3 顯示其他的Activity(Intent 與Activity)
4.2 Activity 的生命週期
4.3 在不同Activity 之間傳遞資料
4.3.1 使用Intent 傳遞資料
4.3.2 使用靜態變數傳遞資料
4.3.3 使用剪貼簿傳遞資料
4.3.4 使用全域物件傳遞資料
4.3.5 傳回資料到前一個Activity
4.4 檢視(View)
4.4.1 檢視簡介
4.4.2 使用XML 版面設定檔案定義檢視
4.4.3 在程式中控制檢視
4.5 版面設定(Layout)
4.5.1 框架版面設定(FrameLayout)
4.5.2 線性版面設定(LinearLayout)
4.5.3 相對版面設定(RelativeLayout)
4.5.4 表格版面設定(TableLayout)
4.5.5 絕對版面設定(AbsoluteLayout)
4.5.6 重用XML 版面設定檔案
4.5.7 最佳化XML 版面設定檔案
4.5.8 檢視apk 檔案中的版面設定
4.6 小結
CHP.05 良好的學習開端——控制項(Widget)詳解
5.1 常用XML 屬性解析
5.1.1 android:id 屬性
5.1.2 控制項的寬度(android:layout_width)和高度(android:layout_height)
5.1.3 android:layout_margin 屬性
5.1.4 android:padding 屬性
5.1.5 android:layout_weight 屬性
5.1.6 android:layout_gravity 和android:gravity 屬性
5.1.7 android:visibility 屬性
5.1.8 android:background 屬性
5.1.9 指定點擊事件方法(android:onClick 屬性)
5.1.10 控制項焦點屬性(android:focusable 和android:focusableInTouchMode)
5.2 TextView(顯示文字的控制項)
5.2.1 顯示豐富文本(URL、不同大小、字型、顏色的文字)
5.2.2 在TextView 中顯示表情影像和文字
5.2.3 點擊連結出現Activity
5.2.4 為指定文字增加背景
5.2.5 帶邊框的TextView
5.2.6 設定行距
5.2.7 在未顯示完的文字後面加省略號(⋯)
5.2.8 用TextView 實現走馬燈效果
5.2.9 垂直捲動TextView 中的文字
5.3 EditText(編輯文字的控制項)
5.3.1 像QQ 一樣輸入表情影像
5.3.2 在EditText 中輸入特定的字元
5.3.3 AutoCompleteTextView(自動完成輸入內容的控制項)
5.4 按鈕和核對盒控制項
5.4.1 Button(普通按鈕控制項)
5.4.2 圖文混排的按鈕
5.4.3 ImageButton(影像按鈕控制項)
5.4.4 RadioButton(選項按鈕控制項)
5.4.5 ToggleButton(開關狀態按鈕控制項)
5.4.6 CheckBox(核對盒控制項)
5.5 ImageView(顯示影像的控制項)
5.5.1 ImageView 控制項的基本用法
5.5.2 顯示指定區域的影像
5.5.3 縮放和旋轉影像
5.6 時間與日期控制項
5.6.1 DatePicker(輸入日期的控制項)
5.6.2 TimePicker(輸入時間的控制項)
5.6.3 DatePicker、TimePicker 與TextView 同步顯示日期和時間
5.6.4 AnalogClock 和DigitalClock(顯示時脈的控制項)
5.7 進度條控制項
5.7.1 ProgressBar(進度條控制項)
5.7.2 SeekBar(拖動條控制項)
5.7.3 設定ProgressBar 和SeekBar 的顏色及背景圖
5.7.4 RatingBar(評分控制項)
5.8 清單控制項
5.8.1 ListView(普通清單控制項)
5.8.2 為ListView 清單項增加核對盒和選項按鈕
5.8.3 對列表項進行增、刪、改操作
5.8.4 改變列表項的背景色
5.8.5 ListActivity(封裝ListView 的Activity)
5.8.6 ExpandableListView(可擴充的清單控制項)
5.8.7 Spinner(下拉清單控制項)
5.9 捲動控制項
5.9.1 ScrollView(垂直捲動控制項)
5.9.2 HorizontalScrollView(水平捲動控制項)
5.9.3 可垂直和水平捲動的檢視
5.9.4 Gallery(畫廊控制項)
5.10 ImageSwitcher(影像切換控制項)
5.11 GridView(網格控制項)
5.12 TabHost(標籤控制項)
5.13 ViewStub(惰性載入控制項)
5.14 小結
CHP.06 友善的選單——Menu 介紹與實例
6.1 選單的基本用法
6.1.1 建立選項選單(Options Menu)
6.1.2 帶影像的選項選單
6.1.3 連結Activity
6.1.4 回應選單的點擊動作
6.1.5 動態增加、修改和刪除選項選單
6.1.6 帶核對盒和選項按鈕的子功能表
6.1.7 右鍵選單
6.1.8 選單事件
6.1.9 從選單資源中載入選單
6.2 選單特效
6.2.1 自訂選單
6.2.2 模擬UCWeb 效果選單
6.2.3 QuickContactBadge 與連絡人選單
6.3 小結
CHP.07 友善地互動交流——資訊提醒(交談視窗、Toast 與Notification)
7.1 交談視窗的基本用法
7.1.1 帶2 個按鈕(確認/ 取消)的交談視窗
7.1.2 帶3 個按鈕(覆蓋/ 忽略/ 取消)的交談視窗
7.1.3 簡單列表交談視窗
7.1.4 單選列表交談視窗
7.1.5 多選列表交談視窗
7.1.6 進度交談視窗
7.1.7 登入交談視窗
7.1.8 使用Activity 託管交談視窗
7.2 交談視窗的高級應用
7.2.1 阻止點擊按鈕關閉交談視窗
7.2.2 改變交談視窗的顯示位置
7.2.3 在交談視窗按鈕和內容文字中插入影像
7.2.4 改變交談視窗的透明度
7.3 Toast
7.3.1 Toast 的基本用法
7.3.2 永不關閉的Toast
7.3.3 用PopupWindow 模擬Toast 提示訊息框
7.4 通知(Notification)
7.4.1 在狀態列上顯示通知資訊
7.4.2 Notification 的清除動作
7.4.3 永久存在的Notification
7.4.4 自訂Notification
7.5 小結
CHP.08 移動的資訊倉函數庫——資料儲存
8.1 讀寫key-value 對:SharedPreferences
8.1.1 SharedPreferences 的基本用法
8.1.2 資料的儲存位置和格式
8.1.3 存取複雜型態的資料
8.1.4 設定資料檔案的存取權限
8.1.5 可以儲存設定的Activity:PreferenceActivity
8.2 檔案儲存
8.2.1 openFileOutput 和openFileInput 方法
8.2.2 讀寫SD 卡中的檔案
8.2.3 SAX 引擎讀取XML 檔案的原理
8.2.4 將XML 檔案轉換成Java 物件
8.2.5 檔案壓縮(Jar、Zip)
8.3 SQLite 資料庫
8.3.1 SQLite 資料庫管理工具
8.3.2 SQLiteOpenHelper 類別與自動升級資料庫
8.3.3 資料綁定與SimpleCursorAdapter 類別
8.3.4 操作SD 卡上的資料庫
8.3.5 將資料庫與應用程式一起發佈
8.3.6 記憶體中資料庫
8.4 小結
CHP.09 Android 中的視窗——Activity
9.1 呼叫其他程式中的Activity
9.1.1 直接撥號
9.1.2 將電話號傳入撥號程式
9.1.3 呼叫撥號程式
9.1.4 瀏覽網頁
9.1.5 向E-mail 使用者端傳遞E-mail 地址
9.1.6 發送E-mail
9.1.7 檢視連絡人
9.1.8 顯示系統設定介面(設定主介面、Wifi 設定介面)
9.1.9 啟動處理音訊的程式
9.2 自訂Activity Action
9.3 Activity 的高級應用
9.3.1 ActivityGroup
9.3.2 自訂半透明視窗
9.3.3 Activity 之間切換的動畫效果
9.4 小結
CHP.10 全域事件——廣播(Broadcast)
10.1 什麼是廣播
10.2 接收系統廣播
10.2.1 簡訊攔截
10.2.2 用程式註冊廣播接收器
10.2.3 廣播接收器的優先順序
10.2.4 來去電攔截
10.2.5 截獲螢幕休眠與喚醒
10.2.6 開機自動執行
10.2.7 顯示手機電池的目前電量
10.3 發送廣播
10.4 驗證廣播接收器是否註冊
10.5 小結
CHP.11 跨應用資料來源——Content Provider
11.1 Content Provider 的作用
11.2 獲得系統資料
11.2.1 讀取連絡人資訊
11.2.2 檢視收到的簡訊
11.3 自訂Content Provider
11.3.1 查詢城市資訊
11.3.2 為Content Provider 增加存取權限
11.4 小結
CHP.12 一切為使用者服務——Service 基礎與實例
12.1 Service 基礎
12.1.1 Service 的生命週期
12.1.2 綁定Activity 和Service
12.1.3 開機啟動Service
12.1.4 判斷Service 是否已註冊
12.1.5 判斷Service 是否已開始
12.2 跨執行緒存取(AIDL 服務)
12.2.1 什麼是AIDL 服務
12.2.2 建立AIDL 服務的步驟
12.2.3 建立AIDL 服務
12.2.4 傳遞複雜資料的AIDL 服務
12.2.5 AIDL 與來去電自動掛斷
12.3 小結
CHP.13 做好應用橋樑——網路與通訊
13.1 WebView 控制項
13.1.1 用WebView 控制項瀏覽網頁
13.1.2 用WebView 控制項載入HTML 程式
13.2 存取HTTP 資源
13.2.1 傳送HTTP GET 和HTTP POST 請求
13.2.2 HttpURLConnection 類別
13.2.3 上傳檔案
13.3 使用者端Socket
13.3.1 連接伺服器
13.3.2 掃描伺服器開啟的通訊埠
13.3.3 發送和接收資料
13.3.4 獲得無線路由分配給手機的IP 地址
13.3.5 設定Socket 選項
13.4 服務端Socket
13.4.1 手機伺服器的實現
13.4.2 利用Socket 在應用程式之間通訊
13.5 藍芽通訊
13.5.1 藍芽簡介
13.5.2 開啟和關閉藍芽裝置
13.5.3 搜索藍芽裝置
13.5.4 藍芽資料傳輸
13.6 小結
CHP.14 炫酷你的應用——多媒體開發
14.1 音樂
14.1.1 播放音樂
14.1.2 錄音
14.2 視訊
14.2.1 使用VideoView 播放視訊
14.2.2 使用SurfaceView 播放視訊
14.2.3 錄製視訊
14.3 相機
14.3.1 呼叫系統的拍照功能
14.3.2 自訂拍照功能
14.4 鈴聲
14.5 小結
CHP.15 2D 遊戲開發
15.1 繪製遊戲的畫布
15.1.1 在View 上實現動畫效果
15.1.2 在SurfaceView 上實現動畫效果
15.2 圖形繪製基礎
15.2.1 繪製像素點
15.2.2 繪製直線
15.2.3 繪製圓形
15.2.4 繪製弧
15.2.5 繪製文字
15.2.6 綜合繪製各種圖形
15.3 高級影像處理技術
15.3.1 繪製點陣圖
15.3.2 影像的透明度
15.3.3 旋轉影像
15.3.4 路徑
15.3.5 Shader 的著色效果
15.4 框(Frame)動畫
15.4.1 AnimationDrawable 與框動畫
15.4.2 播放Gif 動畫
15.5 補間(Tween)動畫
15.5.1 移動補間動畫
15.5.2 縮放補間動畫
15.5.3 旋轉補間動畫
15.5.4 透明度補間動畫
15.6 小結
CHP.16 有趣的Android 應用
16.1 感應器
16.1.1 如何使用感應器
16.1.2 加速度感應器(Accelerometer)
16.1.3 重力感應器(Gravity)
16.1.4 光線感應器(Light)
16.1.5 陀螺儀感應器(Gyroscope)
16.1.6 方向感應器(Orientation)
16.1.7 其他感應器
16.2 輸入輸出技術
16.2.1 語音辨識
16.2.2 手勢輸入
16.2.3 語音朗讀(TTS)
16.3 Google 地圖
16.4 GPS 定位
16.5 桌面上的小東西
16.5.1 視窗小元件(AppWidget)
16.5.2 捷徑
16.5.3 即時資料夾
16.6 應用更華麗——動態桌布
16.7 小結
第三部分 高級篇
CHP.17 HTML5 與移動Web 開發
17.1 HTML5 簡介
17.2 HTML5 精彩效果示範
17.3 HTML5 在Android 中的應用
17.4 HTML5 的畫布(Canvas)
17.4.1 Canvas 概述
17.4.2 檢測瀏覽器是否支援Canvas
17.4.3 在Web 頁面中使用Canvas
17.4.4 使用路徑(Path)
17.4.5 設定線條風格
17.4.6 設定填充型態
17.4.7 填充矩形區域
17.4.8 使用漸層色(Gradient)
17.4.9 伸展畫布物件
17.4.10 在Canvas 上繪製文字
17.4.11 使用陰影
17.5 偵錯JavaScript
17.6 小結
CHP.18 輸入法開發
18.1 Android 輸入法簡介
18.2 控制輸入法
18.3 輸入法實戰
18.3.1 實現輸入法的步驟
18.3.2 撰寫輸入法程式
18.3.3 輸入法服務的生命週期
18.3.4 預輸入文字
18.3.5 輸入法設定
18.4 小結
CHP.19 Android OpenGL ES 開發基礎
19.1 OpenGL 簡介
19.2 什麼是OpenGL ES
19.3 多邊形
19.4 顏色
19.5 旋轉三角形
19.6 旋轉立方體
19.7 小結
CHP.20 OpenGL ES 的超酷效果
20.1 保持平衡的旋轉文字
20.2 左右搖擺的Android 機器人
20.3 糾纏在一起的旋轉立方體
20.4 透明背景的旋轉立方體
20.5 觸摸旋轉的立方體
20.6 2D 和3D 的綜合旋轉效果
20.7 旋轉立體天空
20.8 小結
CHP.21 Android NDK 程式設計
21.1 Android NDK 簡介
21.2 安裝、設定和測試NDK 開發環境
21.2.1 系統和軟體要求
21.2.2 下載和安裝Android NDK
21.2.3 下載和安裝Cygwin
21.2.4 設定Android NDK 的開發環境
21.3 第一個NDK 程式:世界你好
21.3.1 撰寫和呼叫NDK 程式
21.3.2 用命令列方式編譯NDK 程式
21.3.3 在Eclipse 中整合Android NDK
21.4 背景不斷變化的三角形(NDK 版OpenGL ES)
21.5 使用NDK OpenGL ES API 實現千變萬化的3D 效果
21.6 使用NDK 呼叫音訊API
21.7 本機Activity(Native Activity)
21.8 Android NDK 設定檔詳解
21.8.1 Android NDK 定義的變數
21.8.2 Android NDK 定義的函數
21.8.3 描述模組的變數
21.8.4 設定Application
21.9 小結
CHP.22 測試驅動開發(TDD)
22.1 JUnit 測試框架
22.2 測試Activity
22.3 測試Content Provider
22.4 測試Service
22.5 測試普通類別
22.6 小結
第四部分 綜合實例篇
CHP.23 Android 綜合案例一 ——藍芽聊天
23.1 藍芽聊天主介面
23.2 增加選項選單
23.3 搜索和連接藍芽裝置
23.4 使裝置可被其他藍芽裝置發現
23.5 發送和接收聊天資訊
23.6 小結
CHP.24 Android 綜合案例二——月球登陸(遊戲)
24.1 遊戲的玩法
24.2 實現遊戲介面
24.3 設定遊戲難度
24.4 開始遊戲
24.5 控制飛船噴火
24.6 控制飛船改變飛行方向
24.7 判斷飛船是否成功著陸
24.8 小結
CHP.25 Android 綜合案例三——全鍵盤輸入法(應用)
25.1 安裝輸入法
25.2 輸入法的初始化工作
25.3 回應鍵盤操作
25.4 根據EditText 控制項的屬性顯示不同的軟鍵盤
25.5 小結
CHP.26 Android 綜合案例四——貪吃蛇(遊戲)
26.1 遊戲玩法
26.2 遊戲主介面設計
26.3 控制小蛇的移動
26.4 小結
CHP.27 Android 綜合案例五——新浪微博使用者端(應用)
27.1 新浪微博簡介
27.1.1 新浪微博使用者端
27.1.2 新浪微博開放API
27.2 使用新浪微博開發API
27.3 建立和設定新浪微博使用者端專案
27.4 登入新浪微博
27.5 功能按鈕
27.6 顯示“ 我的首頁” 的微博
27.7 評論微博
27.8 轉發微博
27.9 寫微博
27.10 小結
CHP.28 Android 綜合案例六——笑臉連連看(遊戲)
28.1 遊戲玩法
28.2 準備影像素材
28.3 實現主介面
28.4 隨機產生連連看影像
28.5 選取兩個相同影像後消失
28.6 用計時器限制遊戲時間
28.7 小結