計算機科學與技術專業(yè)畢業(yè)論文-基于Android平臺閱讀器的設計與開發(fā)_第1頁
計算機科學與技術專業(yè)畢業(yè)論文-基于Android平臺閱讀器的設計與開發(fā)_第2頁
計算機科學與技術專業(yè)畢業(yè)論文-基于Android平臺閱讀器的設計與開發(fā)_第3頁
計算機科學與技術專業(yè)畢業(yè)論文-基于Android平臺閱讀器的設計與開發(fā)_第4頁
計算機科學與技術專業(yè)畢業(yè)論文-基于Android平臺閱讀器的設計與開發(fā)_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

計算機科學與技術專業(yè)畢業(yè)論文--基于Android平臺閱讀器的設計與開發(fā)摘要隨著3G時代的到來移動用戶通過GPRS可以高速享受Intenet提供的服務本軟件通過Rss站點方便用戶迅速獲取感興趣的內容本論文采用Android開源系統(tǒng)技術利用Java語言和Eclipse結合目前使用廣泛RssReallySimpleSyndication以及目前的解析和分析工具AndroidRSSHtmlParserHTML閱讀器DesignandDevelopmentofRSSReaderBasedonAndroidPlatformAbstractInpacewiththecomingof3GtimetheconsumersofChinaMobilecanenjoytheserviceprovidedbytheInternetinahighspeedviaGPRSItscontinentforconsumerstogetthecontentrapidlyinwhichtheyareinterestedthroughtheRSSinthissoftwareThepaperadoptstheAndroidopensourcesystemtakesadvantageofJavalanguageandEclipseandalsocombinesthewidelyusedRssReallySimpleSyndicationandHtmlParserwhichisthebest6>htmlanalysetoolpresentlytocompiletotheRssreaderWhatmakesthesoftwareoutoftheordinaryisthatitusesHtmlParsetoanalysethehtmldocumentfilesinordertogettheappointedcontentandcutdowntheflowonGPRSaswellasThesoftwaremakesuseofallkindsofgroupwaresofferedbytheAndroidtodesigntheinterfacesothatitmakestheconsumersexperiencewellKeywordsandroidrsshtmlParserhtmlreader 目錄第一章緒論 411課題的研究意義 412相近研究課題的特點及優(yōu)缺點分析 413本文的主要工作 5第二章Android的架構分析 521Android特征 522Android架構 6com關鍵應用程序 7com應用程序框架 7comCC函數(shù)庫 7comJava程序運行環(huán)境 7comLinux內核 723Android應用的構成和工作機制 7comActivity 8comIntentReceiver 9comService 9comContentProvider 10comRss解析剖析 1024本章小結 11第三章開發(fā)環(huán)境介紹及構建 11第四章需求分析 1241功能需求 1242性能需求 1543數(shù)據(jù)需求 1644安全需求 16第五章Android數(shù)據(jù)庫的設計 1651數(shù)據(jù)庫及字段屬性設計 1752數(shù)據(jù)庫的連接 17com創(chuàng)建 17com數(shù)據(jù)庫操作 18第六章系統(tǒng)設計與實現(xiàn) 1861Rss資源的收集和分析 1862系統(tǒng)界面的設計 22com主界面的實現(xiàn) 22com中子界面的實現(xiàn) 2363資源文件的解析 27comML文件的解析 27com件解析 2864數(shù)據(jù)存儲 31comSharedPerference 31comFile存儲方式 31comSQLiteDataBase數(shù)據(jù)庫 31comAndroid中Application的應用 31com儲在項目中的應用 3265內容界面功能的實現(xiàn) 32第七章結論 33參考文獻 34第一章緒論3G網(wǎng)絡的使用移動終端不再僅是通訊網(wǎng)絡的終端還將成為互聯(lián)網(wǎng)的終端隨著3G時代的到來上網(wǎng)越來越方便而網(wǎng)上充斥著各種各樣的信息讓網(wǎng)民們很頭疼很難找到自己感興趣的新聞而且中國流量費用的高昂在眾多網(wǎng)頁中尋找自己感興趣的信息浪費了過多沒必要損失的流量RSS為網(wǎng)民提供新聞標題和摘要它的作用就像一道篩子為網(wǎng)民過濾了網(wǎng)站的大量無用信息使網(wǎng)民直達自己所需的網(wǎng)頁可通過RSS閱讀器進行閱讀而不必每次到目標網(wǎng)站去尋找最新信息提供RSS服務的網(wǎng)站可以節(jié)省用戶訪問目標網(wǎng)站的時間便捷和主動傳遞這正是RSS訂閱最有價值的地方RSS閱讀器基本可以分為三類第一類大多數(shù)閱讀器是運行在計算機桌面上的通過所訂閱網(wǎng)站的新聞供應可自動定時地更新新聞標題在該類閱讀器中有AwasuFeedDemon和RSSReader這三款流行的閱讀器都提供免費試用版和付費高級版國內最近也推出了幾款RSS閱讀器周博通看天下博閱第二類新聞閱讀器通常是內嵌于已在計算機中運行的應用程序中例如NewsGator內嵌在微軟的Outlook中所訂閱的新聞標題位于Outlook的收件箱文件夾中另外Pluck內嵌在InternetExplorer瀏覽器中第三類則是在線的WEBRSS閱讀器其優(yōu)勢在于不需要安裝任何軟件就可以獲得RSS閱讀的便利并且可以保存閱讀狀態(tài)推薦和收藏自己感興趣的文章Android的特征架構以及Android應用的構成和工作機制本文詳細的提出了軟件的架構以及解析RSS方案采用Java開源的JAR包對HTML文件進行分析和獲取圖片和文字信息對各個界面的布局和實現(xiàn)方式進行詳細說明對數(shù)據(jù)庫設計模塊進行了詳盡的需求分析經(jīng)分析得到數(shù)據(jù)庫設計模塊Android是一個移動設備的軟件平臺是由LinuxJava構成的開源軟件它提供包括SDKKeyAppsMiddlewareLinuxKernel四個部分在內的全套軟件方案它開放了基于Linux內核以上的開發(fā)工具從而保證了內容的可移植性和多樣性Android平臺為我們開發(fā)應用程序提供了一套很好的框架我們可以在這個平臺的基礎上開發(fā)不同的應用程序也可以開發(fā)新的組件供應用程序調用[1]21Android特征Dalvik虛擬Android采用的Java虛擬機是自主開發(fā)的代號為Dalvik的虛擬機技術在保證API方面兼容的同時Dalvik針對移動進行了大幅優(yōu)化占用資源更小運行效率更高內嵌瀏覽器基于開源的瀏覽器網(wǎng)頁排版引擎WebKit優(yōu)化的圖形強大的自定義二維圖形庫基于OpenGLES1.O標準的3D圖形功能在移動3D開發(fā)中有著至關重要的地位SQLite數(shù)據(jù)庫SQLitet提供結構化的數(shù)據(jù)存儲它是一款輕型免費的且開源的數(shù)據(jù)庫它的設計目標是嵌入式的它占用的資源非常低需要的內存空間少處理速度比較快和支持事務處理功能等多媒體支持支持各種通用的音視頻和靜態(tài)圖像格式如MP3JPGPNG等OpenCore是Android多媒體框架的核心所有Android平臺的音視頻采集播放的操作都是通過它來實現(xiàn)的通過OpenCore程序員可以方便快速的開發(fā)出想要的多媒體應用程序GSM技術依賴硬件GlobalSystemforMobileCommunications全球移動通訊系統(tǒng)俗稱全球通是第二代移動通信技術其開發(fā)El的是讓傘球各地可以共同使用一個移動網(wǎng)絡標準讓用戶使_一部就能行遍全球藍牙EDGE3GandWiFi是一種短距離的無線連接技術在短距離內可以實現(xiàn)話音和數(shù)據(jù)的無線傳輸EDGEEnhaIlcedDataRateforGSMEvolution是增強型數(shù)據(jù)速率GSM演進技術CameraGPScompassandaccelerometer依賴硬件GPSGlobalPositioningSystemItTI馴全球定位系統(tǒng)它是一個由覆蓋全球的24顆1J星組成的衛(wèi)星系統(tǒng)Compass是個開放源代碼的JAVA搜索引擎框架強大的開發(fā)環(huán)境包括一個設備模擬器調試工具內存和性能檢測以及EclipseIDE的開發(fā)插件Eclipse是個集成開發(fā)環(huán)境[2]22Android架構Android的架構是Linux內核CC函數(shù)庫Dalvik虛擬機應用框架以及關鍵應用程序構成的如圖2-1通過編譯基于框架的應用程序可以降低開發(fā)負荷應用軟件原則上是在DalvikVM上運行的圖2-1Android架構圖[3]com關鍵應用程序Android平臺內包含一些關鍵應用程序如郵件收發(fā)客戶端程序短信收發(fā)程序日歷和網(wǎng)頁瀏覽器等開發(fā)者可以在其平臺上開發(fā)更多有特色的應用程序開發(fā)語言是Javacom應用程序框架Android應用程序的開發(fā)基于框架和組件Android本身已在其框架中提高了許多的組件供應用程序調用當然開發(fā)者也開放新的組件并將組件放入應用程序框架中以供自己和其它應用程序調用comCC函數(shù)庫Android應用程序框架之下是一套CC函數(shù)庫它們服務于Android應用程序組件其功能通過組件間接提供給開發(fā)者這些函數(shù)庫包括標準C函數(shù)庫媒體功能庫瀏覽器引擎2D和3D圖形庫基于WEB應用的的安全協(xié)議SSL用于點陣和矢量字體渲染的FreeType以及SQLite引擎等comJava程序運行環(huán)境Android的Java程序運行環(huán)境包含一組Java核心函數(shù)庫及Dalvik虛擬機它們有效地優(yōu)化了Java程序的運行過程所有的Android應用都運行在它自己的進程里該進程是一個Dalvik虛擬機的實例Dalvik被設計成能在一臺設備上高效的運行多個虛擬機實例Dalvik虛擬機的可執(zhí)行文件被封裝成Dalvik可執(zhí)行格式dex這是被優(yōu)化過的最小內存依賴的格式Java編譯器dx工具將注冊了的和運行時用到的類編譯成dex格式Dalvik虛擬機依賴于底層Linux內核提供的功能如線程機制和內存管理機制等comLinux內核Android系統(tǒng)平臺是基于優(yōu)化了的Linux內核是其系統(tǒng)平臺的核心它提供諸如內存管理進程管理設備驅動等服務同時也是軟硬件的連接層提供了一個屏蔽層用于屏蔽硬件和上層軟件23Android應用的構成和工作機制對于一個Android應用程序來說是由ActivityIntentReceiverServiceContentProvider四部分組成但并不是每一個Android應用程序都必須由這四部分組成在應用程序中使用時需要在配置文件AndroidMainfest.xml中進行配置這個配置文件是每個Android應用程序所必需的用于定義應用程序的組件組件的功能以及必要條件等comActivityActivity是構成應用程序中最重要的構造塊在Android應用程序中幾乎都是通過Activity來與用戶進行交互所以Activity主要負責的就是創(chuàng)建與用戶進行交互的顯示窗口你可以在這些窗口里通過調用setContentViewView方法來顯示你自己的用戶界面活動生命周期活動Activity在系統(tǒng)中以活動棧的形式進行管理當一個新的活動啟動后被放到了棧項成為了運行活動而新活動之前的活動在活動棧里總位于新活動之下直到新的活動退出才重新回到前臺圖2-2Activity狀態(tài)變換路徑圖[4]從圖2-2可以看出Activity有三個關鍵的循環(huán)1活動的整個生命期從首次調用onCreateBundle開始到最終調用onDestroyO結束在onCreate中進行所有初始化在onDestroyO時進行清理工作釋放資源2活動的可見生命期從調用onStart開始到onStop被調用為止在這段時間內即使活動不與用戶進行交互用戶也可以在屏幕上看到它在這兩個方法調用之間可以維護活動顯示給用戶的資源onStart和onStop方法可以多次調用因為活動隨時可以在可見和隱藏之間進行轉換3活動的后臺生命期從調用onResume開始到onPause被調用為止在這段時間內活動處于其它所有活動之前并與用戶進行交互一個活動可以不斷在resumed狀態(tài)和paused狀態(tài)之間變換[4]活動之間的切換Android使用了Intent類來實現(xiàn)活動之間的切換工作Intent負責對應用中一次操作的動作動作涉及的數(shù)據(jù)和附加數(shù)據(jù)進行描述根據(jù)Intent的描述負責找到對應的組件將Intent傳遞給調用的組件并完成組件的調用因此Intent起著一種媒體中介的作用專門提供組件互相調用的相關信息實現(xiàn)調用者與被調用者之間的解耦在應用中我們可以以兩種形式來使用Intent直接Intent指定了component屬性的Intent通過指定具體的組件類通知應用啟動對應的組件間接Intent沒有指定comonent屬性的Intent則需要包含足夠的信息這樣系統(tǒng)才能根據(jù)這些信息在所有的可用組件中確定滿足此Intent的組件comIntentReceiverIntentReceivert是用于對外部事件的響應當外部事件發(fā)生時會使用NotificationManager通知用戶當一個IntentReceiver被觸發(fā)時系統(tǒng)會在需要的時候啟動對應的應用程序如在本系統(tǒng)中當用戶正在其它界面進行操作時有好友發(fā)送消息過來就會以通知的形式發(fā)送到當前界面的正上方來通知用戶各種應用還可以通過使用Context.broadcastIntent將它們的IntentReceiver廣播給其它的應用程序實現(xiàn)應用之間的通訊comServiceService是提供連續(xù)信息的應用程序它是運行于應用程序后臺的服務在用戶進行其它活動的時候這個服務將一直運行在基于Android平臺的即時通訊系統(tǒng)的研究與實現(xiàn)后臺直到用戶停止該服務或服務運行結束本系統(tǒng)客戶端擴展功能的音樂播放就是采用Service來進行設計和開發(fā)的使用戶可以邊聊天邊聽音樂comContentProviderContentProvider應用程序能夠將它們的數(shù)據(jù)保存到文件SQL數(shù)據(jù)庫和其它的存儲設備中當應用程序需要使用存儲設備中的數(shù)據(jù)時可以使用ContentProvider來完成使用ContentProvider能夠靈活的替換底層使用的存儲設備使開發(fā)者可以專著于應用邏輯的開發(fā)不用考慮底層存儲設備的細節(jié)從而使應用系統(tǒng)具有良好的數(shù)據(jù)comRss解析剖析在Android平臺上可以使用SimpleAPIforXMLSAXDocumentObjectModelDOM和Android附帶的pull解析器解析XML文件使用SAX讀取XML文件SAX是一個解析速度快并且占用內存少的解析器非常適合用于Android等移動設備SAX解析XML文件采用的是事件驅動也就是說它并不需要解析完整個文檔在按內容順序解析文檔的過程中SAX會判斷當前讀到的字符是否合法XML語法中的某部分如果符合就會觸發(fā)事件所謂事件其實就是一些回調callback方法這些方法事件定義在ContentHandler接口下面是一些ContentHandler接口常用的方法startDocument當遇到文檔的開頭的時候調用這個方法可以在其中做一些預處理的工作endDocument和上面的方法相對應當文檔結束的時候調用這個方法可以在其中做一些善后的工作

startElementStringnamespaceURIStringlocalNameStringqNameAttributesatts當讀到一個開始標簽的時候會觸發(fā)這個方法namespaceURI就是命名空間localName是不帶命名空間前綴的標簽名qName是帶命名空間前綴的標簽名通過atts可以得到所有的屬性名和相應的值要注意的是SAX中一個重要的特點就是它的流式處理當遇到一個標簽的時候它并不會紀錄下以前所碰到的標簽也就是說在startElement方法中所有你所知道的信息就是標簽的名字和屬性至于標簽的嵌套結構上層標簽的名字是否有子元屬等等其它與結構相關的信息都是不得而知的都需要你的程序來完成這使得SAX在編程處理上沒有DOM來得那么方便

endElementStringuriStringlocalNameStringname這個方法和上面的方法相對應在遇到結束標簽的時候調用這個方法

characterschar[]chintstartintlength這個方法用來處理在XML文件中讀到的內容第一個參數(shù)用于存放文件的內容后面兩個參數(shù)是讀到的字符串在這個數(shù)組中的起始位置和長度使用newStringchstartlength就可以獲取內容使用DOM讀取XML文件除了可以使用SAX解析XML文件大家也可以使用熟悉的DOM來解析XML文件DOM解析XML文件時會將XML文件的所有內容讀取到內存中然后允許您使用DOMAPI遍歷XML樹檢索所需的數(shù)據(jù)使用DOM操作XML的代碼看起來比較直觀并且在某些方面比基于SAX的實現(xiàn)更加簡單但是因為DOM需要將XML文件的所有內容讀取到內存中所以內存的消耗比較大特別對于運行Android的移動設備來說因為設備的資源比較寶貴所以建議還是采用SAX來解析XML文件當然如果XML文件的內容比較小采用DOM是可行的使用Pull解析器讀取XML文件除了可以使用SAX和DOM解析XML文件大家也可以使用Android內置的Pull解析器解析XML文件Pull解析器的運行方式與SAX解析器相似它提供了類似的事件如開始元素和結束元素事件使用parsernext可以進入下一個元素并觸發(fā)相應事件事件將作為數(shù)值代碼被發(fā)送因此可以使用一個switch對感興趣的事件進行處理當元素開始解析時調用parsernextText方法可以獲取下一個Text類型元素的值Android平臺的特征架構以及Android應用的構成和工作機制進行了詳細的分析對于Android應用程序來說主要由ActivityIntentReceiverService和ContentProvider四部分組成但并不是對于每一個應用程序這四部分都是必須的Activity是應用程序中最重要的一種構造塊我們對其進行了詳細的分析包括Activity的生命周期以及Activity之間的切換第三章開發(fā)環(huán)境介紹及構建Android平臺為開發(fā)者提供了源碼開放的軟件開發(fā)包SDK它包含了使用Java語言開發(fā)Android平臺應用的必要工具和組件API進行開發(fā)前先要建立合適的開發(fā)環(huán)境其中基于Java的整合型可擴展平臺Eclipse是我們的首選搭建環(huán)境所需要的軟件操作系統(tǒng)WindowsXP或Linux軟件包AndroidSDKADTIDE環(huán)境EclipseIDEADTEclipse33以上JDKJavaRuntimeEnvironmcntJDK安裝步驟安裝JDK然后配置環(huán)境變量安裝EclipseAndroidSDK配置安裝develcomnyudnetsdkindexhtml下載選擇相應的系統(tǒng)進行安裝安裝AndroidADT插件1打開Eclipse在導航菜單中選擇Help-InstallNewSoftware在workwith中輸入sdl-comandroideclipseADD然后輸入name隨便取個有意義的都選中安裝完畢后重啟Eclipse在Eclipse里配置SDK路徑選擇Windows-Preferences-Android選擇AndroidSDK的位置圖4-2主界面用例圖圖4-3新浪Rss用例圖3騰訊Rss功能該功能與新浪Rss相似如圖4-4所示圖4-4騰訊Rss用用例圖4歷史記錄瀏覽功能記錄用戶瀏覽過的內容以方便用戶再次查看這樣節(jié)省GPRS流量減少用戶的損失當用戶不需要這些記錄的時候可以清除掉這些記錄如圖4-5所示5收藏功能當用戶對一些文章感興趣時可以將其添加至收藏列表當用戶不需要某條記錄是可將其從收藏列表中刪除如圖4-6所示6本地緩存在瀏覽新聞和文章的過程中會下載圖片和文字內容將這些內容保存值本地在下次瀏覽同樣的內容的時候就不用再次鏈接網(wǎng)絡直接在本地讀取就可節(jié)省用戶的GPRS流量當存儲空間不足時用戶可以選擇刪除這些本地緩存圖4-5瀏覽記錄用例圖圖4-6我的收藏用例圖7異步更新訪問網(wǎng)絡比較耗時間顯示一些提示信息向用戶表示本軟件正在運行并異步加載數(shù)據(jù)更新UI界面42性能需求軟件要有良好的用戶體驗良好的用戶體驗體現(xiàn)在以下幾個方面1界面友好用戶界面要簡潔直觀設計合理方便用戶操作讓用戶操作起來比較舒服并且UI視覺效應好2快速響應快速處理用戶的輸入或請求對于需要長時間處理的部分在其處理時可以給用戶一個提示告知用戶該軟件正在運行3無縫性一個常見的無縫問題就是一個應用的后臺進程如service或broadcastreceiver對某事件作出響應而彈出對話框這看起來仿佛并無大礙特別是當你在模擬器上單獨地構建和測試你的應用時然而當你的應用在真正的設備上運行后臺線程顯示對話框時你的應用當時可能沒有獲得用戶焦點這就會出現(xiàn)你的應用會在活動的應用后面顯示對話框或者從當前應用中獲得焦點并顯示對話框的情況而管論當時用戶正在做什么如正在打等那樣的行為可能對你的應用或用戶不起作用為了避免這些問題你的應用應該利用適當?shù)南到y(tǒng)資源Notification類來通知用戶利用通知你的應用可以通過在狀態(tài)條上顯示一個圖標來通知用戶事件已經(jīng)發(fā)生而非獲得焦點和打斷用戶Mylove主要是存儲收藏的內容history主要存儲歷史瀏覽記錄這兩個表的字段一樣下面介紹history的字段如表5-1所示字段說明id記錄的id號title內容的標題link內容的URLbody內容主體表5-1history字段表屬性 數(shù)據(jù)類型 允許空 主鍵 Id INTEGER NOTnull Primarykey Title TEXT Link TEXT Body TEXT Mylove與history相同就不重復介紹了52數(shù)據(jù)庫的連接這里將介紹如何進行Android數(shù)據(jù)庫的連接Android中自帶的SQLite數(shù)據(jù)庫是十分小型的數(shù)據(jù)庫這樣正適合Android這種移動平臺使用Android數(shù)據(jù)庫的存儲位置在datadatadatabases目錄下Android是利用ContentProvider作為內容提供商SQLiteOpenHelper數(shù)據(jù)庫幫助類來進行對數(shù)據(jù)庫的創(chuàng)建和操作通過ContextgetContentResolver方法直接對數(shù)據(jù)庫進行操作程序中數(shù)據(jù)庫的類為RssDBextendSQLiteOpenHelper繼承關系com創(chuàng)建Android提供了標準的數(shù)據(jù)庫創(chuàng)建方式繼承SQLiteOpenHelper實現(xiàn)onCreate和onUpgrade兩個方法有個好處就是便于數(shù)據(jù)庫版本的升級連接數(shù)據(jù)庫的算法如下 publicRssDBContextcontext創(chuàng)建數(shù)據(jù)庫 supercontextDB_NAMEnullDB_VERTION publicvoidonCreateSQLiteDatabasedb 類創(chuàng)建是調用在這里主要創(chuàng)建table publicvoidonUpgradeSQLiteDatabasedbintoldVersionintnewVersion 版本升級時調用數(shù)據(jù)庫創(chuàng)建不成功會拋出FileNodFindException異常com數(shù)據(jù)庫操作打開數(shù)據(jù)庫操作dbthisgetWriteableDataBasethis表示RSSDB執(zhí)行sql語句dbexecSqlsql插入數(shù)據(jù)dbinsert刪除數(shù)據(jù)dbdelete更新數(shù)據(jù)dbupdate查詢數(shù)據(jù)dbquery當執(zhí)行完這些操作后一定要關閉數(shù)據(jù)庫連接dbclose這些操作的具體使用方法可參照AndroidSDK第六章系統(tǒng)設計與實現(xiàn)61Rss資源的收集和分析目前有很多門戶網(wǎng)站支持Rss訂閱例如新浪騰訊搜狐百度等本軟件主要收集了新浪和騰訊的Rss站點例如新浪所提供的站點分為新聞中心體育新聞科技新聞財經(jīng)新聞軍事新聞等新聞中心中包括各個站點的鏈接例如新聞中心中的新聞要聞的Rss地址是comcnnewsmarqueeddtxml體育新聞中的國際足壇的Rss地址是comcnsportsglobalfocusxml新浪具體的Rss站點的詳細信息可參考這個鏈接comcnsportsindexshtml里面有詳細的分類和各分類的Rss地址騰訊的Rss站點和新浪的類似詳細信息可參考這個鏈接comindexshtmlRss有固定的格式截取新浪新聞的新聞要聞的部分內容xmlversion"10"encoding"utf-8" [CDATA[[科技]中國互聯(lián)網(wǎng)5月批發(fā)IPO富豪與泡沫齊飛05051058]] comcomcnredirectphpurlcomcnchuangyesh2011-05-051XXXXXXXXXXshtml comCN comcomcnredirectphpurlcomcnchuangyesh2011-05-051XXXXXXXXXXshtml [CDATA[]] Thu5May2011025857GMT [CDATA[侯繼勇北京報道5月4日晚人人網(wǎng)在北京國貿三期地下一層中國大宴會廳舉行慶功宴除了人人網(wǎng)留守國內的高管主要參會人員是媒體記者活動已經(jīng)格式化有領導講話有晚宴有抽獎最后是人人網(wǎng)創(chuàng)始人陳一舟的視頻連線――接受國內媒體記者采訪卻會回避所有尖銳]] [CDATA[[科技]福布斯人人公司加入中國高價科技股俱樂部05051056]] comcomcnredirectphpurlcomcni2011-05-0500465481304shtml comCN comcomcnredirectphpurlcomcni2011-05-0500465481304shtml [CDATA[]] Thu5May2011025622GMT [CDATA[]] 如上接下來對這些內容進行分析xmlversion"10"encoding"utf-8"代表這個文件的數(shù)據(jù)格式這一般分為utf-8和gb2312每條信息在中包含這里面有很多節(jié)點每個節(jié)點的內容有各自代表的信息Title代表標題信息Link代表這篇文章的鏈接地址Author代表這篇文章的作者Guid與link相似代表這篇文章的鏈接Category代表這篇文章所屬類型pubDate代表這篇文章發(fā)布時間comments代表這篇文章的評論description代表這篇文章的簡述綜合以上信息完成Rss閱讀不會有問題收集新浪和騰訊的這些Rss站點記錄在一個XML文件中用于程序的讀取和解析本軟件收集的內容及格式以新浪為例部分內容如下xmlversion"10"encoding"utf-8"newstitle"新聞中心" outlinetitle"新聞要聞"xmlUrl"comcnnewsmarqueeddtxml" flag"sina_ddt"encoding"utf-8" outlinetitle"國內要聞"xmlUrl"comcnnewschinafocus15xml" flag"sina_ddt"encoding"utf-8" outlinetitle"國際要聞"xmlUrl"comcnnewsworldfocus15xml" flag"sina_ddt"encoding"utf-8" outlinetitle"社會新聞" xmlUrl"comcnnewssocietyfocus15xml"flag"sina_ddt" encoding"utf-8" outlinetitle"時政要聞" xmlUrl"comcnnewschinapolitics15xml"flag"sina_ddt" encoding"utf-8"其中title表示Rss的類型xmlUrl表示一個Rss地址連接encdoing表示Rss地址連接中的內容的數(shù)據(jù)格式flag有特定的含義根據(jù)Rss地址連接獲取到的每條信息都有一個對應的連接這個連接對應的內容用瀏覽器查看源文件可以發(fā)現(xiàn)我們所需要的內容一般在一塊特定的區(qū)域中其他的信息我們都不需要而且那些信息很浪費流量根據(jù)這塊特定的區(qū)域找出起始位置和結束位置注意這個起始和結束的位置在這個連接的源文件中必須是唯一的flag中的值就是起始和結束位置這個值對應該項目中resvaluesarraysxml例如時政要聞對應的flag是sina_ddtsina_ddt表示的內容是arrayname"sina_ddt" stringsina_ddt_begin stringsina_ddt_end根據(jù)sina_ddt這個值就可以在代碼中解析出起始位置和結束位置然后根據(jù)這兩個位置就可以解析出我們需要的內容62系統(tǒng)界面的設計com主界面的實現(xiàn)Android的每一個可視化界面都有其唯一的布局配置文件該文件中有各種布局的方式和各種資源文件如圖像文字顏色引用等程序在運行時可以通過代碼對各個配置文件進行讀取這樣可以形成不同的可視化界面和絢麗的效果該軟件的主界面是一個ActivityAndroid工程在啟動每一個Activity時都會首先執(zhí)行onCreate方法如下publicvoidonCreateBundlesavedInstanceState superonCreatesavedInstanceState setContentViewcom_tabs該方法主要執(zhí)行界面的初始化操作Activity有個設置布局的方法setContentViewintid參數(shù)為資源ID該id在工程目錄reslayout下主界面的布局文件為main_tabs下面是該布局文件的結構xmlversion"10"encoding"utf-8" 在線性布局中添加ViewFlipperViewFlipper可以用來指定FrameLayout內多個View之間的切換效果可以一次指定也可以每次切換的時候都指定單獨的效果該類額外提供了如下幾個函數(shù)isFlipping用來判斷View切換是否正在進行setFilpInterval設置View之間切換的時間間隔startFlipping使用上面設置的時間間隔來開始切換所有的View切換會循環(huán)進行stopFlipping停止View切換horizontal此線性布局的子部件水平對齊Layout_heightfill_parent布局的高度為填滿父布局Layout_widthwap_content布局的寬度由子部件的寬度決定com中子界面的實現(xiàn)在主界面中實現(xiàn)四個界面的切換分別是我的收藏騰訊Rss新浪Rss和瀏覽記錄分別對應的布局文件是rss_lovexml_mainxmlsina_mainxml和rss_historyxml這些文件的在工程的reslayout下我的收藏和瀏覽記錄界面的實現(xiàn)我的收藏和瀏覽記錄的界面類似布局文件中主要是ListView組件在Android開發(fā)中ListView是比較常用的組件它一列表的形式展示具體內容并能根據(jù)數(shù)據(jù)的長度自適應顯示ListView需要一個適配器android自帶的一些適配器如SimplaAdapter顯示比較單一所以本軟件中繼承BaseAdapter通過對這個適配器的擴展實現(xiàn)我們需要的效果擴展成一行能顯示多個內容由于BaseAdapter是一個抽象類我們需要實現(xiàn)里面的getView方法返回一個view即視圖視圖可以顯示在Activity上這樣就可以看到我們想要的界面ListView有一個監(jiān)聽器OnItemClickListner實現(xiàn)里面的方法就可以監(jiān)聽Touch事件當手指點擊到每一行時可以通過ListViewgetItemPositionintpotion該行信息這樣就可以通過intent傳遞數(shù)據(jù)到其他的Activity本程序的思路是點擊某一行跳轉到另一個Activity顯示新聞的內容如圖6-1和6-2所示圖6-1瀏覽記錄頁面圖圖6-2我的收藏界面圖騰訊Rss界面的實現(xiàn)這個界面為了更好的用戶體驗使用了ExpandableListViewExpandableListView是Android中的手風琴個人感覺效果相當棒它是一個垂直滾動的顯示兩個級別列表項的視圖如圖6-3所示類似二級菜單列表項來時ExpandableListAdapter點擊組可以單獨展開ExpandableListView的主要方法expandGroupintgroupPos在分組列表視圖中展開一組setSelectedGroupintgroupPosition設置選擇指定的組setSelectedChildintgroupPositionintchildPositionbooleanshouldExpandGroup設置選擇指定的子項getPackedPositionGrouplongpackedPosition返回所選擇的組getPackedPositionForChildintgroupPositionintchildPosition返回所選擇的子項getPackedPositionTypelongpackedPosition返回所選擇項的類型ChildGroupisGroupExpandedintgroupPosition判斷此組是否展開

圖6-3騰訊Rss圖新浪Rss界面的實現(xiàn)新浪Rss界面GridView圖6-4點擊新聞中心后ListView

Rss界面跟其他的都不同使用的是TabHost的組件TabHost可是實現(xiàn)在不同一屏幕內不同界面的切換新浪Rss的布局文件在reslayout下其中最最主要得是TabHost的設置它的結構如下 接下來詳細介紹這些組件的功能FrameLayout是單幀布局當一個組件放在上面是下一個組件就覆蓋到第一個組件上可以通過調整位置來避免組件的覆蓋GridView是Android中的數(shù)據(jù)顯示控件在二維可滾動的網(wǎng)格中呈現(xiàn)子項itemItme來自與之相關的LiatAdapterGridView也有一個監(jiān)聽器ONItemClickListener實現(xiàn)后可以對GridView組件中的子項進行監(jiān)聽在本程序中用于顯示新浪Rss的類型數(shù)據(jù)源來自本地xml文件的解析將再后面介紹ListView前面已經(jīng)介紹過在這里主要用于顯示每種類型下的Rss地址連接TabWidget是用于切換第一個FrameLayout中的兩個組件在這里我們不需要讓它顯示設置它的屬性為不可見TabHost是用來管理FrameLayout下包含的組件這些組件必須先添加到TabHost中使用TabHostTabSpac來定義每次切換的視圖通過TabHostaddTab來添加TabSpac然后通過TabHostsetCurrentTab就可以切換不同的視圖63資源文件的解析文件解析是本項目中的一個重點主要包括本地文件的解析和網(wǎng)絡文件的解析本地文件主要是XML文件如_newsxml網(wǎng)絡文件的解析主要是通過數(shù)據(jù)流來讀取資源包括HTML文件的解析XML文件的解析圖片資源的獲取等comML文件的解析XML文件的解析方式在前面已經(jīng)介紹過在這里使用pull解析器在解析之前先構建XmlPullParserFactory然后根據(jù)XmlPullParserFactorynewPullParser獲取XmlPullParser調用XmlPullParsersetInputInputStreaminputStringencoding來裝載XML文件變量encoding表示字符編碼默認是utf-8Pull讀到XML文件的聲明返回數(shù)字0對應XmlPullParserSTART_DOCUMENTPull讀到XML的結束返回數(shù)字1對應XmlPullParserEND_DOCUMENTPull讀到XML的開始標簽返回數(shù)字2對應XmlPullParserSTART_TAGPull讀到XML的結束標簽返回數(shù)字3對應XmlPullParserEND_TAGPull讀到XML的文本返回數(shù)字4對應XmlPullParserTEXT使用pull解析器來解析sina_rssxml根據(jù)上面返回數(shù)字來進行判斷當讀取到的開始標簽是outline時調用XmlPullParsergetAttributeValueintindex來獲取標簽內的值如XmlPullParsergetAttributeValue0獲取的是title的值在解析XML文件時其中有個屬性是flag這個屬性對應的值在之前介紹過對應的是html文件的起始位置和結束位置flag屬性的值在resvaluesarrayxml中在Android項目中arrayxml文件中的array標簽的屬性name與flag屬性的值對應但是在Android中name被自動生成一個整數(shù)對應的文件在項目的gen文件夾中的Rjava中在Android中根據(jù)ResourcegetStringArrayintid獲取name所對應的值并沒有提供根據(jù)字符串來獲取在Java運行時環(huán)境中對于任意一個類能否知道這個類有哪些屬性和方法對于任意一個對象能否調用它的任意一個方法答案是肯定的這種動態(tài)獲取類的信息以及動態(tài)調用對象的方法的功能來自于Java語言的反射Reflection機制Java反射機制主要提供了以下功能在運行時判斷任意一個對象所屬的類

在運行時構造任意一個類的對象

在運行時判斷任意一個類所具有的成員變量和方法

在運行時調用任意一個對象的方法

生成動態(tài)代理在Android上系統(tǒng)通過向用戶顯示一個稱為應用無響應ANRApplicationNotResponding的對話框來防止在一段時間內響應不夠快tmlParser是一個純的ava寫的解析的庫它不依賴于其它的ava庫文件主要用于改造或提取它能超高速解析而且不會出錯現(xiàn)在tmlparser最新版本為20HtmlParser基本功能信息提取·文本信息抽取例如對HTML進行有效信息搜索·鏈接提取用于自動給頁面的鏈接文本加上鏈接的標簽·資源提取例如對一些圖片聲音的資源的處理·鏈接檢查用于檢查HTML中的鏈接是否有效·頁面內容的監(jiān)控信息轉換·鏈接重寫用于修改頁面中的所有超鏈接·網(wǎng)頁內容拷貝用于將網(wǎng)頁內容保存到本地·內容檢驗可以用來過濾網(wǎng)頁上一些令人不愉快的字詞·HTML信息清洗把本來亂七八糟的HTML信息格式化HTML文件中我們解析的內容有時候有圖片這樣就需要讀取圖片資源并將其轉化成Drawable將讀取到的圖片連接轉換成Url調用UrlopenConnection獲取網(wǎng)絡連接根據(jù)這個連接打開數(shù)據(jù)讀取流調用UrlConnectiongetInputStream調用DrawablecreateFromStreamInputStreaminputStringsrcName將讀取流轉換成Drawable在顯示內容的時候調用64數(shù)據(jù)存儲在軟件正常運行時由于各個界面的切換為了數(shù)據(jù)的共享和防止數(shù)據(jù)的丟失我們需要將一些數(shù)據(jù)進行臨時存儲或者永久存儲Android作為一種操作系統(tǒng)提供了如下幾種數(shù)據(jù)存儲的方式PreferenceFileSQLite數(shù)據(jù)和網(wǎng)絡comSharedPerferencePerference提供了一種輕量級的數(shù)據(jù)存儲方式一般數(shù)據(jù)比較少一些簡單的配置信息它以鍵-值對的方式將數(shù)據(jù)保存在一個XML文件中使用的接口詳細內容見文檔androidcontentSharedPerference提供了數(shù)據(jù)的獲取方法androidcontentSharedPerferenceEditor提供了數(shù)據(jù)的保存方法comFile存儲方式我們可以將一些數(shù)據(jù)以文件的形式保存在設備中例如文本音頻圖片等Android提供了文件讀取的方法ContextgetFileInputStream獲取標準java文件的文件輸入流FileInputStreamContextgetFileoutStream獲取標準Java文件的文件輸出流FileOutStreamcomSQLiteDataBase數(shù)據(jù)庫Android操作系統(tǒng)中內置了SQLite數(shù)據(jù)庫SQLite是一個嵌入式數(shù)據(jù)庫引擎針對內存資源有限的設備如PDAMP3提供的一種高效的數(shù)據(jù)引擎SQLite數(shù)據(jù)庫不像其他的數(shù)據(jù)庫如Orcale它沒有服務進程基于其自身的先天優(yōu)勢SQLite在嵌入式領域得到廣泛的應用SQLite的使用方法在參照數(shù)據(jù)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論