2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩32頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  1引言</b></p><p><b>  1.1選題背景</b></p><p>  隨著智能手機(jī)的大眾化,越來越多的人應(yīng)用智能手機(jī)。相對的對手機(jī)軟件的需求也就越來越多。當(dāng)今時代手機(jī)不再只是用來打電話、發(fā)短信的工具,反而對手機(jī)的娛樂功能要求越來越高[1]。手機(jī)的一個重要的功能就是聽音樂,一款好的手機(jī)音樂播放器可以更

2、好的體現(xiàn)智能手機(jī)的強(qiáng)大。目前中國音樂播放器行業(yè)已經(jīng)具備了相當(dāng)?shù)囊?guī)模,并在國際市場上已有一定的競爭力。蘋果手機(jī)作為當(dāng)今中國智能手機(jī)市場上不可或缺的一個品牌,基于iOS的手機(jī)軟件需求量也就相應(yīng)的越來越強(qiáng)。市場上的音樂播放器品牌繁多,定位不一,基本滿足了各層次消費(fèi)者的需求,例如:酷我音樂、酷狗音樂、百度音樂、QQ音樂等等這些大家所熟知的音樂播放器已經(jīng)在蘋果軟件中占據(jù)了一定的地位。智能手機(jī)的應(yīng)用使現(xiàn)代人的生活更加的方便。</p>

3、<p>  伴隨著蘋果手機(jī)進(jìn)入中國市場,相應(yīng)的iOS技術(shù)逐漸流行起來。而對于開發(fā)蘋果應(yīng)用的語言——Object-C,也成為當(dāng)今社會最流行的開發(fā)語言,并且保持著強(qiáng)勁的上升趨勢,隱隱有超過C語言的現(xiàn)象[2]。對于其他的開發(fā)語言,例如java、javascripe,Object-C以其強(qiáng)大的優(yōu)勢遙遙領(lǐng)先于這些其他的編程語言。本人根據(jù)當(dāng)前的形式,決定引用這種這種技術(shù)來開發(fā)手機(jī)應(yīng)用。</p><p>  1.2設(shè)

4、計(jì)目的及意義</p><p>  聽音樂已經(jīng)成為當(dāng)今社會,人們必不可少的一項(xiàng)娛樂活動。根據(jù)調(diào)查所得信息,本人發(fā)現(xiàn)最近智能手機(jī)用戶對較大的音樂播放器應(yīng)用的喜愛度明顯下滑,而相對的那些小巧的音樂播放器反而被越來越多的用戶下載使用。蘋果系統(tǒng)的軟件具有的特點(diǎn)就是美觀、簡潔、易操作。根據(jù)這些信息,設(shè)計(jì)一款小巧的基于iOS的音樂播放器會很容易得到用戶的青睞。同時本人從去年開始接觸iOS,在學(xué)習(xí)了幾個月后,對iOS開發(fā)有了一些

5、理解,所以對于這次畢業(yè)設(shè)計(jì),我就選擇了基于iOS系統(tǒng)開發(fā)一款產(chǎn)品。希望通過這次畢業(yè)設(shè)計(jì)來進(jìn)一步鞏固自己的iOS開發(fā)水平。使自己在以后的社會競爭中更加具有優(yōu)勢。</p><p>  1.3設(shè)計(jì)思想和目標(biāo)</p><p>  設(shè)計(jì)思想:自己的這款音樂播放器設(shè)計(jì)的過程是按照一般的應(yīng)用開發(fā)流程進(jìn)行的。自己首先調(diào)查了當(dāng)今社會,人們對音樂播放器的需求,從中得出現(xiàn)階段手機(jī)用戶需要的是小巧、方便的音樂播放

6、器。從而決定自己開發(fā)一款小巧的音樂播放器。在有了用戶的需求后,本人開始開發(fā)屬于自己的音樂播放器。在真正設(shè)計(jì)音樂播放器的過程中,本人先決定了音樂播放器的整體框架結(jié)構(gòu),應(yīng)用的圖片出處等等這些開發(fā)必需的部分。于是自己借鑒酷狗音樂的框架,開發(fā)一款精簡的酷狗音樂播放器。在決定了整體框架后,就是真正的開發(fā)了。自己將酷狗音樂中與播放無關(guān)的部分刪除,只保留他的播放功能,歌詞顯示功能音樂下載功能等等。下載功能的實(shí)現(xiàn)本人決定針對這款音樂播放器設(shè)計(jì)出一個可供

7、下載的網(wǎng)站以及服務(wù)器。</p><p>  設(shè)計(jì)目標(biāo):雖說這款應(yīng)用自己不打算上線,但自己依舊打算使其完美。擁有播放器的一般功能,可以根據(jù)不同的歌曲顯示不同的歌詞,進(jìn)度條根據(jù)時間顯示播放進(jìn)度,根據(jù)不同的音樂信息進(jìn)行選擇,根據(jù)搜索到的歌曲信息,下載自己喜愛的歌曲。在完成這些功能的過程中來鞏固自己學(xué)到的知識</p><p><b>  2 應(yīng)用分析</b></p>

8、;<p><b>  2.1可行性分析</b></p><p>  可行性分析也可稱為可行性研究,是在網(wǎng)上調(diào)查的基礎(chǔ)上并輔助其他的信息渠道,針對基于iOS的音樂播放器的開發(fā)是否具備必要性和可能性。對新的音樂播放器的開發(fā)從技術(shù)、操作、經(jīng)濟(jì)等不同方面進(jìn)行分析研究,來保證投資的失誤,保證音樂播放器的開發(fā)成功。就我們學(xué)的的知識知道可行性分析可以在最短的時間內(nèi)分析出這款基于iOS的音樂播

9、放器是否可以達(dá)到預(yù)定的效果。</p><p> ?。?)經(jīng)濟(jì)可行性分析:這款基于iOS的音樂播放器的開發(fā)是通過蘋果系統(tǒng)的Xcode來進(jìn)行的。雖然本人不可能購買蘋果筆記本來開發(fā)這款項(xiàng)目,但現(xiàn)階段人們可以在不同的電腦上運(yùn)行蘋果系統(tǒng)。那就是人們所說的黑蘋果,通過一定的技術(shù)使非蘋果筆記本也可運(yùn)行蘋果系統(tǒng)。開發(fā)音樂播放器所需的圖片,自己可以不通過專業(yè)人士來繪制。自己通過破解現(xiàn)有App store上的在線應(yīng)用,來獲取自己想要

10、的資源。并且這個過程很是簡單,不存在浪費(fèi)人力物力的現(xiàn)象。所以得出開發(fā)一款基于iOS的音樂播放器在經(jīng)濟(jì)方面是可行的。</p><p> ?。?)技術(shù)可行性分析:開發(fā)基于iOS的音樂播放器運(yùn)用到的技術(shù)是Object-C,以及一些iOS開發(fā)的UI設(shè)計(jì),某些類庫的應(yīng)用等等。就技術(shù)方面而言,自己學(xué)習(xí)iOS技術(shù)已經(jīng)有四五個月的基礎(chǔ)了,相對于開發(fā)一款音樂播放器而言自己的技術(shù)是完全可以勝任的。而自己在黑蘋果上裝的Xcode完全可

11、以勝任這次開發(fā)的需求。從而分析得出開發(fā)這款音樂播放器在技術(shù)方面是可行的。</p><p>  (3)社會可行性分析:開發(fā)這款音樂播放器,本人不是為了盈利的目的不會損害到任何人的利益。這款音樂播放器雖有一部分按照酷狗音樂來完成,但自己不會發(fā)布出去,所以不會影響到酷狗公司的利益。本人開發(fā)這款音樂播放器符合國家的方針政策,不影響任何組織的利益,沒有宗教方面的宣傳同時不會影響社會穩(wěn)定。所以可以得出本人開發(fā)基于iOS的音樂

12、播放器在社會方面是可行的。 </p><p>  所以,綜上所述本人的基于iOS的音樂播放器的開發(fā)是可行的。</p><p><b>  2.2需求分析</b></p><p>  需求分析指的是在建立一個新的應(yīng)用的時,就這個新的應(yīng)用的目的、范圍、定義及功能這些方面所要做的工作。需求分析是完成一個應(yīng)用必不可少的部分。在進(jìn)行一款項(xiàng)目開發(fā)的過程中

13、,開發(fā)者必須確定客戶的需求,在確定了客戶需求后才能進(jìn)行應(yīng)用的開發(fā)。</p><p>  根據(jù)當(dāng)前社會形勢,蘋果系統(tǒng)在中國逐漸流行,單單是iOS方面的音樂播放器行業(yè)也已經(jīng)具備了相當(dāng)?shù)囊?guī)模[3]。市場上的音樂播放器品牌繁多,定位不一,基本滿足了各層次消費(fèi)者的需求。最新的調(diào)查顯示比較大的音樂播放器市場,并不是很樂觀。而外形新穎、小巧輕便靈活的迷你音樂播放器卻很受年輕人的青睞和歡迎。雖然國內(nèi)的較大的音樂播放器銷售狀況不是

14、很好,但是迷你音樂播放器卻是個例外,市場發(fā)展前景不容小覷。基于此,設(shè)計(jì)音樂播放器重點(diǎn)還是在于美觀的外形和其吸引人的性能,小體積卻可以實(shí)現(xiàn)相對更大的功率,新型的迷你音樂播放器要有其他的附加功能,可以更好的吸引用戶。</p><p>  2.3系統(tǒng)開發(fā)工具介紹</p><p>  2.3.1 Objective-C技術(shù)</p><p>  Object-C是擴(kuò)充C的面向

15、對象編程語言。它主要使用于Mac OS X和GNUstep這兩個使用OpenStep標(biāo)準(zhǔn)的系統(tǒng),而在NeXTSTEP和OpenStep中它更是基本語言。Objective-C可以在gcc運(yùn)作的系統(tǒng)寫和編譯,因?yàn)間cc含Objective-C的編譯器。1980年代初布萊德·確斯在其公司Stepstone發(fā)明Objective-C。他對軟件設(shè)計(jì)和編程里的真實(shí)可用度問題十分關(guān)心,目前主要是編寫iOS操作系統(tǒng)應(yīng)用程序的利器。近幾年Ob

16、jective-C排名大幅提升,它的流行當(dāng)歸功于iphone的成功,因?yàn)镺bjective-C一直被用于編寫iPhone應(yīng)用程序[4]。Objective-C是非常實(shí)際的語言。它是一個用C寫成、很小的運(yùn)行庫,只會令應(yīng)用程序的大小增加很小,和大部分OO系統(tǒng)使用極大的VM執(zhí)行時間會取代了整個系統(tǒng)的運(yùn)作相反。ObjC寫成的程序通常不會比其原始碼大很多。而其函式庫亦和Smalltalk系統(tǒng)要使用極大的內(nèi)存來開啟一個窗口的情況相反。</p&

17、gt;<p>  2.3.2 Xcode開發(fā)工具</p><p>  Xcode是開發(fā)人員建立基于iOS的應(yīng)用最快捷的方式。Xcode是蘋果公司向開發(fā)人員提供的集成開發(fā)環(huán)境。其運(yùn)行于蘋果公司的Mac操作系統(tǒng)下。</p><p>  不管你用C、C++、Objective-C或Java編寫程序,在AppleScript里編寫腳本,還是試圖從另一個奇妙的工具中轉(zhuǎn)移編碼,你會發(fā)現(xiàn)

18、Xcode 編譯速度極快,每次操作都很快速和輕松[5]。</p><p>  蘋果公司為用戶提供了全套免費(fèi)的Cocoa程序開發(fā)工具。Mac OS X一起發(fā)行,在蘋果公司官方的網(wǎng)站下載[6]。</p><p>  2.3.3 SQLite簡介</p><p>  SQLite是一款輕型的數(shù)據(jù)庫[7]。是遵守ACID的關(guān)聯(lián)式數(shù)據(jù)庫管理系統(tǒng),它的設(shè)計(jì)目標(biāo)是嵌入式的,而且目

19、前已經(jīng)在很多嵌入式產(chǎn)品中使用了它,它占用資源非常的低,在嵌入式設(shè)備中,可能只需要幾百K的內(nèi)存就夠了。它能夠支持Windows/Linux/Unix等等主流的操作系統(tǒng),同時能夠跟很多程序語言相結(jié)合,比如 Tcl、C#、PHP、Java等,還有ODBC接口,同樣比起Mysql、PostgreSQL這兩款開源世界著名的數(shù)據(jù)庫管理系統(tǒng)來講,它的處理速度比他們都快。SQLite包含在一個相對小的C庫中。它是D.RichardHipp建立的公有領(lǐng)域

20、項(xiàng)目[8]。不像常見的客戶-服務(wù)器范例,SQLite引擎不是個程序與之通信的獨(dú)立進(jìn)程,而是連接到程序中成為它的一個主要部分。所以主要的通信協(xié)議是在編程語言內(nèi)的直接API調(diào)用。這在消耗總量、延遲時間和整體簡單性上有積極的作用。整個數(shù)據(jù)庫都在宿主主機(jī)上存儲在一個單一的文件中。它的簡單的設(shè)計(jì)是通過在開始一個事務(wù)的時候鎖定整個數(shù)據(jù)文件而完成的。</p><p>  2.3.4 Visual Studio簡介</p&

21、gt;<p>  Visual Studio是微軟公司推出的開發(fā)環(huán)境。是目前最流行的Windows平臺應(yīng)用程序開發(fā)環(huán)境。Visual Studio 2010同時帶來了 NET Framework 4.0、Microsoft Visual Studio 2010 CTP,并且支持開發(fā)面向Windows 7的應(yīng)用程序。除了Microsoft SQL Server,它還支持 IBM DB2和Oracle數(shù)據(jù)庫。Visual St

22、udio中的編程語言運(yùn)行于.NET Framework中。Framework有助于基于Web和Windows的應(yīng)用程序開發(fā),允許來自不同語言的對象共同運(yùn)行,并標(biāo)準(zhǔn)化了語言引用數(shù)據(jù)和對象的方式。Visual Studio .NET是微軟公司推出的程序開發(fā)工作。和以前的Visual Studio相比,Visual Studio .NET 是一個質(zhì)的飛躍。C # 是Visual Studio .NET的重要組成部分。在Visual Studi

23、o .NET 平臺上使用C #語言可以開發(fā)出各種各樣的應(yīng)用程序[9]。在.NET平臺中,C#語言是一種腳本語言,即簡化的C#語言。C#語言已經(jīng)通過國際標(biāo)</p><p>  .NET Framework 是用于生成、部署和運(yùn)行應(yīng)用程序的多語言環(huán)境。.NET Framework通過公共語言運(yùn)行庫、.NET框架類庫、Microsoft 中間語言、JIT即時編譯等機(jī)制生成應(yīng)用程序。</p><p&g

24、t;<b>  3應(yīng)用總體設(shè)計(jì)</b></p><p>  在經(jīng)過可行性分析后本章將主要介紹應(yīng)用的總體設(shè)計(jì)。應(yīng)用所實(shí)現(xiàn)的功能的強(qiáng)弱是衡量一款應(yīng)用的標(biāo)準(zhǔn)。通過對音樂播放器的全面分析并結(jié)合調(diào)研的情況,得出了這款音樂播放器的結(jié)構(gòu)圖與功能模塊圖。</p><p>  3.1音樂播放器的功能模塊概況</p><p>  根據(jù)需求分析的結(jié)果得到音樂播放器的

25、基本模塊包括以下幾個模塊</p><p> ?。?). 我的音樂模塊:其中主要有本地音樂、我喜歡的音樂、最近播放的音樂的幾個部分組成。</p><p> ?。?).網(wǎng)絡(luò)音樂模塊: 該模塊主要包括最新、歌單、排行榜、歌手等幾部分構(gòu)成。</p><p>  (3).更多更能模塊:該模塊主要包括換膚、意見反饋、設(shè)置及部分構(gòu)成。</p><p>  

26、根據(jù)音樂播放器的功能分析可以畫出音樂播放器的功能模塊圖,如圖1所示</p><p>  圖 1 音樂播放器功能模塊圖</p><p>  3.2音樂播放器各功能模塊介紹</p><p>  各功能模塊介紹如下:</p><p><b>  我的音樂模塊</b></p><p>  用戶可以通過此模

27、塊來播放本地的音樂。具體播放功能包括音樂的演唱、歌詞的顯示、播放進(jìn)度的顯示、歌曲的暫停、播放下一首等功能。用戶可以通過本地音樂列表將歌曲存儲成我喜歡的音樂,同時在播放的過程中會將播放過的歌曲名存儲起來,對用戶進(jìn)行提示。</p><p><b>  (2)網(wǎng)絡(luò)歌曲模塊</b></p><p>  用戶可以通過本模塊進(jìn)行選擇網(wǎng)絡(luò)上的音樂信息,同時用戶可以將網(wǎng)絡(luò)上的歌曲下載

28、到本地音樂中進(jìn)行播放,用戶根據(jù)不同的歌曲信息進(jìn)行歌曲搜索,方便了用戶的使用。</p><p><b>  (3)更多功能模塊</b></p><p>  用戶可以通過此模塊對本款音樂播放器進(jìn)行換膚操作,更改本款音樂的皮膚。用戶可以通過意見反饋頁面來提出自己的意見。相應(yīng)的設(shè)置模塊,用戶可以進(jìn)行一些對本應(yīng)用的操作,使本應(yīng)用更加適合用戶需求。</p><

29、p>  4音樂播放器詳細(xì)設(shè)計(jì)</p><p>  4.1音樂播放器界面設(shè)計(jì)</p><p> ?。?)我的音樂界面如圖4-1所示</p><p>  圖4-1 我的音樂</p><p>  用戶可以通過此界面選擇不同的信息。點(diǎn)擊本地音樂可以進(jìn)入音樂播放界面,點(diǎn)擊我喜歡可以進(jìn)入我喜歡界面,其中的歌曲是自己從本地音樂界面中選取出來的,而最

30、近播放界面顯示用戶最近播放的歌曲。此界面部分相關(guān)代碼如下:</p><p>  - (void)viewDidLoad</p><p><b>  {</b></p><p>  mainTableViewArray=[[NSMutableArray alloc]initWithObjects:@"本地音樂",@"

31、iPod音樂",@"我喜歡",@"本地收藏",@"網(wǎng)絡(luò)收藏",@"最近播放", nil];</p><p>  UIView *vi=[[UIView alloc]initWithFrame:CGRectMake(0, 0, 280, 480)];</p><p>  [self.view addSu

32、bview:vi];</p><p>  [vi setBackgroundColor:[UIColor colorWithRed:58/255.0 green:58/255.0 blue:58/255.0 alpha:1]];</p><p>  lableOne=[[UILabel alloc]initWithFrame:CGRectMake(11, 72, 25, 120)];<

33、;/p><p>  lableOne.text=@"我的音樂";</p><p>  lableOne.userInteractionEnabled=YES;</p><p>  lableOne.highlighted=YES;</p><p>  [vi addSubview:lableOne]; </p>

34、;<p>  lableTwo=[[UILabel alloc]initWithFrame:CGRectMake(11, 140+57, 25, 120)];</p><p>  lableTwo.text=@"網(wǎng)絡(luò)音樂";</p><p>  lableTwo.textColor=[UIColor colorWithRed:200/255.0 green

35、:200/255.0 blue:200/255.0 alpha:1];</p><p>  lableTwo.userInteractionEnabled=YES;</p><p>  [vi addSubview:lableTwo]; </p><p>  lableThree=[[UILabel alloc]initWithFrame:CGRectMake

36、(11, 280+52, 25, 120)];</p><p>  lableThree.text=@"更多功能";</p><p>  lableThree.textColor=[UIColor colorWithRed:200/255.0 green:200/255.0 blue:200/255.0 alpha:1];</p><p>  [

37、vi addSubview:lableThree]; </p><p>  UITapGestureRecognizer *tapGestureOne=[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(choseIt:)];</p><p>  [lableOne addGestureRecogni

38、zer:tapGestureOne];</p><p>  [tapGestureOne release];</p><p><b>  }</b></p><p>  此段代碼得到具體含義是,加載初始界面并添加相關(guān)的手勢來控制mainTableViewArray顯示的內(nèi)容。隨后在加載tableVIew的過程中運(yùn)行UITableview的方法即

39、:cellForRowAtIndexPath: 和didSelectRowAtIndexPath:其中cellForRowAtIndexPath是控制每一個cell所顯示的內(nèi)容,而didSelectRowAtIndexPath則是在這些cell被點(diǎn)中時判斷哪個被點(diǎn)中了,要運(yùn)行什么方法。</p><p>  網(wǎng)絡(luò)音樂界面如圖4-2所示</p><p>  圖4-2 網(wǎng)絡(luò)音樂界面</p&

40、gt;<p>  用戶可以從此界面中選擇網(wǎng)絡(luò)相關(guān)的音樂。點(diǎn)擊歌單會彈出歌單界面,其中是各種流行的單曲。點(diǎn)擊排行榜則會彈出當(dāng)前的流行歌曲排行榜,同樣點(diǎn)擊歌手則會彈出歌手界面。</p><p>  此界面的代碼是只要將最初的mainTableViewArray的顯示內(nèi)容改變了,并通過相應(yīng)的手勢來達(dá)到內(nèi)容的改變。手勢方法相關(guān)的代碼如下:</p><p>  -(void)chose

41、It:(UITapGestureRecognizer *)tap</p><p><b>  {</b></p><p>  [mainTableViewArray removeAllObjects];</p><p>  CGPoint point=[tap locationInView:self.view];</p><

42、p>  if(CGRectContainsPoint(lableOne.frame, point))</p><p><b>  {</b></p><p><b>  flag=0;</b></p><p>  [array removeAllObjects];</p><p>  main

43、TableViewArray=[[NSMutableArray alloc]initWithObjects:@"本地音樂",@"iPod音樂",@"我喜歡",@"本地收藏",@"網(wǎng)絡(luò)收藏",@"最近播放", nil];</p><p>  lableTwo.highlighted=NO;<

44、/p><p>  lableThree.highlighted=NO;</p><p>  lableOne.highlighted=YES;</p><p>  lableOne.highlightedTextColor=[UIColor whiteColor];</p><p>  signImage.frame=CGRectMake(43,

45、 68, 4, 120);</p><p><b>  }</b></p><p>  else if(CGRectContainsPoint(lableTwo.frame, point))</p><p><b>  {</b></p><p><b>  flag=1;</b&g

46、t;</p><p>  [array removeAllObjects];</p><p>  mainTableViewArray=[[NSMutableArray alloc]initWithObjects:@"搜索",@"最新",@"歌單",@"排行榜",@"歌手",@"分

47、類",@"電臺",@"MV", nil];</p><p>  signImage.frame=CGRectMake(43, 197, 4, 120);</p><p>  lableOne.highlighted=NO;</p><p>  lableThree.highlighted=NO;</p>

48、<p>  lableTwo.highlighted=YES;</p><p>  lableTwo.highlightedTextColor=[UIColor whiteColor];</p><p><b>  }</b></p><p><b>  else </b></p><p&g

49、t;<b>  {</b></p><p><b>  flag=2;</b></p><p>  [array removeAllObjects];</p><p>  mainTableViewArray=[[NSMutableArray alloc]initWithObjects:@"僅在wifi下聯(lián)網(wǎng)&q

50、uot;,@"換膚",@"睡眠定時",@"wifi電腦傳歌",@"91助手/iTools傳歌",@"意見反饋",@"設(shè)置",@"應(yīng)用",nil];</p><p>  signImage.frame=CGRectMake(43, 332, 4, 120);</p>

51、<p>  lableTwo.highlighted=NO;</p><p>  lableOne.highlighted=NO;</p><p>  lableThree.highlighted=YES;</p><p>  lableThree.highlightedTextColor=[UIColor whiteColor];</p>

52、<p><b>  }</b></p><p>  [tableVIew reloadData];</p><p><b>  }</b></p><p>  在此方法中不只改變了mainTableViewArray的內(nèi)容,同時改變了選中字體的顏色以及未選中字體的顏色。同時signImage的位置也發(fā)生相應(yīng)的

53、改變。</p><p>  (3)更多功能界面如圖4-3所示</p><p>  圖4-3 更多功能界面</p><p>  用戶可以在此界面進(jìn)行播放器的設(shè)置,例如點(diǎn)擊換膚則會彈出換膚界面,在換膚界面會有三種皮膚供用戶選擇。點(diǎn)擊意見反饋會彈出意見反饋界面,用戶可以通過此界面對本應(yīng)用提出意見,并保存到相應(yīng)的數(shù)據(jù)庫中。點(diǎn)擊設(shè)置會進(jìn)入設(shè)置界面用戶可以進(jìn)行相應(yīng)的操作。<

54、;/p><p>  此界面的代碼也與網(wǎng)絡(luò)音樂界面的代碼相同。</p><p>  這三個界面內(nèi)容顯示在同一個UItableView上,其中我的音樂、網(wǎng)絡(luò)音樂、更多功能是三個UILable,即使用來顯示文字的。將UILable的屬性設(shè)置為可以與用戶交互后點(diǎn)擊這三個UILable就可達(dá)到按鈕的效果。將三個點(diǎn)擊手勢加到這三個UILable上,設(shè)置運(yùn)行方法。更改右側(cè)的UItableView上顯示的內(nèi)容

55、。同時更改標(biāo)志圖片的位置,是應(yīng)用顯得更加美觀。</p><p>  (3)本地歌曲界面如圖4-4所示</p><p>  圖4-4 本地歌曲界面</p><p>  用戶點(diǎn)擊初始界面中的本地歌曲,就會彈出此界面。在這個界面中顯示的是存儲在本地的歌曲名稱。點(diǎn)擊任何一個歌曲名字就可進(jìn)行該歌曲的播放。在下面的播放條中可以顯示歌曲的總時間,歌曲名稱以及播放歌曲的時間按。同時

56、觸動向左滑動的手勢,將會顯示出歌曲的歌詞。點(diǎn)擊暫停/開始按鈕可是歌曲暫停會繼續(xù)。點(diǎn)擊下一首按鈕將播放在本地列表中的下一首歌曲。</p><p>  此界面的相關(guān)代碼如下:</p><p>  - (void)viewDidLoad</p><p><b>  {</b></p><p>  musicPlayBar=[[

57、UIView alloc]initWithFrame:CGRectMake(0, 410, 320, 50)];</p><p>  [faView addSubview:musicPlayBar];</p><p>  imageOfMusic=[[UIImageView alloc]initWithFrame:CGRectMake(2, 2, 46, 46)];</p>

58、<p>  imageOfMusic.image=[UIImage imageNamed:currentMusic.smallImageOfMusic];</p><p>  imageOfMusic.userInteractionEnabled=YES;</p><p>  [musicPlayBar addSubview:imageOfMusic];</p>&

59、lt;p>  smallProgressView=[[MyProgerss alloc]init];</p><p>  smallProgressView.frame=CGRectMake(51, 42, 250, 2);</p><p>  [musicPlayBar addSubview:smallProgressView]; </p><p> 

60、 totalTime=[[UILabel alloc]initWithFrame:CGRectMake(51, 23, 80, 20)];</p><p>  totalTime.text=@"00:00";</p><p>  [musicPlayBar addSubview:totalTime];</p><p>  UIView *sepV

61、iew=[[UIView alloc]initWithFrame:CGRectMake(90, 28, 1, 10)];</p><p>  [musicPlayBar addSubview:sepView];</p><p>  smallProgressView.curTime.frame=CGRectMake(100, 23, 80, 20);</p><p>

62、;  smallProgressView.curTime.text=@"00:00";</p><p>  [musicPlayBar addSubview:smallProgressView.curTime];</p><p>  startButton=[UIButton buttonWithType:UIButtonTypeCustom];</p>

63、<p>  startButton.frame=CGRectMake(235, 10, 20, 20);</p><p>  [startButton setBackgroundImage:[UIImage imageNamed:@"playarticle_play.png"] forState:UIControlStateNormal];</p><p> 

64、 [startButton addTarget:self action:@selector(startMusic) forControlEvents:UIControlEventTouchUpInside];</p><p>  [musicPlayBar addSubview:startButton];</p><p>  UIButton *nextButton=[UIButton b

65、uttonWithType:UIButtonTypeCustom];</p><p>  nextButton.frame=CGRectMake(275, 10, 20, 20);</p><p>  [nextButton setBackgroundImage:[UIImage imageNamed:@"play_bar_next.png"] forState:UIC

66、ontrolStateNormal];</p><p>  [nextButton addTarget:self action:@selector(nextMusic) forControlEvents:UIControlEventTouchUpInside];</p><p>  [musicPlayBar addSubview:nextButton];</p><p

67、>  musicArray=[[NSMutableArray alloc]initWithObjects:@"一眼萬年",@"夜曲",@"最炫民族風(fēng)",nil];</p><p>  musicNameArray=[[NSArray alloc]initWithObjects:@"一眼萬年",@"夜曲",@&

68、quot;最炫民族風(fēng)",nil]; </p><p>  curMusicNumber=0;</p><p>  faHeadView=[[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 320, 44)];</p><p>  faHeadView.image=[UIImage imageNamed:@&

69、quot;navbar_bg@2x.png"];</p><p>  faHeadView.userInteractionEnabled=YES;</p><p>  [faView addSubview:faHeadView];</p><p>  [faHeadView release];</p><p>  faRightBu

70、tton=[UIButton buttonWithType:UIButtonTypeCustom];</p><p>  [faRightButton setBackgroundImage:[UIImage imageNamed:@"nav-menu-icon@2x.png"] forState:UIControlStateNormal];</p><p>  faRi

71、ghtButton.frame=CGRectMake(5, 5, 40, 30);</p><p>  [faRightButton addTarget:self action:@selector(changeView:) forControlEvents:UIControlEventTouchUpInside];</p><p>  [faHeadView addSubview:faRi

72、ghtButton];</p><p><b>  }</b></p><p>  在本段代碼中,對界面上添加了音樂播放條,并添加了用來顯示總時間以及播放時間的Lable,在播放條中添加開始(暫停)、下一首按鈕。而顯示歌曲名的UITableView在最初的UITableView的didSelectRowAtIndexPath方法中生成。相應(yīng)的代碼如下:</p&g

73、t;<p>  if(indexPath.row==0)</p><p><b>  {</b></p><p>  UITableView *localMusicTableView=[[UITableView alloc]initWithFrame:CGRectMake(0, 0, 320, 386)];</p><p>  l

74、ocalMusicTableView.delegate=self;</p><p>  localMusicTableView.dataSource=self;</p><p>  [totalBackView addSubview:localMusicTableView];</p><p>  whichTableview=4;</p><p&

75、gt;  [otherTableViewArray removeAllObjects];</p><p>  [otherTableViewArray addObjectsFromArray:musicArray];</p><p><b>  }</b></p><p>  其中indexPath.row是判斷點(diǎn)擊了UITableView的哪

76、一行,來進(jìn)行下一步的操作</p><p>  (4)我喜歡界面如圖4-5所示</p><p>  圖4-5 我喜歡界面</p><p>  用戶在本地歌曲界面將某首歌曲設(shè)置為我喜歡,則這首歌曲的名字會存儲到我喜歡的界面中。</p><p>  (5)最近播放界面如圖4-6所示</p><p>  圖4-6 最近播放界面

77、</p><p>  用戶點(diǎn)開此界面會顯示出用戶播放歌曲的歷史記錄,在不同時間播放了同一首歌曲目錄會自動刪除較早的記錄保留最新的播放記錄。</p><p>  此界面的相應(yīng)代碼如下:</p><p>  else if(indexPath.row==5)</p><p><b>  {</b></p>&l

78、t;p>  int j=[lastArray count];</p><p>  faHeadLable.text=[NSString stringWithFormat:@"最近播放(%d)",j];</p><p><b>  if(j==0)</b></p><p><b>  {</b>&l

79、t;/p><p>  UIImageView *im=[[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 320, 386)];</p><p>  im.image=[UIImage imageNamed:@"nillist_bg.png"];</p><p>  [totalBackView ad

80、dSubview:im];</p><p>  [im release];</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  UIScrollView *sc

81、=[[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, 320, 386)];</p><p>  sc.contentSize=CGSizeMake(320, 386*3);</p><p>  for(int i=0;i<j;i++)</p><p><b>  {</b></p

82、><p>  UILabel *la=[[UILabel alloc]initWithFrame:CGRectMake(0, i*30, 320, 30)];</p><p>  la.text=[lastArray objectAtIndex:i];</p><p>  la.font=[UIFont systemFontOfSize:14];</p>

83、<p>  [sc addSubview:la];</p><p>  [la release];</p><p><b>  }</b></p><p>  [totalBackView addSubview:sc];</p><p><b>  }</b></p><

84、;p><b>  }</b></p><p><b>  }</b></p><p>  在此段代碼中包含了,在沒有播放過音樂時顯示那個界面,在播放了歌曲后顯示那個界面。</p><p>  (6)歌單界面如圖4-7 排行榜界面如圖4-8 歌手界面如圖4-9</p><p>  圖4-7 歌單

85、界面 圖4-8 排行榜界面</p><p><b>  圖4-9 歌手界面</b></p><p>  用戶在網(wǎng)絡(luò)歌曲界面點(diǎn)擊不同的內(nèi)容會彈出不同的網(wǎng)絡(luò)歌曲內(nèi)容。這些內(nèi)容都是從真正的網(wǎng)上的得到的。本人封裝了一個下載類,可以將網(wǎng)上的信息下載下來顯示到界面上。點(diǎn)擊網(wǎng)絡(luò)歌曲的不同內(nèi)容彈出的信息都會出現(xiàn)在同一個界面上。也就是

86、在點(diǎn)擊網(wǎng)絡(luò)歌曲的某一內(nèi)容時,顯示界面的UItableView內(nèi)容必須為空,要實(shí)現(xiàn)點(diǎn)擊不同內(nèi)容顯示不同信息就需要自己對每一個UItableView設(shè)置標(biāo)志變量,來區(qū)分到底該顯示哪個UItableView。</p><p>  這三個界面都用到了下載類,從自己抓取的網(wǎng)絡(luò)上提取數(shù)據(jù),并顯示在相應(yīng)的界面中。重要代碼如下:</p><p>  -(void)downLoadFromUrl:(NSUR

87、L *)url</p><p><b>  {</b></p><p>  myData=[[NSMutableData alloc]init];</p><p>  NSURLRequest *request=[NSURLRequest requestWithURL:url];</p><p>  myConnecti

88、on=[[NSURLConnection alloc]initWithRequest:request delegate:self];</p><p><b>  }</b></p><p>  -(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data</p>

89、<p><b>  {</b></p><p>  [myData appendData:data];</p><p><b>  }</b></p><p>  -(void)connection:(NSURLConnection *)connection didReceiveResponse :( NSUR

90、LResponse *)response</p><p><b>  {</b></p><p>  [myData setLength:0];</p><p><b>  }</b></p><p>  -(void)connectionDidFinishLoading:(NSURLConnec

91、tion *)connection</p><p><b>  {</b></p><p>  if([delegate respondsToSelector:@selector(downLoadComplited:)])</p><p><b>  {</b></p><p>  [delegat

92、e downLoadComplited:self];</p><p><b>  }</b></p><p><b>  }</b></p><p>  這段代碼是下載類中的主要代碼,以前下載使用的是名為ASI的第三方庫,后來自己改寫成了用蘋果自帶的下載鏈接庫來下載數(shù)據(jù)。將網(wǎng)上的數(shù)據(jù)下載成為NSData性的數(shù)據(jù),并保存起來

93、,在主視圖控制器的代碼中應(yīng)用。調(diào)用下載數(shù)據(jù)的代碼如下:</p><p>  -(void)downLoadComplited:(HttpDownLoad *)hd</p><p><b>  {</b></p><p>  [saveArray removeAllObjects];</p><p>  NSDiction

94、ary *dict=[NSJSONSerialization JSONObjectWithData:hd.myData options:NSJSONReadingMutableContainers error:nil];</p><p>  NSArray *musicListArray=[[NSArray alloc]init];</p><p>  if(whichTableview=

95、=3||whichTableview==5)</p><p><b>  {</b></p><p>  musicListArray=[dict objectForKey:@"song_list"];</p><p>  for(NSDictionary *sunDict in musicListArray)</p&

96、gt;<p><b>  {</b></p><p>  NSString *str=[NSString stringWithFormat:@"%@",[sunDict objectForKey:@"country"]];</p><p>  MusicListItem *item=[[MusicListItem

97、alloc]init];</p><p>  item.smallImage=[sunDict objectForKey:@"pic_small"];</p><p>  item.nameOfTitle=[sunDict objectForKey:@"title"];</p><p>  item.detailLable=[

98、NSString stringWithFormat:@"%@ %@",[sunDict objectForKey:@"author"],str];</p><p>  [saveArray addObject:item];</p><p><b>  }</b></p><p><b>  }

99、</b></p><p>  (7)皮膚界面如圖4-10所示</p><p>  圖4-10 更改皮膚界面</p><p>  用戶可以通過此界面更改播放器的皮膚。有三種皮膚可供用戶選擇。由于該音樂播放重點(diǎn)在精簡、小巧,也就沒有必要設(shè)置更多地顏色供用戶自己選擇。整個應(yīng)用運(yùn)行在同一個viewcontroller上,所以對皮膚的改變只需設(shè)置下變量即可,不必如

100、那些擁有許多viewcontroller的應(yīng)用運(yùn)用通知來改變皮膚。</p><p>  改變皮膚的代碼如下:</p><p>  -(void)NSNotification:(UIButton *)button</p><p><b>  {</b></p><p>  if(button.tag!=remberNumO

101、fColor)</p><p><b>  {</b></p><p>  switch (button.tag) {</p><p><b>  case 500:</b></p><p>  colorOfSkin=1;</p><p>  faHeadView.imag

102、e=[UIImage imageNamed:@"navbar_bg@2x.png"];</p><p>  [faRightButton setBackgroundImage:[UIImage imageNamed:@"nav-menu-icon@2x.png"] forState:UIControlStateNormal];</p><p>  m

103、usicPlayBar.backgroundColor=[UIColor blackColor];</p><p><b>  break;</b></p><p><b>  case 501:</b></p><p>  colorOfSkin=2;</p><p>  faHeadView.i

104、mage=[UIImage imageNamed:@"skin_pink_kg_nav_bar.png"];</p><p>  musicPlayBar.backgroundColor=[UIColor blackColor];</p><p>  [faRightButton setBackgroundImage:[UIImage imageNamed:@"

105、;skin_pink_nav-menu-icon@2x.png"] forState:UIControlStateNormal];</p><p>  musicPlayBar.backgroundColor=[UIColor colorWithRed:218/255.0 green:102/255.0 blue:145/255.0 alpha:1];</p><p><

106、b>  break;</b></p><p><b>  case 502:</b></p><p>  colorOfSkin=3;</p><p>  faHeadView.image=[UIImage imageNamed:@"voiceSlider_bg.png"];</p><

107、p>  [faRightButton setBackgroundImage:[UIImage imageNamed:@"skin_black_nav-menu-icon_pressed@2x.png"] forState:UIControlStateNormal];</p><p><b>  break;</b></p><p><b

108、>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  本段代碼通過switch來判斷點(diǎn)擊了那個圖片,進(jìn)而決定作出相應(yīng)的改變。</p><p>  (8)意見反饋界面如圖4-11所示</p><p&g

109、t;  圖4-11 意見反饋界面</p><p>  用戶可以通過此界面來對本款軟件發(fā)表意見。在聯(lián)網(wǎng)的狀態(tài)下,用戶可以將反饋的意見發(fā)表到相關(guān)的數(shù)據(jù)庫中。本人就可對此程序按照用戶提出的意見來做出相應(yīng)的更改。</p><p>  反饋界面的代碼是將控件顯示到界面上。并鏈接自己的數(shù)據(jù)庫將要傳輸?shù)男畔⒈4娴阶约旱臄?shù)據(jù)庫。</p><p>  (9)設(shè)置界面如圖4-12所示&

110、lt;/p><p>  圖4-12 設(shè)置界面</p><p>  用戶在此界面可以對本款音樂播放器進(jìn)行相關(guān)的設(shè)置,用戶可以查看此款音樂播放器的信息,清空緩存的操作。</p><p>  (10)音樂播放界面如圖4-13所示</p><p>  圖4-13 音樂播放界面</p><p>  用戶在此界面可以通過點(diǎn)擊歌曲名字來

111、播放相應(yīng)的歌曲,也可點(diǎn)擊下面的開始按鈕或下一首按鈕來播放歌曲。在黑色條中會顯示出歌曲名稱、歌曲總長度以及播放時間的長度等等。</p><p>  播放功能的具體代碼如下:</p><p>  -(void)startMusic</p><p><b>  {</b></p><p>  openOrClose++;<

112、;/p><p>  if(openOrClose%2==1)</p><p><b>  {</b></p><p>  [startButton setBackgroundImage:[UIImage imageNamed:@"play_bar_passed.png"] forState:UIControlStateNorma

113、l];</p><p>  [smallProgressView progressViewBegin];</p><p>  currentMusicName.text=[musicArray objectAtIndex:curMusicNumber];</p><p>  NSURL *audioFileUrl=[NSURL fileURLWithPath:[[N

114、SBundle mainBundle] pathForResource:[musicArray objectAtIndex:curMusicNumber] ofType:@"mp3"]];</p><p>  audioPlay=[[AVAudioPlayer alloc]initWithContentsOfURL:audioFileUrl error:nil];</p><

115、;p>  audioPlay.delegate=self;</p><p>  [audioPlay play];</p><p>  [smallProgressView theTotalTimeOfMusic:audioPlay.duration];</p><p>  int i=(int)audioPlay.duration/60;</p>

116、<p>  int j=(int)audioPlay.duration%60;</p><p>  totalTime.text=[NSString stringWithFormat:@"%02d:%02d",i,j]; </p><p>  [lastArray addObject:[musicArray objectAtIndex:curMusicNu

117、mber]];</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  [startButton setBackgroundImage:[UIImage imageNamed:@"

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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

提交評論