主要以訓練營的5天教學課程為基礎,融合了兩位作者多年的心得體會,是一本完全面向實戰的Android 編程權威指南。
《Android編程權威指南》共37章,詳細介紹了GeoQuiz、HelloMoon、DragAndDraw等8個Android應用。這些應用的難易程度不一,最復雜的CriminalIntent應用占用了13章的篇幅。通過這些精心設計的應用,讀者可掌握很多重要的理論知識和開發技巧,獲得最前沿的開發經驗。
如果你熟悉Java語言,或者了解對面向對象編程,那就立刻開始Android編程之旅吧!
目錄
第1章 Android應用初體驗
1.1 應用基礎
1.2 創建Android項目
1.3 Eclipse工作區導航
1.4 用戶界面設計
1.4.1 視圖層級結構
1.4.2 組件屬性
1.4.3 創建字符串資源
1.4.4 預覽界面布局
1.5 從布局XML到視圖對象
1.6 組件的實際應用
1.6.1 類包組織導入
1.6.2 引用組件
1.6.3 設置監聽器
1.7 使用模擬器運行應用
1.8 Android編譯過程
第2章 Android與MVC設計模式
2.1 創建新類
2.2 Android與MVC設計模式
2.3 更新視圖層
2.4 更新控制層
2.5 在設備上運行應用
2.5.1 連接設備
2.5.2 配置設備用於應用開發
2.6 添加圖標資源
2.6.1 向項目中添加資源
2.6.2 在XML文件中引用資源
2.7 關於挑戰練習
2.8 挑戰練習一:為TextView添加監聽器
2.9 挑戰練習二:添加后退按鈕
2.10 挑戰練習三:從按鈕到圖標按鈕
第3章 Activity的生命周期
3.1 日志跟蹤理解Activity生命周期
3.1.1 輸出日志信息
3.1.2 使用 LogCat
3.2 設備旋轉與Activity生命周期
3.3 設備旋轉前保存數據
3.4 再探Activity生命周期
3.5 深入學習:測試onSaveInstanceState-(Bundle)方法
3.6 深入學習:日志記錄的級別與方法
第4章 Android應用的調試
4.1 DDMS應用調試透視圖
4.2 異常與棧跟蹤
4.2.1 診斷應用異常
4.2.2 記錄棧跟蹤日志
4.2.3 設置斷點
4.2.4 使用異常斷點
4.3 文件瀏覽器
4.4 Android特有的調試工具
4.4.1 使用Android Lint
4.4.2 R類的問題
第5章 第二個activity
5.1 創建第二個activity
5.1.1 創建新布局
5.1.2 創建新的activity子類
5.1.3 在manifest配置文件中聲明activity
5.1.4 為QuizActivity添加cheat按鈕
5.2 啟動activity
5.3 activity間的數據傳遞
5.3.1 使用intent extra
5.3.2 從子activity獲取返回結果
5.4 activity的使用與管理
5.5 挑戰練習
第6章 Android SDK版本與兼容
6.1 Android SDK版本
6.2 Android編程與兼容性問題
6.2.1 全新的系統版本--Honeycomb
6.2.2 SDK最低版本
6.2.3 SDK目標版本
6.2.4 SDK編譯版本
6.2.5 安全添加新版本API中的代碼
6.3 使用Android開發者文檔
6.4 挑戰練習:報告編譯版本
第7章 UI fragment與fragment 管理器
7.1 UI設計的靈活性需求
7.2 fragment的引入
7.3 着手開發CriminalIntent
7.3.1 創建新項目
7.3.2 fragment與支持庫
7.3.3 創建Crime類
7.4 托管UI fragment
7.4.1 fragment的生命周期
7.4.2 托管的兩種方式
7.4.3 定義容器視圖
7.5 創建UI fragment
7.5.1 定義CrimeFragment的布局
7.5.2 創建CrimeFragment類
7.6 添加UI fragment到FragmentManager
7.6.1 fragment事務
7.6.2 FragmentManager與fragment生命周期
7.7 activity使用fragment的理由
7.8 深入學習:Honeycomb、ICS、Jelly Bean以及更高版本系統上的應用開發
第8章 使用布局與組件創建用戶界面
8.1 升級Crime類
8.2 更新布局
8.3 生成並使用組件
8.4 深入探討XML布局屬性
8.4.1 樣式、主題及主題屬性
8.4.2 dp、sp以及屏幕像素密度
8.4.3 Android開發設計原則
8.4.4 布局參數
8.4.5 邊距與內邊距
8.5 使用圖形布局工具
8.5.1 添加新組件
8.5.2 屬性視圖中編輯組件屬性
8.5.3 在框架視圖中重新組織組件
8.5.4 更新子組件的布局參數
8.5.5 android:layout_weight屬性的工作原理
8.5.6 圖形布局工具使用總結
8.5.7 組件ID與多種布局
8.6 挑戰練習:日期格式化
第9章 使用ListFragment顯示列表
9.1 更新CriminalIntent應用的模型層
9.2 創建ListFragment
9.3 使用抽象activity托管fragment
9.3.1 通用的fragment托管布局
9.3.2 抽象activity類
9.4 ListFragment、ListView及ArrayAdapter
9.4.1 創建ArrayAdapter類實例
9.4.2 響應列表項的點擊事件
9.5 定制列表項
9.5.1 創建列表項布局
9.5.2 創建adapter子類
第10章 使用fragment argument
10.1 從fragment中啟動activity
10.1.1 附加extra信息
10.1.2 獲取extra信息
10.1.3 使用Crime數據更新CrimeFragment視圖
10.1.4 直接獲取extra信息方式的缺點
10.2 fragment argument
10.2.1 附加argument給fragment
10.2.2 獲取argument
10.3 重新加載顯示列表項
10.4 通過fragment獲取返回結果
第11章 使用ViewPager
11.1 創建CrimePagerActivity
11.1.1 以代碼的方式定義並產生布局
11.1.2 ViewPager與Pager-Adapter
11.1.3 整合配置並使用CrimePagerActivity
11.1.4 FragmentStatePager-Adapter與Fragment-PagerAdapter
11.2 深入學習:ViewPager的工作原理
第12章 對話框
12.1 創建DialogFragment
12.1.1 顯示DialogFragment
12.1.2 設置對話框的顯示內容
12.2 fragment間的數據傳遞
12.2.1 傳遞數據給DatePicker-Fragment
12.2.2 返回數據給CrimeFragment
12.3 挑戰練習:更多對話框
第13章 使用MediaPlayer播放音頻
13.1 添加資源
13.2 定義HelloMoonFragment布局文件
13.3 創建HelloMoonFragment
13.4 使用布局fragment
13.5 音頻播放
13.6 挑戰練習:暫停音頻播放
13.7 深入學習:播放視頻
13.8 挑戰練習:在HelloMoon應用中播放視頻
第14章 fragment的保留
14.1 保留fragment實例
14.2 設備旋轉與保留的fragment
14.3 保留的fragment:一切都完美了嗎
14.4 設備旋轉處理與onSaveInstance-State(Bundle)方法
14.5 深入學習:fragment引入前的設備旋轉問題
第15章 應用本地化
15.1 本地化資源
15.2 配置修飾符
15.2.1 可用資源優先級排定
15.2.2 多重配置修飾符
15.2.3 尋找最匹配的資源
15.3 更多資源使用原則及控制
15.3.1 資源命名
15.3.2 資源目錄結構
15.4 測試備選資源
第16章 操作欄
16.1 選項菜單
16.1.1 在XML文件中定義選項菜單
16.1.2 創建選項菜單
16.1.3 響應菜單項選擇
16.2 實現層級式導航
16.2.1 啟用應用圖標的導航功能
16.2.2 響應向上按鈕
16.3 可選菜單項
16.3.1 創建可選菜單XML文件
16.3.2 切換菜單項標題
16.3.3 ”還有個問題”
16.4 挑戰練習:用於列表的空視圖
第17章 存儲與加載本地文件
17.1 CriminalIntent應用的數據存取
17.1.1 保存crime數據到JSON文件
17.1.2 從文件中讀取crime數據
17.2 挑戰練習:使用外部存儲
17.3 深入學習:Android文件系統與Java I/O
第18章 上下文菜單與上下文操作模式
18.1 定義上下文菜單資源
18.2 實施浮動上下文菜單
18.2.1 創建上下文菜單
18.2.2 為上下文菜單登記視圖
18.2.3 響應菜單項選擇
18.3 實施上下文操作模式
18.3.1 實現列表視圖的多選操作
18.3.2 列表視圖中的操作模式回調方法
18.3.3 改變已激活視圖的顯示背景
18.3.4 實現其他視圖的上下文操作模式
18.4 兼容性問題:回退還是復制
18.5 挑戰練習:在CrimeFragment視圖中刪除crime記錄
18.6 深入學習:ActionBarSherlock
18.7 挑戰練習:使用ActionBarSherlock
18.7.1 CriminalIntent應用中ABS的基本整合
18.7.2 ABS的深度整合
18.7.3 ABS的完全整合
第19章 相機I:取景器
19.1 創建Fragment布局
19.2 創建CrimeCameraFragment
19.3 創建CrimeCameraActivity
19.4 使用相機API
19.4.1 打開並釋放相機
19.4.2 SurfaceView、Surface-Holder與Surface
19.4.3 確定預覽界面大小
19.4.4 啟動CrimeCamera-Activity
19.5 深入學習:以命令行的方式運行activity
第20章 相機 II:拍攝並處理照片
20.1 拍攝照片
20.1.1 實現相機回調方法
20.1.2 設置圖片尺寸大小
20.2 返回數據給CrimeFragment
20.2.1 以接收返回值的方式啟動CrimeCameraActivity
20.2.2 在CrimeCameraFragment中設置返回值
20.2.3 在CrimeFragment中獲取照片文件名
20.3 更新模型層
20.3.1 新增Photo類
20.3.2 為Crime添加photo屬性
20.3.3 設置photo屬性
20.4 更新CrimeFragment的視圖
20.4.1 添加ImageView組件
20.4.2 圖像處理
20.5 在DialogFragment中顯示大圖片
20.6 挑戰練習:Crime照片的顯示方向
20.7 挑戰練習:刪除照片
20.8 深入學習:Android代碼的廢棄處理
第21章 隱式intent
21.1 添加按鈕組件
21.2 添加嫌疑人信息至模型層
21.3 使用格式化字符串
21.4 使用隱式intent
21.4.1 典型隱式intent的組成
21.4.2 發送陋習報告
21.4.3 獲取聯系人信息
21.4.4 檢查可以響應的activity
21.5 挑戰練習:又一個隱式intent
第22章 Master-Detail用戶界面
22.1 增加布局靈活性
22.1.1 修改SingleFragment-Activity
22.1.2 創建包含兩個fragment容器的布局
22.1.3 使用別名資源
22.2 Activity:fragment的托管者
22.3 深入學習:設備屏幕尺寸的確定
第23章 深入學習intent和任務
23.1 創建NerdLauncher項目
23.2 解析隱式intent
23.3 在運行時創建顯式intent
23.4 任務與后退棧
23.5 使用NerdLauncher應用作為設備主屏幕
23.6 挑戰練習:應用圖標與任務重排
23.7 進程與任務
第24章 樣式與include標簽的使用
24.1 創建RemoteControl項目
24.1.1 編碼實現RemoteControl-Activity
24.1.2 創建RemoteControl-Fragment
24.2 使用樣式消除重復代碼
24.3 完善布局定義
24.4 深入學習:使用include與merge標簽
24.5 挑戰練習:樣式的繼承
第25章 XML Drawable與9-Patches
25.1 XML drawable
25.2 state list drawable
25.3 layer list與inset drawable
25.4 使用9-patch圖像
第26章 HTTP與后台任務
26.1 創建PhotoGallery應用
26.2 網絡連接基本
26.3 使用AsyncTask在后台線程上運行代碼
26.4 線程與主線程
26.5 獲取Flickr XML數據
26.6 從AsyncTask回到主線程
26.7 深入學習:再探AsyncTask
26.8 挑戰練習:分頁
第27章 Looper、Handler與HandlerThread
27.1 設置GridView以顯示圖片
27.2 批量下載縮略圖
27.3 與主線程通信
27.4 創建並啟動后台線程
27.5 Message與message Handler
27.5.1 消息的剖析
27.5.2 Handler的剖析
27.5.3 使用handler
27.5.4 傳遞handler
27.6 深入學習:AsyncTask與Thread
27.7 挑戰練習:預加載以及緩存
第28章 搜索
28.1 搜索Flickr網站
28.2 搜索對話框
28.2.1 創建搜索界面
28.2.2 可搜索的activity
28.2.3 物理搜索鍵
28.2.4 搜索的工作原理
28.2.5 啟動模式與新的intent
28.2.6 使用shared preferences實現輕量級數據存儲
28.3 在Android 3.0以后版本的設備上使用SearchView
28.4 挑戰練習
第29章 后台服務
29.1 創建IntentService
29.2 服務的作用
29.3 查找最新返回結果
29.4 使用AlarmManager延遲運行服務
29.4.1 PendingIntent
29.4.2 使用PendingIntent管理定時器
29.5 控制定時器
29.6 通知信息
29.7 深入學習:服務細節內容
29.7.1 服務的能與不能
29.7.2 服務的生命周期
29.7.3 non-sticky服務
29.7.4 sticky服務
29.7.5 綁定服務
第30章 broadcast Intent
30.1 隨設備重啟而重啟的定時器
30.1.1 配置文件中的broadcast receiver
30.1.2 如何使用receiver
30.2 過濾前台通知消息
30.2.1 發送broadcast intent
30.2.2 動態broadcast receiver
30.2.3 使用私有權限
30.2.4 使用ordered broadcast接收結果
30.3 receiver與長時運行任務
第31章 網頁瀏覽
31.1 最后一段Flickr數據
31.2 簡單方式:使用隱式intent
31.3 較難方式:使用WebView
31.3.1 使用WebChromeClient優化WebView的顯示
31.3.2 處理WebView的設備旋轉問題
31.4 深入學習:注入JavaScript對象
第32章 定制視圖與觸摸事件
32.1 創建DragAndDraw項目
32.1.1 創建DragAndDraw-Activity
32.1.2 創建DragAndDraw-Fragment
32.2 創建定制視圖
32.3 處理觸摸事件
32.4 onDraw(...)方法內的圖形繪制
32.5 挑戰練習:設備旋轉問題
第33章 跟蹤設備的地理位置
33.1 啟動RunTracker項目
33.1.1 創建RunActivity
33.1.2 創建RunFragment
33.2 地理位置與LocationManager
33.3 接收定位數據更新broadcast
33.4 使用定位數據刷新UI顯示
33.5 快速定位:最近一次地理位置
33.6 在物理和虛擬設備上測試地理位置定位
第34章 使用SQLite本地數據庫
34.1 在數據庫中存儲旅程和地理位置信息
34.2 查詢數據庫中的旅程列表
34.3 使用CursorAdapter顯示旅程列表
34.4 創建新旅程
34.5 管理現有旅程
34.6 挑戰練習:識別當前跟蹤的旅程
第35章 使用Loader加載異步數據
35.1 Loader與LoaderManager
35.2 在RunTracker應用中使用Loader
35.3 加載旅程列表
35.4 加載單個旅程
35.5 加載旅程的最近一次地理位置
第36章 使用地圖
36.1 添加Maps API給RunTracker應用
36.1.1 使用物理設備測試地圖
36.1.2 安裝使用Google Play services SDK
36.1.3 獲取Google Maps API key
36.1.4 更新RunTracker應用的manifest配置文件
36.2 在地圖上顯示用戶的地理位置
36.3 顯示旅程路線
36.4 為旅程添加開始和結束地圖標注
36.5 挑戰練習:實時數據更新
第37章 編后語
37.1 終極挑戰
37.2 關於我們
37.3 致謝
1.1 應用基礎
1.2 創建Android項目
1.3 Eclipse工作區導航
1.4 用戶界面設計
1.4.1 視圖層級結構
1.4.2 組件屬性
1.4.3 創建字符串資源
1.4.4 預覽界面布局
1.5 從布局XML到視圖對象
1.6 組件的實際應用
1.6.1 類包組織導入
1.6.2 引用組件
1.6.3 設置監聽器
1.7 使用模擬器運行應用
1.8 Android編譯過程
第2章 Android與MVC設計模式
2.1 創建新類
2.2 Android與MVC設計模式
2.3 更新視圖層
2.4 更新控制層
2.5 在設備上運行應用
2.5.1 連接設備
2.5.2 配置設備用於應用開發
2.6 添加圖標資源
2.6.1 向項目中添加資源
2.6.2 在XML文件中引用資源
2.7 關於挑戰練習
2.8 挑戰練習一:為TextView添加監聽器
2.9 挑戰練習二:添加后退按鈕
2.10 挑戰練習三:從按鈕到圖標按鈕
第3章 Activity的生命周期
3.1 日志跟蹤理解Activity生命周期
3.1.1 輸出日志信息
3.1.2 使用 LogCat
3.2 設備旋轉與Activity生命周期
3.3 設備旋轉前保存數據
3.4 再探Activity生命周期
3.5 深入學習:測試onSaveInstanceState-(Bundle)方法
3.6 深入學習:日志記錄的級別與方法
第4章 Android應用的調試
4.1 DDMS應用調試透視圖
4.2 異常與棧跟蹤
4.2.1 診斷應用異常
4.2.2 記錄棧跟蹤日志
4.2.3 設置斷點
4.2.4 使用異常斷點
4.3 文件瀏覽器
4.4 Android特有的調試工具
4.4.1 使用Android Lint
4.4.2 R類的問題
第5章 第二個activity
5.1 創建第二個activity
5.1.1 創建新布局
5.1.2 創建新的activity子類
5.1.3 在manifest配置文件中聲明activity
5.1.4 為QuizActivity添加cheat按鈕
5.2 啟動activity
5.3 activity間的數據傳遞
5.3.1 使用intent extra
5.3.2 從子activity獲取返回結果
5.4 activity的使用與管理
5.5 挑戰練習
第6章 Android SDK版本與兼容
6.1 Android SDK版本
6.2 Android編程與兼容性問題
6.2.1 全新的系統版本--Honeycomb
6.2.2 SDK最低版本
6.2.3 SDK目標版本
6.2.4 SDK編譯版本
6.2.5 安全添加新版本API中的代碼
6.3 使用Android開發者文檔
6.4 挑戰練習:報告編譯版本
第7章 UI fragment與fragment 管理器
7.1 UI設計的靈活性需求
7.2 fragment的引入
7.3 着手開發CriminalIntent
7.3.1 創建新項目
7.3.2 fragment與支持庫
7.3.3 創建Crime類
7.4 托管UI fragment
7.4.1 fragment的生命周期
7.4.2 托管的兩種方式
7.4.3 定義容器視圖
7.5 創建UI fragment
7.5.1 定義CrimeFragment的布局
7.5.2 創建CrimeFragment類
7.6 添加UI fragment到FragmentManager
7.6.1 fragment事務
7.6.2 FragmentManager與fragment生命周期
7.7 activity使用fragment的理由
7.8 深入學習:Honeycomb、ICS、Jelly Bean以及更高版本系統上的應用開發
第8章 使用布局與組件創建用戶界面
8.1 升級Crime類
8.2 更新布局
8.3 生成並使用組件
8.4 深入探討XML布局屬性
8.4.1 樣式、主題及主題屬性
8.4.2 dp、sp以及屏幕像素密度
8.4.3 Android開發設計原則
8.4.4 布局參數
8.4.5 邊距與內邊距
8.5 使用圖形布局工具
8.5.1 添加新組件
8.5.2 屬性視圖中編輯組件屬性
8.5.3 在框架視圖中重新組織組件
8.5.4 更新子組件的布局參數
8.5.5 android:layout_weight屬性的工作原理
8.5.6 圖形布局工具使用總結
8.5.7 組件ID與多種布局
8.6 挑戰練習:日期格式化
第9章 使用ListFragment顯示列表
9.1 更新CriminalIntent應用的模型層
9.2 創建ListFragment
9.3 使用抽象activity托管fragment
9.3.1 通用的fragment托管布局
9.3.2 抽象activity類
9.4 ListFragment、ListView及ArrayAdapter
9.4.1 創建ArrayAdapter類實例
9.4.2 響應列表項的點擊事件
9.5 定制列表項
9.5.1 創建列表項布局
9.5.2 創建adapter子類
第10章 使用fragment argument
10.1 從fragment中啟動activity
10.1.1 附加extra信息
10.1.2 獲取extra信息
10.1.3 使用Crime數據更新CrimeFragment視圖
10.1.4 直接獲取extra信息方式的缺點
10.2 fragment argument
10.2.1 附加argument給fragment
10.2.2 獲取argument
10.3 重新加載顯示列表項
10.4 通過fragment獲取返回結果
第11章 使用ViewPager
11.1 創建CrimePagerActivity
11.1.1 以代碼的方式定義並產生布局
11.1.2 ViewPager與Pager-Adapter
11.1.3 整合配置並使用CrimePagerActivity
11.1.4 FragmentStatePager-Adapter與Fragment-PagerAdapter
11.2 深入學習:ViewPager的工作原理
第12章 對話框
12.1 創建DialogFragment
12.1.1 顯示DialogFragment
12.1.2 設置對話框的顯示內容
12.2 fragment間的數據傳遞
12.2.1 傳遞數據給DatePicker-Fragment
12.2.2 返回數據給CrimeFragment
12.3 挑戰練習:更多對話框
第13章 使用MediaPlayer播放音頻
13.1 添加資源
13.2 定義HelloMoonFragment布局文件
13.3 創建HelloMoonFragment
13.4 使用布局fragment
13.5 音頻播放
13.6 挑戰練習:暫停音頻播放
13.7 深入學習:播放視頻
13.8 挑戰練習:在HelloMoon應用中播放視頻
第14章 fragment的保留
14.1 保留fragment實例
14.2 設備旋轉與保留的fragment
14.3 保留的fragment:一切都完美了嗎
14.4 設備旋轉處理與onSaveInstance-State(Bundle)方法
14.5 深入學習:fragment引入前的設備旋轉問題
第15章 應用本地化
15.1 本地化資源
15.2 配置修飾符
15.2.1 可用資源優先級排定
15.2.2 多重配置修飾符
15.2.3 尋找最匹配的資源
15.3 更多資源使用原則及控制
15.3.1 資源命名
15.3.2 資源目錄結構
15.4 測試備選資源
第16章 操作欄
16.1 選項菜單
16.1.1 在XML文件中定義選項菜單
16.1.2 創建選項菜單
16.1.3 響應菜單項選擇
16.2 實現層級式導航
16.2.1 啟用應用圖標的導航功能
16.2.2 響應向上按鈕
16.3 可選菜單項
16.3.1 創建可選菜單XML文件
16.3.2 切換菜單項標題
16.3.3 ”還有個問題”
16.4 挑戰練習:用於列表的空視圖
第17章 存儲與加載本地文件
17.1 CriminalIntent應用的數據存取
17.1.1 保存crime數據到JSON文件
17.1.2 從文件中讀取crime數據
17.2 挑戰練習:使用外部存儲
17.3 深入學習:Android文件系統與Java I/O
第18章 上下文菜單與上下文操作模式
18.1 定義上下文菜單資源
18.2 實施浮動上下文菜單
18.2.1 創建上下文菜單
18.2.2 為上下文菜單登記視圖
18.2.3 響應菜單項選擇
18.3 實施上下文操作模式
18.3.1 實現列表視圖的多選操作
18.3.2 列表視圖中的操作模式回調方法
18.3.3 改變已激活視圖的顯示背景
18.3.4 實現其他視圖的上下文操作模式
18.4 兼容性問題:回退還是復制
18.5 挑戰練習:在CrimeFragment視圖中刪除crime記錄
18.6 深入學習:ActionBarSherlock
18.7 挑戰練習:使用ActionBarSherlock
18.7.1 CriminalIntent應用中ABS的基本整合
18.7.2 ABS的深度整合
18.7.3 ABS的完全整合
第19章 相機I:取景器
19.1 創建Fragment布局
19.2 創建CrimeCameraFragment
19.3 創建CrimeCameraActivity
19.4 使用相機API
19.4.1 打開並釋放相機
19.4.2 SurfaceView、Surface-Holder與Surface
19.4.3 確定預覽界面大小
19.4.4 啟動CrimeCamera-Activity
19.5 深入學習:以命令行的方式運行activity
第20章 相機 II:拍攝並處理照片
20.1 拍攝照片
20.1.1 實現相機回調方法
20.1.2 設置圖片尺寸大小
20.2 返回數據給CrimeFragment
20.2.1 以接收返回值的方式啟動CrimeCameraActivity
20.2.2 在CrimeCameraFragment中設置返回值
20.2.3 在CrimeFragment中獲取照片文件名
20.3 更新模型層
20.3.1 新增Photo類
20.3.2 為Crime添加photo屬性
20.3.3 設置photo屬性
20.4 更新CrimeFragment的視圖
20.4.1 添加ImageView組件
20.4.2 圖像處理
20.5 在DialogFragment中顯示大圖片
20.6 挑戰練習:Crime照片的顯示方向
20.7 挑戰練習:刪除照片
20.8 深入學習:Android代碼的廢棄處理
第21章 隱式intent
21.1 添加按鈕組件
21.2 添加嫌疑人信息至模型層
21.3 使用格式化字符串
21.4 使用隱式intent
21.4.1 典型隱式intent的組成
21.4.2 發送陋習報告
21.4.3 獲取聯系人信息
21.4.4 檢查可以響應的activity
21.5 挑戰練習:又一個隱式intent
第22章 Master-Detail用戶界面
22.1 增加布局靈活性
22.1.1 修改SingleFragment-Activity
22.1.2 創建包含兩個fragment容器的布局
22.1.3 使用別名資源
22.2 Activity:fragment的托管者
22.3 深入學習:設備屏幕尺寸的確定
第23章 深入學習intent和任務
23.1 創建NerdLauncher項目
23.2 解析隱式intent
23.3 在運行時創建顯式intent
23.4 任務與后退棧
23.5 使用NerdLauncher應用作為設備主屏幕
23.6 挑戰練習:應用圖標與任務重排
23.7 進程與任務
第24章 樣式與include標簽的使用
24.1 創建RemoteControl項目
24.1.1 編碼實現RemoteControl-Activity
24.1.2 創建RemoteControl-Fragment
24.2 使用樣式消除重復代碼
24.3 完善布局定義
24.4 深入學習:使用include與merge標簽
24.5 挑戰練習:樣式的繼承
第25章 XML Drawable與9-Patches
25.1 XML drawable
25.2 state list drawable
25.3 layer list與inset drawable
25.4 使用9-patch圖像
第26章 HTTP與后台任務
26.1 創建PhotoGallery應用
26.2 網絡連接基本
26.3 使用AsyncTask在后台線程上運行代碼
26.4 線程與主線程
26.5 獲取Flickr XML數據
26.6 從AsyncTask回到主線程
26.7 深入學習:再探AsyncTask
26.8 挑戰練習:分頁
第27章 Looper、Handler與HandlerThread
27.1 設置GridView以顯示圖片
27.2 批量下載縮略圖
27.3 與主線程通信
27.4 創建並啟動后台線程
27.5 Message與message Handler
27.5.1 消息的剖析
27.5.2 Handler的剖析
27.5.3 使用handler
27.5.4 傳遞handler
27.6 深入學習:AsyncTask與Thread
27.7 挑戰練習:預加載以及緩存
第28章 搜索
28.1 搜索Flickr網站
28.2 搜索對話框
28.2.1 創建搜索界面
28.2.2 可搜索的activity
28.2.3 物理搜索鍵
28.2.4 搜索的工作原理
28.2.5 啟動模式與新的intent
28.2.6 使用shared preferences實現輕量級數據存儲
28.3 在Android 3.0以后版本的設備上使用SearchView
28.4 挑戰練習
第29章 后台服務
29.1 創建IntentService
29.2 服務的作用
29.3 查找最新返回結果
29.4 使用AlarmManager延遲運行服務
29.4.1 PendingIntent
29.4.2 使用PendingIntent管理定時器
29.5 控制定時器
29.6 通知信息
29.7 深入學習:服務細節內容
29.7.1 服務的能與不能
29.7.2 服務的生命周期
29.7.3 non-sticky服務
29.7.4 sticky服務
29.7.5 綁定服務
第30章 broadcast Intent
30.1 隨設備重啟而重啟的定時器
30.1.1 配置文件中的broadcast receiver
30.1.2 如何使用receiver
30.2 過濾前台通知消息
30.2.1 發送broadcast intent
30.2.2 動態broadcast receiver
30.2.3 使用私有權限
30.2.4 使用ordered broadcast接收結果
30.3 receiver與長時運行任務
第31章 網頁瀏覽
31.1 最后一段Flickr數據
31.2 簡單方式:使用隱式intent
31.3 較難方式:使用WebView
31.3.1 使用WebChromeClient優化WebView的顯示
31.3.2 處理WebView的設備旋轉問題
31.4 深入學習:注入JavaScript對象
第32章 定制視圖與觸摸事件
32.1 創建DragAndDraw項目
32.1.1 創建DragAndDraw-Activity
32.1.2 創建DragAndDraw-Fragment
32.2 創建定制視圖
32.3 處理觸摸事件
32.4 onDraw(...)方法內的圖形繪制
32.5 挑戰練習:設備旋轉問題
第33章 跟蹤設備的地理位置
33.1 啟動RunTracker項目
33.1.1 創建RunActivity
33.1.2 創建RunFragment
33.2 地理位置與LocationManager
33.3 接收定位數據更新broadcast
33.4 使用定位數據刷新UI顯示
33.5 快速定位:最近一次地理位置
33.6 在物理和虛擬設備上測試地理位置定位
第34章 使用SQLite本地數據庫
34.1 在數據庫中存儲旅程和地理位置信息
34.2 查詢數據庫中的旅程列表
34.3 使用CursorAdapter顯示旅程列表
34.4 創建新旅程
34.5 管理現有旅程
34.6 挑戰練習:識別當前跟蹤的旅程
第35章 使用Loader加載異步數據
35.1 Loader與LoaderManager
35.2 在RunTracker應用中使用Loader
35.3 加載旅程列表
35.4 加載單個旅程
35.5 加載旅程的最近一次地理位置
第36章 使用地圖
36.1 添加Maps API給RunTracker應用
36.1.1 使用物理設備測試地圖
36.1.2 安裝使用Google Play services SDK
36.1.3 獲取Google Maps API key
36.1.4 更新RunTracker應用的manifest配置文件
36.2 在地圖上顯示用戶的地理位置
36.3 顯示旅程路線
36.4 為旅程添加開始和結束地圖標注
36.5 挑戰練習:實時數據更新
第37章 編后語
37.1 終極挑戰
37.2 關於我們
37.3 致謝
網路書店
類別
折扣
價格
-
新書87折$517