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

正文內(nèi)容

基于android平臺的rss閱讀器的設(shè)計與開發(fā)(編輯修改稿)

2025-02-12 12:59 本頁面
 

【文章內(nèi)容簡介】 uthor guid:///guid category ![CDATA[]] /category pubDateThu, 5 May 2011 02:56:22 GMT/pubDate ments/ments description ![CDATA[]] /description /item ………..如上,接下來對這些內(nèi)容進(jìn)行分析:?xml version= encoding=utf8?代表這個文件的數(shù)據(jù)格式,這一般分為utf8和gb2312;每條信息在item/item中包含,這里面有很多節(jié)點(diǎn),每個節(jié)點(diǎn)的內(nèi)容有各自代表的信息:Title:代表標(biāo)題信息Link:代表這篇文章的鏈接地址Author:代表這篇文章的作者Guid:與link相似,代表這篇文章的鏈接Category:代表這篇文章所屬類型pubDate:代表這篇文章發(fā)布時間ments:代表這篇文章的評論description:代表這篇文章的簡述綜合以上信息,完成Rss閱讀不會有問題,收集新浪和騰訊的這些Rss站點(diǎn),記錄在一個XML文件中,用于程序的讀取和解析,本軟件收集的內(nèi)容及格式,以新浪為例,部分內(nèi)容如下:?xml version= encoding=utf8?news title=新聞中心 outline title=新聞要聞 xmlUrl= flag=sina_ddt encoding=utf8 / outline title=國內(nèi)要聞 xmlUrl= flag=sina_ddt encoding=utf8 / outline title=國際要聞 xmlUrl= flag=sina_ddt encoding=utf8 / outline title=社會新聞 xmlUrl= flag=sina_ddt encoding=utf8 / outline title=時政要聞 xmlUrl= flag=sina_ddt encoding=utf8 / ......其中title表示Rss的類型xmlUrl表示一個Rss地址連接encdoing表示Rss地址連接中的內(nèi)容的數(shù)據(jù)格式flag有特定的含義,根據(jù)Rss地址連接獲取到的每條信息都有一個對應(yīng)的連接,這個連接對應(yīng)的內(nèi)容用瀏覽器查看源文件,可以發(fā)現(xiàn)我們所需要的內(nèi)容一般在一塊特定的區(qū)域中,其他的信息我們都不需要,而且那些信息很浪費(fèi)流量,根據(jù)這塊特定的區(qū)域,找出起始位置和結(jié)束位置,注意,這個起始和結(jié)束的位置在這個連接的源文件中必須是唯一的,flag中的值就是起始和結(jié)束位置,這個值對應(yīng)該項目中res/values/;例如時政要聞對應(yīng)的flag是sina_ddt,sina_ddt表示的內(nèi)容是:array name=sina_ddt item@string/sina_ddt_begin/item item@string/sina_ddt_end/item/array根據(jù)sina_ddt這個值就可以在代碼中解析出起始位置和結(jié)束位置,然后根據(jù)這兩個位置就可以解析出我們需要的內(nèi)容。 系統(tǒng)界面的設(shè)計 主界面的實(shí)現(xiàn)Android的每一個可視化界面,都有其唯一的布局配置文件,該文件中有各種布局的方式,和各種資源文件如圖像,文字,顏色引用等,程序在運(yùn)行時可以通過代碼對各個配置文件進(jìn)行讀取,這樣可以形成不同的可視化界面和絢麗的效果。該軟件的主界面是一個Activity,Android工程在啟動每一個Activity時都會首先執(zhí)行onCreate()方法,如下:public void onCreate(Bundle savedInstanceState) { (savedInstanceState)。 setContentView()。該方法主要執(zhí)行界面的初始化操作,Activity有個設(shè)置布局的方法:setContentView(int id),參數(shù)為資源ID,該id在工程目錄res/layout下,主界面的布局文件為main_tabs,下面是該布局文件的結(jié)構(gòu):?xml version= encoding=utf8?LinearLayout ViewFlipper include / include/ include / include / /ViewFlipper/LinearLayout在線性布局LinearLayout中添加ViewFlipper,ViewFlipper可以用來指定FrameLayout內(nèi)多個View之間的切換效果,可以一次指定也可以每次切換的時候都指定單獨(dú)的效果。該類額外提供了如下幾個函數(shù): isFlipping: 用來判斷View切換是否正在進(jìn)行 setFilpInterval:設(shè)置View之間切換的時間間隔 startFlipping:使用上面設(shè)置的時間間隔來開始切換所有的View,切換會循環(huán)進(jìn)行 stopFlipping: 停止View切換 ViewFlipper中include不同的布局文件,這樣就可以在同一個Activity中切換不同的布局,這個Activity實(shí)現(xiàn)OnGestureListener這個接口,實(shí)現(xiàn)接口里面的方法,就可以實(shí)現(xiàn)手勢處理,實(shí)現(xiàn)更好的用戶體驗。這些組件都有很多屬性可以設(shè)置該組件的位置,大小,背景顏色等;如:orientation=”horizontal” :此線性布局的子部件水平對齊 Layout_height=”fill_parent” :布局的高度為填滿父布局 Layout_width=”wap_content” :布局的寬度由子部件的寬度決定在主界面中實(shí)現(xiàn)四個界面的切換,分別是我的收藏,騰訊Rss,新浪Rss和瀏覽記錄,,這些文件的在工程的res/layout/下。1. 我的收藏和瀏覽記錄界面的實(shí)現(xiàn)我的收藏和瀏覽記錄的界面類似,布局文件中主要是ListView組件,在Android開發(fā)中,ListView是比較常用的組件,它一列表的形式展示具體內(nèi)容,并能根據(jù)數(shù)據(jù)的長度自適應(yīng)顯示。ListView需要一個適配器,android自帶的一些適配器如SimplaAdapter顯示比較單一,所以本軟件中繼承BaseAdapter,通過對這個適配器的擴(kuò)展實(shí)現(xiàn)我們需要的效果,擴(kuò)展成一行能顯示多個內(nèi)容。由于BaseAdapter是一個抽象類,我們需要實(shí)現(xiàn)里面的getView方法返回一個view,即視圖,視圖可以顯示在Activity上,這樣就可以看到我們想要的界面。ListView有一個監(jiān)聽器OnItemClickListner,實(shí)現(xiàn)里面的方法,就可以監(jiān)聽Touch事件,當(dāng)手指點(diǎn)擊到每一行時,(int potion)該行信息,這樣就可以通過intent傳遞數(shù)據(jù)到其他的Activity。本程序的思路是點(diǎn)擊某一行,跳轉(zhuǎn)到另一個Activity,顯示新聞的內(nèi)容,如圖61和62所示。圖61 瀏覽記錄頁面圖 圖62我的收藏界面圖2. 騰訊Rss界面的實(shí)現(xiàn)這個界面為了更好的用戶體驗,使用了ExpandableListView,ExpandableListView是Android中的手風(fēng)琴,個人感覺效果相當(dāng)棒,它是一個垂直滾動的顯示兩個級別列表項的視圖,如圖63所示,類似二級菜單,列表項來時ExpandableListAdapter;點(diǎn)擊組可以單獨(dú)展開。ExpandableListView的主要方法:expandGroup(int groupPos) :在分組列表視圖中展開一組,setSelectedGroup(int groupPosition) :設(shè)置選擇指定的組。setSelectedChild(int groupPosition, int childPosition, boolean shouldExpandGroup) :設(shè)置選擇指定的子項。getPackedPositionGroup(long packedPosition) :返回所選擇的組getPackedPositionForChild(int groupPosition, int childPosition) :返回所選擇的子項getPackedPositionType(long packedPosition) :返回所選擇項的類型(Child,Group)isGroupExpanded(int groupPosition) :判斷此組是否展開(ExpandableListAdapter adapter),ExpandableListAdapter是一個接口,BaseExpandableListAdapter實(shí)現(xiàn)了這個接口,我們通過繼承這個類,重寫父類的一些方法,如:getGroupView ::獲取組的視圖getChildView:獲取某一組下的子視圖getGroupCount:獲取組的個數(shù)getChildrenCount:獲取某一組下的子視圖的個數(shù)isChildSelectable:子視圖是否可以被選中BaseExpandableListAdapter需要設(shè)置數(shù)據(jù)源,這個數(shù)據(jù)源是從xml文件中讀取,關(guān)于xml讀取的實(shí)現(xiàn)在下面介紹。 圖63 騰訊Rss圖3. 新浪Rss界面的實(shí)現(xiàn) 新浪Rss界面 (GridView) 圖64 點(diǎn)擊新聞中心后(ListView) Rss界面跟其他的都不同,使用的是TabHost的組件,TabHost可是實(shí)現(xiàn)在不同一屏幕內(nèi)不同界面的切換。新浪Rss的布局文件在res/layout下,其中最最主要得是TabHost的設(shè)置,它的結(jié)構(gòu)如下:TabHost FrameLayout GridView/ ListView//FrameLayoutFrameLayout TabWidget//FrameLayout/TabHost接下來詳細(xì)介紹這些組件的功能:FrameLayout是單幀布局,當(dāng)一個組件放在上面是,下一個組件就覆蓋到第一個組件上,可以通過調(diào)整位置來避免組件的覆蓋GridView是Android中的數(shù)據(jù)顯示控件,在二維可滾動的網(wǎng)格中呈現(xiàn)子項(item),Itme來自與之相關(guān)的LiatAdapter。GridView也有一個監(jiān)聽器ONItemClickListener,實(shí)現(xiàn)后可以對GridView組件中的子項進(jìn)行監(jiān)聽。在本程序中用于顯示新浪Rss的類型。數(shù)據(jù)源來自本地xml文件的解析,將再后面介紹。ListView前面已經(jīng)介紹過,在這里主要用于顯示每種類型下的Rss 地址連接。TabWidget是用于切換第一個FrameLayout中的兩個組件,在這里我們不需要讓它顯示,設(shè)置它的屬性為不可見。TabHost是用來管理FrameLayout下包含的組件,這些組件必須先添加到TabHost中,。 資源文件的解析 文件解析是本項目中的一個重點(diǎn),主要包括本地文件的解析和網(wǎng)絡(luò)文件的解析。 。網(wǎng)絡(luò)文件的解析主要是通過數(shù)據(jù)流來讀取資源,包括HTML文件的解析,XML文件的解析,圖片資源的獲取等。XML文件的解析方式在前面已經(jīng)介紹過,在這里使用pull解析器,在解析之前,先構(gòu)建XmlPullParserFactory,(InputStream input,String encoding)來裝載XML文件,變量encoding表示字符編碼,默認(rèn)是utf8。Pull讀到XML文件的聲明,返回數(shù)字0,Pull讀到XML的結(jié)束,返回數(shù)字1,Pull讀到XML的開始標(biāo)簽,返回數(shù)字2,Pull讀到XML的結(jié)束標(biāo)簽,返回數(shù)字3,Pull讀到XML的文本,返回數(shù)字4,根據(jù)上面返回數(shù)字來進(jìn)行判斷,當(dāng)讀取到的開始標(biāo)簽是outline時,(int index)來獲取標(biāo)簽內(nèi)的值,(0)獲取的是title的值。在解析XML文件時,其中有個屬性是flag,這個屬性對應(yīng)的值在之前介紹過,對應(yīng)的是html文件的起始位置和結(jié)束位置,flag屬性的值在res/values/,但是在Android中name被自動生成一個整數(shù)。在Android中,(int id)獲取name所對應(yīng)的值,并沒有提供根據(jù)字符串來獲取。在Java運(yùn)行時環(huán)境中,對于任意一個類,能否知道這個類有哪些屬性和方法?對于任意一個對象,能否調(diào)用它的任意一個方法?答案是肯定的。這種動態(tài)獲取類的信息,以及動態(tài)調(diào)用對象的方法的功能來自于Java語言的反射(Reflection)機(jī)制。Java反射機(jī)制主要提供了以下功能[1]:◆在運(yùn)行時判斷任意一個對象所屬的類;◆在運(yùn)行時構(gòu)造任意一個類的對象;◆在運(yùn)行時判斷任意一個類所具有的成員變量和方法;◆在運(yùn)行時調(diào)用任意一個對象的方法;◆生成動態(tài)代理。利用java的反射機(jī)制獲取到這個字符串對應(yīng)的整數(shù)型ID,核心算法如下:先初始化一個Object object = ,然后獲取這個object下的屬性,F(xiàn)ield field = (flag,這樣以flag命名的屬性就獲取到了,由于這個屬性的值是整數(shù)類型,(object)就可以獲取到屬性的值,根據(jù)這個值,我們就可以獲取到XML文件中的flag所對應(yīng)的起始位置和結(jié)束位置,通過上面的分析,將這些值封裝到一個List中,作為新浪Rss界面中GridView和ListView的數(shù)據(jù)源,這樣就可以在這些組件中顯示了。,解析出來的值也封裝在一個List中,作為騰訊Rss界面的中ExpandableListView的數(shù)據(jù)源。本項目與互聯(lián)網(wǎng)進(jìn)行交互,因此網(wǎng)絡(luò)文件的解析是十分重要的一部分。1. AsynTask的介紹在Android上,系統(tǒng)通過向用戶顯示一個稱為應(yīng)用無響應(yīng)(ANR:Application Not Responding)的對
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1