基于Android的新聞APP設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
基于Android的新聞APP設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)
基于Android的新聞APP設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)
基于Android的新聞APP設(shè)計(jì)與實(shí)現(xiàn)_第4頁(yè)
基于Android的新聞APP設(shè)計(jì)與實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩32頁(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)介

PAGE28PAGE26基于Android的新聞APP設(shè)計(jì)與實(shí)現(xiàn)摘要隨著當(dāng)今社會(huì)發(fā)展迅速,手機(jī)的便攜性使其高度普及。此外使用傳統(tǒng)的紙質(zhì)媒體向如不惜攜帶、更新采購(gòu)成本和其他問(wèn)題,不能再滿足用戶的需求。本篇文章講述基于Android平臺(tái)設(shè)計(jì)和實(shí)現(xiàn)新聞信息軟件。該軟件的功能類似于新聞、視頻等的可視化。該系統(tǒng)具有友好的接口、簡(jiǎn)單的操作、維護(hù)和擴(kuò)展,可以在不修改原始代碼的情況下添加新的功能模塊。關(guān)鍵詞新聞客戶端;軟件設(shè)計(jì);系統(tǒng)開發(fā);Android;1緒論新聞APP的概述隨著科學(xué)技術(shù)的高速發(fā)展以及互聯(lián)網(wǎng)技術(shù)的日益成熟,傳統(tǒng)媒體逐漸被新媒體替代,新媒體占據(jù)著日常生活的大部分時(shí)間。尤其是以智能手機(jī)為主的產(chǎn)品已經(jīng)逐漸涵蓋了日常生活的方方面面。比如,我可以利用手機(jī)上的APP及時(shí)地獲得最新的資訊,從這些資訊中了解國(guó)內(nèi)、國(guó)際上的大事。通過(guò)新聞APP,我們不僅能夠增長(zhǎng)自身的知識(shí)儲(chǔ)備與閱歷,還能提高自身的邏輯思維能力。不得不承認(rèn),新聞應(yīng)用的誕生和傳播時(shí)間不長(zhǎng),相關(guān)法律法規(guī)不完善,以及新聞內(nèi)容的采納和組織,在策劃上存在一些缺陷,直接導(dǎo)致一些“牛皮”廣告的插入在應(yīng)用內(nèi),在新聞應(yīng)用程序中運(yùn)行購(gòu)物卡。這些廣告很容易誤導(dǎo)一些分辨能力不強(qiáng)的人。由于互聯(lián)網(wǎng)技術(shù)日新月異,許多新聞APP為了提高自身的盈利水平,隨意發(fā)布一些未核實(shí)的新聞,傳播消極能量和不好的價(jià)值觀,使人們受到了嚴(yán)重地誤導(dǎo)。在新媒體時(shí)代,新聞APP盡管存在某些缺陷,但是其仍發(fā)揮著巨大影響力,也不能否認(rèn)在當(dāng)今社會(huì),新聞APP已經(jīng)是人們了解信息的重要方式。人們可以再手機(jī)上下載新聞?lì)怉PP便可獲得實(shí)時(shí)的新聞資訊,非??旖莘奖?。本項(xiàng)目所計(jì)劃的新聞APP目標(biāo)是為用戶供給最新的消息內(nèi)容,同時(shí)能讓用戶體驗(yàn)到便當(dāng)?shù)纳罘?wù)、智能的算法和良好的用戶體驗(yàn)。通過(guò)這個(gè)新聞APP,用戶可以更好的利用零散時(shí)間去了解資訊,通過(guò)跟網(wǎng)友互動(dòng)加深對(duì)新聞內(nèi)容的認(rèn)知,從而獲得更好的閱讀體驗(yàn)。1.2課題研究現(xiàn)狀2012年,互聯(lián)網(wǎng)技術(shù)日新月異,在4G時(shí)代和智能設(shè)備的高度普及,移動(dòng)端應(yīng)用程序吸引了大量用戶,網(wǎng)民數(shù)量激增。在國(guó)外,有人發(fā)現(xiàn)新聞APP在生活上是影響用戶占比較大的組成部分,由于新聞?lì)怉PP的快捷方便使得人們更愿意了解新聞。我國(guó)聞名學(xué)者張光凱鉆研過(guò)消息客戶端的盈利模式。他指出新聞客戶端應(yīng)與其他通信運(yùn)營(yíng)商相結(jié)合。與此同時(shí),有人提出傳統(tǒng)新聞應(yīng)該以自身為主,多創(chuàng)作新內(nèi)容強(qiáng)化突出自身的優(yōu)勢(shì)。目前國(guó)內(nèi)新聞APP增加速度越來(lái)越快,根據(jù)國(guó)內(nèi)研究人員的結(jié)論,我國(guó)當(dāng)下新聞?lì)怉PP存在的問(wèn)題是文章如何提高質(zhì)量和給用戶最好的體驗(yàn)。1.3研究目的和意義隨著移動(dòng)互聯(lián)網(wǎng)的迅速發(fā)展,人們逐漸遠(yuǎn)離紙質(zhì)版媒體工具而轉(zhuǎn)向通過(guò)手機(jī)查看最新資訊,手機(jī)查閱資料獲得信息顯得尤為方便。新聞?lì)怉PP的興起也給現(xiàn)代人的日?;顒?dòng)增添了更多趣味。本課題為實(shí)現(xiàn)用戶方便、快捷的閱讀新聞資訊的要求來(lái)設(shè)計(jì)一款能為用戶提供一款可以獲取最新資訊的新聞APP,使用戶對(duì)新聞資訊的需求得到滿足。在這個(gè)信息爆炸的時(shí)代,能否及時(shí)獲得信息并正確有效的分析信息能為一個(gè)人在社會(huì)競(jìng)爭(zhēng)中取得優(yōu)勢(shì)。優(yōu)異的新聞APP應(yīng)當(dāng)為用戶提供最真實(shí)客觀消息內(nèi)容,同時(shí)能給用戶帶來(lái)最不錯(cuò)的用戶體驗(yàn)。用戶下載安裝此軟件,注冊(cè)、登錄賬戶后就能方便快捷的瀏覽多種形式的新聞內(nèi)容,還能收藏自己感興趣的文章。通過(guò)這個(gè)APP,用戶可以更好的操縱零星時(shí)間瀏覽感興趣的內(nèi)容,還可以評(píng)論自己的觀點(diǎn)來(lái)跟網(wǎng)友辯論,增加提高閱讀效率,從而取得不一樣的瀏覽體驗(yàn)。2主要用到的技術(shù)和工具2.1Android簡(jiǎn)介Android是一個(gè)無(wú)需付費(fèi)即可使用的操作系統(tǒng)的名稱。它以Linux為內(nèi)核,Google公司開放了它的源代碼。它可以分為三部分。最底層Linux內(nèi)核是由C語(yǔ)言來(lái)開發(fā)完成的,只提供基本功能,所述中間層包括庫(kù)和虛擬機(jī)的虛擬機(jī),一個(gè)C++開發(fā)。最上層是各種系統(tǒng)應(yīng)用,如瀏覽器,短信程序等。安卓翻譯為“機(jī)器人”一詞,起初Android用于手機(jī)上,經(jīng)過(guò)研究升級(jí),逐漸出現(xiàn)在其他移動(dòng)設(shè)備上,是當(dāng)前系統(tǒng)市場(chǎng)上最大的平臺(tái)。Android操作系統(tǒng)的可修改性滿足用戶個(gè)性化的需求,手機(jī)界面可以由用戶自主選擇,用戶可以自己在市場(chǎng)上選擇自己心儀的第三方程序,讓自己的設(shè)備與眾不同。2.2Flutter相關(guān)介紹和Tomcat配置Flutter是一款移動(dòng)應(yīng)用開發(fā)框架,它由Google發(fā)布,并且開放了源代碼。它最大的亮點(diǎn)是跨平臺(tái)、高保真、高性能。其使用Dart作為開發(fā)語(yǔ)言,僅需一次開發(fā)高復(fù)用度的代碼可在iOS和Android兩大平臺(tái)使用,大大提高了代碼的可復(fù)性用。同時(shí)Flutter能夠調(diào)用原生控件,這使得用戶體驗(yàn)度提高了一次層次。Flutter與其它框架不同,其他框架大多使用原生組件渲染。而Flutter使用的是自己的引擎來(lái)繪制Widget。由于使用的是一套代碼,在Android和iOS上的用戶界面基本相同,而且在降低維護(hù)成本上能體現(xiàn)出更明顯的優(yōu)勢(shì)。Flutter的引擎利用的是Skia,Skia是Google的一個(gè)函數(shù)庫(kù),用于繪制2D圖形,并具有高性能的特征,Skia是跨平臺(tái)的,并開放了很多不錯(cuò)的API,現(xiàn)在越來(lái)越多產(chǎn)品都采用Skia來(lái)進(jìn)行產(chǎn)品的圖像處理。Flutter高性能主要靠?jī)牲c(diǎn)來(lái)體現(xiàn)。首先,F(xiàn)lutter使用Dart編程語(yǔ)言來(lái)開發(fā)APP。在即時(shí)編譯的情況下,速度方面與JavaScript相比基本相等。但是Dart可以在AOT模式下使用,在AOT模式下JavaScript的運(yùn)行情況遠(yuǎn)不如Dart。在高幀率下越高的速率視圖數(shù)據(jù)刷新就越快。其次,F(xiàn)lutter使用自己的引擎來(lái)繪制Widget,Dart能立即操縱布局?jǐn)?shù)據(jù),因此布局過(guò)程同RN相比少了要在JavaScript和Native相互通信的步驟,在滑動(dòng)和拖動(dòng)的情況下優(yōu)勢(shì)功能體現(xiàn),因?yàn)樵诨瑒?dòng)和拖動(dòng)時(shí)都布局會(huì)大量變化,JavaScript需要和Native需要一直頻繁傳輸最新數(shù)據(jù),在Flutter中不需要這樣的通信,大大節(jié)省了時(shí)間,使用戶使用起來(lái)更加流暢,性能更高。Tomcat是一個(gè)開放源代碼、可以運(yùn)行基于Java的應(yīng)用軟件容器。Apache是Tomcat的項(xiàng)目支持,實(shí)際維護(hù)是由社區(qū)的志愿者來(lái)完成的。越來(lái)越多項(xiàng)目利用的是TomcatServer。從戰(zhàn)略上來(lái)講,Sun公司全力支持的Tomcat已經(jīng)算是一個(gè)比較理想化的開發(fā)平臺(tái)了。在公司大力支持支持下,Tomcat能成為一個(gè)Web項(xiàng)目的主流平臺(tái)。2.3MySQL簡(jiǎn)介MySQL是Oracle旗下的一款受人喜愛(ài)的一個(gè)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),MySQL是對(duì)外開發(fā)源代碼的,并且是無(wú)需付費(fèi)即可使用的,MySQL本身優(yōu)化了SQL的查詢算法,使得查詢的速度被大大提高,消耗的資源大大減小。MySQL可以使用權(quán)限控制為不同的用戶設(shè)置不同的權(quán)限來(lái)管理用戶。數(shù)據(jù)庫(kù)角色是使用數(shù)據(jù)庫(kù)用戶集合的稱呼。所以作為數(shù)據(jù)庫(kù)的用戶往往能夠使用數(shù)據(jù)庫(kù)角色的絕大多數(shù)功能。數(shù)據(jù)庫(kù)最經(jīng)常使用的操作便是增刪改查,我們可以根據(jù)需要添加,刪除等數(shù)據(jù)庫(kù)數(shù)據(jù)來(lái)。由此來(lái)管理數(shù)據(jù)庫(kù)的數(shù)據(jù)。3系統(tǒng)的可行性論證及需求分析3.1系統(tǒng)可行性研究可行性分析的總體概況是看項(xiàng)目開發(fā)是否可行,一般從技術(shù)角度、經(jīng)濟(jì)角度、操作方面來(lái)判斷。從上述三個(gè)方面分析,可以大大降低項(xiàng)目開發(fā)的風(fēng)險(xiǎn)。在項(xiàng)目開發(fā)初期,預(yù)測(cè)可能的困難并提出相應(yīng)的解決方案。1.技術(shù)可行性技術(shù)可行性應(yīng)檢查現(xiàn)有技術(shù)條件是否能順利完成開發(fā)工作,軟硬件配置是否滿足開發(fā)需要,本系統(tǒng)采用Dart開發(fā)語(yǔ)言,學(xué)習(xí)成本低,極其容易學(xué)習(xí),調(diào)試簡(jiǎn)單,目前的硬件配置完全可以滿足開發(fā)的需要,所以在技術(shù)上是絕對(duì)可行的。軟件方面:客戶端使用AndroidStudio開發(fā),服務(wù)器使用IntelliJIDEA加Tomcat開發(fā),軟件開發(fā)平臺(tái)是成熟可行的。它們具有速度快、容量大、可靠性高、價(jià)格低廉等特點(diǎn),完全可以滿足系統(tǒng)的需求。2.經(jīng)濟(jì)可行性系統(tǒng)開發(fā)所需的數(shù)據(jù)可以通過(guò)現(xiàn)有的相關(guān)系統(tǒng)進(jìn)行采集,其他應(yīng)用軟硬件系統(tǒng)也很容易獲得。AndroidStudio,IntelliJIDEA和Tomcat等都有免費(fèi)版本,完全可以滿意日常開發(fā)的需要。3.2系統(tǒng)功能需求分析新聞APP主要功能如下簡(jiǎn)述:1、登錄注冊(cè)模塊:關(guān)于使用本系統(tǒng)用戶的個(gè)人基本信息,密碼修改等。2、新聞資訊模塊:主要是新聞資訊的展示和詳情的瀏覽,以及評(píng)論,收藏和分享等。3、視頻瀏覽模塊:主要是對(duì)視頻新聞的展示等。4、新聞發(fā)布模塊:主要是管理員用戶對(duì)新聞資訊的上傳發(fā)布等。4數(shù)據(jù)庫(kù)設(shè)計(jì)4.1系統(tǒng)E-R圖由于顯示信息是根據(jù)具體的數(shù)據(jù)管理模式直接組織的,需要同時(shí)考慮很多因素,設(shè)計(jì)工作非常復(fù)雜,效果也不是很理想,因此需要一種方法,E-R方法是一種實(shí)體關(guān)系方法,其工具是E-R圖,E-R圖由實(shí)體、實(shí)體屬性和實(shí)體關(guān)系三部分組成。新聞APP的各個(gè)實(shí)體的E-R圖如下:用戶實(shí)體包含編號(hào),用戶名,密碼,綁定手機(jī)號(hào),用戶類型E-R圖如圖4-1所示:圖4-1用戶實(shí)體E-R圖分類實(shí)體包含編號(hào),類型名稱E-R圖如圖4-2所示:圖4-2分類實(shí)體E-R圖收藏實(shí)體包含編號(hào),新聞編號(hào),用戶編號(hào)E-R圖如圖4-3所示:圖4-3收藏實(shí)體E-R圖評(píng)論實(shí)體包含編號(hào),用戶名,用戶編號(hào),新聞編號(hào),評(píng)論時(shí)間,評(píng)論內(nèi)容E-R圖如圖4-4所示:圖4-4評(píng)論實(shí)體E-R圖新聞實(shí)體包含編號(hào),新聞縮略圖,新聞標(biāo)題,新聞描述,新聞內(nèi)容,新聞分類名稱,新聞分類編號(hào),新聞分享鏈接E-R圖如圖4-5所示:圖4-5新聞實(shí)體E-R圖版本實(shí)體包含編號(hào),應(yīng)用版本號(hào),應(yīng)用升級(jí)描述,應(yīng)用下載鏈接E-R圖如圖4-6所示:圖4-6版本實(shí)體E-R圖視頻實(shí)體包含編號(hào),視頻標(biāo)題,視頻鏈接,視頻信息E-R圖如圖4-7所示:圖4-7視頻實(shí)體E-R圖圖4-8新聞APP整體E-R圖4.2數(shù)據(jù)庫(kù)表設(shè)計(jì)數(shù)據(jù)庫(kù)技術(shù)的應(yīng)用已經(jīng)成為計(jì)算機(jī)科學(xué)和計(jì)算的重要組成部分,本系統(tǒng)采用MySQL后臺(tái)數(shù)據(jù)庫(kù)。MySQL是Sun公司開發(fā)的一個(gè)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),用于減少打開和關(guān)閉數(shù)據(jù)庫(kù)操作對(duì)性能的影響。數(shù)據(jù)庫(kù)在物理設(shè)備上的存儲(chǔ)結(jié)構(gòu)和訪問(wèn)方法稱為數(shù)據(jù)庫(kù)的物理結(jié)構(gòu),它取決于給定的計(jì)算機(jī)系統(tǒng),為給定的邏輯數(shù)據(jù)模型選擇最合適的物理結(jié)構(gòu),經(jīng)過(guò)上述實(shí)體關(guān)系分析和E-R圖,可以得到新聞APP系統(tǒng)的數(shù)據(jù)庫(kù)表。User表如表4-1所示:表4-1User用戶信息表字段類型備注Idint主鍵User_namevarchar用戶名User_pwdvarchar密碼User_phonevarchar綁定手機(jī)號(hào)User_typevarchar用戶類型Cateory表如表4-2所示:表4-2category分類信息表字段類型備注Idint主鍵Cate_namevarchar類型名稱Collection表如表4-3所示:表4-3collection收藏信息表字段類型備注Idint主鍵User_idint用戶編號(hào)News_idint新聞編號(hào)Commit表如表4-4所示:表4-4comment評(píng)論信息表字段類型備注Idint主鍵User_idint用戶編號(hào)News_idint新聞編號(hào)Contentvarchar評(píng)論內(nèi)容Commit_timedatatime評(píng)論時(shí)間User_namevarchar用戶名 News表如表4-5所示:表4-5news新聞信息表字段類型備注Idint主鍵news_picvarchar新聞縮略圖news_titlevarchar新聞標(biāo)題news_descvarchar新聞描述news_contenttext新聞內(nèi)容news_categoryvarchar新聞分類cate_idint類型編號(hào)news_share_urltext新聞分享鏈接 Version表如表4-6所示表4-6version版本信息表字段類型備注Idint主鍵apk_numvarchar應(yīng)用版本號(hào)apk_descvarchar應(yīng)用升級(jí)描述apk_urlvarchar應(yīng)用下載鏈接 Video表如表4-7所示表4-7video視頻信息表字段類型備注Idint主鍵video_titlevarchar視頻標(biāo)題video_contentvarchar視頻鏈接video_infovarchar視頻信息5系統(tǒng)詳細(xì)設(shè)計(jì)5.1登錄注冊(cè)功能設(shè)計(jì)注冊(cè)界面是系統(tǒng)中較為重要的界面之一,其安全性更為重要,是用戶保證系統(tǒng)安全的通道,在系統(tǒng)設(shè)計(jì)中需要額外的關(guān)注。頁(yè)面的頂部采用的是Stepper(步驟條)來(lái)引導(dǎo)用戶進(jìn)行注冊(cè)。第一步是獲取并驗(yàn)證手機(jī)號(hào),輸入框采用TextFormField(輸入框)來(lái)獲取和校驗(yàn)輸入框的內(nèi)容,驗(yàn)證的方式采用正則表達(dá)式確認(rèn)輸入的內(nèi)容為手機(jī)號(hào),若用戶不填寫手機(jī)號(hào)時(shí)點(diǎn)擊確認(rèn)按鈕,輸入框會(huì)提示錯(cuò)誤。若用戶填寫的是正常的手機(jī)號(hào),點(diǎn)擊確認(rèn)后應(yīng)用會(huì)調(diào)用后臺(tái)的接口查詢?cè)撌謾C(jī)號(hào)是否已經(jīng)被使用,如果未被使用,應(yīng)用會(huì)向該手機(jī)號(hào)發(fā)送一條帶有驗(yàn)證碼的短信,該驗(yàn)證碼是應(yīng)用內(nèi)隨機(jī)生成的。若手機(jī)號(hào)已被利用過(guò),則提醒用戶該手機(jī)號(hào)已存在。用戶進(jìn)入第二步后,標(biāo)題的內(nèi)容是提醒用戶輸入驗(yàn)證碼,用戶可在輸入框內(nèi)輸入短信收到的驗(yàn)證碼,若用戶由于某種原因未獲取到驗(yàn)證碼,亦可點(diǎn)擊輸入框右邊的重新獲取按鈕獲得新的驗(yàn)證碼。輸入框存在著非空校驗(yàn),若不輸入驗(yàn)證碼點(diǎn)擊確定不會(huì)進(jìn)入第三步,若輸入錯(cuò)誤驗(yàn)證碼,則會(huì)提示驗(yàn)證碼錯(cuò)誤。用戶輸入對(duì)應(yīng)的驗(yàn)證碼后點(diǎn)擊確定按鈕會(huì)進(jìn)入第三步。第三步界面上有兩個(gè)輸入框,輸入框內(nèi)提示用戶輸入對(duì)應(yīng)的內(nèi)容,輸入密碼時(shí)采用密文,以此來(lái)保護(hù)用戶隱私,使用戶有更好的體驗(yàn)。用戶輸入用戶名和密碼后點(diǎn)擊確認(rèn)按鈕,應(yīng)用會(huì)調(diào)用后臺(tái)接口查詢?cè)撚脩裘欠褚呀?jīng)存在,若存在則提示該用戶名已存在,若不存在,則會(huì)向數(shù)據(jù)庫(kù)的User表插入一條數(shù)據(jù)。下面是注冊(cè)界面的截圖:圖5-1用戶注冊(cè)截圖具體實(shí)現(xiàn)及相關(guān)代碼:if(_formKeyTel.currentState!=null&& _formKeyTel.currentState.validate()&& _currentIndex==0){ vardata=awaitDioUtil.getDio(ContentValues.CHECK_TEL, queryParameters:{"tel":this._tel}); if(data.toString().isNotEmpty){ showToast("該手機(jī)號(hào)已被注冊(cè)"); return; }else{ SpUtil.setString("tel",this._tel); _smsCode=SmsUtil.randomBit(4); awaitSmsUtil.getMsgCode(_tel,_smsCode); setState((){ _telController.text=_tel; _currentIndex++; }); }}if(_currentIndex==1&&_smsCodeController.text.isNotEmpty){ if(_smsValue==_smsCode){ //驗(yàn)證碼輸入正確 setState((){ _smsCodeController.text=""; _currentIndex++; }); }else{ //驗(yàn)證碼輸入錯(cuò)誤 showToast("驗(yàn)證碼輸入錯(cuò)誤"); }}登錄界面亦是系統(tǒng)中較為重要的界面之一,其安全性同樣重要。登錄界面整體采用上下結(jié)構(gòu),頂部是登錄標(biāo)題,右側(cè)的”X”是退出按鈕,點(diǎn)擊該按鈕后應(yīng)用會(huì)退出,直接返回桌面。往下分別是用戶名和密碼的輸入框,其中密碼的輸入框?yàn)槊芪?。再往下分別是忘記密碼按鈕和記住密碼多選框,若用戶忘記密碼可點(diǎn)擊忘記密碼進(jìn)行重置密碼操作,當(dāng)勾選記住密碼登錄后,下次登錄界面會(huì)出現(xiàn)上次登錄的用戶名和密碼。下面的登錄按鈕采用的是藍(lán)色背景加圓角,使界面更加有親和力。登錄按鈕下面的注冊(cè)按鈕,采用白色背景藍(lán)色邊框以及圓角,登錄按鈕和注冊(cè)按鈕形成鮮明的對(duì)比,強(qiáng)調(diào)按鈕的提示功能,有效減少用戶的失誤操作次數(shù)。點(diǎn)擊登錄按鈕后,程序會(huì)獲取用戶名輸入框和密碼輸入框的內(nèi)容若通過(guò)校驗(yàn),則會(huì)調(diào)用后臺(tái)接口進(jìn)行驗(yàn)證,若驗(yàn)證通過(guò)則跳轉(zhuǎn)至主頁(yè)面,并將用戶信息通過(guò)鍵值對(duì)存儲(chǔ)在內(nèi)存中以便后續(xù)使用,若驗(yàn)證不通過(guò)則提示用戶名或密碼錯(cuò)誤。點(diǎn)擊注冊(cè)按鈕后界面會(huì)跳轉(zhuǎn)至注冊(cè)界面。登錄界面如圖5-2所示:圖5-2用戶登錄截圖具體實(shí)現(xiàn)及相關(guān)代碼:Padding( padding:EdgeInsets.only( left:ScreenUtil().setWidth(40),right:ScreenUtil().setWidth(40)), child:ListView( children:<Widget>[ Padding( padding:EdgeInsets.only( top:ScreenUtil().setWidth(20), ), child:formTextField(), ), SizedBox(height:ScreenUtil().setHeight(20)), secondWidget(), SizedBox( height:ScreenUtil().setHeight(50), ), loginBtn(), SizedBox( height:ScreenUtil().setHeight(30), ), registerBtn() ], ),5.2新聞資訊和詳情功能功能設(shè)計(jì)新聞資訊界面即為主頁(yè)面。是整個(gè)系統(tǒng)的根本,整體采用藍(lán)色風(fēng)格,最頂部使醒目的新聞標(biāo)題,往下便是標(biāo)題欄,其中標(biāo)題欄的內(nèi)容是從后臺(tái)接口中獲取的動(dòng)態(tài)數(shù)據(jù)。每個(gè)標(biāo)題下都對(duì)應(yīng)著該分類下的新聞?lì)愋汀5谝粰谙率禽啿D加列表,其中輪播圖使用的是flutter_swiper插件,該插件與Android中的第三方庫(kù)Banner相似。輪播圖顯示了指示器并且自動(dòng)無(wú)線翻頁(yè)。新聞列表數(shù)據(jù)從后臺(tái)獲取并展示,每個(gè)條目由圖片,標(biāo)題和描述組成,標(biāo)題最多顯示一行,多余的部分會(huì)用省略號(hào)代替。描述至多容納下兩行,剩余的部分會(huì)表現(xiàn)為省略號(hào)。新聞資訊如圖5-3所示:圖5-3新聞資訊截圖在該頁(yè)面向下拉,會(huì)出現(xiàn)下拉刷新指示器,向上拉會(huì)出現(xiàn)上拉加載更多的提示,若沒(méi)有更多的新聞資訊會(huì)提示“沒(méi)有更多了”。新聞資訊加載更多如圖5-4所示:圖5-4新聞資訊加載更多截圖具體實(shí)現(xiàn)及相關(guān)代碼:TabBarView(controller:_tabController,children:[ EasyRefresh( header:MaterialHeader(), controller:_easyRefreshController, child:_firstBody(headNewsList), onRefresh:()async{ _getFirstBodyData(1,1,headNewsList.length??10); }, onLoad:()async{ intcount=await_getFirstBodyData(1,++headPageNum,10, more:true); if(count==0){ showToast("沒(méi)有更多了"); } }),],)點(diǎn)擊某個(gè)新聞條目后會(huì)跳轉(zhuǎn)至新聞詳情頁(yè)面。新聞詳情由HTML渲染,渲染HTML使用的是flutter_html插件,該插件可解析大部分HTML標(biāo)簽。新聞詳情頁(yè)面如圖5-5所示:圖5-5新聞詳情截圖具體實(shí)現(xiàn)及相關(guān)代碼:Stack(children:<Widget>[ ListView( children:<Widget>[ Html(data:""" ${widget.arguments['content']} """), SizedBox( height:ScreenAdapter.height(30), ), Container( height:ScreenAdapter.height(50), color:Colors.grey, padding:EdgeInsets.only(left:10), child:Text('評(píng)論', style:TextStyle(fontSize:ScreenAdapter.size(30))), ), ListView.builder( itemCount:commentList.length??0, itemBuilder:(context,index){ returnColumn( children:<Widget>[ ListTile( title:Text('${commentList[index].userName}'), subtitle:Text('${commentList[index].content}'), trailing:Text('${commentList[index].commitTime}', style:TextStyle(color:Colors.grey)), ), Divider(height:1) ], ); }, shrinkWrap:true, physics:NeverScrollableScrollPhysics(), ), Container( height:ScreenAdapter.height(120)), ],)5.3新聞評(píng)論分享和收藏功能設(shè)計(jì)該頁(yè)面底部有三個(gè)常駐控件組成,分別是寫評(píng)論按鈕,收藏按鈕,分享按鈕。點(diǎn)擊評(píng)論按鈕后會(huì)彈起一個(gè)BottomSheet,其中左側(cè)是輸入框,用于輸入評(píng)論,右側(cè)是發(fā)送按鈕,輸入評(píng)論后點(diǎn)擊發(fā)送按鈕,發(fā)送按鈕進(jìn)行非空校驗(yàn)后調(diào)用評(píng)論接口并刷新評(píng)論,成功評(píng)論后會(huì)提示評(píng)論成功,將新聞詳情頁(yè)面滑動(dòng)到最底部可看見(jiàn)當(dāng)前新聞的所有評(píng)論,評(píng)論由時(shí)間倒序排列,評(píng)論列表同時(shí)顯示評(píng)論人的用戶名和評(píng)論內(nèi)容以及評(píng)論時(shí)間。新聞評(píng)論如圖5-6所示:圖5-6新聞評(píng)論截圖具體實(shí)現(xiàn)及相關(guān)代碼:Container( padding:EdgeInsets.fromLTRB( ScreenAdapter.width(20), ScreenAdapter.height(5), ScreenAdapter.height(20), ScreenAdapter.height(10), ), height:ScreenAdapter.height(60), width:ScreenAdapter.width(300), decoration:BoxDecoration( borderRadius:BorderRadius.circular(32), border: Border.all(color:Colors.grey,width:1)), child:Text('寫評(píng)論', style:TextStyle(color:Colors.grey)), ) 用戶點(diǎn)擊收藏按鈕后會(huì)將當(dāng)前頁(yè)面收藏,同時(shí)收藏按鈕會(huì)亮起并提示收藏成功,收藏的新聞可以在個(gè)人中心頁(yè)面我的收藏中找到。用戶點(diǎn)擊分享按鈕后會(huì)彈起可分享的選項(xiàng),用戶可選擇合適的途徑分享新聞的鏈接。新聞收藏如圖5-7所示:圖5-7新聞收藏截圖具體實(shí)現(xiàn)及相關(guān)代碼:IconButton(splashColor:Colors.white,highlightColor:Colors.white,color:isConllected?Colors.yellow:Colors.grey,tooltip:"收藏",icon:Icon(Icons.star),onPressed:()async{ try{ if(isConllected){ await_getConllectionInfo( ContentValues.DELETE_CONNECTED_URL);//刪除 showToast("取消收藏成功"); }else{ await_getConllectionInfo( ContentValues.INSERT_CONNECTED_URL);//新增 showToast("收藏成功"); } await_getConllectionInfo( ContentValues.CONNECTED_URL); }catch(e){ print(e); }//獲取當(dāng)前用戶是否已經(jīng)收藏該新聞}),IconButton(splashColor:Colors.white,highlightColor:Colors.white,color:Colors.grey,tooltip:"分享",icon:Icon(Icons.share),onPressed:(){ Share.share( '熱點(diǎn)新聞:${widget.arguments['news_share_url']}');})5.4自動(dòng)更新和手動(dòng)更新功能功能設(shè)計(jì)用戶打開應(yīng)用時(shí),應(yīng)用自動(dòng)檢車是否需要更新,即將當(dāng)前應(yīng)用的版本號(hào)與服務(wù)器最新版本號(hào)對(duì)比是否相等,若相等則正常進(jìn)入登陸頁(yè)面,若不相等則提示更新信息,用戶可根據(jù)需要是否更新。同時(shí),用戶可以點(diǎn)擊個(gè)人中心頁(yè)面中檢查版本條目來(lái)手動(dòng)更新。自動(dòng)更新如圖5-8所示,手動(dòng)更新如圖5-9所示:圖5-8自動(dòng)更新截圖 圖5-9手動(dòng)更新截圖具體實(shí)現(xiàn)及相關(guān)代碼:_checkVersion()async{ print('開始檢查版本信息'); try{ vardata=awaitDioUtil.getDio(ContentValues.LASTEST_VERSION); //最新版的版本對(duì)象 VersionModelmodel=VersionModel.fromJson(data); PackageInfopackageInfo=awaitPackageInfo.fromPlatform(); Stringversion=packageInfo.version; if(model.apkNum!=version){ AlertDialogWidget.showAlertDialog(context, title:"發(fā)現(xiàn)新版本", content:model.apkDesc, leftText:"立即更新", rightText:"下次再說(shuō)",leftPressed:(){ _updateNow(model.apkUrl,"hotnews4.apk"); },rightPressed:(){ Navigator.pop(context); Navigator.pushReplacementNamed(context,'/login'); }); }else{ Navigator.pushNamedAndRemoveUntil( context,'/login',(Route<dynamic>route)=>false); } }catch(e){ print('請(qǐng)求異常'); showToast("服務(wù)器連接異常"); }}5.5切換賬號(hào)和修改個(gè)人密碼功能設(shè)計(jì)用戶將底部導(dǎo)航切換到“我的”時(shí),會(huì)出現(xiàn)與個(gè)人信息相關(guān)的列表,點(diǎn)擊切換賬號(hào)時(shí)會(huì)提示對(duì)話框進(jìn)行確認(rèn)退出登錄,切換賬號(hào)如圖5-10所示。點(diǎn)擊重置密碼時(shí)會(huì)跳轉(zhuǎn)到重置密碼頁(yè)面,輸入手機(jī)號(hào)后獲取并輸入正確的驗(yàn)證碼即可修改成為輸入的新密碼,重置密碼如圖5-11所示。圖5-10切換賬號(hào)截圖圖5-11重置密碼截圖具體實(shí)現(xiàn)及相關(guān)代碼:AlertDialog( title:Text('切換賬號(hào)'), content:Text('是否要退出當(dāng)前賬號(hào)前往登錄頁(yè)面'), actions:<Widget>[ FlatButton( onPressed:(){ Navigator.pushNamedAndRemoveUntil(context, '/login',(Route<dynamic>route)=>false); }, child:Text('確定')), FlatButton( onPressed:(){ Navigator.pop(context); }, child:Text('取消')) ], ) void_checkInfo()async{if(_inputCode!=_smsCode){showToast("驗(yàn)證碼錯(cuò)誤");}else{vardata=awaitDioUtil.getDio(ContentValues.UPDATE_PWD_BY_TEL,queryParameters:{"tel":_tel,"pwd":_newPwd});if(data){showToast("修改成功");Navigator.pop(context);}else{showToast("修改失敗");}}}else{showToast("請(qǐng)輸入正確信息");}5.6視頻播放功能設(shè)計(jì)用戶將底部導(dǎo)航切換到“視頻”時(shí),會(huì)出現(xiàn)與視頻列表。視頻列表由視頻和視頻標(biāo)題組成。視頻播放器支持播放,暫停,設(shè)置音量,拖動(dòng)進(jìn)度和橫屏觀看。視頻列表使用了分頁(yè)加載,每次加載兩個(gè)視頻。視頻播放頁(yè)面如圖5-11所示。圖5-11視頻播放頁(yè)面截圖具體實(shí)現(xiàn)及相關(guān)代碼:_getVideoData(intnum,intsize,{boolloadMore=false})async{vardata=awaitDioUtil.getDio(ContentValues.VIDEO_URL,queryParameters:{"pageNum":num,"pageSize":size});ResultVideovideo=ResultVideo.fromJson(data);if(loadMore){setState((){videoList.addAll(video.data);for(VideoModelvinvideo.data){print(v.videoContent);VideoPlayerControllervideoPlayerController=VideoPlayerCwork(v.videoContent);setState((){videoPlayerControllerList.add(videoPlayerController);});}});}returnvideo.data.length??0;})5.7管理員發(fā)布新聞和視頻功能設(shè)計(jì)管理員用戶登錄后將底部導(dǎo)航切換到“我的”時(shí),個(gè)人信息列表會(huì)出現(xiàn)“上傳發(fā)布”選項(xiàng),點(diǎn)擊后管理員用戶可以選擇發(fā)布視頻或發(fā)布新聞,當(dāng)填寫完回應(yīng)的信息后點(diǎn)擊發(fā)布按鈕即可上傳數(shù)據(jù)。發(fā)布視頻頁(yè)面如圖5-12所示,發(fā)布新聞如圖5-13所示:圖5-12發(fā)布視頻頁(yè)面截圖圖5-13發(fā)布新聞頁(yè)面截圖具體實(shí)現(xiàn)及相關(guān)代碼:_uploadVideo( Stringtitle,Stringdesc,Stringcontent,StringcategoryId)async{ try{ FormDataformData=FormData.fromMap({ "title":title, "desc":desc, "content":content, "categoryId":categoryId, "upload":awaitMultipartFile.fromFile(_image.path) }); varresult=awaitDio().post(ContentValues.UPLOAD_NEWS_URL, data:formData,onSendProgress:(intcount,inttotal){ setState((){ _value=count.toDouble()/total.toDouble(); }); }); returnresult.data; }catch(e){ showToast("請(qǐng)求異常,請(qǐng)重試"); setState((){ _enable=true; _value=0; }); }})6系統(tǒng)測(cè)試軟件測(cè)試的目的,首先是確認(rèn)Android新聞客戶端是否能運(yùn)行,其中一個(gè)方面是確認(rèn)軟件是否完成了這些功能的設(shè)計(jì)。第二是提供信息,如提供反饋信息,看看上述哪些步驟可以精簡(jiǎn),科技改進(jìn)。第三是測(cè)試新聞客戶端本身,而且還包括整個(gè)開發(fā)過(guò)程。如果這個(gè)新聞客戶端的開發(fā)完成后有很多問(wèn)題,那就顯示出這個(gè)開發(fā)過(guò)程有漏洞。 將真機(jī)連接上AndroidStudio并點(diǎn)擊啟動(dòng)按鈕來(lái)啟動(dòng)應(yīng)用,等待片刻后應(yīng)用安裝完成并自動(dòng)啟動(dòng)。首先加載閃屏頁(yè)如圖6-1所示圖6-1閃屏頁(yè)截圖點(diǎn)擊注冊(cè)按鈕,填寫注冊(cè)信息后成功登錄,進(jìn)入主頁(yè)面,具體效果如圖6-2所示:圖6-1閃屏頁(yè)截圖 上拉刷新和下拉加載更多新增的數(shù)據(jù)顯示正常,點(diǎn)擊視頻導(dǎo)航可查看視頻列表,點(diǎn)擊播放可正常播放視頻,點(diǎn)擊我的導(dǎo)航可以正常使用功能。經(jīng)過(guò)一系列測(cè)試,本新聞客戶端軟件基本完成了預(yù)期的功能,系統(tǒng)的穩(wěn)定性也較好。7結(jié)論新聞APP作為新興媒介的出現(xiàn),以及成為人們閱讀新聞的重要途徑。新聞?lì)怉PP的興起也給現(xiàn)代人的生活增添了許多色彩。大多數(shù)人選擇足不出戶就能了解到各種時(shí)事新聞。本項(xiàng)目就是做到了讓用戶方便、快捷的閱讀新聞資訊,是一款能為用戶提供一個(gè)隨時(shí)隨地獲取資訊的移動(dòng)平臺(tái),能滿足使用者個(gè)性化的需求的高端手機(jī)新聞?lì)愜浖?。參考文獻(xiàn)[1]劉豐年.

手機(jī)新聞直播客戶端的設(shè)計(jì)與實(shí)現(xiàn)[J].安徽電子信息職業(yè)技術(shù)學(xué)院學(xué)報(bào),2018(02)[2]黨君.

移動(dòng)新聞客戶端的用戶體驗(yàn)分析[J].

編輯之友,2015(09)[3]胡慶平等.移動(dòng)新聞客戶端用戶采納影響因素研究[J].云南財(cái)經(jīng)大學(xué)學(xué)報(bào).,2015(04)[4]程麗蓉等.移動(dòng)客戶端對(duì)于新聞媒體發(fā)展的利弊分析[J].

編輯之友,2016(06)[5]梅從圣等.基于Android系統(tǒng)的記賬軟件的設(shè)計(jì)與實(shí)現(xiàn)[J].納稅,2018(05).[6]祁麟.Android軟件開發(fā)關(guān)鍵性問(wèn)題探析[J].中國(guó)設(shè)備工程,2019(14).[7]宋小明等.基于安卓的掌上校園客戶端設(shè)計(jì)初探[J].信息與電腦(理論版),2014(10).[8]陳澤恩.Android校園網(wǎng)移動(dòng)客戶端的設(shè)計(jì)及實(shí)現(xiàn)探索[J].中國(guó)新通信,2013(12).[9]胡永華等.移動(dòng)校園新聞客戶端的設(shè)計(jì)與實(shí)現(xiàn)[J].信息通信,2015(01).[10]郝杰忠.Java實(shí)例項(xiàng)目開發(fā)[M].北京:機(jī)械工業(yè)出版社,20

溫馨提示

  • 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)論