移動(dòng)設(shè)備應(yīng)用程序開(kāi)發(fā)大作業(yè)_第1頁(yè)
移動(dòng)設(shè)備應(yīng)用程序開(kāi)發(fā)大作業(yè)_第2頁(yè)
移動(dòng)設(shè)備應(yīng)用程序開(kāi)發(fā)大作業(yè)_第3頁(yè)
移動(dòng)設(shè)備應(yīng)用程序開(kāi)發(fā)大作業(yè)_第4頁(yè)
移動(dòng)設(shè)備應(yīng)用程序開(kāi)發(fā)大作業(yè)_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

挪動(dòng)設(shè)施應(yīng)用程序開(kāi)發(fā)大作業(yè)挪動(dòng)設(shè)施應(yīng)用程序開(kāi)發(fā)大作業(yè)15/15挪動(dòng)設(shè)施應(yīng)用程序開(kāi)發(fā)大作業(yè)淮陰工學(xué)院?挪動(dòng)設(shè)施應(yīng)用程序開(kāi)發(fā)?大作業(yè)系〔院〕:專業(yè):學(xué)生姓名:

計(jì)算機(jī)與軟件工程學(xué)院班級(jí):學(xué)號(hào):任課教師

:學(xué)年學(xué)期:2021~2021學(xué)年第1學(xué)期2021年12月28日課題的背景此刻社會(huì)是一個(gè)網(wǎng)絡(luò)化和信息化的社會(huì),科技日漸興盛,物質(zhì)生活日漸豐富,自但是然,社會(huì)競(jìng)爭(zhēng)也日益強(qiáng)烈。如何在這樣的一個(gè)社會(huì)中獲得優(yōu)勢(shì),利于不敗之地。此中一個(gè)重要條件就是要能及時(shí)獲取信息,正確并有效地剖析信息,才能對(duì)社會(huì)狀態(tài)有最新的掌握,依據(jù)掌握的信息做出對(duì)自己最有益的決議。進(jìn)而抵達(dá)事半功倍的成效。從目前獲取信息的各樣渠道來(lái)剖析,最為快捷方便的莫過(guò)于我們的智能了。它攜帶方便,能夠讓我們不論何時(shí)何地都能夠及時(shí)認(rèn)識(shí)社會(huì)發(fā)生的全部。而Android系統(tǒng)又是全部智能操作系統(tǒng)中份額最大的,它以開(kāi)源免費(fèi)的特點(diǎn)而深受廣闊花費(fèi)者和開(kāi)發(fā)者的喜愛(ài)。1.1課題的目的和意義利用智能的便利性,開(kāi)發(fā)一款能夠在上隨時(shí)隨處閱讀我們感興趣和需要的新聞或信息的軟件就是本論文的研究目的。本論文將經(jīng)過(guò)查閱各樣資料,開(kāi)發(fā)這樣一款軟件。它將全部的新聞資訊分門別類,當(dāng)我們?cè)谏线\(yùn)轉(zhuǎn)這款軟件的時(shí)候,我們能夠依據(jù)自己的興趣選擇我們感興趣的類型,這樣我們就只會(huì)看到我們所感興趣的內(nèi)容。關(guān)于用戶來(lái)說(shuō)就能夠既省時(shí)又省力地獲取存心義的資訊了。開(kāi)發(fā)這么一款應(yīng)用軟件,老是鑒于某一種平臺(tái)的。關(guān)于目前市場(chǎng)而言,最為流行的智能平臺(tái)莫過(guò)于谷歌企業(yè)的Android挪動(dòng)平臺(tái),在它面世后的幾年內(nèi),給全世界市場(chǎng)帶來(lái)了革命性的變化。不論在國(guó)內(nèi)仍是外國(guó),一躍成為了份額最高的智能操作系統(tǒng)。所以研究它,了接它的各個(gè)組件使用原理將是十分存心義的。綜上所述,鑒于Android平臺(tái),開(kāi)發(fā)一個(gè)上述的新聞客戶端軟件,是一個(gè)十分存心義的選題。1.2新聞客戶端可行性剖析1.2.1社會(huì)可行性新聞客戶端是鑒于智能Android平臺(tái)開(kāi)發(fā)的,而到現(xiàn)在為止Android系統(tǒng)在全國(guó)以致全世界智能操作系統(tǒng)的市場(chǎng)份額仍占全世界第一。全世界使用此操作系統(tǒng)的用戶早已超出14億。開(kāi)發(fā)這么一款A(yù)ndroid軟件,將是十分流行的。跟著計(jì)算機(jī)技術(shù)和挪動(dòng)互聯(lián)網(wǎng)的睜開(kāi),網(wǎng)民數(shù)目愈來(lái)愈多,網(wǎng)絡(luò)世界愈來(lái)愈豐富,人們也特別熟習(xí)智能操作。市場(chǎng)上此類軟件也有一些成功事例,用戶也接受在上下載新聞閱讀軟件來(lái)閱讀新聞。此軟件嚴(yán)格依據(jù)國(guó)家法律法例來(lái)進(jìn)行研究、實(shí)踐,并沒(méi)法律和政策方面的限制。1.2.2技術(shù)可行性Android挪動(dòng)平臺(tái)是鑒于Linux的開(kāi)源平臺(tái)。該平臺(tái)由操作系統(tǒng),中間件,用戶界面,應(yīng)用軟件四全局部構(gòu)成。本軟件鑒于AndroidSDK開(kāi)發(fā),使用到了Activity、Fragment、ListView、ViewPager等系統(tǒng)自帶組件。也使用到了ViewPagerIndicator、XUtils等第三方開(kāi)源組件,這些技術(shù)都是開(kāi)源免費(fèi)的。使用起來(lái)都比較簡(jiǎn)單靈巧,被程序員寬泛使用的。顯現(xiàn)界面也比較流利,說(shuō)明技術(shù)上是可行的。在科技日益興盛的今日,硬件更新的速度愈來(lái)愈快,內(nèi)存容量愈來(lái)愈大,CPU速度越來(lái)越快,靠譜性愈來(lái)愈高,價(jià)錢愈來(lái)愈低價(jià),其硬件平臺(tái)完整能知足此軟件的需要。1.2.3操作可行性目前,大部分的智能都是鑒于Android平臺(tái)的。該軟件支持Android2.2以上版本的運(yùn)轉(zhuǎn)。所以大部分的Android都能運(yùn)轉(zhuǎn)該軟件,并且該軟件不含廣告,沒(méi)有病毒。所以該軟件的安裝、調(diào)試、運(yùn)轉(zhuǎn)不會(huì)改變?cè)瓉?lái)Android系統(tǒng)的布局與設(shè)置。并且該軟件的界面簡(jiǎn)單,略加發(fā)點(diǎn)時(shí)間熟習(xí)便能夠輕易上手,關(guān)于閱讀及時(shí)新聞來(lái)說(shuō)是十分方便的。1.3新聞客戶端需求剖析1.3.1新聞客戶端需求概括啟動(dòng)應(yīng)用程序后能夠?qū)π侣勝Y訊進(jìn)行及時(shí)更新,能夠依據(jù)自己的興趣選擇不一樣欄目的新聞進(jìn)行閱讀,能夠依據(jù)自己的愛(ài)好選擇不一樣的新聞閱讀方式如文字、圖片或視頻來(lái)獲取最新的新聞資訊,在新聞閱讀時(shí)能夠依據(jù)自己的需求選擇不一樣的模式,還能夠?qū)ψ约合矏?ài)的文章進(jìn)行分享到其余的全局部主流交際平臺(tái)。這些都是全局部用戶的廣泛需求,也是本新聞客戶端軟件需要實(shí)現(xiàn)的主要功能。由此可得出本新聞客戶端有以下功能性需求:〔1〕Android新聞客戶端界面要有不一樣新聞?lì)愋头诸悓?dǎo)航,每個(gè)類型一定有頭條新聞?wù)故竞鸵幌盗性敱M的新聞信息列表。新聞內(nèi)容將以12個(gè)子欄目類型進(jìn)行內(nèi)容顯現(xiàn),此中首頁(yè)、荊州、社會(huì)、娛樂(lè)、體育等5個(gè)子欄目為系統(tǒng)默認(rèn)顯示的主要欄目。用戶在該模塊下將看到當(dāng)下最新鮮熱點(diǎn)的新聞內(nèi)容,頭條欄此刻所顯現(xiàn)的新聞內(nèi)容會(huì)可能隸屬于到他隨意一個(gè)欄目,能夠與其余子欄目的內(nèi)容有所重合。〔2〕用戶能夠點(diǎn)擊不一樣模塊進(jìn)入不一樣模式的新聞閱讀模塊。在每個(gè)子欄目?jī)?nèi)容顯現(xiàn)頁(yè)面的上方將供給一個(gè)支持左右滑動(dòng)的內(nèi)容閱讀地區(qū),該地區(qū)將顯現(xiàn)圖集新聞(包含有大批圖片資源的新聞),或許視頻;在每個(gè)子欄目的下方將以列表的形式顯現(xiàn)新聞內(nèi)容,排序要求依據(jù)新聞的時(shí)效性?!?〕用戶能夠在進(jìn)入新聞詳情頁(yè)后依據(jù)自己的愛(ài)好來(lái)調(diào)理新聞閱讀詳情頁(yè)的字體大小。4〕用戶能夠在進(jìn)入新聞詳情頁(yè)后點(diǎn)擊分享按鈕對(duì)自己喜愛(ài)的文章進(jìn)行分享。因?yàn)樵摽蛻舳诉\(yùn)轉(zhuǎn)在終端的安卓平臺(tái)上,那么對(duì)其響應(yīng)用戶的時(shí)間為5秒鐘以內(nèi),假如超出5秒,終端會(huì)出現(xiàn)假死現(xiàn)象,這會(huì)降低用戶體驗(yàn)。為提升用戶體驗(yàn),要求所實(shí)用戶的簡(jiǎn)單操作所耗費(fèi)的辦理時(shí)間在5秒以內(nèi),而耗時(shí)操作(如:效力器接見(jiàn))這類也要求在10秒鐘以內(nèi)達(dá)成,同時(shí)不可以讓用戶有較長(zhǎng)的時(shí)間等候,在辦理耗時(shí)懇求的同時(shí)不可以影響用戶的其余操作,防備出現(xiàn)假死現(xiàn)象。經(jīng)過(guò)對(duì)用戶的需求進(jìn)行檢查,從用戶的需求角度出發(fā),能夠得出用戶需要的三大主要性能指標(biāo)為軟件的響應(yīng)速度快、安全性高和辦理信息速度快。所以本軟件在設(shè)計(jì)時(shí)引用了大批的優(yōu)異的Android開(kāi)源框架,減少了很多因?yàn)樽约旱脑O(shè)計(jì)致使的一系列代碼冗余問(wèn)題,還可以大大的增添開(kāi)發(fā)效率。此外為了合用于大部分用戶,依據(jù)目前的Android設(shè)施系統(tǒng)版安分布狀況,Android2.3以上版本的設(shè)施占到了95%。所以開(kāi)發(fā)時(shí)選擇的最低適配版本是Android2.3。由此得出該新聞客戶端以下非功能性需求:1〕該新聞客戶端將會(huì)準(zhǔn)時(shí)更新版本,不停增添新功能和完美已有功能以適應(yīng)不停變化的需求,這需要本客戶端擁有很好的可擴(kuò)展性,要求設(shè)計(jì)優(yōu)異的代碼以同意更多的功能在有需要的時(shí)候被參加到合適的地點(diǎn)中。2〕該新聞客戶端要兼容不一樣品牌、版本和分辨率的Android設(shè)施。3〕該新聞客戶端要界面友善,操作性強(qiáng),易用性強(qiáng)。所謂易用性就是各樣功能不要藏的太深,用戶應(yīng)當(dāng)很簡(jiǎn)單找到他們希望進(jìn)行的各樣操作;易學(xué)就是需要應(yīng)用茶品能夠經(jīng)過(guò)簡(jiǎn)單的導(dǎo)航,在線幫助等各樣方式保證用戶可便利掌握使用技巧;易用的要點(diǎn)那么在讓軟件嫻熟使用后應(yīng)當(dāng)能夠更快的進(jìn)行各項(xiàng)操作。4〕該新聞客戶端要切換流利,響應(yīng)速度要快。1.3.2新聞客戶端功能剖析依據(jù)以上對(duì)用戶的需求剖析能夠得出新聞客戶端的主要系統(tǒng)功能模塊概括以下:新聞客戶端是閱讀新聞必不行少的軟件,用戶能夠依據(jù)自己的需求,選擇相應(yīng)的分類進(jìn)行閱讀。新聞內(nèi)容都是經(jīng)過(guò)懇求效力器獲取的,客戶端經(jīng)過(guò)分析效力端傳達(dá)過(guò)來(lái)的JSON數(shù)據(jù),最后顯示在界面上。系統(tǒng)的設(shè)計(jì)與開(kāi)發(fā)都嚴(yán)格依據(jù)軟件工程的標(biāo)準(zhǔn),運(yùn)用了軟件設(shè)計(jì)模式,減少系統(tǒng)模塊間的耦合。該軟件的主要功能模塊以下:1.新聞模塊,對(duì)新聞進(jìn)行了分類顯現(xiàn)。2.組圖模塊,將新聞一圖片形式顯現(xiàn)。3.視頻模塊,將新聞以視頻形式顯現(xiàn)。4.新聞詳情頁(yè),能夠依據(jù)用戶需求,自定義閱讀模式。5.分享模塊,用戶能夠?qū)⒆约合矏?ài)的內(nèi)容分享出去。依據(jù)系統(tǒng)的功能剖析,畫出功能模塊圖和詳情流程圖以下所示:圖1-1新聞功能模塊設(shè)計(jì)圖圖1-2新聞客戶端詳情流程圖系統(tǒng)剖析2.1研究的思路及方法JAVA作為用戶最多的開(kāi)發(fā)語(yǔ)言,它擁有簡(jiǎn)單、面向?qū)ο?、安全等特點(diǎn)。所以選擇用JAVA作為新聞客戶端的開(kāi)發(fā)語(yǔ)言。該新聞客戶端是一個(gè)挪動(dòng)互聯(lián)網(wǎng)產(chǎn)品,它經(jīng)過(guò)Android系統(tǒng)與挪動(dòng)互聯(lián)網(wǎng)進(jìn)行連結(jié)。它經(jīng)過(guò)分析效力端傳達(dá)過(guò)來(lái)的Json或Xml數(shù)據(jù),并將其分析結(jié)果顯示在界面顯現(xiàn)給用戶。用戶下載安裝此軟件后,能夠極其方便地依據(jù)自己的興趣選擇相應(yīng)的欄目,進(jìn)行新聞分類閱讀。此刻的新聞客戶端不只是是簡(jiǎn)單的閱讀,更多的是參加了分享和交際功能,這也是一個(gè)明顯趨向。此刻的用戶新聞閱讀不再是簡(jiǎn)單的接收,他們也想經(jīng)過(guò)將他們喜愛(ài)的文章分享出去來(lái)表達(dá)自己的思想,顯現(xiàn)自己的訴求,甚至表達(dá)自我的品位,他們盼望和其余用戶交流自己的想法。此新聞客戶端軟件主要以微軟的Windows7操作系統(tǒng)作為開(kāi)發(fā)環(huán)境,使用Eclipse+AndroidSDK作為開(kāi)發(fā)工具,GitHub上的開(kāi)源工程Xutils進(jìn)行網(wǎng)絡(luò)圖片的加載與顯示,第三方開(kāi)源框架ViewPagerIndicator來(lái)作為新聞欄目分類顯示的控件,ViewPager來(lái)實(shí)現(xiàn)廣告輪播條,ListView來(lái)顯現(xiàn)新聞列表,自定義控件來(lái)實(shí)現(xiàn)下拉刷新,上拉加載功能,ShareSDK實(shí)現(xiàn)第三方分享功能。該軟件利用ApacheTomcat8作為后臺(tái)效力器供給Json數(shù)據(jù),模擬客戶端懇求效力器接口程序的過(guò)程??蛻舳私?jīng)過(guò)接見(jiàn)效力端供給的接口利用HttpUtils開(kāi)源組件進(jìn)行Json數(shù)據(jù)分析,并顯示到界面上。利用多個(gè)不一樣android版本、不一樣分辨率的android虛構(gòu)機(jī)作為測(cè)試終端。將系統(tǒng)區(qū)分為假定干模塊,對(duì)多個(gè)模塊進(jìn)行獨(dú)立的單元測(cè)試。最后對(duì)整個(gè)客戶端進(jìn)行整體測(cè)試。保證此軟件能夠在大部分Android上穩(wěn)固運(yùn)轉(zhuǎn)。新聞客戶端設(shè)計(jì)與實(shí)現(xiàn)3.1開(kāi)發(fā)環(huán)境介紹3.1.1系統(tǒng)開(kāi)發(fā)平臺(tái)新聞客戶端的開(kāi)發(fā)是在Windows+Eclipse+ADT的環(huán)境下進(jìn)行的。Windows操作系統(tǒng)是美國(guó)微軟企業(yè)開(kāi)發(fā)的一款操作系統(tǒng)。自面世以來(lái),就遇到了廣闊消費(fèi)者的歡送。因?yàn)槠浣缑娴难庞^的易用,慢慢成了家家戶戶最喜愛(ài)的計(jì)算機(jī)操作系統(tǒng)。本新聞客戶端就是鑒于這么一款操作系統(tǒng)來(lái)進(jìn)行開(kāi)發(fā)的,降低了學(xué)習(xí)系統(tǒng)的本錢。Eclipse是由IBM企業(yè)開(kāi)發(fā)的一款免費(fèi)的、開(kāi)源的、鑒于Java的可拓睜開(kāi)發(fā)平臺(tái)。經(jīng)過(guò)豐富的插件組件來(lái)建立不一樣的開(kāi)發(fā)環(huán)境。ADT,Android開(kāi)發(fā)工具。它是集成在Eclipse中的插件,為Android的開(kāi)發(fā)供給各樣工具。本軟件就是在這樣的環(huán)境中進(jìn)行開(kāi)發(fā)的。3.2整體布局軟件與用戶的交互主假如以Activity+Fragment來(lái)實(shí)現(xiàn)的。Activity是一個(gè)Android系統(tǒng)自帶的重量級(jí)組件,它主要用于與用戶界面的交互。它是一個(gè)有生命周期的對(duì)象,它也是Android四大組件中最常用的一個(gè)。Android開(kāi)發(fā)者經(jīng)過(guò)新建一系列Activity的子類,覆寫它的onCreate方法來(lái)實(shí)現(xiàn)一系列的功能。Fragment是一個(gè)Android系統(tǒng)輕量級(jí)組件,它的使用能夠大批開(kāi)釋內(nèi)存空間。我們能夠?qū)ragment當(dāng)作是Activity中的模塊,這個(gè)模塊有生命周期和布局,能夠獨(dú)自辦理自己的輸入。能夠在Activity運(yùn)轉(zhuǎn)的時(shí)候動(dòng)向地加載或移除Fragment。Fragment能夠在Activity中被大批復(fù)用,實(shí)現(xiàn)靈巧的布局,改良用戶體驗(yàn)。新聞客戶端整體能夠分為3局部,上面是紅色的標(biāo)題欄,以RelativeLayout布局,其余每個(gè)界面都共用這一個(gè)布局。標(biāo)題主要用于顯示模塊的名稱,經(jīng)過(guò)在不一樣的模塊調(diào)用setText()方法來(lái)改變顯示的文字內(nèi)容,成效以以下圖所示:圖3-1模塊標(biāo)題表示圖布局簡(jiǎn)要代碼以下:<RelativeLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:background="@drawable/title_red_bg"><TextView/><ImageButton/></RelativeLayout>中間局部是每個(gè)模塊的主體內(nèi)容,以新聞模塊為例,最上面的是新聞分類條目,能夠左右滑動(dòng),是使用第三方開(kāi)源框架ViewPagerIndicator實(shí)現(xiàn)的。ViewPagerIndicator是GitHub上的免費(fèi)開(kāi)源工程,它是Android中最常用的第三方控件之一。因?yàn)樗褂煤?jiǎn)單,界面雅觀的特點(diǎn),幾乎市道上全部的Android類新聞軟件都有使用它。中間的是一個(gè)廣告輪播條,每隔一秒切換一次界面,是使用ViewPager實(shí)現(xiàn)的。下面的界面是新聞列表,能夠上下滑動(dòng),是使用Android比較常用的一個(gè)經(jīng)典控件ListView實(shí)現(xiàn)的。界面成效以以下圖所示:圖3-2新聞模塊布局表示圖下面局部是模塊列表,經(jīng)過(guò)點(diǎn)擊能夠切換到相應(yīng)模塊,下面模塊列表是經(jīng)過(guò)三個(gè)RadioButton實(shí)現(xiàn)的,點(diǎn)擊RadioButton會(huì)改變圖片和字體顏色,實(shí)現(xiàn)原理就是編寫一個(gè)圖片和顏色選擇器,被選中時(shí)和未被選中時(shí)給予不一樣的圖片和顏色。3個(gè)主要模塊的實(shí)現(xiàn)是使用了ViewPager。原始的ViewPager能夠依據(jù)手指的滑動(dòng)而切換界面,這明顯不可以知足我們的需求。所以需要自定義一個(gè)控件繼承ViewPager,重寫它的onTouchEvent方法。界面以以下圖所示:圖3-3模塊切換布局表示圖詳細(xì)布局代碼以下所示:<RadioGroupandroid:id="@+id/rg_group"android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><RadioButtonandroid:id="@+id/rb_news"style="@style/BottomTabStyle"android:drawableTop="@drawable/main_news_selector"android:text="新聞"android:textColor="@drawable/text_color_selector"/>...</RadioGroup>3.3新聞模塊3.3.1新聞?lì)愋土斜硇侣勵(lì)愋土斜硎鞘褂靡粋€(gè)第三方開(kāi)源框架ViewPagerIndicator來(lái)實(shí)現(xiàn)的,主流的新聞客戶端軟件根本上都有使用這一框架。此列表能夠左右滑動(dòng),點(diǎn)擊即切換。點(diǎn)擊向右的圖標(biāo)也可以切換目前條目。我們能夠改正該框架的源代碼來(lái)自定義我們自己喜愛(ài)的顯示風(fēng)格。當(dāng)使用這一框架時(shí),我們還需要注意的是,當(dāng)需要設(shè)置與之關(guān)系的ViewPager的監(jiān)聽(tīng)方法時(shí),不可以直接設(shè)置該ViewPager的監(jiān)聽(tīng)方法,只好設(shè)置ViewPagerIndicator的setOnPageChangeListener方法。詳細(xì)的使用代碼以下所示:1、在布局文件中使用android:id="@+id/indicator"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_weight="1"/>2、在Java類中配置mIndicator=(TabPageIndicator)view.findViewById(R.id.indicator);mIndicator.setViewPager(mViewPager);//把viewpager和mIndicator關(guān)系起來(lái)mIndicator.setOnPageChangeListener(this);//設(shè)置TabPageIndicator的滑動(dòng)監(jiān)//聽(tīng)事件3.3.2新聞條目列表廣告輪播條是新聞閱讀類軟件中的一個(gè)重要構(gòu)成局部,它是由一個(gè)ViewPager組件來(lái)實(shí)現(xiàn)的,并且能夠定義一個(gè)準(zhǔn)時(shí)器來(lái)切換目前頁(yè)面,來(lái)實(shí)現(xiàn)自動(dòng)輪播成效。ViewPager是一個(gè)可以左右滑動(dòng)的View,它是Android擴(kuò)展包android-support-v4里面的類。經(jīng)過(guò)這個(gè)類,用戶可以自由的左右往返切換頁(yè)面。.ListView是Android系統(tǒng)自帶的控件之一,它的使用相同是十分寬泛的,它往常用來(lái)加載一系列相同布局的列表。使用它相同需要一個(gè)PagerAdapter適配器來(lái)給它供給數(shù)據(jù)。重新聞列表的特點(diǎn)來(lái)看,明顯是由一個(gè)ListView來(lái)實(shí)現(xiàn)的??墒菫榱嗽诨瑒?dòng)ListView的時(shí)候,帶動(dòng)ViewPager一同滑動(dòng),那么需要自定義一個(gè)控件,來(lái)講廣告輪播條的ViewPager和新聞列表的ListView關(guān)系起來(lái)。而全局部的新聞軟件都有上拉刷新和下拉加載更多的功能,所以在此自定義控件中也應(yīng)加上上拉刷新和下拉加載更多的功能。此自定義控件繼承了ListView類,實(shí)現(xiàn)了OnScrollListener,android.widget.AdapterView.OnItemClickListener接口。主要代碼以下:1、初始化頭布局:mHeaderView=View.inflate(getContext(),R.layout.refresh_header,null);this.addHeaderView(mHeaderView);tvTitle=(TextView)mHeaderView.findViewById(R.id.tv_title);tvTime=(TextView)mHeaderView.findViewById(R.id.tv_time);ivArrow=(ImageView)mHeaderView.findViewById(R.id.iv_arr);pbProgress=(ProgressBar)mHeaderView.findViewById(R.id.pb_progress);mHeaderView.measure(0,0);mHeaderViewHeight=mHeaderView.getMeasuredHeight();2、初始化底部布局mFooterView=View.inflate(getContext(),R.layout.refresh_listview_footer,null);this.addFooterView(mFooterView);mFooterView.measure(0,0);mFooterViewHeight=mFooterView.getMeasuredHeight();隱蔽刷新控件mFooterView.setPadding(0,-mFooterViewHeight,0,0);this.setOnScrollListener(this);在布局文件中使用此自定義控件以下:android:id="@+id/lv_list"android:layout_width="match_parent"android:layout_height="0dp"android:cacheColorHint="#fff"android:layout_weight="1"></com.bishe.news.view.RefreshListView>對(duì)應(yīng)的顯示界面以下:圖3-4新聞模塊上拉刷新表示圖圖3-5新聞模塊下拉加載更多表示圖3.4組圖模塊組圖模塊是整個(gè)客戶端軟件中比較簡(jiǎn)單的一個(gè)模塊,它的功能就是改變新聞顯示風(fēng)格,以圖片形式顯現(xiàn),知足不一樣需求的用戶。它的布局使用了網(wǎng)格布局GridView。整體布局代碼以下:<GridViewandroid:id="@+id/gv_photo"android:layout_width="match_parent"android:layout_height="match_parent"android:numColumns="2"android:visibility="gone"/>條目布局以下:<LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_margin="10dp"android:background="@drawable/pic_list_item_bg"android:gravity="center"android:orientation="vertical"><ImageView/><TextView/></LinearLayout>Java填湊數(shù)據(jù)的代碼主要集中在getView方法中,詳細(xì)以下:if(convertView==null){convertView=View.inflate(mActivity,R.layout.list_photo_item,null);holder=newViewHolder();holder.tvTitle=(TextView)convertView.findViewById(R.id.tv_title);holder.ivPic=(ImageView)convertView.findViewById(R.id.iv_pic);convertView.setTag(holder);}else{holder=(ViewHolder)convertView.getTag();}PhotoInfoitem=getItem(position);holder.tvTitle.setText(item.title);utils.display(holder.ivPic,item.listimage);實(shí)現(xiàn)成效以以下圖所示:圖3-6組圖模塊表示圖3.5視頻模塊視屏模塊和組圖模塊的設(shè)計(jì)近似,它的設(shè)計(jì)主假如為了知足喜愛(ài)經(jīng)過(guò)視頻來(lái)認(rèn)識(shí)新聞時(shí)事動(dòng)向的用戶。整體以一個(gè)ListView來(lái)布局。主要布局以下:<ListViewandroid:id="@+id/lv_photo"android:layout_width="match_parent"android:layout_height="match_parent"android:cacheColorHint="#fff"android:divider="@null"/>在Java中的實(shí)現(xiàn)方式也根本保持一致,能夠使用ViewHolder類來(lái)優(yōu)化ListView,實(shí)現(xiàn)ListView的復(fù)用,代碼以下:staticclassViewHolder{publicTextViewtvTitle;publicImageViewivPic;}3.6新聞詳情頁(yè)新聞詳情頁(yè)即是點(diǎn)擊新聞進(jìn)入后的頁(yè)面,使用一個(gè)WebView來(lái)實(shí)現(xiàn)。在新聞詳情頁(yè)中,用戶能夠點(diǎn)擊返回按鈕返回到前一頁(yè)面,也能夠選擇合適自己的字體大小來(lái)觀看新聞,還可以點(diǎn)擊分享按鈕,將自己喜愛(ài)的文章分享到其余第三方交際平臺(tái)。主要布局代碼以下:<WebViewandroid:id="@+id/wv_web"android:layout_width="match_parent"android:layout_height="match_parent"/>Actvity中,而后加載WebView所在的當(dāng)點(diǎn)擊某一新聞條目時(shí),就會(huì)跳轉(zhuǎn)到新聞詳情的布局文件,最后從網(wǎng)絡(luò)效力器上加載所需要的html文件,顯示在WebView中。新聞條目點(diǎn)擊的代碼以下://在當(dāng)?shù)赜涗浺炎x狀態(tài)Stringids=PrefUtils.getString(mActivity,"read_ids","");StringreadId=mNewsList.get(position).id;if(!ids.contains(readId)){ids=ids+readId+",";PrefUtils.setString(mActivity,"read_ids",ids);}changeReadState(view);//實(shí)現(xiàn)局部界面刷新方法跳轉(zhuǎn)新聞詳情頁(yè)代碼實(shí)現(xiàn)Intentintent=newIntent();intent.setClass(mActivity,NewsDetailActivity.class);intent.putExtra("url",mNewsList.get(position).url);mActivity.startActivity(intent);WebView中加載的詳細(xì)代碼以下:全部跳轉(zhuǎn)的鏈接都會(huì)在此方法中回調(diào)@OverridepublicbooleanshouldOverrideUrlLoading(WebViewview,Stringurl){tel:110view.loadUrl(url);returntrue;}});界面顯示圖以下所示:圖3-7新聞詳情頁(yè)表示圖當(dāng)點(diǎn)擊左上角的返回按鈕時(shí),會(huì)調(diào)用Activity的finish()方法銷毀目前Activity,退回到上一界面。實(shí)現(xiàn)代碼以下:caseR.id.btn_back:finish();break;5種字體大小可選擇。中選擇與目前字體大當(dāng)點(diǎn)擊字體按鈕時(shí),會(huì)彈出選擇對(duì)話框。有小不一樣的字體時(shí),經(jīng)過(guò)WebView獲取WebSettings對(duì)象,調(diào)用它的setTextSize()方法來(lái)設(shè)置字體大小。詳細(xì)實(shí)現(xiàn)代碼以下:3.7新聞分享用戶假如在新聞詳情頁(yè)碰到了自己喜愛(ài)的文章,能夠點(diǎn)擊分享按鈕選擇分享平臺(tái)分享給其余摯友,這就是分享模塊需要實(shí)現(xiàn)的主要的功能。該分享功能使用了第三方開(kāi)源框架ShareSDK。ShareSDK是一種第三方的社會(huì)化分享組件,它集成了一些常有的類庫(kù)和接口,簡(jiǎn)化了開(kāi)發(fā)者的開(kāi)發(fā)時(shí)間。ShareSdk不單能為Android平臺(tái)供給分享效力,它也能為其余平臺(tái)如IOS或WP供給分享效力。ShareSDK支持包含微信、QQ、微博、facebook、谷歌+等國(guó)內(nèi)外40多家交際主流平臺(tái)。并且該組件內(nèi)置了強(qiáng)盛的統(tǒng)計(jì)剖析管理后臺(tái),能夠及時(shí)地了解用戶的各樣數(shù)據(jù),有效指導(dǎo)軟件的營(yíng)運(yùn)與推行,為使用此組件的App引入更多的流量。所以使用該組件進(jìn)行協(xié)助開(kāi)發(fā)是十分有必需的。應(yīng)用該框架的主要代碼以下:1、應(yīng)用該框架所需要的權(quán)限:<uses-permissionandroid:name="android.permission.GET_TASKS"/><uses-permissionandroid:name="android.permission.ACCESS_WIFI_STATE"/><uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/><uses-permissionandroid:name="android.permission.CHANGE_WIFI_STATE"/><uses-permissi

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論