版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、基于Android平臺(tái)的新聞客戶端的設(shè)計(jì)與實(shí)現(xiàn)摘 要 隨著智能手機(jī)世界范圍內(nèi)的迅速發(fā)展,智能手機(jī)的操作系統(tǒng)之間的競(jìng)爭(zhēng)也是越來越激烈。為了讓智能手機(jī)用戶能夠十分便利地了解當(dāng)前世界的實(shí)時(shí)資訊,一種高效的辦法就是將查看新聞的功能拓展到手機(jī)終端上。因此,開發(fā)出一款智能手機(jī)的新聞客戶端將有廣闊的前景。 本文是基于android操作系統(tǒng),開發(fā)出一款android手機(jī)新聞客戶端應(yīng)用程序,通過工具Eclipse編寫邏輯代碼,Apache Tomcat6.0作為應(yīng)用程序的服務(wù)器,根據(jù)數(shù)據(jù)量的要求,采用Mysql數(shù)據(jù)庫處理數(shù)據(jù),三者共同作用開發(fā)出的android新聞客戶端手機(jī)軟件。 本文在分析Android系統(tǒng)軟
2、件開發(fā)原理的技術(shù)層面上,開發(fā)出能為用戶提供更人性化、更方便的基于Android手機(jī)新聞客戶端軟件。通過實(shí)踐與測(cè)試,本文所述的原理和方法能夠完成設(shè)計(jì)所需要的功能?!娟P(guān)鍵詞】 Android;新聞客戶端軟件;智能手機(jī)操作系統(tǒng)IDesign and Realization of Android Client Based on The News Abstract With the rapid development of smart phones worldwide, competition between smartphone operating system is also more intens
3、e. To allow smartphone users to real-time information is very convenient to understand the current world, an efficient approach is to view the news feature to expand to the mobile terminals. Therefore, the development of a smart phone news client will have broad prospects. This article is based on a
4、ndroid operating system, developed an android phone news client application logic code by writing tools Eclipse, Apache Tomcat6.0 as a server application, according to the amount of data required to process data using Mysql database , combined action developed a android phone news client software. T
5、his paper analyzes the Android system in principle the technical aspects of software development, the development could provide a more humane, more convenient mobile operating system based on Android news client software for users. Through practice and testing, principles and methods described herei
6、n can achieve the required functional design.【Key words】 Android;News Client Software;Smartphone operating systemsII目 錄1 緒 論11.1 研究?jī)?nèi)容11.2 研究意義11.3 研究現(xiàn)狀和發(fā)展趨勢(shì)12 系統(tǒng)分析與環(huán)境搭建22.1 研究目標(biāo)22.2 可行性分析22.3 需求分析32.4 性能分析32.5 開發(fā)環(huán)境的搭建3 2.5.1 Java環(huán)境配置3 2.5.2 Eclipse的安裝3 2.5.3 Eclipse Standard的安裝3 2.5.4 Tomcat服務(wù)器的安裝3
7、2.5.5 Mysql數(shù)據(jù)庫的安裝33 系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)43.1 軟件流程4 3.1.1 模塊設(shè)計(jì)4 3.1.2 功能設(shè)計(jì)53.3 用戶界面設(shè)計(jì)53.4 數(shù)據(jù)庫設(shè)計(jì)63.5 軟件的實(shí)現(xiàn)8 3.5.1 文件結(jié)構(gòu)與說明8 3.5.2 具體實(shí)現(xiàn)114 系統(tǒng)測(cè)試174.1 軟件的測(cè)試174.2 測(cè)試結(jié)果及說明175 總結(jié)與展望21 5.1 總結(jié)21 5.2 展望21參考文獻(xiàn)22致 謝23附 錄A24IV1緒論1.1 研究?jī)?nèi)容 Android應(yīng)用平臺(tái)新聞客戶端軟件是基于Android手機(jī)平臺(tái),采用Java語言,從網(wǎng)絡(luò)上的開放的新聞接口獲取數(shù)據(jù),設(shè)計(jì)出針對(duì)使用Android平臺(tái)的手機(jī)新聞客戶端資訊實(shí)時(shí)掌控的
8、手機(jī)應(yīng)用程序。1.2 研究意義 Android平臺(tái)新聞客戶端軟件的開發(fā)可以進(jìn)一步擴(kuò)大時(shí)事新聞的覆蓋面,讓廣大公眾能夠隨時(shí)隨地方便且快捷地獲取最新的新聞資訊信息,了解新聞時(shí)事,本軟件的廣泛使用,尤其是在傳授知識(shí)、普及教育方面起著非常重要的作用。1.3 研究現(xiàn)狀和發(fā)展趨勢(shì) 目前市場(chǎng)研究機(jī)構(gòu)Worldpanel發(fā)布了全球主要的國家智能手機(jī)操作系統(tǒng)在去年Q4內(nèi)的分布報(bào)告,報(bào)告指出了谷歌的Android繼續(xù)保持著增長(zhǎng)的勢(shì)態(tài),但是增幅已經(jīng)明顯放緩了。而在另一個(gè)方面,蘋果iOS操作系統(tǒng)在全球只能手機(jī)市場(chǎng)上均有下滑,個(gè)別國家的降幅甚至高達(dá)10.3%。最新統(tǒng)計(jì)數(shù)據(jù)中顯示,Android操作系統(tǒng)將繼續(xù)領(lǐng)跑全球市場(chǎng)
9、,包括美國、澳大利亞、中國、意大利、英國、德國、西班牙等所占的市場(chǎng)比例都已經(jīng)超出50%,并且還將繼續(xù)呈現(xiàn)上漲的趨勢(shì)。而在蘋果iOS操作系統(tǒng)方面,最大的市場(chǎng)份額所占比的國家依舊是美國,數(shù)值為43.9%;緊隨美國的則是澳大利亞,數(shù)值為35.2%;而在中國方面,市場(chǎng)份額也從21.2%下降到了19%;在意大利,iOS所占的市場(chǎng)份額更是從23.1%猛降至12.8%1。 從上面的數(shù)據(jù)可以看出,Android手機(jī)軟件的開發(fā)具有巨大的發(fā)展前景,在Android系統(tǒng)上開發(fā)出一款手機(jī)新聞客戶端軟件所支持的用戶量也是相比較于其他系統(tǒng)多出很多的。 谷歌的移動(dòng)平臺(tái)主管安迪魯賓(Andy Rubin)表示,跟軟件開發(fā)合作
10、對(duì)象的密切接觸正在進(jìn)行中。Google與開放手機(jī)聯(lián)盟聯(lián)合開發(fā)了 Android操作系統(tǒng),這個(gè)聯(lián)盟由摩托羅拉、高通、宏達(dá)電、中國移動(dòng)和 T-Mobile 等在內(nèi)的多家無線應(yīng)用和技術(shù)的領(lǐng)軍企業(yè)組成。Google通過與設(shè)備制造商、開發(fā)商、運(yùn)營商和其他有關(guān)各方結(jié)成深層次的合作關(guān)系,希望借助建立開放式、標(biāo)準(zhǔn)化的移動(dòng)移動(dòng)電話軟件平臺(tái),在移動(dòng)產(chǎn)業(yè)內(nèi)形成一個(gè)開放性的生態(tài)系統(tǒng),這將是開發(fā)Android軟件的一個(gè)契機(jī),Android平臺(tái)的開發(fā)在將來必定大放異彩2。12 系統(tǒng)分析與環(huán)境搭建2.1 研究目標(biāo) 1)了解Android應(yīng)用的設(shè)計(jì)和開發(fā)過程; 2)使用多種組件進(jìn)行Android 平臺(tái)新聞軟件的開發(fā)。本款手機(jī)
11、新聞客戶端軟件是采用java語言編寫,基于Eclipse的開發(fā)平臺(tái),連接網(wǎng)絡(luò)新聞數(shù)據(jù)接口,開發(fā)出了針對(duì)Android平臺(tái)的新聞客戶端手機(jī)軟件。2.2 可行性分析開發(fā)任何一個(gè)基于手機(jī)的應(yīng)用程序,都會(huì)受到資源和時(shí)間上的限制。因此,在接收任何一個(gè)應(yīng)用程序發(fā)任務(wù)之前,必須根據(jù)用戶可能提供的資源和時(shí)間條件進(jìn)行可行性分析,旨在減少項(xiàng)目開發(fā)風(fēng)險(xiǎn),避免人力、財(cái)力和物力的浪費(fèi)。風(fēng)險(xiǎn)分析與可行性分析在很多方面是相互關(guān)聯(lián)的,項(xiàng)目的風(fēng)險(xiǎn)越大,開發(fā)質(zhì)量高的軟件的可行性的幾率就越小。 1)經(jīng)濟(jì)可行性采用的手機(jī)數(shù)據(jù)流量作為通信手段,當(dāng)今通信技術(shù)的迅速發(fā)展,2G的運(yùn)營商的GSM網(wǎng)絡(luò)已經(jīng)逐漸被當(dāng)今的3G、甚至是4G所取代,數(shù)據(jù)
12、流量的資費(fèi)也越來越低,而且現(xiàn)在很多手機(jī)都可連接無線wifi, 實(shí)現(xiàn)數(shù)據(jù)流量0資費(fèi),大大加強(qiáng)了本新聞閱讀軟件的經(jīng)濟(jì)可行性。 2)技術(shù)可行性開發(fā)一個(gè)新聞客戶端軟件,用到的技術(shù)不會(huì)十分復(fù)雜,用到最多的就是客戶端與服務(wù)端的數(shù)據(jù)交換時(shí)所用到的servlet及常見的數(shù)據(jù)庫技術(shù),android系統(tǒng)下的解析json數(shù)據(jù)以及UI的設(shè)計(jì),經(jīng)查閱相關(guān)資料是可以實(shí)現(xiàn)的。2.3 需求分析 啟動(dòng)程序后可以進(jìn)行新聞資訊的實(shí)時(shí)更新,可分不同的欄目讓使用者了解任意感興趣的資訊進(jìn)行閱讀,同時(shí),能對(duì)感興趣的新聞資訊發(fā)表自己的意見,進(jìn)行評(píng)論,其他用戶也能看見別人發(fā)表的評(píng)論,從而進(jìn)行互動(dòng)交流,增強(qiáng)用戶的體驗(yàn)感,用戶能通過下拉新聞列表,
13、方便于操作。從上面的描述中可以基本了解軟件的功能需求: 1)啟動(dòng)應(yīng)用程序; 2)設(shè)置界面:采用多種布局嵌套,美化控件。 3)顯示界面:模仿網(wǎng)易新聞客戶端進(jìn)行UI編寫。 4)詳細(xì)界面:分為頭條、推薦、娛樂、體育、財(cái)經(jīng)、科技、游戲等板塊。22.4 性能分析從用戶的角度出發(fā),針對(duì)用戶的需求,所涉及的程序響應(yīng)速度快、信息處理速度快、安全性高是用戶所需要的三大主要性能2,另外為了受眾面更廣,根據(jù)目前的android設(shè)備系統(tǒng)版本的分布情況,android2.3以上的版本占到設(shè)備總量的80%以上,所以做開發(fā)的時(shí)候選擇的android系統(tǒng)最低版本也必須是android2.3以上來保證用戶量。2.5 開發(fā)環(huán)境的
14、搭建2.5.1 Java環(huán)境配置采用jdk的版本是jdk1.6,目前jdk版本最高的是jdk1.7,但是為了程序的穩(wěn)定性,還是采用已經(jīng)穩(wěn)定成熟的版本作為開發(fā)工具。從Oracle公司下載 jdk1.6之后安裝,由于本機(jī)的開發(fā)系統(tǒng)是win8的64位操作系統(tǒng),選擇下載64為jdk,然后按照安裝步驟一步一步next,jdk就安裝完成了,然后配置環(huán)境java的環(huán)境變量,整個(gè)jdk的過程就完成了。2.5.2 Eclipse的安裝從Eclipse官網(wǎng)/downloads/下載Eclipse3.2,根據(jù)系統(tǒng)下載相應(yīng)的Eclipse版本,點(diǎn)擊解壓縮就行了,然后啟動(dòng)ecl
15、ipse.exe就行了。值得注意的是Eclipse的bit數(shù)要與jdk的一致,就是說jdk如果是32位的,Eclipse也要是32位的。2.5.3Eclipse Standard 4.3.2的安裝Eclipse Standard 4.3.2版本用來做服務(wù)器端程序,方法與Eclipse的方法類似。2.5.4 Tomcat服務(wù)器的安裝從下載tomcat6.0作為的服務(wù)器,下載好文件后開始安裝,點(diǎn)擊下一步,在安裝過程中會(huì)提示設(shè)置默認(rèn)的服務(wù)器端口號(hào),若是不做修改默認(rèn)為8080,建議不要修改,安裝完成。在Eclipse for JavaEE建立服務(wù)器工程的時(shí)
16、候選擇剛剛安裝的tomcat作為服務(wù)器就行了。2.5.5 安裝Mysql數(shù)據(jù)庫現(xiàn)如今有很多種類的數(shù)據(jù)庫,如oracle、sqlserver、mysql、access等等很多種,但是在選擇的時(shí)候也有考究,本設(shè)計(jì)的開發(fā)涉及到的數(shù)據(jù)并不是很多所以選擇一種輕量級(jí)的數(shù)據(jù)mysql3。3 系統(tǒng)設(shè)計(jì)3.1 系統(tǒng)流程3.1.1 模塊設(shè)計(jì)軟件分為了兩大模塊,分別是新聞客戶端模塊和服務(wù)器模塊。圖形解析能夠清楚的看出程序的功能與流程,下圖3-1是手機(jī)客戶端流程圖: 新聞界面詳細(xì)界面服務(wù)器接收指令接收服務(wù)器的數(shù)據(jù)評(píng)論界面顯示在界面圖3-1 手機(jī)客戶端流程圖如下圖圖3-2所示的是服務(wù)器端的流程圖:客戶端服務(wù)器接收指令生
17、成sql語句調(diào)用sql類返回結(jié)果數(shù)據(jù)庫操作圖3-2 服務(wù)器流程圖3.1.2 功能設(shè)計(jì)手機(jī)客戶端模塊功能結(jié)構(gòu)如下圖所示3-3: 新聞客戶端 新聞內(nèi)容管理游戲科技時(shí)尚財(cái)經(jīng)娛樂體育推薦頭條詳細(xì)內(nèi)容管理 評(píng)論管理 圖3-3 客戶端功能結(jié)構(gòu)圖服務(wù)器端模塊功能結(jié)構(gòu)如下圖3-4所示:數(shù)據(jù)庫配置數(shù)據(jù)轉(zhuǎn)換工具數(shù)據(jù)解析配置數(shù)據(jù)交互管理數(shù)據(jù)模型配置 服務(wù)器端 圖3-4 服務(wù)器端功能結(jié)構(gòu)圖3.3 用戶界面設(shè)計(jì)根據(jù)需求分析可知, 應(yīng)用程序應(yīng)包含三個(gè)主要的用戶界面,這里要進(jìn)一步分析每個(gè)用戶界面中應(yīng)該包括哪些顯示內(nèi)容。1)在“新聞概況頁面”中,需要顯示得是各類新聞的的欄目頭,然后在選擇欄目頭時(shí)選擇相應(yīng)的新聞資訊信息顯示在當(dāng)
18、前的欄目頭下,資訊信息以一個(gè)ListView的形式展示在界面上,用戶可拖動(dòng)獲得內(nèi)容,并在滑到最后一個(gè)內(nèi)容時(shí)有一個(gè)加載更多的按鈕,用戶點(diǎn)擊之后可以獲得更多內(nèi)容。2)在“詳細(xì)新聞頁面”中,用戶在點(diǎn)擊了一條新聞之后,可以進(jìn)入詳細(xì)新聞界面,在界面中會(huì)展示當(dāng)前所點(diǎn)擊新聞的標(biāo)題、發(fā)表時(shí)間、作者以及評(píng)論條數(shù),在點(diǎn)擊新聞詳細(xì)內(nèi)容的區(qū)域向兩邊滑動(dòng)的時(shí)候還能顯示上一條新聞和下一條新聞,方便操作,不需要返回上一個(gè)界面之后才能閱讀上一條或者下一條。3)在“新聞評(píng)論頁面”中,此頁面展示的信息就比較簡(jiǎn)單了,根據(jù)時(shí)間的排列顯示相應(yīng)新聞的評(píng)論內(nèi)容,一條內(nèi)容包含的信息有,用戶所在的省份,發(fā)表的時(shí)間以及評(píng)論的內(nèi)容,在發(fā)表評(píng)論的編
19、輯框會(huì)默認(rèn)提示用戶“請(qǐng)文明發(fā)表言論”。下圖就是根據(jù)對(duì)新聞界面顯示內(nèi)容的分析,繪制出用戶界面的草圖。 圖3-5用戶界面草圖3.4 數(shù)據(jù)庫設(shè)計(jì) 本軟件是一個(gè)需要存儲(chǔ)很多新聞資訊信息的程序,其中包括新聞的閱讀和用戶的評(píng)論信息,這些數(shù)據(jù)都是要從數(shù)據(jù)庫中查詢而來的并不是緩存的數(shù)據(jù),所以少不了使用數(shù)據(jù)庫,其中數(shù)據(jù)庫為我們管理數(shù)據(jù)提供方便,Mysql數(shù)據(jù)庫使用方便、易懂。如下圖3-6所示的是新聞欄目的E-R圖:新聞欄目 編號(hào) 序列 標(biāo)題圖3-6 新聞欄目E-R圖 如下圖3-7所示的是新聞詳細(xì)內(nèi)容的E-R圖: 欄目編號(hào)新聞編號(hào) 標(biāo)題新聞欄目 內(nèi)容來源 序列 評(píng)論數(shù)量 編號(hào) 摘要圖3-7 新聞詳細(xì)內(nèi)容E-R圖
20、如下圖3-8所示的是新聞評(píng)論的E-R圖:新聞編號(hào) 欄目編號(hào)新聞欄目 地區(qū) 評(píng)論時(shí)間 評(píng)論內(nèi)容 圖3-8 新聞評(píng)論內(nèi)容E-R圖 本軟件中有三張表的數(shù)據(jù)需要存儲(chǔ),因此在MySql中分別建立三張表。新聞?lì)悇e分類表t_category,新聞評(píng)論表t_comment,新聞內(nèi)容表t_news。三張表分別如下表所示:表3.1 新聞?lì)悇e分類表t_category的結(jié)構(gòu)屬性數(shù)據(jù)類型說明cidinteger分類編號(hào),自動(dòng)增加的主鍵titleString分類名稱sequncetext序列表3.2 顯示新聞評(píng)論表t_comment的結(jié)構(gòu)屬性數(shù)據(jù)類型說明cidinteger評(píng)論編號(hào),自動(dòng)增長(zhǎng)nidinteger新聞編號(hào)
21、ptimeString評(píng)論的日期regionString發(fā)布人地區(qū)(默認(rèn)為未知地區(qū))contentString評(píng)論內(nèi)容續(xù)表3.2 顯示新聞評(píng)論表t_comment的結(jié)構(gòu)supportcountString支持?jǐn)?shù)opposecounttext反對(duì)數(shù)表3.3 顯示新聞內(nèi)容表t_news的結(jié)構(gòu)屬性數(shù)據(jù)類型說明nidinteger新聞編號(hào)編號(hào),自動(dòng)增長(zhǎng)cidinteger新聞分類號(hào)titleString新聞標(biāo)題bodyString新聞?wù)膕ourceString新聞來源ptimeString發(fā)表時(shí)間imgsrctext圖片來源summaryString摘要sequenceint序列仔細(xì)分析不難得出,后
22、臺(tái)服務(wù)是整個(gè)應(yīng)用程序的核心,主要是“數(shù)據(jù)獲取”,用戶進(jìn)行點(diǎn)擊操作,后臺(tái)服務(wù)接收用戶的指令,向服務(wù)器接口調(diào)用收據(jù),服務(wù)端接收指令,從服務(wù)器進(jìn)行相應(yīng)的增刪改查,然后返回信息給客戶端,使用戶獲得需要的新聞資訊,滿足客戶的需求。服務(wù)端器端的代碼主要的功能就是對(duì)數(shù)據(jù)庫進(jìn)行的操作,采用servlet技術(shù)通過接受客戶端傳過來的指令查詢數(shù)據(jù)庫,然后返回json數(shù)據(jù)格式的數(shù)據(jù)跟客戶端進(jìn)行數(shù)據(jù)交互操作,簡(jiǎn)單方便,手機(jī)客戶端接收的時(shí)候也能十分方便的解析出來,顯示在用戶界面上。在完成用戶界面設(shè)計(jì)、服務(wù)器和數(shù)據(jù)庫設(shè)計(jì)后,至此軟件的框架設(shè)計(jì)階段基本完成。3.5 功能的實(shí)現(xiàn)3.5.1文件結(jié)構(gòu)與說明1) 客戶端Eclipse
23、開發(fā)部分在程序的開發(fā)階段,首先確定“Android平臺(tái)新聞客戶端”的工程名為“快看新聞”,據(jù)程序模塊設(shè)計(jì)的內(nèi)容,建立“快看新聞”工程,然后分析完成功能所需要的代碼結(jié)構(gòu),認(rèn)真完善,做好每一個(gè)功能。其工程源代碼的結(jié)構(gòu)與作用如下圖3-9所示。 圖3-9“快看新聞”工程的源代碼文件為了使源代碼文件的結(jié)構(gòu)更清晰,快看新聞”工程設(shè)置了多個(gè)命名空間,其包的作用分別展示在下表。表3.4 “快看新聞”工程的文件用途說明包 名 稱文 件 名說 明com.szy.news.beanCategory.java新聞欄目的bean類com.szy.news.customCustomSimpleAdapter.java新聞
24、欄目標(biāo)題的適配器com.szy.news.utilDensityUtil.java像素和dip之間的轉(zhuǎn)換工具類com.szy.news.utilStringUtil.javaString數(shù)據(jù)轉(zhuǎn)化成int的工具類com.szy.newsMainActivity.java主新聞界面的Activitycom.szy.newsCommentActivity.java新聞評(píng)論界面的Activitycom.szy.newsNewDetailActivity.ava新聞詳細(xì)內(nèi)容的Activitycom.loopj.android.http包內(nèi)所有文件互聯(lián)網(wǎng)上開源的http異步訪問框架結(jié)構(gòu)Android中資源
25、文件都保存在/res的子目錄中。其中,/res/drawable/目錄中下保存的是圖像文件,/res/values目錄中保存的是自定義的字符串和顏色的文件以及樣式文件,/res/xml目錄中保存的是xml格式的數(shù)據(jù)文件,/res/layout目錄下保存的是UI的布局文件。/res/anim目錄下包含的是所有的動(dòng)畫控制文件。程序開發(fā)階段可以被調(diào)用的所有資源都保存在這些目錄中4,具體的文件圖圖3-10示如下。 圖3-10 android資源文件圖2)服務(wù)器端Eclipse Standard開發(fā)部分在服務(wù)器開發(fā)端,建立工程名為“News”的工程,如下圖3-11所示 圖3-11 服務(wù)器端目錄圖配合上圖
26、的目錄結(jié)構(gòu)圖,使結(jié)構(gòu)更加清晰,目標(biāo)類的作用分別展示在如下表3-5的工程文件目錄說明中。表3.5 “News”工程的文件用途說明包 名 稱文 件 名說 明com.szy.web.daoCategoryDAO.javaCommentDAO.javaNewsDAO.java對(duì)數(shù)據(jù)庫增刪改查的類com.szy.web.daoCpertiesSqlManager.java連接MySql的配置文件com.szy.web.modelCategory.javaComment.javaNews.java新聞、評(píng)論、類型的模型類com.szy.web.servletGetCategoriesSe
27、rvlet.javaGetCommentsServlet.javaGetNewsServlet.javaGetSpecifyCategoryNewsServlet.javaPostCommentServlet.java數(shù)據(jù)交互操作的servlet類org.jsonJSONArray.javaJSONException.javaJSONML.javaJSONObject.javaJSONString.javaJSONStringer.javaJSONTokener.javaJSONWriter.java生成json文件的工具類org.jsonCDL.javaCookie.javaCookieLi
28、st.javaHTTP.javaHTTPTokener.java緩存級(jí)http訪問工具類com.szy.web.utilTextUtility.java字符編碼轉(zhuǎn)換工具類3.5.2具體實(shí)現(xiàn)主新聞頁面的設(shè)計(jì)與實(shí)現(xiàn)1)開頭定義出頁面所需要用到的控件以及新聞欄目的適配器,從代碼中可以看出,除了全局變量layoutinflater,loadnews_progress,titlebar_refresh, MainActivity類中有以上私有屬性cid、newsData 、newsListAdapter、newslists、CatName、ategories。點(diǎn)擊新聞欄目之后,MainActivity會(huì)
29、顯示相應(yīng)欄目下的的新聞信息,若此欄目下有新聞的話就會(huì)顯示出來,若沒有新聞的話就會(huì)提示“該欄目下沒有新聞信息”,要是手機(jī)無法連接網(wǎng)絡(luò)的話就會(huì)提示“網(wǎng)絡(luò)無法連接”,十分清楚的告訴用戶現(xiàn)在所處的狀態(tài)。客戶端采用的是異步http訪問框架,其中AsyncHttpClient類是十分方便的異步訪問類,它是封裝好的,只需提供接口地址和參數(shù),就能十分方便的訪問接口獲得數(shù)據(jù),并且不用再寫回調(diào)方法,只需要AsyncHttpClient中的cilent對(duì)象get或者post請(qǐng)求方式訪問接口,然后重寫兩個(gè)方法,一個(gè)是onsuccess(),另一個(gè)是onfailure(),其中onsuccess()方法是訪問接口成功,
30、獲得的數(shù)據(jù)將從方法的參數(shù)content中可以得到,然后再進(jìn)行相應(yīng)解析,當(dāng)由于接口錯(cuò)誤或者網(wǎng)絡(luò)錯(cuò)誤時(shí)或者返回錯(cuò)誤信息時(shí),請(qǐng)求數(shù)據(jù)時(shí)將會(huì)執(zhí)行onfailure()方法。2) 訪問接口成功后,會(huì)從服務(wù)器得到一個(gè)json數(shù)據(jù),我們要做的就是解析它,然后將之填充到我們的頁面顯示,解析MainActivity.java頁面中接收各個(gè)欄目的json格式數(shù)據(jù),需要導(dǎo)入json包的支持,代碼見附錄A。3) 加載更多新聞按鈕,是訪問getSpeCatNews這個(gè)接口,點(diǎn)擊按鈕的時(shí)候只是傳的第二個(gè)參數(shù)變成了我們需要加載的新聞個(gè)數(shù),這是一個(gè)變量由我們自己定義出來的,getSpeCatNews(cid, newsDat
31、a.size(), false)。 newsData.size()新聞數(shù)目的size就是自己定義出來的變量。實(shí)現(xiàn)的代碼如下:loadMoreBtn.setOnClickListener(new OnClickListener() public void onClick(View v) getSpeCatNews(cid, newsData.size(), false););4) 關(guān)于界面的退出,是重寫了onKeyDown()的方法,判斷是否按了后退鍵,然后在界面上提示再按一次退出鍵退出程序,兩次退出操作的時(shí)間間隔超過兩秒退出無效,兩秒以內(nèi)完成退出操作,具體界面退出的代碼見附錄 新聞詳細(xì)頁面的設(shè)
32、計(jì)與實(shí)現(xiàn): 1)頁面初始化首先要初始化變量一些控件和變量的信息,如上一頁按鈕newsdetails_titlebar_previous,下一頁按鈕newsdetails_titlebar_next,評(píng)論的按鈕newsdetails_titlebar_comments,以及手指觸摸屏幕時(shí)記錄的坐標(biāo)StartX起點(diǎn)坐標(biāo)X,float StartY起點(diǎn)坐標(biāo)Y等等相關(guān)的控件及變量。 2)發(fā)送評(píng)論評(píng)論按鈕newsdetails_titlebar_comments會(huì)通過intent對(duì)象把新聞的nid穿到評(píng)論頁面,這里是實(shí)現(xiàn)按鈕的監(jiān)聽,實(shí)現(xiàn)代碼:newsdetails_titlebar_comments.s
33、etOnClickListener(newOnClickListener() public void onClick(View v) Intent intent = new Intent(NewDetailActivity.this,CommentActivity.class);intent.putExtra(nid, mNid);startActivity(intent););根據(jù)用戶的體驗(yàn)感,顯示詳細(xì)新聞信息的時(shí)候希望能夠不用返回主新聞界面查看下一條或者上一條新聞,所以在詳細(xì)新聞頁面添加手勢(shì)判斷功能,手指觸摸屏幕實(shí)現(xiàn)上一條或者是下一條,然后添加動(dòng)畫效果,讓用戶用起來更加舒服,更加人性化,動(dòng)
34、畫效果的配置在res/anim目錄下。 評(píng)論界面的設(shè)計(jì)與實(shí)現(xiàn) 1)初始化變量首先定義頁面控件和一些變量,首先定義出評(píng)論界面的控件和變量,如發(fā)表按鈕news_reply_post,LinearLayout news_reply_edit_layout;/評(píng)論的編輯區(qū)域,LinearLayout news_reply_img_layout;/評(píng)論的圖形區(qū)域 2)獲得評(píng)論信息獲得評(píng)論信息,訪問評(píng)論的接口,以get方式傳遞新聞的id,然后從json的格式數(shù)據(jù)中獲得返回的評(píng)論信息,要是沒有網(wǎng)絡(luò)或者傳遞的參數(shù)不正確會(huì)彈出toast框提示錯(cuò)誤信息。獲得評(píng)論的接口地址是:url=http:/192.168.0
35、.1:8080/News/getComments?nid=+nid&startnid=0&count=10;里面的三個(gè)參數(shù)分別是:nid新聞ID,startnid評(píng)論的起始ID和count每次需要獲得的數(shù)目,參數(shù)的作用就是讓我們每次訪問時(shí),只獲取10個(gè)數(shù)據(jù),這樣的好處就是節(jié)省數(shù)據(jù)流量,并且無需占用手機(jī)額外的內(nèi)存。 3)發(fā)送評(píng)論信息以post方式請(qǐng)求數(shù)據(jù),通過Requestparams對(duì)象傳遞參數(shù)信息,發(fā)送評(píng)論的接口地址是:String url = :8080/News/postComment,需要傳遞的參數(shù)是:nid新聞ID,region發(fā)送人的地址,cont
36、ent發(fā)送內(nèi)容,訪問的方法是采用異步http訪問框架的post方法訪問成功會(huì)返回發(fā)送成功了信息,失敗也會(huì)有相應(yīng)提示,核心代碼參見附錄A。Eclipse Standard服務(wù)器端開發(fā)部分1)首先導(dǎo)入測(cè)試類和mysql的jar包如下圖3-12。 圖3-12 測(cè)試類和mysql的jar包2)配置servlet的web.xml文件詳見附錄A 3)數(shù)據(jù)庫管理類SqlManager.java的作用就是連接數(shù)據(jù)庫配置的屬性,包括數(shù)據(jù)庫主機(jī)地址、數(shù)據(jù)庫名、數(shù)據(jù)庫端口、數(shù)據(jù)庫密碼、連接字符串、連接對(duì)象。配置資源文件和JDBC的驅(qū)動(dòng)類型,代碼如下: private static SqlManager manage
37、r = null; / 靜態(tài)變量,支持單態(tài)模式 private PropertyResourceBundle bundle; / 配置資源文件 private static String jdbcDrive = null; / JDBC驅(qū)動(dòng)類型 private String DBhost = ; / 數(shù)據(jù)庫主機(jī)地址 private String DBname = ; / 數(shù)據(jù)庫名 private String DBprot = ; / 數(shù)據(jù)庫端口 private String DBuser = ; / 數(shù)據(jù)庫用戶名 private String DBpasswd = ; / 數(shù)據(jù)庫密碼 pri
38、vate String strcon = null; / 連接字符串 private Connection conn = null; / 連接對(duì)象 private PreparedStatement pstm = null; private CallableStatement cstm = null; 私有的成員變量只是定義出來,并沒有進(jìn)行初始化,創(chuàng)建一個(gè)Cperties的配置文件,用來配置連接數(shù)據(jù)的各項(xiàng)配置參數(shù)。Cperties的配置信息如下:DBpassword=123456 然后再SqlManager.java添加一個(gè)私有的構(gòu)造方法,將Config.p
39、roperties的配置信息加載到代碼中來,用new 一個(gè)屬性資源的bundle,參數(shù)是得到一個(gè)配置文件的輸入流,構(gòu)造方法如下:private SqlManager() throws IOExceptionbundle = new PropertyResourceBundle(SqlManager.classgetResourceAsStream(Cperties);this.DBhost = getString(DBhost); / 讀取主機(jī)名this.DBname = getString(DBname); / 讀取用戶名this.DBprot = getString(DB
40、port); / 讀取端口this.DBuser = getString(DBuser); / 讀取用戶this.DBpasswd = getString(DBpassword); / 讀取密碼/ 設(shè)置mysql數(shù)據(jù)庫的驅(qū)動(dòng)程序和連接字符jdbcDrive = com.mysql.jdbc.Driver;strcon = jdbc:mysql:/ + DBhost + : + DBprot + / + DBname; 我們對(duì)數(shù)據(jù)庫的增、刪、改、查用到的方法全都依賴于SqlManager.java中的方法,要在SqlManager.java中寫出查詢和更新的方法,在sql語句對(duì)數(shù)據(jù)庫進(jìn)行操作的時(shí)
41、候會(huì)根據(jù)sql語句的不同,參數(shù)也會(huì)不同,所以要在這里設(shè)置PrepareStatement對(duì)象中sql語句中的參數(shù)的方法,配置參數(shù)的代碼如下:private void setPrepareStatementParams(String sql, Object params)throws SQLExceptionpstm = conn.prepareStatement(sql); / 獲取對(duì)象if (params != null)for (int i = 0; i params.length; i+) / 遍歷參數(shù)列表填充參數(shù) pstm.setObject(i + 1, paramsi); 執(zhí)行查詢
42、操作是數(shù)據(jù)庫操作的核心功能,代碼如下:public ResultSet executeQuery(String sql, Object params)throws SQLException / 執(zhí)行查詢數(shù)據(jù)庫接口ResultSet rs = null;manager.setPrepareStatementParams(sql, params); / 填充參數(shù)rs = pstm.executeQuery(); / 執(zhí)行查詢操作return rs;更新數(shù)據(jù)庫的代碼如下:public boolean executeUpdate(String sql, Object params)throws SQL
43、Exception boolean result = false;manager.setPrepareStatementParams(sql, params); / 填充參數(shù)pstm.executeUpdate(); / 執(zhí)行更新mitChange();result = true;return result; 4)服務(wù)器端的核心功能就是接收手機(jī)客戶端發(fā)過來的指令,獲得參數(shù)對(duì)數(shù)據(jù)進(jìn)行操作,然后返回json格式的數(shù)據(jù)給手機(jī)客戶端,這里面的數(shù)據(jù)交互所用到的技術(shù)是servlet技術(shù),前面已經(jīng)在web.xml文件中已經(jīng)對(duì)各個(gè)servlet進(jìn)行了配置。 這里以接收客戶端發(fā)送過來的發(fā)表評(píng)論P(yáng)ostComme
44、ntServlet.java的指令為例,進(jìn)行說明,因?yàn)槠渌牟僮髦噶铑愃?,區(qū)別在于參數(shù)的獲得和json數(shù)據(jù)的生成,下面進(jìn)行詳細(xì)代碼的介紹。 request.setCharacterEncoding(iso-8859-1)因?yàn)閺氖謾C(jī)客戶端傳過來的參數(shù)的編碼是“iso-8859-1”,所以服務(wù)器端接收數(shù)據(jù)是設(shè)置格式編碼為一致。發(fā)送評(píng)論的時(shí)候手機(jī)客戶端會(huì)向服務(wù)器傳遞三個(gè)參數(shù),所以我們要接收者三個(gè)參數(shù):String nidStr = request.getParameter(nid); String region = request.getParameter(region);String conten
45、t = request.getParameter(content);接收到的三個(gè)參數(shù)都是String類型的數(shù)據(jù),因?yàn)閚id是int類型,所以要對(duì)其進(jìn)行轉(zhuǎn)換,這里用到先前提到的工具類TextUtility.java: int nid = TextUtility.String2Int(nidStr);參數(shù)content代表的發(fā)表評(píng)論內(nèi)容,參數(shù)region代表的是地域,它們都有可能是中文、英文以及數(shù)字,因?yàn)椤癷so-8859-1”并不支持中文,所以這里要將它們轉(zhuǎn)換成“utf-8”的編碼格式,這樣才不會(huì)出現(xiàn)亂碼的情況,這里同樣是用到TextUtility.java這個(gè)工具類,轉(zhuǎn)換如下:region =
46、 TextUtility.toUTF8(region); content = TextUtility.toUTF8(content);在獲得參數(shù)以后,需要調(diào)用CommentDAO.java中的addComment方法,將參數(shù)添加進(jìn)去。public void addComment(int nid,String ptime,String region,String content) throws SQLExceptionsql = INSERT INTO t_comment (nid,ptime,region,content) VALUES Object params = new Object n
47、id, ptime, region,content ;manager.connectDB();manager.executeUpdate(sql, params);manager.closeDB(); 在增加成功之后,要返回一個(gè)成功的json數(shù)據(jù)給客戶端。其他的servlet類的操作原理與上述類似,這里就不一一累贅了。314 系統(tǒng)測(cè)試4.1 軟件的測(cè)試軟件測(cè)試的目的,第一個(gè)是確認(rèn)android新聞客戶端是否能運(yùn)行,其一個(gè)方面就是確認(rèn)軟件是否完成了我先前設(shè)計(jì)的那些功能。第二個(gè)是提供信息,比如提供給我回饋信息,看看在開發(fā)的哪些步驟上面能夠有精簡(jiǎn),能夠有提升。第三個(gè)是測(cè)試不僅是在測(cè)試這個(gè)新聞客戶端的
48、本身,而且還包括了整個(gè)的開發(fā)過程。如果在這個(gè)新聞客戶端開發(fā)完成后出現(xiàn)了很多問題,那就說明了開發(fā)的過程還存在漏洞。4.2測(cè)試與實(shí)現(xiàn)的結(jié)果及說明 1)采用的真機(jī)進(jìn)行測(cè)試 在工程名“快看新聞”上點(diǎn)右鍵,然后選擇“Run As”或者點(diǎn)擊菜單欄上面的按鈕,然后選擇“Android Application”。 出現(xiàn)如下圖4-1所示: 圖4-1 選擇測(cè)試工具圖 為什么要用真機(jī)來做測(cè)試,因?yàn)橛脩舳际怯玫恼鏅C(jī),而且選擇用模擬器來做,有兩點(diǎn)弊端。 (1)模擬器反應(yīng)速度太慢 (2)測(cè)試效果不如在真機(jī)上看的方便 2)啟動(dòng)手機(jī)新聞客戶端 選擇屏幕上的“快看新聞”如下圖4-2:圖4-2 新聞頁面的圖標(biāo) 3)進(jìn)入到載入界面
49、如下圖4-3所示: 圖4-3 載入界面效果圖4)然后就是顯示主要新聞界面的內(nèi)容了,界面顯示如前面設(shè)計(jì)的簡(jiǎn)單界面加以樣式修飾,界面包含軟件名稱、刷新按鈕、新聞分欄、欄目下一欄的按鈕、新聞列表和加載更多按鈕,所有的新聞放在一個(gè)ListView里面界面只會(huì)顯示六條新聞,滑動(dòng)界面可以查看更多的新聞,點(diǎn)擊加載更多按鈕可以加載出更多的新聞加入ListView顯示在界面上,具體效果如下圖4-4所示: 圖4-4 主新聞頁面效果圖5)點(diǎn)擊新聞列表中的某一條新聞,選擇查看新聞詳細(xì)信息,因?yàn)樵谥餍侣劦捻撁嬷荒芸吹叫侣劦念A(yù)覽內(nèi)容,新聞的詳細(xì)頁面能夠看到新聞的標(biāo)題,詳細(xì)信息,發(fā)表人和發(fā)表時(shí)間,在上面的新聞分欄的右邊還能
50、看到評(píng)論的數(shù)目信息,點(diǎn)擊新聞的數(shù)目的信息能夠看到該條新聞的具體評(píng)論信息,具體效果如下圖5-5所示: 圖4-5 詳細(xì)新聞頁面效果圖 6)點(diǎn)擊跟帖數(shù)目,進(jìn)入評(píng)論界面,界面顯示的就是該條新聞的評(píng)論信息,每一條評(píng)論信息包含發(fā)表人的地點(diǎn),內(nèi)容和評(píng)論時(shí)間,然后再加入一條評(píng)論與左圖進(jìn)行對(duì)比,效果如下圖4-6所示: 圖4-6 新聞評(píng)論頁面效果圖測(cè)試小結(jié):經(jīng)過一系列的測(cè)試,這款新聞客戶端軟件基本完成了預(yù)期的功能,并且系統(tǒng)的穩(wěn)定性也較好。 5 總結(jié)與展望5.1 總結(jié) 經(jīng)過數(shù)月的不懈努力,Android平臺(tái)新聞客戶端軟件終于完成了,用戶可以通過這款新聞客戶端了解新聞時(shí)事,對(duì)于Android平臺(tái)的開發(fā)需要用到很多Ja
51、va的基礎(chǔ)知識(shí),在這方面Java語言帶給我了很多的方便。在整個(gè)開發(fā)設(shè)計(jì)過程之中,我學(xué)習(xí)到了很多的Android平臺(tái)的知識(shí),比如Android的UI的設(shè)計(jì)優(yōu)化、樣式的的設(shè)計(jì)、Activity、Service、BroadcastReceiver、ContentProvider等四大組件的運(yùn)用,還有對(duì)Eclipse、Tomcat、Mysql等開發(fā)工具的熟練使用。 雖然軟件相比于已經(jīng)上線的新聞客戶端軟件還有一定的差距,但是這并沒有打擊我對(duì)于Android平臺(tái)開發(fā)的興趣,反倒這是一件激勵(lì)我的事情,我從中發(fā)現(xiàn)了我很多不足的方面,然后可以通過更加認(rèn)真地學(xué)習(xí),掌握更多先進(jìn)的編程技術(shù),設(shè)計(jì)出更系統(tǒng)更好用的And
52、roid軟件。5.2 展望 經(jīng)過了對(duì)本軟件的設(shè)計(jì)和實(shí)踐,將老師在課堂上和自己在課外時(shí)間學(xué)習(xí)的知識(shí)做了一個(gè)總結(jié)。一方面有做的很好的地方,另一方面同樣也存在著有缺陷的地方。這是為我們馬上畢業(yè)工作敲的一個(gè)警鐘。學(xué)校學(xué)習(xí)到的知識(shí)雖然可能能用在工作中的并不會(huì)很多,但是我們?cè)趯W(xué)校學(xué)到的是學(xué)習(xí)方法,因?yàn)椴还茉谌魏坞A段,人總是需要不停地學(xué)習(xí)。 在以后的工作和學(xué)習(xí)當(dāng)中,我將保持積極認(rèn)真的態(tài)度,遇事謹(jǐn)慎,仔細(xì)分析,以一顆永不停歇的心來面對(duì)人生,在軟件開發(fā)這份職業(yè)上,需要充分鍛煉自己的思維與敏銳,因?yàn)檐浖_發(fā)更新?lián)Q代是十分迅速的,想不被淘汰就不能停下學(xué)習(xí)的腳步。參考文獻(xiàn)1 肖云鵬,劉宴兵. Android程序設(shè)計(jì)教
53、程M.清華大學(xué)出版社,2013-042 張榮. Android開發(fā)與應(yīng)用M.人民郵電出版,2014-023 王向輝,張國印,賴明珠. Android應(yīng)用程序開發(fā)M.清華大學(xué)出版社,2012-054 趙常松. Android應(yīng)用程序開發(fā)與典型案例M.電子工業(yè)出版社,2012-105 高凱,仇晶. Android智能手機(jī)軟件開發(fā)教程M. 國防工業(yè)出版社,2012-066 孫衛(wèi)琴 編著 .JAVA面向?qū)ο缶幊蘉.電子工業(yè)出版社,2009-77 張帆 編著 .Java范例開發(fā)大全M.清華大學(xué)出版社,2010-6-18 楊春花,俞黎敏.Effective Java中文版M.機(jī)械工業(yè)出版社,2009-1-110 李剛. 輕量級(jí)Java EE企業(yè)應(yīng)用實(shí)戰(zhàn)M.電子工業(yè)出版社,2008-11
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年石材安裝工程合同(地面墻面·達(dá)標(biāo)版)
- 我國南北方農(nóng)業(yè)氣象災(zāi)害風(fēng)險(xiǎn)的對(duì)比與解析:基于多維度視角
- 我國勞動(dòng)爭(zhēng)議處理機(jī)制:現(xiàn)狀困境與突破路徑探究
- 我國創(chuàng)業(yè)板市場(chǎng)交易制度的現(xiàn)存問題與完善路徑探析
- 物流企業(yè)安全制度規(guī)范大全
- 高三物理階段性復(fù)習(xí)題匯編
- 2026年網(wǎng)絡(luò)安全合規(guī)審計(jì)協(xié)議
- 餐飲行業(yè)員工福利體系設(shè)計(jì)方案
- 建筑施工安全責(zé)任制度操作規(guī)范
- 出口退稅申報(bào)審核重點(diǎn)及注意事項(xiàng)
- 客運(yùn)駕駛員培訓(xùn)教學(xué)大綱
- 園區(qū)托管運(yùn)營協(xié)議書
- 2025年江蘇省蘇州市中考數(shù)學(xué)模擬試卷(含答案)
- GB/T 45133-2025氣體分析混合氣體組成的測(cè)定基于單點(diǎn)和兩點(diǎn)校準(zhǔn)的比較法
- 九年級(jí)下冊(cè)語文必背古詩文(字帖描紅)
- 北京市行業(yè)用水定額匯編(2024年版)
- 婚內(nèi)財(cái)產(chǎn)協(xié)議書標(biāo)準(zhǔn)版
- 基于大數(shù)據(jù)的金融風(fēng)險(xiǎn)評(píng)估模型構(gòu)建
- 供應(yīng)鏈與生產(chǎn)制造L1-L4級(jí)高階流程規(guī)劃框架 相關(guān)兩份資料
- 國際貿(mào)易合同履行中的運(yùn)輸保險(xiǎn)索賠程序與操作指南
- 龍澤滴灌帶生產(chǎn)項(xiàng)目可行性研究報(bào)告
評(píng)論
0/150
提交評(píng)論