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

正文內(nèi)容

androidrss閱讀器設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文-資料下載頁(yè)

2025-06-24 18:27本頁(yè)面
  

【正文】 接地址打開(kāi)相應(yīng)網(wǎng)頁(yè)閱讀詳細(xì)信息。MainActivity(主界面)網(wǎng)絡(luò)通訊數(shù)據(jù)庫(kù)DataBaseHelper(數(shù)據(jù)庫(kù)幫助類)Inter(RSS 數(shù)據(jù)源)readerActivity(新聞列表)ShowActivity(新聞概要)SMS(短信發(fā)送)Browser(系統(tǒng)瀏覽器)常州信息職業(yè)技術(shù)學(xué)院 畢業(yè)設(shè)計(jì)(論文)報(bào)告 25 / 36 系統(tǒng)實(shí)現(xiàn) 布局界面設(shè)計(jì)(1) 主界面的設(shè)計(jì)由于Android平臺(tái)手機(jī)屏幕大小有限,為了不使用戶有凌亂的感覺(jué),在主界面使用了雙層樹(shù)狀結(jié)構(gòu)的ExpandableListView 控件進(jìn)行管理和顯示,隨著用戶使用時(shí)間的增加,新聞分組和新聞?lì)l道也會(huì)隨之增加,使用樹(shù)狀結(jié)構(gòu)能夠便于用戶選取新聞?lì)l道。 本軟件實(shí)現(xiàn)了新聞組和新聞?lì)l道的增刪改查等功能,為了讓界面顯得更為美觀,使用更為方便,筆者使用在GridView的基礎(chǔ)上實(shí)現(xiàn)了Tab底部菜單,在底部菜單上添加了 “添加分類” , “添加RSS” , “更新所有” , “關(guān)閉” 圖 511 圖 512“添加分類”主要終于用于新聞組,即二級(jí)樹(shù)狀中的一級(jí)條目,用戶可以點(diǎn)擊該按鈕添加一個(gè)新的分組。“添加 RSS”用于添加一個(gè)新聞?lì)l道,即二級(jí)樹(shù)狀中的二級(jí)條目,用戶可通過(guò)此項(xiàng)向某個(gè)已存在的分組中添加一個(gè)新聞?lì)l道。“更新所有”將重新從數(shù)據(jù)庫(kù)中獲取所有的數(shù)據(jù)信息并添加到樹(shù)狀結(jié)構(gòu)中?!瓣P(guān)閉”即退出本程序常州信息職業(yè)技術(shù)學(xué)院 畢業(yè)設(shè)計(jì)(論文)報(bào)告 26 / 36(2)新聞列表界面的設(shè)計(jì)用戶選擇一個(gè)新聞?lì)l道后會(huì)進(jìn)入一個(gè)新聞列表界面,該界面要求以列表的形式顯示該頻道下的所有信息信息,每一行顯示一條新聞信息的標(biāo)題和時(shí)間。該界面僅僅使用一個(gè) ListView 控件實(shí)現(xiàn)新聞列表,這樣是的屏幕簡(jiǎn)潔大方,不占用較多的尺寸能夠讓用戶一次瀏覽到盡可能多的新聞信息。列表中的每一項(xiàng)分別由三部分組成,最左側(cè)為一個(gè) ICON 圖標(biāo),表示這里為一條新聞信息,旁邊為上下兩個(gè) TextView,上面的 TextView 中顯示新聞標(biāo)題信息,下面一個(gè)TextView 中顯示新聞的發(fā)布時(shí)間信息等。 圖 521 圖 522列表中的每一項(xiàng)指向了一條新聞信息,點(diǎn)擊一條新聞后能夠進(jìn)入新聞閱讀界面,列表可以上下滑動(dòng),每個(gè)頻道的新聞信息很多,屏幕中不能將所有的信息全部列出來(lái),用戶可以滑動(dòng)屏幕來(lái)查看隱藏起來(lái)的新聞信息,這也很符合人們的使用習(xí)慣。常州信息職業(yè)技術(shù)學(xué)院 畢業(yè)設(shè)計(jì)(論文)報(bào)告 27 / 36(3)新聞閱讀界面的設(shè)計(jì)新聞概要閱讀界面是用于用戶在新聞列表中點(diǎn)擊了某一條新聞后所呈現(xiàn)的概要閱讀,本界面使用了一個(gè) TextView 和兩個(gè) Button 實(shí)現(xiàn),其中 TextView 中顯示了新聞的標(biāo)題,時(shí)間以及相關(guān)的新聞事件描述信息,底部還列出了該新聞詳細(xì)信息的鏈接地址,筆者在鏈接地址上實(shí)現(xiàn)了超鏈接,用戶可以直接點(diǎn)擊地址打開(kāi) Android 系統(tǒng)的瀏覽器,前往網(wǎng)頁(yè)閱讀更為詳細(xì)的新聞信息。 圖 531 圖 532新聞鏈接地址呈現(xiàn)為超鏈接狀態(tài),用戶只需點(diǎn)擊鏈接地址即可進(jìn)入瀏覽器,看到最詳細(xì)的新聞信息。底部的兩個(gè)按鈕,一個(gè)為“分享給好友” ,該按鈕將啟動(dòng)新聞信息的好友分享功能,點(diǎn)擊則會(huì)打開(kāi)短信發(fā)送界面,新聞標(biāo)題與新聞鏈接地址將會(huì)被編輯為短信內(nèi)容,用戶選擇好友即可發(fā)送?!胺祷匦侣劻斜怼卑粹o實(shí)現(xiàn)了返回到頻道列表的界面,系統(tǒng)自帶的返回鍵也可以實(shí)現(xiàn)相應(yīng)功能常州信息職業(yè)技術(shù)學(xué)院 畢業(yè)設(shè)計(jì)(論文)報(bào)告 28 / 36(4)添加功能的界面設(shè)計(jì)用戶需要對(duì)自己的新聞數(shù)據(jù)進(jìn)行管理,需要進(jìn)行新聞組或者新聞?lì)l道的添加,添加功能同樣設(shè)計(jì)了兩個(gè)簡(jiǎn)單的界面,點(diǎn)擊主界面下的“添加分類”按鈕則會(huì)進(jìn)入新聞組的添加界面,如圖 541,點(diǎn)擊主界面下的“添加 RSS”按鈕則會(huì)進(jìn)去新聞?lì)l道的添加界面,如圖 542。在上述兩個(gè)界面中,填寫(xiě)好相關(guān)信息,點(diǎn)擊“確認(rèn)”按鈕則會(huì)將數(shù)據(jù)添加到系統(tǒng)中,并立即更新到界面,點(diǎn)擊“取消”按鈕則取消本次添加。 圖 541 圖 542 添加 RSS 中的選擇分類使用了一個(gè) Spinner 控件,用戶添加的新聞?lì)l道必須隸屬于某一個(gè)分組,為了減少用戶的輸入,筆者使用 Spinner 控件,由用戶選擇相應(yīng)的分組,點(diǎn)擊下拉箭頭后,系統(tǒng)會(huì)彈出所有的分組列表,用戶只需選擇一項(xiàng)即可 RSS 源的讀取(1)XML數(shù)據(jù)的解析方法常州信息職業(yè)技術(shù)學(xué)院 畢業(yè)設(shè)計(jì)(論文)報(bào)告 29 / 36RSS 源的數(shù)據(jù)結(jié)構(gòu)為XML文件,當(dāng)前 Google Android 處理讀取XMl數(shù)據(jù)有三種主流方式: 解析;2. Pull 解析 由于Google Android 平臺(tái)手機(jī)系統(tǒng)資源有限,且基于Google Andorid 平臺(tái)的新聞閱讀器所讀取的數(shù)據(jù)內(nèi)容不是非常多,所以在此選擇了性能消耗較小的SAX解析作為解析XML文件的方法。SAX解析是基于事件回調(diào)機(jī)制,其執(zhí)行的過(guò)程如下:第一步:當(dāng)遇到元素的開(kāi)始標(biāo)記的時(shí)候執(zhí)行startElement()方法 public void startDocument() throws SAXException {//TODO …… }第二步:接著執(zhí)行characters()方法 public void characters(char[] ch, int start, int length) throws SAXException{//TODO …… }第三步:當(dāng)遇到元素的結(jié)束標(biāo)記的時(shí)候執(zhí)行endElement()方法public void endElement (String uri, String localName, String name) throws SAXException {try {String node = ()。if (() == 0) {return。}boolean isNewsNode = ().equals (item)。String value = ()。........................} catch (Exception e) {}}第四步:接著執(zhí)行characters方法 第五步:循環(huán),直接掃描到文件結(jié)束常州信息職業(yè)技術(shù)學(xué)院 畢業(yè)設(shè)計(jì)(論文)報(bào)告 30 / 36(2)RSS源數(shù)據(jù)獲取獲取RSS源的數(shù)據(jù)需要使用到兩個(gè)實(shí)體類,首先需要新建兩個(gè)實(shí)體類 RSSFeed 和 RSSItem,因?yàn)镾AX不會(huì)將RSS文檔都存入內(nèi)存,需要系統(tǒng)自己保持解析的數(shù)據(jù),這兩個(gè)類就是用來(lái)保存解析來(lái)的數(shù)據(jù),其中RSSFeed存儲(chǔ)一個(gè)經(jīng)過(guò)解析的 RSS 提要,包含 RSS通道信息和一組 RSSItems,RSSItems類存儲(chǔ)解析XML流所得到的一個(gè)RSS項(xiàng)。當(dāng) SAX 解析引擎在 RSS 源中完成了 XML 數(shù)據(jù)解析后,將創(chuàng)建一個(gè) RSSFeed 類的實(shí)例,包含了在應(yīng)用程序中處理 RSS 數(shù)據(jù)所需的所有內(nèi)容。首先根據(jù)用戶的選擇,從數(shù)據(jù)庫(kù)中獲取一個(gè) RSS 源地址,然后寫(xiě)一個(gè) getFeed 的方法,在該方法中使用 SAX 技術(shù)去解析從源地址傳過(guò)來(lái)的數(shù)據(jù)流,解析完成后返回一個(gè) RSSFeed的對(duì)象,核心代碼如下:/**創(chuàng)建SAX 解析器并解析XML,然后返回RssFeed對(duì)象*/private RSSFeed getFeed(String urlString){try{URL url = new URL(urlString)。 // create the factory SAXParserFactory factory = ()。 // create a parser SAXParser parser = ()。 // create the reader (scanner) XMLReader xmlreader = ()。 // instantiate our handler RSSHandler theRssHandler = new RSSHandler()。 // assign our handler (theRssHandler)。 // get our data via the url class InputSource is = new InputSource(())。 // perform the synchronous parse (is)。 // get the results return ()。 } catch (Exception ee){()。return null。}} 新聞列表的呈現(xiàn)RSSReader 新聞列表呈現(xiàn)啟動(dòng) Activity 是 reader 類。Activity 的入口點(diǎn)是 onCreate 方法,RSSReader Activity 的用戶界面包括一個(gè) ListView。ListView 中 顯示 RSSFeed 常州信息職業(yè)技術(shù)學(xué)院 畢業(yè)設(shè)計(jì)(論文)報(bào)告 31 / 36中的 RSSItems 列表。@Overrideprotected void onCreate(Bundle savedInstanceState){// TODO Autogenerated method stubsetContentView()。(savedInstanceState)。intent = new Intent()。intent = getIntent()。GetRssUrl()。 //獲取RSS源地址,復(fù)制給RSS_URLSetProgressBar()。 //設(shè)置精度對(duì)話框 //異步執(zhí)行數(shù)據(jù)解析 new task().execute(RSS_URL)。}Activity 啟動(dòng)后首先需要獲取 RSS 源地址,然后對(duì)源地址進(jìn)行解析,帶解析完成后再將得到的每一項(xiàng)分別顯示到 ListView 中去。因?yàn)樵O(shè)計(jì)到網(wǎng)絡(luò)數(shù)據(jù)的交互,從網(wǎng)絡(luò)上獲取數(shù)據(jù)具有極大的不穩(wěn)定性,很多情況下視網(wǎng)絡(luò)狀況而定,解析 XML 數(shù)據(jù)流本身就是一項(xiàng)很費(fèi)時(shí)的工作,解析未完成之前,程序可能處于死等的狀態(tài),為了不讓用戶有“宕機(jī)”的感覺(jué),在解析數(shù)據(jù)未完成之前,程序?qū)@示等待對(duì)話框 SetProgressBar()。待數(shù)據(jù)解析完成后,對(duì)話框消失,再將得到的數(shù)據(jù)呈現(xiàn)在 UI 上。所以在獲取 RSS 數(shù)據(jù)是采用了異步取數(shù)據(jù)的操作,使用了 Android 中提供的AsyncTask 實(shí)現(xiàn)異步從網(wǎng)絡(luò)上獲取數(shù)據(jù),不阻塞前程 UI 線程的顯示。核心代碼如下:private class task extends AsyncTaskString, String, RSSFeed{//后臺(tái)計(jì)算工作protected RSSFeed doInBackground(String... params) {// TODO Autogenerated method stub......}// 任務(wù)執(zhí)行結(jié)束后,在UI線程中被系統(tǒng)調(diào)用protected void onPostExecute(RSSFeed result){// TODO Autogenerated method stub......}} 新聞頁(yè)面的顯示及分享(1)新聞信息的顯示常州信息職業(yè)技術(shù)學(xué)院 畢業(yè)設(shè)計(jì)(論文)報(bào)告 32 / 36ActivityShowDescription 新聞列表呈現(xiàn)啟動(dòng) Activity 是 ActivityShowDescription 類。Activity 的入口點(diǎn)是 onCreate 方法,RSSReader Activity 的用戶界面包括一個(gè) TextView和兩個(gè) Button 按鈕。TextView 中顯示新聞概要信息,包括標(biāo)題,描述,時(shí)間記憶詳細(xì)信息的鏈接地址。該類主要接受從上一個(gè) Activity 中傳來(lái)的相關(guān)信息,并解包出來(lái),放到 TextView 中共用戶閱讀,核心代碼如下:if (startingIntent != null) {//獲取上一個(gè)Activity傳入的BundleBundle bundle = (rss_item)。if (bundle == null) {content = 不好意思程序出錯(cuò)啦 。}else {content = (title) + \n\n+ (pubdate) + \n\n+ (description).replace(39。\n39。, 39。 39。)+ \n\n詳細(xì)信息請(qǐng)?jiān)L問(wèn)以下網(wǎng)址 :\n + (link)。}} else {content = 不好意思程序出錯(cuò)啦 。}//想文本框中設(shè)定信息(content)。}用戶可以點(diǎn)擊鏈接進(jìn)入瀏覽器瀏覽詳細(xì)的內(nèi)容(2) 新聞信息的顯示用戶如果對(duì)該條新聞很感興趣,也可以用短信的方式分享給周圍的好友,用戶點(diǎn)擊“分享給好友”按鈕,則會(huì)將新聞標(biāo)題與鏈接編輯成短信,讓用戶選擇好友發(fā)送核心代碼如下:Uri uri = (smsto:)。 //打開(kāi)傳送短信的意圖 In
點(diǎn)擊復(fù)制文檔內(nèi)容
數(shù)學(xué)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1