畢業(yè)論文-基于Android的微博客戶端_第1頁
畢業(yè)論文-基于Android的微博客戶端_第2頁
畢業(yè)論文-基于Android的微博客戶端_第3頁
畢業(yè)論文-基于Android的微博客戶端_第4頁
畢業(yè)論文-基于Android的微博客戶端_第5頁
已閱讀5頁,還剩48頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

太原理工大學(xué)畢業(yè)設(shè)計(論文)用紙 太原理工大學(xué)畢業(yè)設(shè)計(論文)任務(wù)書第1頁畢業(yè)設(shè)計(論文)題目:基于android的手機(jī)微博客戶端畢業(yè)設(shè)計(論文)要求及原始數(shù)據(jù)(資料):1、搜集資料,為論文做好前期準(zhǔn)備。對所涉及的主要知識,進(jìn)行全面的復(fù)習(xí)。2、對業(yè)務(wù)邏輯進(jìn)行數(shù)據(jù)建模,確定畢業(yè)設(shè)計所需要的技術(shù)框架。3、需求分析,設(shè)計數(shù)據(jù)庫表,對系統(tǒng)進(jìn)行總體的設(shè)計。4、對系統(tǒng)的進(jìn)行詳細(xì)的設(shè)計,并對整個系統(tǒng)進(jìn)行詳細(xì)的測試,盡量避免BUG。5、根據(jù)業(yè)務(wù)邏輯,設(shè)計接口以及抽象類。6、針對接口完成后臺業(yè)務(wù)邏輯的實現(xiàn)。7、根據(jù)畢業(yè)設(shè)計完成畢業(yè)論文。8.訓(xùn)練檢索文獻(xiàn)資料和利用文獻(xiàn)資料的能力;9.訓(xùn)練撰寫技術(shù)文檔與學(xué)位論文的能力。第2頁畢業(yè)設(shè)計(論文)主要內(nèi)容:1、了解微博系統(tǒng)的開發(fā)背景及研究意義。2、學(xué)習(xí)微博理系統(tǒng)設(shè)計所需使用的相關(guān)技術(shù)。3、對微博系統(tǒng)進(jìn)行需求分析及總體設(shè)計和詳細(xì)設(shè)計。4、實現(xiàn)授權(quán)登錄,按時間線瀏覽好友微博,自己發(fā)表微博,私信好友,查看我的聽眾和我的收聽,對微博內(nèi)容進(jìn)行轉(zhuǎn)發(fā)和評論,查看好友的資料,好友歷史所發(fā)微博,好友的聽眾和收聽5、對設(shè)計進(jìn)行總結(jié)學(xué)生應(yīng)交出的設(shè)計文件(論文):1.內(nèi)容完整、層次清晰、敘述流暢、排版規(guī)范的畢業(yè)設(shè)計論文;2.包括畢業(yè)設(shè)計論文、源程序等內(nèi)容在內(nèi)的畢業(yè)設(shè)計電子文檔及其它相關(guān)材料。第3頁主要參考文獻(xiàn)(資料):[1]姚尚朗,靳巖.Coogleandroid開發(fā)入門與實踐[M].人民郵電出版社,2009[2]柯元旦.Android內(nèi)核剖析[M].電子工業(yè),2011[3]SayedY,Hashimi.ProAndroid[D].Apress,2011[4]

EdBurnette.Hello,Android[J].PragmaticBookshelf,2008[5]BruceTate.BitterJava[D].ManningPublications,2002[6]楊豐盛.Android應(yīng)用開發(fā)揭秘[M].機(jī)械工業(yè)出版社,2010[7]JoshuaBloch,Effective.JavaProgrammingLanguageGuide[D].Addison-WesleyProfessional,2001[8]鄧凡平.深入理解android[M].機(jī)械工業(yè)出版社,2011[9]袁國忠.android應(yīng)用UI設(shè)計模式[M].人民郵電出版社,2013[10]余志龍.王志江.GoogleandroidSDK開發(fā)范例大全[M].人民郵電出版社,2010專業(yè)班級軟件1027班學(xué)生要求設(shè)計(論文)工作起止日期2014年3月17日~2014年6月27日指導(dǎo)教師簽字日期2014年3月17日教研室主任審查簽字日期系主任批準(zhǔn)簽字日期緒論1.1課題背景2014年4月17日,是個重要的日子,這一天新浪微博在美國納斯達(dá)克股票交易所正式掛牌上市,很幸運在這次課題研究期間新浪微博作為首家中文社交媒體上市。摩爾定律的持續(xù)實現(xiàn)使得計算機(jī)界無時無刻不在發(fā)生著日新月異的變化,計算機(jī)芯片功能越來越強(qiáng)大以及體積越來越小,手機(jī)這樣的移動終端設(shè)備在逐漸的挖掘自身的市場價值,蘋果公司作為軟硬件一體的科技公司,他的iphone系列手機(jī)在市場中如日中天,而google作為世界第一的互聯(lián)網(wǎng)企業(yè),憑借著開源的android系統(tǒng),與各大硬件廠商合作,也分食著手機(jī)市場這塊大蛋糕。微軟作為昔日的IT巨頭,也在賣力的開發(fā)著自己的移動端操作系統(tǒng)。移動互聯(lián)網(wǎng)市場注定是一個前途無限的市場。在互聯(lián)網(wǎng)領(lǐng)域,社交媒體的火爆在全世界都有目共睹,fackbook無疑是如今社交媒體火爆最好的證明,此外,還有twitter也是著名的社交平臺,2009年8月中國門戶網(wǎng)站新浪推出“新浪微博”內(nèi)測版,成為門戶網(wǎng)站中第一家提供微博服務(wù)的網(wǎng)站,微博正式進(jìn)入中文上網(wǎng)主流人群視野。隨著微博在網(wǎng)民中的日益火熱,國內(nèi)各大互聯(lián)網(wǎng)企業(yè)都紛紛開始開發(fā)自己的微博平臺。如今,這些社交網(wǎng)路都把其范圍拓展到移動手機(jī)平臺領(lǐng)域,借助手機(jī)的普遍性和無線網(wǎng)絡(luò)的應(yīng)用,利用各種交友/即時通訊/郵件收發(fā)器等軟件,使手機(jī)成為新的社交網(wǎng)絡(luò)的載體。但是由于各大平臺基于市場利益的考慮,均有不同程度的涉及廣告的行為,而且為了滿足不同用戶的需求,往往包含了太多不怎么用到的功能,造成極不好的用戶體驗,本課題致力于開發(fā)出一款基于android的微博客戶端,為用戶提供簡潔,流暢的用戶體驗。1.2微博簡介1.2.1微博的定義微博是一種通過關(guān)注機(jī)制分享簡短實時信息的廣播式社交網(wǎng)路平臺。其中有五方面的理解:1)關(guān)注機(jī)制:可單項可雙向兩種;2)簡短內(nèi)容:通常為140字(包括標(biāo)點符號);3)實時信息:最新實時信息;4)廣播式:公開的信息,誰都可以瀏覽;5)社交網(wǎng)路平臺:把微博歸為社交網(wǎng)絡(luò)。通俗的解釋:微博提供了這樣一個平臺,你既可以作為觀眾,在微博上瀏覽你感興趣的信息;也可以作為發(fā)布者,在微博上發(fā)布內(nèi)容供別人瀏覽。發(fā)布的內(nèi)容比較短,一般為140個字,當(dāng)然也可以發(fā)圖片,視頻和網(wǎng)頁鏈接等,在微博發(fā)布信息快,傳播速度也快。1.2.2微博的發(fā)展歷程2006年3月obvious推出了大微博服務(wù),在最初階段,這項服務(wù)只是用于向好友的手機(jī)發(fā)送文本信息。用戶能用如發(fā)手機(jī)短信的數(shù)百種工具更新信息。Twitter的出現(xiàn)把世人的眼光引入了一個叫微博的小小世界里。Twitter是一個社交網(wǎng)絡(luò)及微博客服務(wù)。用戶可以經(jīng)由SMS、即時通信、電郵、Twitter網(wǎng)站或Twitter客戶端軟件輸入最多140字的文字更新,Twitter被Alexa網(wǎng)頁流量統(tǒng)計評定為最受歡迎的50個網(wǎng)絡(luò)應(yīng)用之一。從2007年中國第一家?guī)в形⒉┥实纳缃痪W(wǎng)絡(luò)飯否網(wǎng)開張,到2009年,微博這個全新的名詞,以摧枯拉朽的姿態(tài)掃蕩世界,成為全世界最流行的詞匯。2010年國內(nèi)微博迎來春天,微博像雨后春筍般崛起。四大門戶網(wǎng)站均開設(shè)微博。根據(jù)相關(guān)公開數(shù)據(jù),截至2010年1月份,該產(chǎn)品在全球已經(jīng)擁有7500萬注冊用戶。截至2013年3月,新浪微博注冊用戶數(shù)達(dá)到5.03億,得益于搶占了先機(jī),而且在整體的戰(zhàn)略執(zhí)行上也比較徹底到位,所以獲得了地位。僅僅幾年時間,新浪微博就為新浪生下了一個價值幾十億美金的‘金蛋’。而另一個微博巨頭:騰訊微博,也呈現(xiàn)出發(fā)展迅猛的姿態(tài),騰訊擁有近7.5億的QQ注冊用戶,3億左右的活躍用戶。這部分人群很容易受潮流趨勢的影響,開通騰訊微博。通過騰訊微博能夠與QQ好友和騰訊微博上的其他用戶進(jìn)行信息的分享。1.2.3微博的特點1)便捷性微博網(wǎng)站即時通訊功能非常強(qiáng)大,通過QQ和MSN直接書寫,在有網(wǎng)絡(luò)的地方,只要有手機(jī)也可即時更新自己的內(nèi)容,哪怕你就在事發(fā)現(xiàn)場。2)背對臉與博客上面對面的表演不同,微型博客上是背對臉的交流,就好比你在電腦前打游戲,路過的人從你背后看著你怎么玩,而你并不需要主動和背后的人交流??梢砸稽c對多點,也可以點對點。當(dāng)你follow一個自己感興趣的人時,兩三天就會上癮。移動終端提供的便利性和多媒體化,使得微型博客用戶體驗的粘性越來越強(qiáng)。3)原創(chuàng)性在微博客上,140字的限制將平民和莎士比亞拉到了同一水平線上,這一點導(dǎo)致大量原創(chuàng)內(nèi)容爆發(fā)性地被生產(chǎn)出來。李松博士認(rèn)為,微型博客的出現(xiàn)具有劃時代的意義,真正標(biāo)志著個人互聯(lián)網(wǎng)時代的到來。博客的出現(xiàn),已經(jīng)將互聯(lián)網(wǎng)上的社會化媒體推進(jìn)了一大步,公眾人物紛紛開始建立自己的網(wǎng)上形象。然而,博客上的形象仍然是化妝后的表演,博文的創(chuàng)作需要考慮完整的邏輯,這樣大的工作量對于博客作者成為很重的負(fù)擔(dān)。“沉默的大多數(shù)”在微博客上找到了展示自己的舞臺。1.3Android簡介Android是一種基于linux的開源操作系統(tǒng),由google公司和開放手機(jī)聯(lián)盟領(lǐng)導(dǎo)及研發(fā),主要應(yīng)用與手機(jī)和平板電腦之上。Android的系統(tǒng)架構(gòu)和其操作系統(tǒng)一樣,采用分層架構(gòu),Android分為4個層,分別是應(yīng)用程序?qū)印?yīng)用程序框架層、系統(tǒng)運行庫層和linux內(nèi)核層。1)應(yīng)用程序?qū)釉搶犹峁┮恍┖诵膽?yīng)用程序包,包括客戶端、短消息、日歷、地圖、瀏覽器、聯(lián)系人,電子郵件等,同時,開發(fā)者可以可以利用java語言設(shè)計和編寫屬于自己的應(yīng)用程序,而這些程序與那些核心應(yīng)用程序彼此平等[1]。2)應(yīng)用程序框架層該層是Android應(yīng)用開發(fā)的基礎(chǔ)。應(yīng)用程序框架層包括活動管理器、窗口管理器、內(nèi)容提供者、視圖系統(tǒng)、包管理器、電話管理器、資源管理器、位置管理器、通知管理器和XMPP服務(wù)十個部分。在Android平臺上,開發(fā)人員可以完全訪問核心應(yīng)用程序所使用的API框架。并且,任何一個應(yīng)用程序都可以發(fā)布自身的功能模塊,而其他應(yīng)用程序則可以使用這些已發(fā)布的功能模塊?;谶@樣的重用機(jī)制,用戶就可以方便地替換平臺本身的各種應(yīng)用程序組件。3)系統(tǒng)庫和android運行時系統(tǒng)庫包括九個子系統(tǒng),分別是圖層管理、媒體庫、SQLite、OpenGLEState、FreeType、WebKit、SGL、SSL和libc。Android運行時包括核心庫和Dalvik虛擬機(jī),前者既兼容了大多數(shù)Java語言所需要調(diào)用的功能函數(shù),又包括了Android的核心庫,比如android.os、、android.media等等。后者是一種基于寄存器的java虛擬機(jī),Dalvik虛擬機(jī)主要是完成對生命周期的管理、堆棧的管理、線程的管理、安全和異常的管理以及垃圾回收等重要功能。linux內(nèi)核層Android基于Linux2.6提供核心系統(tǒng)服務(wù),例如:安全、內(nèi)存管理、進(jìn)程管理、網(wǎng)絡(luò)堆棧、驅(qū)動模型。LinuxKernel也作為硬件和軟件之間的抽象層,它隱藏具體硬件細(xì)節(jié)而為上層提供統(tǒng)一的服務(wù)。如果你學(xué)過計算機(jī)網(wǎng)絡(luò)知道OSI/RM,就會知道分層的好處就是使用下層提供的服務(wù)而為上層提供統(tǒng)一的服務(wù),屏蔽本層及以下層的差異,當(dāng)本層及以下層發(fā)生了變化不會影響到上層。也就是說各層各盡其職,各層提供固定的SAP(ServiceAccessPoint),專業(yè)點可以說是高內(nèi)聚、低耦合。如果你只是做應(yīng)用開發(fā),就不需要深入了解LinuxKernel層。1.4本文的主要研究內(nèi)容和意義本課題研究的內(nèi)容包括創(chuàng)建基于Android平臺的微博客戶端應(yīng)用,使用Java語言編寫,通過騰訊微博開放平臺提供的接口創(chuàng)建的微博客戶端應(yīng)用。當(dāng)前社交網(wǎng)路呈一片繁榮景象,新浪微博更是發(fā)展迅猛,在美國納斯達(dá)克上市。其他社交媒體平臺也不甘落后,紛紛拿出自家本領(lǐng),希望能在這塊市場上分一杯羹,但是,但是社交網(wǎng)絡(luò)的用戶形形色色,不可能有一個客戶端滿足所有用戶的追要求,所以將來社交網(wǎng)絡(luò)平臺一定呈現(xiàn)性格化、風(fēng)格化趨勢,除了用戶所必須的體驗之外,各大社交平臺都應(yīng)提供自身所特有的體驗來滿足用戶的需求,在將來市場必定細(xì)分的前提下,我們的產(chǎn)品只要保證有獨樹一幟的特色,在用戶體驗,用戶交互以及內(nèi)容提供等方面做足,未來一定會有我們的一片天地。騰訊微博Android平臺SDK為第三方微博應(yīng)用提供了文檔易用的微博API調(diào)用服務(wù),使第三方客戶端無需了解復(fù)雜的驗證,我們可以直接調(diào)用騰訊為我們封裝好的接口來獲取我們所需要的數(shù)據(jù),而使用Java作為編程語言具有良好的平臺移植性和可擴(kuò)展性,所以在技術(shù)上是可行的。應(yīng)用程序啟動后,可以通過使用騰訊的微博開放平臺的SDK,利用接口調(diào)用返回的一系列數(shù)據(jù),進(jìn)行用戶的注冊,用戶信息配置,授權(quán)認(rèn)證,用戶登錄。登錄成功之后進(jìn)入程序的首頁,可以從騰訊的數(shù)據(jù)庫中得到所登陸賬號的數(shù)據(jù),顯示其微博好友發(fā)布的最新信息、轉(zhuǎn)發(fā)評論數(shù),以及相關(guān)圖片的瀏覽??梢圆榭春糜训膫€人信息、粉絲數(shù)量、發(fā)表的話題、所有發(fā)表過的微博以及其關(guān)注的好友情況?;镜墓δ苡校?)啟動應(yīng)用程序,進(jìn)入授權(quán)界面2)如果用戶是第一次登陸,將進(jìn)入授權(quán)界面,在此頁面,用戶可以直接輸入自己的QQ郵箱和密碼進(jìn)行授權(quán),取得騰訊的授權(quán)認(rèn)證。如如果用戶已經(jīng)在該應(yīng)用中登錄過,則只需選擇需要登錄的賬號,不用再輸入用戶名和賬號等繁瑣操作就可直接登錄系統(tǒng)。3)用戶登錄系統(tǒng)之后,進(jìn)入微博客戶端首頁,用戶可以查看到自己關(guān)注到的好友的最新微博信息。4)點擊好友發(fā)表的某一條微博信息,進(jìn)入微博瀏覽頁面,可以查看到這條微博信息的全面內(nèi)容,包括粉絲評論、評論數(shù)、轉(zhuǎn)發(fā)數(shù)、圖片等多媒體信息。用戶可以點擊屏幕下方的評論按鈕,發(fā)表自己對該篇微博的評論。點擊轉(zhuǎn)發(fā)按鈕則可以轉(zhuǎn)發(fā)這條微博內(nèi)容。5)點擊好友頭像,進(jìn)入好友個人信息瀏覽頁面,在此頁面可以點擊屏幕上方的關(guān)注好友按鈕,對好友進(jìn)行關(guān)注和取消關(guān)注的操作。在屏幕中央的顯示頁面,可以查看到好友的地址,個人說明的信息。在屏幕的下方有四個按鈕,分別可以查看該好友發(fā)表過的所有微博信息,該好友所關(guān)注的所有好友,發(fā)表過的所有話題、粉絲數(shù)量和所有粉絲列表。同時也可以查看粉絲的個人信息,用戶可以自己對感興趣的粉絲也添加關(guān)注。6)回到應(yīng)用的首頁,在屏幕的上方有一個發(fā)表微博的按鈕,用戶輸入內(nèi)容,點擊發(fā)送可以發(fā)表自己的微博。用戶也可以在此頁面點擊刷新按鈕,刷新當(dāng)前的最新微博。2014年4月17日,是個重要的日子,這一天新浪微博在美國納斯達(dá)克股票交易所正式掛牌上市,很幸運在這次課題研究期間新浪微博作為首家中文社交媒體上市。摩爾定律的持續(xù)實現(xiàn)使得計算機(jī)界無時無刻不在發(fā)生著日新月異的變化,計算機(jī)芯片功能越來越強(qiáng)大以及體積越來越小,手機(jī)這樣的移動終端設(shè)備在逐漸的挖掘自身的市場價值,蘋果公司作為軟硬件一體的科技公司,他的iphone系列手機(jī)在市場中如日中天,而google作為世界第一的互聯(lián)網(wǎng)企業(yè),憑借著開源的android系統(tǒng),與各大硬件廠商合作,也分食著手機(jī)市場這塊大蛋糕。微軟作為昔日的IT巨頭,也在賣力的開發(fā)著自己的移動端操作系統(tǒng)。移動互聯(lián)網(wǎng)市場注定是一個前途無限的市場。在互聯(lián)網(wǎng)領(lǐng)域,社交媒體的火爆在全世界都有目共睹,fackbook無疑是如今社交媒體火爆最好的證明,此外,還有twitter也是著名的社交平臺,2009年8月中國門戶網(wǎng)站新浪推出“新浪微博”內(nèi)測版,微博正式進(jìn)入中文上網(wǎng)主流人群視野。2系統(tǒng)分析2.1可行性研究1)市場的可行性當(dāng)前社交網(wǎng)路呈一片繁榮景象,新浪微博更是發(fā)展迅猛,在美國納斯達(dá)克上市。其他社交媒體平臺也不甘落后,紛紛拿出自家本領(lǐng),希望能在這塊市場上分一杯羹,但是,但是社交網(wǎng)絡(luò)的用戶形形色色,不可能有一個客戶端滿足所有用戶的追要求,所以將來社交網(wǎng)絡(luò)平臺一定呈現(xiàn)性格化、風(fēng)格化趨勢,除了用戶所必須的體驗之外,各大社交平臺都應(yīng)提供自身所特有的體驗來滿足用戶的需求,在將來市場必定細(xì)分的前提下,我們的產(chǎn)品只要保證有獨樹一幟的特色,在用戶體驗,用戶交互以及內(nèi)容提供等方面做足,未來一定會有我們的一片天地。2)技術(shù)的可行性騰訊微博Android平臺SDK為第三方微博應(yīng)用提供了文檔易用的微博API調(diào)用服務(wù),使第三方客戶端無需了解復(fù)雜的驗證,我們可以直接調(diào)用騰訊為我們封裝好的接口來獲取我們所需要的數(shù)據(jù),而使用Java作為編程語言具有良好的平臺移植性和可擴(kuò)展性,所以在技術(shù)上是可行的。3)運行上的可行性本應(yīng)用是基于Android系統(tǒng)的移動終端,Android系統(tǒng)手機(jī)在智能手機(jī)市場都有的占有率是世界第一,各個手機(jī)廠商也爭先推出最新版本和硬件配置更高的手機(jī),從一般的Android手機(jī)硬件配置來看運行本系統(tǒng)應(yīng)該是綽綽有余的,所以在運行可行性上更是可行的。2.2需求分析應(yīng)用程序啟動后,可以通過使用騰訊的微博開放平臺的SDK,利用接口調(diào)用返回的一系列數(shù)據(jù),進(jìn)行用戶的注冊,用戶信息配置,授權(quán)認(rèn)證,用戶登錄。登錄成功之后進(jìn)入程序的首頁,可以從騰訊的數(shù)據(jù)庫中得到所登陸賬號的數(shù)據(jù),顯示其微博好友發(fā)布的最新信息、轉(zhuǎn)發(fā)評論數(shù),以及相關(guān)圖片的瀏覽??梢圆榭春糜训膫€人信息、粉絲數(shù)量、發(fā)表的話題、所有發(fā)表過的微博以及其關(guān)注的好友情況?;镜墓δ苄枨笥校?)啟動應(yīng)用程序,進(jìn)入授權(quán)界面2)如果用戶是第一次登陸,將進(jìn)入授權(quán)界面,在此頁面,用戶可以直接輸入自己的QQ郵箱和密碼進(jìn)行授權(quán),取得騰訊的授權(quán)認(rèn)證。如如果用戶已經(jīng)在該應(yīng)用中登錄過,則只需選擇需要登錄的賬號,不用再輸入用戶名和賬號等繁瑣操作就可直接登錄系統(tǒng)。用戶登錄系統(tǒng)之后,進(jìn)入微博客戶端首頁,用戶可以查看到自己關(guān)注到的好友的最新微博信息。點擊好友發(fā)表的某一條微博信息,進(jìn)入微博瀏覽頁面,可以查看到這條微博信息的全面內(nèi)容,包括粉絲評論、評論數(shù)、轉(zhuǎn)發(fā)數(shù)、圖片等多媒體信息。用戶可以點擊屏幕下方的評論按鈕,發(fā)表自己對該篇微博的評論。點擊轉(zhuǎn)發(fā)按鈕則可以轉(zhuǎn)發(fā)這條微博內(nèi)容。點擊好友頭像,進(jìn)入好友個人信息瀏覽頁面,在此頁面可以點擊屏幕上方的關(guān)注好友按鈕,對好友進(jìn)行關(guān)注和取消關(guān)注的操作。在屏幕中央的顯示頁面,可以查看到好友的地址,個人說明的信息。在屏幕的下方有四個按鈕,分別可以查看該好友發(fā)表過的所有微博信息,該好友所關(guān)注的所有好友,發(fā)表過的所有話題、粉絲數(shù)量和所有粉絲列表。同時也可以查看粉絲的個人信息,用戶可以自己對感興趣的粉絲也添加關(guān)注?;氐綉?yīng)用的首頁,在屏幕的上方有一個發(fā)表微博的按鈕,用戶輸入內(nèi)容,點擊發(fā)送可以發(fā)表自己的微博。用戶也可以在此頁面點擊刷新按鈕,刷新當(dāng)前的最新微博。3系統(tǒng)概要設(shè)計3.1系統(tǒng)功能模塊劃分模塊劃分能清楚的表達(dá)系統(tǒng)需要實現(xiàn)的功能,把一個整體的系統(tǒng)分成若干個小的模塊,把問題簡單化,有利于進(jìn)一步的思考項目的實現(xiàn)。我設(shè)計的微博客戶端共分為7個功能模塊,如圖3-1所示。微博客戶端用戶最新微博列表發(fā)表新微博評論微博轉(zhuǎn)發(fā)微博查看好友資料查看好友詳細(xì)信息登錄或授權(quán)認(rèn)證微博客戶端用戶最新微博列表發(fā)表新微博評論微博轉(zhuǎn)發(fā)微博查看好友資料查看好友詳細(xì)信息登錄或授權(quán)認(rèn)證圖3-1系統(tǒng)的功能模塊圖3.2系統(tǒng)的總體結(jié)構(gòu)設(shè)計系統(tǒng)的總體結(jié)構(gòu)設(shè)計需要知道系統(tǒng)各個模塊之間的關(guān)系,每個模塊可能是由一個或多個畫面組成的,這么多個畫面共同構(gòu)成了微博的客戶端。系統(tǒng)的設(shè)計基于android提供的圖形圖像界面技術(shù),系統(tǒng)能夠有多個視圖,而且可以實現(xiàn)圖片視頻播放,根據(jù)手指的點擊,滑動等手勢對程序進(jìn)行操控。系統(tǒng)整體設(shè)計中采用軟件工程的思想,利用MVC的設(shè)計模式對軟件進(jìn)行架構(gòu)是系統(tǒng)的結(jié)構(gòu)調(diào)理清晰,便于后期維護(hù)升級。在系統(tǒng)的數(shù)據(jù)和安全性方面,本系統(tǒng)采用OAuth認(rèn)證的方式,采用這種方式用戶需要有userid,AccessToken、AccessSecret這3個要素才能自由便利的調(diào)用騰訊的開放接口。當(dāng)用戶第一次使用軟件時,進(jìn)行授權(quán)認(rèn)證獲取這3個要素,同時將其存儲到SharedPreferences中以便用戶下次登陸時使用。當(dāng)用戶再次打開軟件時就不需要再次進(jìn)行繁瑣的授權(quán)認(rèn)證操作,直接從SharedPreferences中讀取出來即可使用。它的具體實現(xiàn)為:當(dāng)用戶打開軟件顯示載入頁面時檢查SharedPreferences中是否已經(jīng)保存有用戶的騰訊微博的UserID、AccessToken、AccessSecret,如果沒有就說明用戶是第一次使用本軟件,然后跳到認(rèn)證授權(quán)頁面進(jìn)行授權(quán)認(rèn)證操作,獲取這3個值并且保存到SharedPreferences中,如果已經(jīng)包括了記錄那么讀取這些記錄的UserID、AccessToken、AccessSecret的值然后根據(jù)這3個值調(diào)用騰訊的API接口獲取這些記錄對應(yīng)的用戶信息。OAuth認(rèn)證原理及交互圖如圖3-2,3-3所示。圖3-2OAuth認(rèn)證原理圖3-3OAuth認(rèn)證交互圖3.3系統(tǒng)模塊用例圖用戶登錄和授權(quán)模塊功能描述:如果用戶第一次使用該應(yīng)用,在程序啟動之后進(jìn)入登陸頁面,輸入用戶名和密碼進(jìn)行授權(quán)認(rèn)證。如果用戶已經(jīng)通過了授權(quán)認(rèn)證則可以不用輸入用戶名和密碼,選擇用戶進(jìn)行登錄。如圖3-4所示。參與者:未通過授權(quán)認(rèn)證或者未登錄。前置條件:未通過授權(quán)認(rèn)證或者未登錄的用戶。后置條件:通過授權(quán)配置或者直接登錄系統(tǒng)。圖3-4用戶登錄和授權(quán)模塊用戶啟動應(yīng)用程序,判斷用戶是否已授權(quán),如果未授權(quán),進(jìn)行授權(quán)配置,授權(quán)后登陸到應(yīng)用首頁,如果已授權(quán)直接進(jìn)行登陸,進(jìn)入到應(yīng)用程序的首頁。用戶登錄和授權(quán)模塊流程圖如圖3-5所示。判斷是否存在已授權(quán)用戶授權(quán)配置開始啟動應(yīng)用登錄登錄到應(yīng)用首頁結(jié)束是否判斷是否存在已授權(quán)用戶授權(quán)配置開始啟動應(yīng)用登錄登錄到應(yīng)用首頁結(jié)束是否圖3-5用戶登陸授權(quán)模塊流程圖2)系統(tǒng)首頁信息模塊功能描述:按時間順序展示好友最近更新的微博。如圖3-6所示。參與者:合法登錄用戶。前置條件:已登錄用戶。后置條件:在首頁顯示所有被用戶添加關(guān)注的最新微博信息列表。圖3-6系統(tǒng)首頁信息模塊用例圖跳轉(zhuǎn)主界面首先加載數(shù)據(jù),進(jìn)入首頁,默認(rèn)顯示最新微博列表,可以發(fā)布新微博、查看我的收聽和聽眾,主界面主頁面流程圖如圖3-7所示。加載數(shù)據(jù)加載數(shù)據(jù)開始進(jìn)入首頁發(fā)表新微博結(jié)束顯示最新微博的列表查看我的收聽和我的聽眾圖3-7主界面流程圖3)發(fā)布微博模塊功能描述:該模塊主要實現(xiàn)了用戶發(fā)布微博的功能。如圖3-8所示。參與者:合法登錄用戶。前置條件:已登錄用戶。后置條件:新微博信息是否發(fā)表成功。圖3-8用戶發(fā)布微博模塊用例圖點擊發(fā)布微博按鈕,會彈出發(fā)布微博界面,輸入內(nèi)容,點擊發(fā)送按鈕發(fā)送微博,發(fā)送失敗返回原來界面,可以繼續(xù)發(fā)布。發(fā)布成功顯示發(fā)布成功,用戶發(fā)布微博流程圖如圖3-9所示。否是點擊首頁微博發(fā)送按鈕開始輸入內(nèi)容點擊發(fā)送否是點擊首頁微博發(fā)送按鈕開始輸入內(nèi)容點擊發(fā)送判斷結(jié)束發(fā)送失敗4)瀏覽微博內(nèi)容模塊(包括轉(zhuǎn)發(fā)和評論倆個功能)功能描述:該模塊實現(xiàn)了用戶可以通過點擊某一條微博信息查看該微博的所有內(nèi)容,并進(jìn)行評論和轉(zhuǎn)發(fā)操作。如圖3-10所示。參與者:已登錄用戶。前置條件:已登錄用戶。后置條件:可以進(jìn)行轉(zhuǎn)發(fā)和評論。圖3-10瀏覽微博內(nèi)容用例圖點擊評論按鈕進(jìn)入評論界面,在文本框輸入評論內(nèi)容,點擊發(fā)送按鈕發(fā)送,發(fā)送失敗返回原來界面,可以繼續(xù)發(fā)布。發(fā)布成功顯示發(fā)布成功。評論、轉(zhuǎn)發(fā)微博流程圖如圖3-11所示。否是點擊評論按鈕進(jìn)入評論頁面否是點擊評論按鈕進(jìn)入評論頁面開始結(jié)束輸入評論內(nèi)容點擊發(fā)送判斷評論失敗圖3-11評論微博流程圖點擊轉(zhuǎn)發(fā)按鈕進(jìn)入轉(zhuǎn)發(fā)界面,在文本框輸入轉(zhuǎn)發(fā)內(nèi)容,點擊發(fā)送按鈕發(fā)送,發(fā)送失敗返回原來界面。發(fā)布成功顯示發(fā)布成功。轉(zhuǎn)發(fā)微博流程圖如圖3-12所示。是否點擊評論按鈕進(jìn)入轉(zhuǎn)發(fā)頁面是否點擊評論按鈕進(jìn)入轉(zhuǎn)發(fā)頁面開始結(jié)束輸入轉(zhuǎn)發(fā)內(nèi)容點擊發(fā)送判斷轉(zhuǎn)發(fā)失敗圖3-12轉(zhuǎn)發(fā)微博流程圖5)查看用戶信息模塊(包含查看好友資料和詳情)功能描述:查看好友的詳細(xì)信息。如圖3-13所示。參與者:合法登錄用戶。前置條件:已登錄用戶。后置條件:查看好友詳細(xì)信息關(guān)注。圖3-13查看用戶信息模塊用例圖在主界面點擊微博按鈕,進(jìn)入用戶所有微博列表界面,點擊某一條微博信息,查看微博的詳細(xì)信息,點擊更多跳轉(zhuǎn)到好友詳細(xì)信息,可以查看好友粉絲和關(guān)注。查看用戶模塊流程圖如圖3-14所示。結(jié)束結(jié)束點擊微博按鈕開始用戶所有微博列表界面查看某一條微博詳細(xì)信息同時進(jìn)行評論和轉(zhuǎn)發(fā)操作圖3-14查看用戶信息4系統(tǒng)詳細(xì)設(shè)計4.1用戶登錄授權(quán)模塊如今手機(jī)已成為人們生活中不可缺少的東西,尤其對于青少年,智能手機(jī)已是他們生活中的必備,沒有智能手機(jī)他們甚至茶飯不思。而且,手機(jī)和傳統(tǒng)pc很不同的一點在于,傳統(tǒng)pc端的網(wǎng)絡(luò)入口一般為瀏覽器,這也是為什么在傳統(tǒng)互聯(lián)網(wǎng)中百度和谷歌如此盛行的原因,但是在移動互聯(lián)網(wǎng)的世界里,受手機(jī)屏幕尺寸等原因的限制,用戶不再喜歡使用瀏覽器作為進(jìn)入網(wǎng)絡(luò)的入口,轉(zhuǎn)而代之的是各種功能強(qiáng)大的app應(yīng)用程序,互聯(lián)網(wǎng)界一直流傳著一句話,得用戶者得天下,廣大廠商為了使自己的app應(yīng)用程序可以更加方便的使用,大都在用戶第一次登錄的時候便把用戶的登錄數(shù)據(jù)保存在手機(jī)終端,這樣極大的方便了用戶更方便的使用自己的app。由于本程序設(shè)計時采用騰訊微博的服務(wù)器端,而騰訊微博服務(wù)器端需要用戶在使用第三方軟件時進(jìn)行授權(quán),所以用戶必須在騰訊微博授權(quán)才能使用我們的app程序?;谝陨显?,本應(yīng)用程序也采取這種方式,保存用戶的登錄數(shù)據(jù)使用戶在下次打開app時不在重新輸入用戶名和密碼。設(shè)計了帳號管理界面。如圖4-1所示。圖4-1帳號管理在帳號管理界面,有倆個按鈕,進(jìn)入和添加帳號,如果用戶是第一次登錄,點擊進(jìn)入按鈕,界面不會跳轉(zhuǎn)進(jìn)入,而會提示需要先進(jìn)行授權(quán),我們點擊添加帳號按鈕,跳轉(zhuǎn)到騰訊官方登錄界面,在登錄界面輸入自己騰訊微博的用戶名和密碼進(jìn)行授權(quán),授權(quán)成功后,會返回到登錄界面,這時再點擊進(jìn)入按鈕進(jìn)入微博主界面。與此同時,系統(tǒng)會自動保存用戶的登錄信息,用戶在下次登錄時無需再次輸入帳號和密碼可以直接點擊進(jìn)入按鈕。當(dāng)用戶需要使用其他帳號登錄時,需要再次登錄騰訊微博官方登錄界面,輸入用戶名和密碼,授權(quán)給我們的應(yīng)用程序。圖4-2所示為點擊添加帳號跳轉(zhuǎn)的騰訊微博官方登錄界面,在登錄界面輸入用戶名和密碼點擊登錄后就完成了授權(quán),程序會再次返回帳號管理界面,點擊進(jìn)入按鈕進(jìn)入程序主界面。圖4-2授權(quán)以下是實現(xiàn)上述功能的主要代碼:為添加帳號按鈕添加一個點擊事件監(jiān)聽器并且實現(xiàn)他的點擊方法,下面是點擊方法里的代碼。longappid=Long.valueOf(Util.getConfig().getProperty("APP_KEY"));Stringapp_secket=Util.getConfig().getProperty("APP_KEY_SEC");auth(appid,app_secket);在這里,我封裝了一個auth方法,方法里的兩個參數(shù)是訪問騰訊微博服務(wù)器端所需提供的參數(shù),騰訊微博服務(wù)器端根據(jù)這倆個參數(shù)判斷我們的權(quán)限,提供服務(wù)使我們可以調(diào)用API實現(xiàn)各種功能。下面是提交參數(shù)后在各種情況下程序所走的路徑。privatevoidauth(longappid,Stringapp_secket){finalContextcontext=this.getApplicationContext();AuthHelper.register(this,appid,app_secket,newOnAuthListener(){}如果當(dāng)前設(shè)備沒有安裝騰訊微博客戶端,走這里。publicvoidonWeiBoNotInstalled(){Toast.makeText(MainPage_Activity.this,"onWeiBoNotInstalled",1000).show();AuthHelper.unregister(MainPage_Activity.this);Intenti=newIntent(MainPage_Activity.this,Authorize.class);startActivity(i);}如果當(dāng)前設(shè)備沒安裝指定版本的微博客戶端,調(diào)用此方法。@OverridepublicvoidonWeiboVersionMisMatch(){Toast.makeText(MainPage_Activity.this,"onWeiboVersionMisMatch",1000).show();AuthHelper.unregister(MainPage_Activity.this);Intenti=newIntent(MainPage_Activity.this,Authorize.class);startActivity(i);}如果授權(quán)失敗,調(diào)用此方法。@OverridepublicvoidonAuthFail(intresult,Stringerr){Toast.makeText(MainPage_Activity.this,"result:"+result,1000).show();AuthHelper.unregister(MainPage_Activity.this);}授權(quán)成功后,所有的授權(quán)信息是存放在WeiboToken對象里面的,可以根據(jù)具體的使用場景,將授權(quán)信息存放到自己期望的位置,在這里,存放到了applicationcontext中。@OverridepublicvoidonAuthPassed(Stringname,WeiboTokentoken){Toast.makeText(MainPage_Activity.this,"passed",1000).show();Util.saveSharePersistent(context,"ACCESS_TOKEN",token.accessToken);Util.saveSharePersistent(context,"EXPIRES_IN",String.valueOf(token.expiresIn));Util.saveSharePersistent(context,"OPEN_ID",token.openID);Util.saveSharePersistent(context,"REFRESH_TOKEN","");Util.saveSharePersistent(context,"CLIENT_ID",Util.getConfig().getProperty("APP_KEY"));Util.saveSharePersistent(context,"AUTHORIZETIME", String.valueOf(System.currentTimeMillis()/1000l));4.2系統(tǒng)首頁信息模塊一個程序的成敗與它主界面的設(shè)計有莫大的關(guān)系,主界面對一個app程序起著至關(guān)重要的作用,它不但要使用戶看起來清晰、美觀,而且在功能的選擇上也必須取舍得當(dāng)。我本次設(shè)計登錄界面在功能的選取方面也做了很大的功夫。界面中間部分是微博信息列表毋庸置疑,重點是上下功能欄的功能選取和設(shè)計,我參考了騰訊、新浪、網(wǎng)易、搜狐等多款微博app的設(shè)計,他們各不相同但是都有自己的特色。我結(jié)合自己的需求做了如下設(shè)計,“發(fā)布微博”作為微博的主要功能之一放在哪個位置一直備受爭議,我的目標(biāo)是致力與開發(fā)一款簡潔方便的app程序,由于大部分用戶習(xí)慣使用右手操作手機(jī),所以,我把“發(fā)布微博”的功能放到了右上方。下方工具欄則放了一系列功能相似,級別相同的功能,而下方第一個按鈕也與市面上幾乎所有微博相同,放置了回到首頁功能。主界面效果圖如圖4-3所示。圖4-3首頁微博列表應(yīng)用程序主頁按時間線顯示好友最近微博信息,左上方放置刷新按鈕,右上方放置發(fā)布微博功能,下方4個圖標(biāo)功能依次是回到主頁、發(fā)私信、查看我的聽眾和我的收聽,點擊后各自會觸發(fā)自己對應(yīng)的功能,點擊效果將在下面的章節(jié)中一一描述。以下方法是調(diào)用騰訊微博服務(wù)器API獲得好友最近發(fā)布的微博的方法名以及參數(shù)的詳解,以后我們會經(jīng)常使用類似的方法來獲取騰訊微博服務(wù)器端的數(shù)據(jù),所以特此做一次詳解。使我們熟悉和簡單的理解騰訊服務(wù)器端怎么與我們的微博app應(yīng)用進(jìn)行數(shù)據(jù)交互,其中部分特殊的參數(shù)會在后續(xù)的章節(jié)中繼續(xù)解釋。獲取主頁時間線:publicvoidgetHomeTimeLine(Context

context,int

pageFlag,int

pageTime,int

reqnum,int

type,int

contenttype,\o"java.lang中的類或接口"String

format,\o"work中的接口"HttpCallback

mCallBack,\o"java.lang中的類或接口"Class<?extends\o"com.tencent.weibo.sdk.android.model中的類"BaseVO>

mTargetClass,int

resultType)參數(shù):context-上下文pageFlag-分頁標(biāo)識(0:第一頁,1:向下翻頁,2:向上翻頁)pageTime-本頁起始時間(第一頁:填0,向上翻頁:填上一次請求返回的第一條記錄時間,向下翻頁:填上一次請求返回的最后一條記錄時間)reqnum-每次請求記錄的條數(shù)(1-70條)type-拉取類型(需填寫十進(jìn)制數(shù)字)0x1原創(chuàng)發(fā)表0x2轉(zhuǎn)載如需拉取多個類型請使用|,如(0x1|0x2)得到3,則type=3即可,填零表示拉取所有類型contenttype-內(nèi)容過濾。0-表示所有類型,1-帶文本,2-帶鏈接,4-帶圖片,8-帶視頻,0x10-帶音頻建議不使用contenttype為1的類型,如果要拉取只有文本的微博,建議使用0x80format-返回類型json/xmlmCallBack-回調(diào)函數(shù)mTargetClass-返回對象類,如果返回json則為nullresultType-BaseVO.TYPE_BEAN=0BaseVO.TYPE_LIST=1BaseVO.TYPE_OBJECT=2BaseVO.TYPE_BEAN_LIST=3BaseVO.TYPE_JSON=44.3發(fā)布微博模塊“發(fā)布微博”對于微博應(yīng)用是一個十分重要的功能。我在這里也做了許多的工作來完成發(fā)布微博的功能,微博通俗的解釋就是微型博客,為什么叫微型博客?因為微博僅僅允許編輯140字,幾乎所有主流微博都遵守這一特性,我們的微博也將沿用此特點,為了豐富微博的功能,我們還為允許在編輯中加入圖片、連接、特殊符號、表情等。這樣做可以豐富微博的內(nèi)容,使微博不僅僅拘泥于死板的文字,增加微博的趣味性。如圖4-4所示。圖4-4發(fā)布微博點擊主界面右上方會跳到發(fā)布微博界面,在文本框中可以輸入文字、圖片、@符號、表情等編輯符號。右上方為發(fā)送按鈕,點擊按鈕會將編輯框中的內(nèi)容發(fā)送到服務(wù)器端,我們回到主頁后點擊刷新按鈕可以看到我們新發(fā)送的微博。同樣的,發(fā)送微博也會調(diào)用騰訊微博API接口,下面的方法為發(fā)布微博所調(diào)用的方法及參數(shù)詳解(為了說明較難懂的參數(shù),再次給出參數(shù)詳解)。publicvoidaddWeibo(Contextcontext,Stringcontent,Stringformat,doublelongitude,doublelatitude,intsyncflag,intcompatibleflag,HttpCallbackmCallBack,Class<?extendsBaseVO>mTargetClass,intresultType)參數(shù):context-上下文content-微博內(nèi)容(若在此處@好友,需正確填寫好友的微博賬號,而非昵稱),不超過140字format-返回數(shù)據(jù)的格式(json或xml)longitude-經(jīng)度,為實數(shù),如113.421234(最多支持10位有效數(shù)字,可以填空)不是必填latitude-緯度,為實數(shù),如22.354231(最多支持10位有效數(shù)字,可以填空)不是必填syncflag-微博同步到空間分享標(biāo)記(可選,0-同步,1-不同步,默認(rèn)為0),目前僅支持oauth1.0鑒權(quán)方式不是必填compatibleflag-容錯標(biāo)志,支持按位操作,默認(rèn)為0。0x20-微博內(nèi)容長度超過140字則報錯0-以上錯誤做容錯處理,即發(fā)表普通微博不是必填mCallBack-回調(diào)函數(shù)mTargetClass-返回對象類,如果返回json則為nullresultType-BaseVO.TYPE_BEAN=0BaseVO.TYPE_LIST=1BaseVO.TYPE_OBJECT=2BaseVO.TYPE_BEAN_LIST=3BaseVO.TYPE_JSON=4在所有參數(shù)中,雖然也有好多難理解的參數(shù),但是,通過我的實驗,那些參數(shù)暫時不影響我們的程序效果,但是有一個很重要的參數(shù)卻是我們不得不了解的,那就是mCallBack,我們需要實例化這個對象,然后調(diào)用這個類中的方法。我將mCallBack作如下實現(xiàn)。mCallBack=newHttpCallback(){ @Override publicvoidonResult(Objectobject){ ModelResultresult=(ModelResult)object; if(result!=null&&result.isSuccess()){ try{ JSONObjectdataObj=newJSONObject(result.getObj().toString()); if("ok".equals(dataObj.getString("msg"))){ Toast.makeText(AddWeiboActivity.this,"發(fā)送成功",Toast.LENGTH_SHORT).show(); } }catch(JSONExceptione){ e.printStackTrace(); } }else{ Toast.makeText(AddWeiboActivity.this, "調(diào)用失敗",Toast.LENGTH_SHORT).show(); } }};4.4瀏覽微博內(nèi)容模塊(包括轉(zhuǎn)發(fā)和評論倆個功能)“轉(zhuǎn)發(fā)”和“評論”功能也是微博應(yīng)用程序中很重要的而且必須有的功能,但是主流微博對它們功能的定義卻不很一致,有的微博中沒有“轉(zhuǎn)發(fā)”功能,而用當(dāng)下流行的點贊替代,還有“轉(zhuǎn)發(fā)”功能可以加入評論的等等,我經(jīng)過多方面體驗,對比和思考以及自己所掌握的知識的綜合考量,最終設(shè)計出圖4-5所示的界面。上方是一個灰色的背景,放置好友的頭像,名稱,右邊有一個明顯的跳轉(zhuǎn)標(biāo)識按鈕,但是考慮到用戶的使用體驗,我不光給跳轉(zhuǎn)按鈕添加點擊跳轉(zhuǎn)事件,也給整個灰色背景添加了一個點擊事件,不管是習(xí)慣點頭像跳轉(zhuǎn)的用戶還是點按鈕跳轉(zhuǎn)的用戶都可以達(dá)到自己的預(yù)期。界面下方是轉(zhuǎn)播、對話、點評功能。圖4-5瀏覽微博內(nèi)容點擊主界面的好友發(fā)布的微博內(nèi)容會跳轉(zhuǎn)到瀏覽微博內(nèi)容模塊,界面中可以看到好友的基本信息和微博的詳情,界面的上方是好友頭像,昵稱,點擊上方的部分會跳轉(zhuǎn)到好友的詳細(xì)信息頁,在界面下方可以對本微博進(jìn)行轉(zhuǎn)播、評論,也可以給好友發(fā)送私信,“轉(zhuǎn)播”功能實現(xiàn)把好友的微博信息復(fù)制發(fā)送給自己的好友的功能?!皩υ挕惫δ軐崿F(xiàn)與好友私下聊天而不作為一條微博發(fā)送給各自的好友?!包c評”功能實現(xiàn)對好友發(fā)布的微博進(jìn)行評論的功能。圖4-6所示是點擊轉(zhuǎn)播的界面,可以看到界面效果與“發(fā)布微博”功能界面幾乎相似,是的,它們是同一個界面,在加入一部分判斷條件實現(xiàn)的,點擊對話按鈕和點評按鈕也會彈出相應(yīng)的界面,他們的界面和發(fā)布微博的功能界面收是相似的,在這里我就不再進(jìn)行截圖,只進(jìn)行文字說明。圖4-6轉(zhuǎn)發(fā)微博一個完整的android程序,layout布局文件會占編程相當(dāng)一部分工作量,而布局的美觀也大大的影響著程序的整體效果。好的布局不但會給人耳目一新的感覺,使用戶愛不釋手,而且還能給用戶以明顯的提示效果,引導(dǎo)用戶更流暢的操作程序。下面的這段代碼是瀏覽微博內(nèi)容上部分內(nèi)容的布局文件。上部分內(nèi)容布局文件,布局方式采用相對布局,這樣布局的好處是可以不用太在意屏幕的尺寸大小,控件的位置會根據(jù)它的相對位置而改變,好友的頭像使用imageview控件,兩個textview分別imageview的右方,一上一下,上邊是好友的昵稱,下邊是好友的微博地址,最右邊是跳轉(zhuǎn)button,所有的控件都有id屬性,可以根據(jù)id值取到他們對應(yīng)的控件,進(jìn)行相應(yīng)的操作。<RelativeLayout android:id="@+id/show_top" android:paddingTop="5.0dip" android:layout_width="fill_parent" android:layout_height="60.0dip" android:background="#c7cbd6" android:layout_alignParentTop="true" android:layout_centerHorizontal="true"> <ImageView android:id="@+id/show_headicon" android:layout_marginLeft="8.0dip" android:layout_width="45.0dip" android:layout_height="45.0dip" android:layout_alignParentLeft="true"/> <TextView android:id="@+id/show_nick" android:layout_marginLeft="5.0dip" android:layout_width="wrap_content" android:layout_toRightOf="@id/show_headicon" android:textColor="#384050" android:layout_height="wrap_content"/> <TextView android:id="@+id/show_email" android:layout_width="wrap_content" android:layout_marginLeft="10.0dip" android:layout_toRightOf="@id/show_headicon" android:textColor="#687888" android:layout_height="wrap_content" android:layout_below="@id/show_nick"/> <Button android:id="@+id/to_userinfo_btn" android:layout_width="wrap_content" android:background="@drawable/arrow_more_info_selector" android:layout_height="wrap_content" android:layout_alignParentRight="true"/> </RelativeLayout>4.5查看用戶信息模塊(包含查看好友資料和詳情)功能模塊化的根據(jù)是,如果一個問題有多個問題組合而成,那么這個組合問題的復(fù)雜程度將大于分別考慮這個問題時的復(fù)雜程度之和。這個結(jié)論使得人們樂于利用功能模塊化方法將復(fù)雜的問題分解成許多容易解決的局部問題。功能模塊化方法并不等于無限制地分割軟件,因為隨著功能模塊的增多,雖然開發(fā)單個功能模塊的工作量減少了,但是設(shè)計功能模塊間接口所需的工作量也將增加,而且會出現(xiàn)意想不到的軟件缺陷。因此,只有選擇合適的功能模塊數(shù)目才會使整個系統(tǒng)的開發(fā)成本最小[9]。在設(shè)計了以上所有功能后,還有那些功能是我的微博客戶端想要的呢?從我個人的角度,我想要了解好友的更多的信息,于是我又設(shè)計了查看用戶信息模塊。因為我們的微博客戶端致力于簡潔,我們不光在功能上在瀏覽微博的部分會跳轉(zhuǎn)到好友的詳細(xì)信息頁,頁面中顯示好友的昵稱,廣播數(shù),聽眾和收聽數(shù),性別、籍貫和最近微博。好友詳細(xì)信息界面包括好友頭像、好友昵稱、好友所發(fā)廣播總數(shù)、聽眾數(shù)、收聽數(shù)、好友的性別、所在地等基本詳細(xì)信息。好友詳細(xì)信息界面如圖4-7所示。圖4-7好友詳細(xì)信息好友所有廣播界面是一個列表界面,列表的每一項包含頭像、昵稱、發(fā)布微博時間、發(fā)布微博內(nèi)容。好友全部微博界面如圖4-8所示。圖4-8好友的全部微博好友的收聽界面是一個列表界面,每一列包含用戶的頭像、用戶昵稱、用戶微博地址。在我的收聽左右倆邊,分別有刷新和發(fā)布微博倆個按鈕,點擊左邊的刷新按鈕,可以刷新好友列表,點擊發(fā)布微博按鈕可以發(fā)布微博。好友收聽列表如圖4-9所示。圖4-9好友的收聽列表好友的聽眾界面是一個列表界面,每一列包含用戶的頭像、用戶昵稱、用戶微博地址。在我的聽眾左右倆邊,分別有刷新和發(fā)布微博倆個按鈕,點擊左邊的刷新按鈕,可以刷新好友列表,點擊發(fā)布微博按鈕可以發(fā)布微博。好友聽眾列表如圖4-10所示。圖4-10好友的聽眾列表2)實現(xiàn)代碼classGridAdapterextendsBaseAdapter{ privateContextcontext; privateLayoutInflaterinflater; List<String>numList; publicGridAdapter(Contextcontext,List<String>numList){ super(); this.context=context; this.numList=numList; this.inflater=LayoutInflater.from(context); } @Override publicintgetCount(){ returnnumList.size(); } @Override publicObjectgetItem(intposition){ returnnumList.get(position); } @Override publiclonggetItemId(intposition){ returnposition; } @Override publicViewgetView(finalintposition,ViewconvertView,ViewGroupparent){ convertView=inflater.inflate(R.layout.userinfo_grid_item,null); TextViewnum=(TextView)convertView.findViewById(R.id.userinfo_grid_num); TextViewtitle=(TextView)convertView.findViewById(R.id.userinfo_grid_title); ImageViewimage=(ImageView)convertView.findViewById(R.id.userinfo_grid_image); switch(position){ case0: num.setText(numList.get(0)); title.setText("廣播"); image.setVisibility(View.VISIBLE); break; case1: num.setText(numList.get(1)); title.setText("聽眾"); image.setVisibility(View.VISIBLE); break; case2: num.setText(numList.get(2)); title.setText("收聽"); break; default: break; } returnconvertView; } }功能模塊獨立的概念是功能模塊化、抽象、信息隱蔽和局部化概念的直接結(jié)果。抽象是指對事物、狀態(tài)或過程之間所存在的某些相似的方面集中和概括起來,而暫時忽略他們之間的差異,即考慮抽象事物的本質(zhì)特征而暫時不考慮他們的細(xì)節(jié)。信息隱蔽是指再設(shè)計功能模塊時使得一個功能模塊內(nèi)所包含的信息(過程或數(shù)據(jù)),對于不需要這些信息的功能模塊來說是不能訪問的。信息隱蔽原則對于以后在軟件維護(hù)期間修改軟件時會帶來極大的好處,因為大量數(shù)據(jù)和過程是軟件的其他部分所不能覺察的,因而再對某個功能模塊修改時就不大會影響到軟件的其他部分,所謂局部化是指把一些關(guān)系密切的軟件元素在物理位置上彼此靠近。功能模塊獨立性是通過制定具有單一功能并且和其他功能模塊沒有過多聯(lián)系的功能模塊來實現(xiàn)的。每個功能模塊只涉及該軟件要求的一個具體子功能,而且與軟件結(jié)構(gòu)的其他部分的接口是簡單的。比如,五四絡(luò)科網(wǎng)所運用到的功能模塊在一定程度上就克服了傳統(tǒng)建站的弊端,可以從根本上建立一個完全獨立的網(wǎng)站,具體表現(xiàn)在:五四絡(luò)科建站所生成的數(shù)據(jù)庫是獨立的,也就意味著可以移植到其他服務(wù)器平臺上,從而解決生成的網(wǎng)站不能遷移的難題;五四絡(luò)科建站平臺可以讓生成的網(wǎng)站互不干涉,相互獨立,進(jìn)而提高了系統(tǒng)的安全性;有建站需求的客戶往往趨向于個性化,可以在五四絡(luò)科建站的基礎(chǔ)上進(jìn)行二次開發(fā);在管理上網(wǎng)站也是獨立的,管理員可以給網(wǎng)站開通獨立的FTP權(quán)限,在管理網(wǎng)站時不會影響到其他網(wǎng)站,遷移出去也很方便。功能模塊獨立性好的軟件接口簡單,易于編制,獨立的功能模塊也比較容易測試和維護(hù),限制了功能模塊之間由于聯(lián)系緊密而引起的修改副作用。獨立性是保證軟件質(zhì)量的重要因素。5系統(tǒng)的測試與維護(hù)5.1測試技術(shù)5.1.1白盒測試白盒測試:通過測試來檢驗系統(tǒng)內(nèi)部動作是否按照規(guī)定正常進(jìn)行。這種測試方法主要有以下幾種方式。1)邏輯覆蓋:語句覆蓋;判定覆蓋;條件覆蓋;判定/條件覆蓋;條件組合覆蓋;點覆蓋;邊覆蓋;路徑覆蓋。2)控制結(jié)構(gòu)測試:基本路徑測試;條件測試;循環(huán)測試。5.1.2黑盒測試黑盒測試:黑盒測試也叫功能測試,它是通過測試來檢測每個功能是否都能正常使用。在測試中,把程序看作一個不能打開的黑盒子,在完全不考慮程序內(nèi)部結(jié)構(gòu)和內(nèi)部特性的情況下,在程序接口進(jìn)行測試,它只檢查程序功能是否按照需求規(guī)格說明書的規(guī)定正常使用,程序是否能適當(dāng)?shù)亟邮蛰斎霐?shù)據(jù)而產(chǎn)生正確的輸出信息。黑盒測試著眼于程序外部結(jié)構(gòu),不考慮內(nèi)部邏輯結(jié)構(gòu),主要針對軟件界面和軟件功能進(jìn)行測試。5.1.3安全性測試由于系統(tǒng)涉及到個人信息,所以應(yīng)充分保證信息的安全性,本系統(tǒng)采用實名注冊,且不能輕易改變注冊人的信息,這樣即使手機(jī)丟失造成非本人操作的交易,但是由于注冊信息未發(fā)生改變,將用戶的損失降到最低。在一定程度上增強(qiáng)了來自外部因素的安全性。且用戶使用必須處于登錄狀態(tài)。結(jié)果表明,不登錄是無法進(jìn)行相應(yīng)的操作的。5.2單元測試測試系統(tǒng)的第一步是測試組成系統(tǒng)的單個構(gòu)件。測試這些構(gòu)件稱為單元測試。在單元測試過程中,首先檢查代碼在程序的算法、數(shù)據(jù)和語法方面有沒有缺陷,最后給該構(gòu)件輸入一個測試用例集,以說明該構(gòu)件是否正確。在單元測試時,主要對單個模塊的功能進(jìn)行測試,不用理會其他的模塊的耦合情況。測試一在用戶授權(quán)配置時,用戶名或密碼有一項為空或者填寫錯誤,系統(tǒng)是否出現(xiàn)預(yù)先設(shè)定的操作提示。具體操作:用戶名、密碼、任意一項為空或者填寫有誤。結(jié)果:都出現(xiàn)相應(yīng)的錯誤原因的信息提示。結(jié)論:要求用戶必須填寫正確的用戶名和密碼,才能授權(quán)成功。測試二在發(fā)表新微博時,輸入空內(nèi)容,或者和上一條內(nèi)容一樣的微博時,程序是否有出現(xiàn)預(yù)先設(shè)定的提示。具體操作:輸入的內(nèi)容為空,或者和上一條相同的內(nèi)容。結(jié)果:提示用戶內(nèi)容不能為空,或者請不要輸入相同內(nèi)容。結(jié)論:要求輸入正確內(nèi)容。測試三評論微博時,輸入評論內(nèi)容,如果內(nèi)容為空,程序是否有出現(xiàn)預(yù)先設(shè)定的內(nèi)容為空提示。具體操作:輸入空的評論內(nèi)容。結(jié)果:顯示評論內(nèi)容不能為空。結(jié)論:微博評論功能正常。測試四在通過關(guān)鍵字搜索相關(guān)用戶時,如果輸入空內(nèi)容,程序是否有出現(xiàn)預(yù)先設(shè)定的內(nèi)容為空提示?;蛘咻斎氲年P(guān)鍵字沒有搜索到相關(guān)的內(nèi)容,搜索無結(jié)果有無提示。具體操作:輸入空的搜索內(nèi)容或者正確的內(nèi)容。結(jié)果:提示請輸入關(guān)鍵字,提示輸入內(nèi)容為空或者提示還沒有找到相關(guān)內(nèi)容。結(jié)論:搜索功能正常。測試五在對某一用戶進(jìn)行關(guān)注和取消關(guān)注操作的時候,驗證是否已經(jīng)取消了對其的關(guān)注,或添加了對用戶的關(guān)注。具體操作:點擊關(guān)注按鈕和取消按鈕。結(jié)果:顯示關(guān)注或者取消狀態(tài)。結(jié)論:添加關(guān)注和取消關(guān)注功能正常。5.3集成測試單元測試之后,就需要對系統(tǒng)的所有功能進(jìn)行測試。在此階段對照用例進(jìn)行功能測試。此階段所發(fā)現(xiàn)的往往是概要設(shè)計的錯誤并將各個模塊繼承起來進(jìn)行結(jié)合測試。繼承測試分為兩種:一次性組裝方式和增殖式組裝。即把經(jīng)單元測試后的模塊一次性的組裝成系統(tǒng)進(jìn)行測試,增殖式組裝方式即在模塊組裝的過程中,邊組裝邊測試,每增加一個或幾個模塊就測試一次,最后組裝成最后的系統(tǒng)。結(jié)論如今軟件開發(fā)是一個有明確分工的工作,根據(jù)軟件工程的理論,在開發(fā)過程中不同的人會負(fù)責(zé)不同的模塊開發(fā),比如有專門的人負(fù)責(zé)業(yè)務(wù)邏輯,有專門的人負(fù)責(zé)圖形界面,所以現(xiàn)在的開發(fā)人員都是某一方面的專家。在本系統(tǒng)中圖形界面雖然簡單,但并不是十分的友好,從美觀的角度來說也還是很不夠的,這樣的界面是不能應(yīng)用到實踐中的。在論文的寫作過程中,不僅參考了大量的書籍,而且還有老師指導(dǎo)和幫助,這給論文的編寫奠定了良好的理論基礎(chǔ),并且自己親身體驗了騰訊的微博系統(tǒng)后臺,給本人開發(fā)系統(tǒng)及編寫論文提供了良好的素材。經(jīng)過幾個月的努力工作,基于Android的微博客戶端終于完成了?;诒旧韆ndroid的知識以及對android的濃厚興趣,一直摸索著運用了很多比較高級的技術(shù)完成了這個軟件。在這個過程中,我學(xué)會了很多知識,比如Android環(huán)境的搭建、Intent、Activity、Services、ContentProvider、SQLite等,但我學(xué)會的最重要的一點是,利用現(xiàn)有的資源去想辦法分析問題、解決問題??梢栽跁泻途W(wǎng)絡(luò)上查找解決問題的辦法和知識,然后先把所遇到的問題從整個程序中剝離,根據(jù)所查到的知識試編寫一個demo測試這樣做是否可以解決問題,如果可以,再把相應(yīng)的解決思路和代碼運用到項目上。這樣做會使項目出錯的幾率降低,如果不清楚這個解決方案是否可行而直接運用到項目中,一旦如此的解決方案沒有達(dá)到預(yù)期的效果,或者由于加入這段代碼而使應(yīng)用程序報錯,之后程序的工作量和工作難度都會成倍的加大。雖然,這個軟件目前運行良好,但是代碼的健壯性還很差,在整個工程的構(gòu)思方面也不足,用戶操作界面還是不夠靈活友好,這些問題還需要今后逐一解決。還有,這個軟件還可以進(jìn)一步擴(kuò)展,例如:微博廣場、私信、推薦好友等,使功能更加強(qiáng)大,帶給用戶更好的體驗與便捷。通過本系統(tǒng)的開發(fā),使我對所學(xué)的知識和理論有了更深一層的了解,也使我學(xué)會了如何利用所學(xué)的知識來進(jìn)行實際的開發(fā),在代碼編寫的前期,必須要對所要做的軟件系統(tǒng)進(jìn)行全面透徹的分析,對系統(tǒng)的需求一定要非常的明確,知道我們要做什么,把所要做的功能都列出來,然后去分析他們之間可能有的內(nèi)在的聯(lián)系,分析清楚之后就需要確定這些功能需要怎么樣實現(xiàn),當(dāng)然現(xiàn)在只是在做系統(tǒng)的概要設(shè)計,把系統(tǒng)的模塊,用例圖,工作的流程圖進(jìn)行進(jìn)一步的分析確定,這時候我們就知道要做什么以及怎樣做,接下來就可以嘗試進(jìn)行系統(tǒng)的詳細(xì)設(shè)計以及開始編碼工作了,但是現(xiàn)在的階段還不是可以完全可以進(jìn)行編碼的時候,現(xiàn)階段要做的工作主要是對整個程序的結(jié)構(gòu)進(jìn)行設(shè)計,我們知道系統(tǒng)大概要怎么做之后一定要做編碼部分的設(shè)計,一個號的代碼結(jié)構(gòu)可以幫助我們更加清晰的分析問題和實現(xiàn)功能,詳細(xì)設(shè)計的階段就是對功能模塊進(jìn)行詳細(xì)的分析與設(shè)計,使之更加容易實現(xiàn),而且在修改或添加功能的時候不用改動太多的東西便可以放便的做到。在代碼編寫時我們要編寫的條理清晰,如果有共用的代碼塊我們要把它封裝,在自己的認(rèn)知上盡量使用面向?qū)ο缶幊痰乃枷?,使用繼承,多態(tài),封裝等思想實現(xiàn),是代碼結(jié)構(gòu)高內(nèi)聚,低耦合,解決問題是更接近日常生活和自然的思考方式,使系統(tǒng)更靈活、更容易擴(kuò)展和維護(hù)。本項目從當(dāng)前形勢下微博系統(tǒng)弊端的提出,開始系統(tǒng)可行性分析,總體的功能模塊設(shè)計,詳細(xì)設(shè)計,功能模塊的實現(xiàn),就是依據(jù)軟件工程的基本思想進(jìn)行開發(fā)。通過這次開發(fā),使我進(jìn)一步掌握了軟件工程的思想,以及體會到使用軟件工程的思想給開發(fā)帶來的好處,從而對本專業(yè)有了更深刻的認(rèn)識。以后,我會更加努力的去研究,在熟練android技術(shù)的基礎(chǔ)上掌握更多的新型技術(shù),來提高自己的開發(fā)水平。通過這次畢業(yè)設(shè)計的任務(wù),使我感到科技的力量與美感。在這次畢業(yè)設(shè)計的過程中,得到了學(xué)校的大力支持,給本人提供了舒適的工作學(xué)習(xí)環(huán)境,也得到了工大老師的精心指導(dǎo)。由于本人第一次完整的設(shè)計程序,水平有限,設(shè)計中難免有不當(dāng)之處,還請各位老師給予批評和指正。踉踉蹌蹌地忙碌了幾個月,畢業(yè)設(shè)計課題也將告一段落。運行程序,也基本達(dá)到了預(yù)期的效果。虛榮的成就感在沒人的時候也總會冒上心頭。但由于能力和事件的關(guān)系,總是覺得有很多不盡人意的地方,譬如,功能不全、外觀粗糙、底層代碼不合理...數(shù)不勝數(shù)??墒?,又會有點自戀似的安慰自己:做一件事情,不必過于在乎最終的結(jié)果,可貴的是過程中的收獲,以此來安撫自己尚未平復(fù)的心。參考文獻(xiàn)[1]姚尚朗,靳巖.Coogleandroid開發(fā)入門與實踐[M].人民郵電出版社,2009[2]柯元旦.Android內(nèi)核剖析[M].電子工業(yè),2011[3]SayedY,Hashimi.ProAndroid[D].Apress,2011[4]EdBurnette.Hello,Android[J].PragmaticBookshelf,2008[5]BruceTate.BitterJava[D].ManningPublications,2002[6]楊豐盛.Android應(yīng)用開發(fā)揭秘[M].機(jī)械工業(yè)出版社,2010[7]JoshuaBloch,Effective.JavaProgrammingLanguageGuide[D].Addison-WesleyProfessional,2001[8]鄧凡平.深入理解android[M].機(jī)械工業(yè)出版社,2011[9]袁國忠.android應(yīng)用UI設(shè)計模式[M].人民郵電出版社,2013[10]余志龍.王志江.GoogleandroidSDK開發(fā)范例大全[M].人民郵電出版社,2010 致謝在論文即將完成之際,本人的心情激動,從開始進(jìn)入課題到論文的順利完成,有許多師長、同學(xué)、朋友給了本人無言的幫助,雖然大學(xué)生活即將匆匆忙忙的過去,但自己卻能無悔的說我曾今來過。大學(xué)這幾年給本人帶來的影響卻不能用時間來衡量,這幾年來,經(jīng)歷過的所有事,所有人,都將是以后生活回味的一部分,是為人處世的指南針。要離開學(xué)校,走上工作的崗位了,只是人生歷程的又一個起點,在這里祝福大學(xué)里跟自己風(fēng)雨同舟的朋友們,一路走好,未來總會是絢爛繽紛的。請接受我誠摯的謝意!最后還要感謝培養(yǎng)我長大含辛茹苦的父母,謝謝你們!最后,再次對關(guān)心、幫助我的閆宇帥老師和王錚老師及同學(xué)表示衷心地感謝!外文原文AndroidapplicationsarewrittenintheJavaprogramminglanguage.TheAndroidSDKtoolscompilethecode—alongwithanydataandresourcefiles—intoanAndroidpackage,anarchivefilewithan.apksuffix.Allthecodeinasingle.apkfileisconsideredtobeoneapplicationandisthefilethatAndroid-powereddevicesusetoinstalltheapplication.Anapplicationcanrequestpermissiontoaccessdevicedatasu

溫馨提示

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

評論

0/150

提交評論