freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于android平臺的rss閱讀器的設(shè)計與開發(fā)-資料下載頁

2025-10-29 22:12本頁面

【導(dǎo)讀】本軟件通過Rss站點方便用戶迅速獲取感興趣的內(nèi)容。析工具HtmlParser對RSS閱讀器進行編寫。使用HtmlParse解析HTML文件。來獲取指定內(nèi)容能節(jié)省GPRS流量。本軟件利用Android提供的各種組件對。界面進行設(shè)計,達到很好的用戶體驗。

  

【正文】 yout GridView/ ListView/ /FrameLayout FrameLayout TabWidget/ /FrameLayout /TabHost 接下來詳細介紹這些組件的功能: FrameLayout 是單幀布局,當一個組件放在上面是,下一個組件就覆蓋到第一個 26 組件上,可以通過調(diào)整位置來避免組件的覆蓋 GridView 是 Android 中的數(shù)據(jù)顯示控件,在二維可滾動的網(wǎng)格中呈現(xiàn)子項 (item),Itme 來自與之相關(guān)的 LiatAdapter。 GridView 也有一個監(jiān)聽器 ONItemClickListener,實現(xiàn)后可以對 GridView 組件中的子項進行監(jiān)聽。 在本程序中用于顯示新浪 Rss 的類型。數(shù)據(jù)源來自本地 xml 文件的解析,將再后面介紹。 ListView 前面已經(jīng)介紹過,在這里主要用于顯示每種類型下的 Rss 地址連接。 TabWidget 是用于切換第一個 FrameLayout 中的兩個 組件,在這里我們不需要讓它顯示,設(shè)置它的屬性為不可見。 TabHost是用來管理 FrameLayout下包含的組件, 這些組件必須先添加到 TabHost中,使用 來定義每次切換的視圖,通過 來添加TabSpac,然后 通過 就可以 切換不同的視圖 。 資源文件的解析 文件解析是本項目中的一個重點,主要包括本地文件的解析和網(wǎng)絡(luò)文件的解析。 本地文件主要是 XML 文件如 。網(wǎng)絡(luò)文件的解析主要是通過數(shù)據(jù)流來讀取資源,包括 HTML 文件的解析, XML 文件的解析,圖片資源的獲取等。 本地 XML 文件的解析 XML 文件的解析方式在前面已經(jīng)介紹過,在這里使用 pull 解析 器 , 在解析之前,先構(gòu)建 XmlPullParserFactory,然后根據(jù) 獲取XmlPullParser,調(diào)用 (InputStream input,String encoding)來裝載XML 文件,變量 encoding 表示字符編碼,默認是 utf8。 Pull 讀到 XML文件的聲明,返回數(shù)字 0,對應(yīng) Pull 讀到 XML 的結(jié)束,返回數(shù)字 1,對應(yīng) Pull 讀到 XML 的開始標簽,返回數(shù)字 2,對應(yīng) Pull 讀到 XML 的 結(jié)束 標簽,返回數(shù)字 3,對應(yīng) Pull 讀到 XML 的文本,返回數(shù)字 4,對應(yīng) 使用 pull 解析器來解析 ,根據(jù)上面返回數(shù)字來進行判斷,當讀取到的開始標簽是 outline 時,調(diào)用 (int index)來獲取標簽內(nèi)的值 ,如 (0)獲取的是 title 的值 。 在解析 XML 文件時 ,其中有個屬性是 flag,這個屬性對應(yīng)的值在之前介紹過,對應(yīng)的是 html 文件的起始位置和結(jié)束位置, flag 屬性的值在 res/values/ 中,在 Android 項目中 文件中的 array 標簽的屬性 name 與 flag 屬性的值對應(yīng), 27 但是在 Android 中 name 被自動生成一個整數(shù),對應(yīng)的文件在項目的 gen 文件夾中的 中。在 Android 中,根據(jù) (int id)獲取 name 所對應(yīng)的值 ,并 沒有提供根據(jù)字符串來獲取。 在 Java 運 行時環(huán)境中,對于任意一個類,能否知道這個類有哪些屬性和方法?對于任意一個對象,能否調(diào)用它的任意一個方法?答案是肯定的。這種動態(tài)獲取類的信息,以及動態(tài)調(diào)用對象的方法的功能來自于 Java 語言的反射( Reflection)機制。Java 反射機制主要提供了以下功能 [1]: ◆ 在運行時判斷任意一個對象所屬的類; ◆ 在運行時構(gòu)造任意一個類的對象; ◆ 在運行時判斷任意一個類所具有的成員變量和方法; ◆ 在運行時調(diào)用任意一個對象的方法; ◆ 生成動態(tài)代理。 利用 java 的反射機制 獲取到這個字符串對應(yīng)的整數(shù)型 ID,核心算法如下: 先初始化一個 Object object = ,然后獲取這個 object 下的屬性, Field field = (flag,這樣以 flag 命名的屬性就獲取到了,由于這個屬性的值是整數(shù)類型,調(diào)用 (object)就可以獲取到屬性的值,根據(jù)這個值,我們就可以獲取到 XML 文件中的 flag 所對應(yīng)的起始位置和結(jié)束位置,通過上面的分析,就可以獲取到 中的值,將這些值封裝到一個 List 中,作為新浪 Rss 界面中 GridView 和 ListView 的數(shù)據(jù)源,這樣就可以在這些組件中顯示了。 文件解析與 相同 ,解析出來的值也封裝在一個 List 中,作為騰訊 Rss 界面的中 ExpandableListView 的數(shù)據(jù)源。 網(wǎng)絡(luò)文件解析 本項目與互聯(lián)網(wǎng)進行交互,因此網(wǎng)絡(luò)文件的解析是十分重要的一部分。 1. AsynTask 的介紹 在 Android 上,系統(tǒng)通過向用戶顯示一個稱為應(yīng)用無響應(yīng)( ANR:Application Not Responding)的對話框來防止在一段時間內(nèi)響應(yīng)不夠快 。 當 一個操作出發(fā)后,系統(tǒng)會有一個計時器,當這個操作在 5s 內(nèi)沒有響應(yīng),就會彈出一個警告對話框:該程序無響應(yīng),然后該軟件就會直接退出,給用戶極不好的體驗。 為了避免這種現(xiàn)象,與連接網(wǎng)絡(luò)相關(guān)的操作和操作很耗時的操作應(yīng)該放在一個異步線程中,在 Android 中提供了這樣的線程 AsynTask,下面對這種線程進行詳細介紹: AsyncTask 的執(zhí)行分為四個步驟,每一步都對應(yīng)一個回調(diào)方法,開發(fā)者需要實現(xiàn) 28 一個或幾個方法。在任務(wù)的執(zhí)行過程中,這些方法被自動調(diào)用。 onPreExecute(), 該方法將在執(zhí)行實際的后臺操作前被 UI thread 調(diào)用??梢栽谠摲椒ㄖ凶鲆恍蕚涔ぷ?,如在界面上顯示一個進度條。 doInBackground(Params...), 將在 onPreExecute 方法執(zhí)行后馬上執(zhí)行,該方法運行在后臺線程中。這里將主要負責執(zhí)行那些很耗時的后臺計算工作??梢哉{(diào)用 publishProgress 方法來更新實時的任務(wù)進度。該方法是抽象方法,子類必須實現(xiàn)。onProgressUpdate(Progress...),在 publishProgress 方法被調(diào)用后, UI thread 將調(diào)用這個方法從而在界面上展示任務(wù)的 進展情況,例如通過一個進度條進行展示。 onPostExecute(Result), 在 doInBackground 執(zhí)行完成后, onPostExecute 方法將被UI thread 調(diào)用,后臺的計算結(jié)果將通過該方法傳遞到 UI thread. 使用 AsyncTask 類,以下是幾條必須遵守的準則: (1)Task 的實例必須在 UI thread 中創(chuàng)建 (2)execute 方法必須在 UI thread 中調(diào)用 (3)不要手動的 onPreExecute(),onPostExecute(Result), doInBackground(Params...), onProgressUpdate(Progress...)這幾個方法 (4) 該 task 只能被執(zhí)行一次,否則多次調(diào)用時將會出現(xiàn)異常 2. 網(wǎng)絡(luò) XML 文件的解析 首先介紹 XML 文件的解析,對于 XML 的解析與本地 XML 文件解析相同,都是采用 pull 解析器,原理相同,只是解析不同的文件內(nèi)容,在這里解析的是 RSS 地址連接的內(nèi)容,這個內(nèi)容格式在前面已經(jīng)介紹過,不同的是解析本地文件的時候耗時比較短,而解析網(wǎng)絡(luò)文件耗時比較長,因為連接網(wǎng)絡(luò)耗時,讀取網(wǎng)絡(luò)資源也耗時;我們把這個耗時的操作 放在上面介紹的 AsynTask 中處理,這樣就避免了 ANR 的現(xiàn)象,同時又能動態(tài)的加載內(nèi)容。 3. HTML 文件的解析 這個是本項目中的亮點也是難點, 從起始位置開始獲取數(shù)據(jù),到結(jié)束位置后就不用讀取之后的數(shù)據(jù)了,節(jié)約了很多流量,為用戶節(jié)省了沒必要的開支。下面詳細介紹HTML 文件的解析。 解析 HTML 文件先介紹 下 HtmlParser, (引用) HtmlParser 是一個純的 Java 寫的 HTML 解析的庫,它不依賴于其它的 Java 庫文件,主要用于改造或提取 HTML。它能超高速解析 HTML,而且不會出錯。現(xiàn)在 Htmlparser 最新版本為 。 HtmlParser 基本功能 [7]: 29 (1)信息提取 文本信息抽取,例如對 HTML 進行有效信息搜索 鏈接提取,用于自動給頁面的鏈接文本加上鏈接的標簽 資源提取,例如對一些圖片、聲音的資源的處理 鏈接檢查,用于檢查 HTML 中的鏈接是否有效 頁面內(nèi)容的監(jiān)控 (2)信息轉(zhuǎn)換 鏈接重寫,用于修改頁面中的所有超鏈接 網(wǎng)頁內(nèi)容拷貝,用于將網(wǎng)頁內(nèi)容保存到本地 內(nèi)容檢驗,可以用來過濾網(wǎng)頁上一些令人不愉快的字詞 HTML 信息清洗,把本來亂七八糟的 HTML 信息格式化 首先根據(jù)地址連接讀取 HTML 數(shù)據(jù), 方法在項目中的 中,將 HTML地址轉(zhuǎn)化成一個 Url,調(diào)用 ()獲取網(wǎng)絡(luò)連接,根據(jù)這個連接打開數(shù)據(jù)讀取流,調(diào)用 (),將這個數(shù)據(jù)流包裝成 BufferReader,這樣可以整行讀取數(shù)據(jù),根據(jù)其實位置和結(jié)束位置進行判斷,截取之間的內(nèi)容,讀取到的就是在起始位置和結(jié)束位置中帶有 HTML 標簽的內(nèi)容,接下來有 HtmlParser 進行解析。 解析 HTML 文件需要創(chuàng) 建一個 分析器 Parser,調(diào)用 (String html,String charset),html 表示 要解析的內(nèi)容 , charset 表示字符集編碼 ;然后創(chuàng)建節(jié)點過濾器 TagNameFilter(String tag) , tag 表示要獲取的標簽的值; 調(diào)用(TagNameFilter),將 TagNameFliter 與 Parser 綁定, 返回一個 NodeList,里面包含了每個 tag 標簽中的內(nèi)容,遍歷這個 NodeList,獲 取我們需要的內(nèi)容,并將這些內(nèi)容添加在一個 List 中,用于之后的顯示。 由于讀取 Html 數(shù)據(jù)需要連接互聯(lián)網(wǎng),所以將讀取和解析放在 AsynTask 中,避免 ANR 并動態(tài)更新。 4. 圖片資源的解析 在 HTML 文件中,我們解析的內(nèi)容有時候有圖片,這樣就需要讀取圖片資源,并將其轉(zhuǎn)化成 Drawable;將讀取到的圖片連接轉(zhuǎn)換成 Url,調(diào)用 ()獲取網(wǎng)絡(luò)連接,根據(jù)這個連接打開數(shù)據(jù)讀取流,調(diào)用 (),調(diào)用 (InputStream input,String srcName)將讀取流轉(zhuǎn)換成Drawable,在顯示內(nèi)容的時候調(diào)用。 30 數(shù)據(jù)存儲 在軟件正常運行時,由于各個界面的切換,為了數(shù)據(jù)的共享和防止數(shù)據(jù)的丟失,我們需要將一些數(shù)據(jù)進行臨時存儲或者永久存儲。 Android 作為一種手機操作系統(tǒng),提供了如下幾種數(shù)據(jù)存儲的方式: Preference,F(xiàn)ile, SQLite 數(shù)據(jù)和網(wǎng)絡(luò)。 SharedPerference Perference 提供了一種輕量級的數(shù)據(jù)存儲方式,一般數(shù)據(jù)比較少,一些簡 單的 配置 信息 。它以 “ 鍵 值 ” 對的方式將數(shù)據(jù)保存在一個 XML 文件中,使用的接口 (詳細內(nèi)容見文檔 ): . SharedPerference:提供了數(shù)據(jù)的獲取方法 . :提供了數(shù)據(jù)的保存方法 File 存儲方式 我們可以將一些數(shù)據(jù)以文件的形式保存在設(shè)備中,例如文本,音頻,圖片等,Android 提供了文件讀取的方法: () 獲取標準 java 文件的文件 輸入流 (FileInputStream) () 獲取標準 Java 文件的文件輸出流 (FileOutStream) SQLiteDataBase 數(shù)據(jù)庫 Android 操作系統(tǒng)中內(nèi)置了 SQLite 數(shù)據(jù)庫 , SQLite 是一個嵌入式數(shù)據(jù)庫引擎,針對內(nèi)存資源有限的設(shè)備 (如手機, PDA, MP3)提供的一種高效的數(shù)據(jù)引擎, SQLite 數(shù)據(jù)庫不像其他的數(shù)據(jù)庫如 Orcale,它沒有服務(wù)進程?;谄渥陨淼南忍靸?yōu)勢, SQLite在嵌入式領(lǐng)域得到廣泛的應(yīng)用。 SQLite 的使 用方法在參照數(shù)據(jù)庫設(shè)計的章節(jié)。 Android 中 Application 的應(yīng)用 Android 編程中, Application 這樣的名詞似乎變得那樣的不常見,而讓大家更為熟悉的是 Activity、 Intent、 Provider、 Broadcast 和 Service。但其實 Android 中的Application 也有著它自身的用處。 打開 Manifest 文件,會看到有一個 Application 配置標簽,這就是有關(guān) Application的使用了。那究竟 Application 有什么用處呢 ?來看看 SDK 中是如 何描述的: 31 Base class for those who need to maintain global application state. You can provide your own implementation by specifying its name in your 39。s appl
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1