第1章 工欲善其事 必先利其器—Android SDK工具1 1.1 巧婦難為無米之炊—Android SDK的安裝1 1.2 設(shè)備管理工具—調(diào)試橋(ADB)3 1.2.1 ADB簡介3 1.2.2 ADB常用命令4 1.3 沒有真機(jī)一樣開發(fā)—Android模擬器7 1.4 Android調(diào)試—調(diào)試工具DDMS9 1.5 UI布局分析工具—視圖工具(Hierarchy Viewer)14 1.6 Log打印—Log輸出工具logcat17 1.6.1 啟動(dòng)logcat17 1.6.2 過濾日志輸出17 1.6.3 控制日志輸出格式18 1.6.4 查看可用日志緩沖區(qū)19 1.7 圖片拉伸不失真—九宮格繪制工具Draw 9Patch20 1.7.1 什么是“點(diǎn)九”文件20 1.7.2 點(diǎn)九文件的制作20第2章 吸引你的眼球—UI編程24 2.1 UI基礎(chǔ)—常用UI組件24 2.1.1 文本顯示—文本框(TextView)24 2.1.2 按鈕(Button)27 2.1.3 文本編輯—編輯框(EditText)29 2.1.4 圖片顯示—圖片視圖(ImageView)32 2.1.5 多項(xiàng)選擇—多選框(CheckBox)和單項(xiàng)選擇—單選框(RadioBox)34 2.1.6 圖片拖動(dòng)—拖動(dòng)效果(Gallery)38 2.1.7 列表組件(ListView)41 2.2 彰顯你的個(gè)性—自定義UI組件48 2.3 簡單明了的消息提示框(Toast)和對(duì)話框(Dialog)51 2.3.1 Toast提示51 2.3.2 Dialog提示52 2.4 Menu鍵的呼喚—Menu菜單56第3章 界面UI的基石—UI布局61 3.1 用戶界面的基本單元—View視圖61 3.2 百花齊放—各種Layout布局64 3.2.1 Layout布局的簡單介紹64 3.2.2 線性布局(LinearLayout)64 3.2.3 相對(duì)布局(RelativeLayout)67 3.2.4 框架布局(FrameLayout)70 3.2.5 表單布局(TableLayout)72 3.2.6 絕對(duì)布局(AbsoluteLayout)74 3.3 樣式(Style)和主題(Theme)的使用76 3.3.1 樣式(Style)的使用76 3.3.2 主題(Theme)的使用77第4章 Android開發(fā)三大基石—Activity、Service和Handler79 4.1 應(yīng)用程序的接口—Activity窗口79 4.1.1 Activity生命周期79 4.1.2 Activity棧81 4.1.3 Activity的創(chuàng)建81 4.1.4 Activity的4種加載模式82 4.1.5 Activity交互—Activity跳轉(zhuǎn)83 4.1.6 Activity中數(shù)據(jù)傳遞86 4.2 千變?nèi)f化的服務(wù)-Service開發(fā)87 4.2.1 Service的生命周期87 4.2.2 Service的啟動(dòng)和停止88 4.2.3 我的服務(wù)我來用—本地服務(wù)開發(fā)89 4.2.4 開機(jī)自啟動(dòng)的服務(wù)93 4.3 Android線程間的通信—消息機(jī)制95 4.3.1 消息的傳遞—Handler的使用95 4.3.2 Android中消息機(jī)制的詳細(xì)分析97第5章 以數(shù)據(jù)為中心—數(shù)據(jù)存取100 5.1 文件操作100 5.1.1 讀寫一般的文本文件100 5.1.2 結(jié)構(gòu)性的文件—讀寫XML文件103 5.1.3 自由操作,隨心所欲—序列化和反序列化113 5.2 通用的數(shù)據(jù)操作方式—數(shù)據(jù)庫116 5.2.1 SQLite數(shù)據(jù)庫介紹116 5.2.2 創(chuàng)建并打開數(shù)據(jù)庫116 5.2.3 添加、刪除和修改操作117 5.2.4 游標(biāo)的操作—使用Cuor120 5.3 安全方便簡單—使用SharedPreferences121 5.4 我的數(shù)據(jù)大家用—ContentProvider、ContentResolver123第6章 一張白紙好作畫—Canvas畫布126 6.1 Canvas畫布簡介126 6.1.1 View Canvas—使用普通View的Canvas畫圖126 6.1.2 Bitmap Canvas—使用普通Bitmap的Canvas畫圖128 6.1.3 SurfaceView Canvas—使用SurfaceView的Canvas畫圖128 6.2 Canvas常用繪制方法131 6.3 對(duì)Canvas進(jìn)行變換133 6.4 Canvas繪制的輔助類134 6.4.1 畫筆android.graphics.Paint134 6.4.2 字體android.graphics.Typeface135 6.4.3 顏色android.graphics.Color136 6.4.4 路徑android.graphics.Path137 6.4.5 路徑的高級(jí)效果android.graphics.PathEffect139 6.4.6 點(diǎn)類android.graphics.Point和android.graphics.PointF141 6.4.7 形狀類android.graphics.Rect和android.graphics.RectF142 6.4.8 區(qū)域android.graphics.Region與Region.Op144 6.4.9 千姿百態(tài),矩陣變換android.graphics.Matrix145第7章 實(shí)現(xiàn)炫酷效果—圖像和動(dòng)畫149 7.1 Android的幾種常用圖像類型149 7.2 圖片的基礎(chǔ)—Bitmap(位圖)150 7.2.1 如何獲取位圖資源150 7.2.2 如果獲取位圖的信息151 7.2.3 位圖的顯示與變換152 7.3 變化多端—Drawable(繪圖類)154 7.3.1 Drawable的一些常用子類154 7.3.2 BitmapDrawable154 7.3.3 點(diǎn)九圖片—NinePatchDrawable155 7.3.4 會(huì)動(dòng)的圖片—StateListDrawable156 7.3.5 顏色填充的另一種方法—PaintDrawable157 7.3.6 超炫的特效—ShapeDrawable157 7.3.7 簡單的幀動(dòng)畫—AnimationDrawable165 7.4 輕量級(jí)圖片—Picture167 7.5 Drawable、Bitmap、byte[]之間的轉(zhuǎn)換167 7.6 Android提供的幾種動(dòng)畫效果(Animation)168 7.7 漸變動(dòng)畫—Tween Animation169 7.7.1 Tween Animation簡介169 7.7.2 Tween Animation共同的屬性169 7.7.3 淡進(jìn)淡出—AlphaAnimation170 7.7.4 忽大忽小—ScaleAnimation171 7.7.5 平移—TralateAnimation172 7.7.6 旋轉(zhuǎn)—RotateAnimation173 7.7.7 實(shí)現(xiàn)一個(gè)自己的TweenAnimation174 7.8 漸變動(dòng)畫—Frame Animation176 7.9 隨意組合動(dòng)畫效果—AnimationSet177 7.10 加速的工具—Interpolator178第8章 網(wǎng)絡(luò)的時(shí)代—網(wǎng)絡(luò)開發(fā)180 8.1 Android中網(wǎng)絡(luò)開發(fā)概述180 8.2 直接基于Socket編程181 8.2.1 Socket編程簡介181 8.2.2 基于TCP協(xié)議的Socket編程183 8.2.3 基于UDP協(xié)議的Socket編程184 8.3 基于*成熟的Web協(xié)議—HTTP協(xié)議編程185 8.3.1 HTTP協(xié)議簡介185 8.3.2 使用URL類讀取HTTP資源187 8.3.3 使用HttpURLConnection類訪問HTTP資源189 8.3.4 使用Apache的HttpClient190 8.4 耗時(shí)操作的通用方式—多線程與異步處理192 8.4.1 多線程和異步處理簡介192 8.4.2 Handler方式193 8.4.3 AsyncTask類實(shí)現(xiàn)后臺(tái)任務(wù)的處理197 8.5 輕量級(jí)的數(shù)據(jù)交換格式—JSON199 8.5.1 客戶端與服務(wù)器端的數(shù)據(jù)交互199 8.5.2 XML格式與JSON格式的比較201 8.5.3 解析JSON格式數(shù)據(jù)202第9章 多語言環(huán)境的支持和多屏幕的適配205 9.1 Android程序的資源文件205 9.1.1 資源文件的目錄結(jié)構(gòu)205 9.1.2 資源文件目錄的修飾語206 9.1.3 程序加載資源文件的步驟208 9.2 國際化和本地化的支持209 9.3 多屏幕的適配210 9.3.1 屏幕參數(shù)的基本概念210 9.3.2 屏幕參數(shù)的各種單位及相互轉(zhuǎn)換211 9.3.3 處理屏幕自適應(yīng)的方法212 9.3.4 詳細(xì)說明Deity214第10章 利用手機(jī)特性—結(jié)合硬件進(jìn)行開發(fā)217 10.1 炫酷的人機(jī)交互—觸摸和手勢(shì)217 10.1.1 實(shí)現(xiàn)滑動(dòng)翻頁—使用ViewFlipper217 10.1.2 支持多個(gè)手指一起操作—實(shí)現(xiàn)多點(diǎn)觸摸222 10.1.3 識(shí)別手勢(shì)—使用GestureDetector227 10.2 我在哪里—使用定位功能230 10.3 電話撥打和短信發(fā)送233 10.3.1 調(diào)用系統(tǒng)的電話撥打功能233 10.3.2 實(shí)現(xiàn)發(fā)送短信的功能234 10.4 拍照和攝像235 10.5 使用傳感器238 10.5.1 傳感器概述238 10.5.2 加速度傳感器241 10.5.3 方向傳感器242 10.5.4 其他傳感器243第11章 避重就輕—結(jié)合Web開發(fā)Android應(yīng)用245 11.1 Android上的Web應(yīng)用概述245 11.2 使用WebView載入Web頁面247 11.2.1 Webkit引擎和WebView控件247 11.2.2 瀏覽基本的Web頁面247 11.2.3 開啟對(duì)于JavaScript的支持249 11.2.4 監(jiān)聽Web頁面的載入250 11.2.5 讓W(xué)ebView支持文件下載250 11.3 本地代碼與Web頁面交互252 11.3.1 向Web頁面?zhèn)鬟f數(shù)據(jù)252 11.3.2 本地代碼調(diào)用Web頁面JavaScript方法254 11.3.3 Web頁面調(diào)用本地Java方法254 11.4 Web頁面的JavaScript調(diào)試259 11.5 常用移動(dòng)設(shè)備Web開發(fā)框架260 11.5.1 jQuery Mobile框架簡介260 11.5.2 Sencha Touch框架簡介262 11.5.3 PhoneGap開發(fā)平臺(tái)簡介262第12章 細(xì)節(jié)決定成敗—Android應(yīng)用程序的優(yōu)化264 12.1 對(duì)應(yīng)用內(nèi)存的優(yōu)化264 12.1.1 Android程序的內(nèi)存概述264 12.1.2 追蹤內(nèi)存—使用內(nèi)存優(yōu)化輔助工具266 12.1.3 吃內(nèi)存大戶—Bitmap的優(yōu)化270 12.1.4 想回收就回收—使用軟引用和弱引用274 12.1.5 注重細(xì)節(jié)—從代碼角度進(jìn)行優(yōu)化277 12.2 對(duì)界面UI的優(yōu)化281 12.2.1 多利用Android系統(tǒng)的資源281 12.2.2 抽取相同的布局284 12.2.3 精簡UI層次285 12.2.4 界面延遲加載技術(shù)287 12.3 留條后路—對(duì)Crash進(jìn)行處理288 12.3.1 為什么需要捕獲Crash288 12.3.2 如何捕獲和處理Crash289參考文獻(xiàn)292