1¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯應用框架原理與程式設計36技適用於Android1.0版本書完整範例程式碼請到網站下載:高煥堂著(2008年10月第三版)misoo.tw@gmail.com2Android應用框架原理與程式設計36技¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯著作權聲明:z本書已於2008年4月出版發行。z著作權屬於高煥堂所擁有。z本e-book可整份免費自由複製流傳。z但非經作者書面同意,不可以加以切割、剪輯及部分流傳。z任何商業用途皆需得到作者的書面同意。書內範例原始程式碼,請到tom-kao.blogspot.com或下载。3¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯第三版序言由於Android正式(1.0)版和HTC/Android實體手機皆已經上市了,因之本書也針對Android1.0版的出爐而即時修訂,成為本書的第三版。大家幾乎都聽過愚公移山的故事,但是大家常把焦點擺在愚公和移山,而忽略了畚「箕」的角色。禮記.學記篇上有言:良弓之子,必學為箕。其意思是,欲做出優良的弓,必先好好研究其模子(即箕)。最近許多人知道Google推出轟動武林、驚動萬教的Android手機平台。但是幾乎都只關心如何在該新平台上開發應用程式,卻忽略了Android是個框架(Framework),而框架裡含有成百上千個「箕」類(註:基類是大陸對SuperClass的譯詞)。基於「良弓之子,必學為箕」的精神,本書先教您正確認識框架(箕)之原理,然後才介紹如何善用畚箕來開發出優良的Android應用程式(良弓)。本書共分為4篇:※第一篇:介紹應用框架概念、原理和特性。※第二篇:闡述應用框架之設計技巧。亦即,如何打造應用框架。(註:如果你的職務是「使用」Android框架來開發應用程式的話,可以跳過本篇,直接進入第三篇。)※第三篇:說明及演練Android應用程式設計的36技。※第四篇:介紹Android框架與硬體之間C組件的開發流程及工具。筆者並不是說Android的應用程式師是愚公,而旨在說明手機軟體領域的三個主要分工角色:z做畚箕者:如Andriod開發團隊。z畚箕買主:如Google公司。z挑畚箕者:如Android應用程式師。本書也不把您設定為應用程式師單一角色,而是盼望能協助您開拓更寬廣的未來,無論在上述的任何角色,都能如魚得水,輝煌騰達。於此誠摯地祝福您!高煥堂謹識於2008.10.3tom-kao.blogspot.com4Android應用框架原理與程式設計36技¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯目錄第一篇良弓之子,必學為箕(框架)~禮記.學記~第1章認識應用框架,141.1何謂應用框架1.2框架的起源1.3框架的分層1.4框架的「無用之用」效果1.5框架與OS之關係:常見的迷思第2章應用框架魅力的泉源:反向溝通,312.1前言2.2認識反向溝通2.3主控者是框架,而不是應用程式2.4現代應用框架:採取廣義IoC觀念2.5框架的重要功能:提供預設行為第二篇無之(抽象)以為用~老子:無之以為用~第3章如何打造應用框架,543.1基礎手藝:抽象(無之)與衍生(有之)3.2打造框架:細膩的抽象步驟3.2.1基本步驟3.2.2細膩的手藝(一):比較資料成員3.2.3細膩的手藝(二):比較函數成員3.2.4細膩的手藝(三):將抽象類別轉為介面5¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯第三篇有之(繼承)以為利~老子:有之以為利~第4章應用程式設計的基礎手藝12技,824.1#1:如何建立Menu選單4.2#2:如何呈現按鈕(Button)之14.3#3:如何呈現按鈕(Button)之24.4#4:如何進行畫面佈局(Layout)4.5#5:如何呈現List選單之14.6#6:如何呈現List選單之24.7#7:如何運用相對佈局(RelativeLayout)4.8#8:如何運用表格佈局(TableLayout)4.9#9:如何動態變換佈局4.10#10:如何定義自己的View4.11#11:如何定義一組RadioButton4.12#12:一個Activity啟動另一個Activity第5章UseCase分析與畫面佈局之規劃,1415.1善用UseCase分析5.2以Android實踐UseCase分析之策略第6章UseCase分析的實踐(策略-A):6技,1496.1#13:使用Menu和starActivity()實踐之6.2#14:使用starActivityForResult()替代startActivity()6.3#15:使用ListView替代Menu6.4#16:以ListActivity替代Activity父類別6.5#17:改由.xml檔案定義畫面佈局6.6#18:使用onResume()函數6Android應用框架原理與程式設計36技¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯第7章UseCase分析的實踐(策略-B):2技,1797.1#19:一個Activity支持兩個畫面佈局7.2#20:將兩個畫面佈局合併為一第8章介紹關聯式資料庫與SQLite,1938.1何謂關聯式資料庫8.2建立一個表格(Table)8.3從表格中查詢資料8.4關聯資料模型8.5關聯的種類8.6兩個表格之互相聯結8.7SQL子句:加總及平均8.8SQL子句:分組第9章資料庫手藝:5技,2019.1#21:SQLite基本操作9.2#22:讓SQLite披上ContentProvider的外衣9.3#23:細說SQLite與ContentProvider9.4#24:讓SQLite配合onCreate()、onResume()而來去自如9.5#25:如何實現商業交易(Transaction)第10章進階手藝10技,23710.1#26:如何定義BroadcastReceiver子類別10.2#27:如何撰寫Service子類別10.3#28:如何使用ProgressDialog物件10.4#29:如何捕捉按鍵的KeyEvent10.5#30:善用UMLStatechart嚴格控制系統的狀態10.6#31:如何使用MapView7¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯10.7#32:如何使用WebView10.8#33:如何自動化操作畫面輸入10.9#34:如何活用COR設計樣式10.10#35:如何活用State設計樣式第四篇第三十六技:為箕是上策第11章如何撰寫框架與硬體間之C組件,30711.1#36:如何撰寫框架與硬體間之C組件11.2發展AndroidC組件的經濟意義附錄A:327◆A-1如何安裝Windows平台的AndroidSDK1.0版及Eclipse◆A-2如何離線安裝AndroidSDK1.0版及Eclipse◆A-3如何著手撰寫Android應用程式◆A-4如何執行Android應用程式◆A-5如何安裝Linux/Ubuntu平台的AndroidSDK1.0版及Eclipse◆A-6如何安裝C/C++CrossCompiler附錄B:336◆B-1高煥堂於Omia行動應用服務聯盟會議上演講的講義◆B-2歡迎一起推動「百萬個小Google計畫」◆B-3迎接IT第三波:移(行)動時代◆B-4高煥堂教你最先進的「現代軟體分析與設計」◆B-5認識Android模擬器的操作Eclipse8Android應用框架原理與程式設計36技¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯本書由Misoo團隊創作與出版Misoo技術團隊介紹由高煥堂領軍的Misoo團隊與大陸、俄羅斯、日本專家所組成的跨國嵌入式聯合設計(Co-design)團隊。Misoo的開放合作態度,贏得國際的好感和商機。位於風景秀麗的Voronezh,Russia例如,跨國團隊成功地將俄羅斯研發20多年的頂級Linter嵌入式資料庫系統納入Android手機裡執行,成為Android的嫡系成員之一。此外,Misoo團隊開發的Android遊戲應用程式也順利外銷歐美諸國,如下圖:Russia9¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯還有,手機線上遊戲等等,如下圖:10Android應用框架原理與程式設計36技¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯跨國團隊經驗豐富、技術精湛,嵌入式開發成功經驗,包括:客製化影音播放器(videoplayer)開發嵌入式資料庫管理引擎(DBMS)開發行動平台GPS系統開發(Blackberry,WinCE,J2ME)電信業的專屬無線協定(wirelessprotocol)的開發學習內容播放系統開發(Flash-based)11¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯基於Misoo的開放精神,高煥堂將本書製作成e-book供大家免費閱讀,希望本書在這千載難逢的大好機會裡,能陪伴諸位的成長與茁壯。此外,高煥堂又把一些跨國團隊的實務經驗和技術加以編輯,並出版成書,或成為企業培訓課程的講義,將進一步與大家分享。如何與Misoo跨國團隊技術合作呢?◎開發專案(項目)合作:z歡迎直接與Misoo團隊聯絡:TEL:(02)2739-8367E-mail:misoo.tw@gmail.com◎公開教育訓練課程,或企業團隊內訓:z台北地區歡迎與Misoo團隊聯絡:TEL:(02)2739-8367E-mail:misoo.tw@gmail.comz上海地區歡迎與祝成科技洽詢:TEL:400-886-0806E-mail:sv@softcompass.com歡迎多多指教Misoo網頁:tom-kao.blogspot.com或技¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯歡迎報名參加高煥堂主講的GoogleAndroid技術教育訓練課程詳細課綱與日期,請上網服務電話:(02)2739-8367E-mail:misoo.tw@gmail.com高煥堂的第2本Android暢銷書籍(天瓏網路書局熱賣中)***詳細目錄請看第308頁或上網***第1章認識應用框架13¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯