基于iOS的音樂播放器的開發(fā)畢業(yè)設(shè)計_第1頁
基于iOS的音樂播放器的開發(fā)畢業(yè)設(shè)計_第2頁
基于iOS的音樂播放器的開發(fā)畢業(yè)設(shè)計_第3頁
基于iOS的音樂播放器的開發(fā)畢業(yè)設(shè)計_第4頁
基于iOS的音樂播放器的開發(fā)畢業(yè)設(shè)計_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1引言1.1選題背景隨著智能手機的大眾化,越來越多的人應(yīng)用智能手機。相對的對手機軟件的需求也就越來越多。當今時代手機不再只是用來打電話、發(fā)短信的工具,反而對手機的娛樂功能要求越來越高1。手機的一個重要的功能就是聽音樂,一款好的手機音樂播放器可以更好的體現(xiàn)智能手機的強大。目前中國音樂播放器行業(yè)已經(jīng)具備了相當?shù)囊?guī)模,并在國際市場上已有一定的競爭力。蘋果手機作為當今中國智能手機市場上不可或缺的一個品牌,基于ios的手機軟件需求量也就相應(yīng)的越來越強。市場上的音樂播放器品牌繁多,定位不一,基本滿足了各層次消費者的需求,例如:酷我音樂、酷狗音樂、百度音樂、qq音樂等等這些大家所熟知的音樂播放器已經(jīng)在蘋果軟

2、件中占據(jù)了一定的地位。智能手機的應(yīng)用使現(xiàn)代人的生活更加的方便。伴隨著蘋果手機進入中國市場,相應(yīng)的ios技術(shù)逐漸流行起來。而對于開發(fā)蘋果應(yīng)用的語言object-c,也成為當今社會最流行的開發(fā)語言,并且保持著強勁的上升趨勢,隱隱有超過c語言的現(xiàn)象2。對于其他的開發(fā)語言,例如java、javascripe,object-c以其強大的優(yōu)勢遙遙領(lǐng)先于這些其他的編程語言。本人根據(jù)當前的形式,決定引用這種這種技術(shù)來開發(fā)手機應(yīng)用。1.2設(shè)計目的及意義聽音樂已經(jīng)成為當今社會,人們必不可少的一項娛樂活動。根據(jù)調(diào)查所得信息,本人發(fā)現(xiàn)最近智能手機用戶對較大的音樂播放器應(yīng)用的喜愛度明顯下滑,而相對的那些小巧的音樂播放器

3、反而被越來越多的用戶下載使用。蘋果系統(tǒng)的軟件具有的特點就是美觀、簡潔、易操作。根據(jù)這些信息,設(shè)計一款小巧的基于ios的音樂播放器會很容易得到用戶的青睞。同時本人從去年開始接觸ios,在學習了幾個月后,對ios開發(fā)有了一些理解,所以對于這次畢業(yè)設(shè)計,我就選擇了基于ios系統(tǒng)開發(fā)一款產(chǎn)品。希望通過這次畢業(yè)設(shè)計來進一步鞏固自己的ios開發(fā)水平。使自己在以后的社會競爭中更加具有優(yōu)勢。1.3設(shè)計思想和目標設(shè)計思想:自己的這款音樂播放器設(shè)計的過程是按照一般的應(yīng)用開發(fā)流程進行的。自己首先調(diào)查了當今社會,人們對音樂播放器的需求,從中得出現(xiàn)階段手機用戶需要的是小巧、方便的音樂播放器。從而決定自己開發(fā)一款小巧的音

4、樂播放器。在有了用戶的需求后,本人開始開發(fā)屬于自己的音樂播放器。在真正設(shè)計音樂播放器的過程中,本人先決定了音樂播放器的整體框架結(jié)構(gòu),應(yīng)用的圖片出處等等這些開發(fā)必需的部分。于是自己借鑒酷狗音樂的框架,開發(fā)一款精簡的酷狗音樂播放器。在決定了整體框架后,就是真正的開發(fā)了。自己將酷狗音樂中與播放無關(guān)的部分刪除,只保留他的播放功能,歌詞顯示功能音樂下載功能等等。下載功能的實現(xiàn)本人決定針對這款音樂播放器設(shè)計出一個可供下載的網(wǎng)站以及服務(wù)器。設(shè)計目標:雖說這款應(yīng)用自己不打算上線,但自己依舊打算使其完美。擁有播放器的一般功能,可以根據(jù)不同的歌曲顯示不同的歌詞,進度條根據(jù)時間顯示播放進度,根據(jù)不同的音樂信息進行選

5、擇,根據(jù)搜索到的歌曲信息,下載自己喜愛的歌曲。在完成這些功能的過程中來鞏固自己學到的知識2 應(yīng)用分析2.1可行性分析可行性分析也可稱為可行性研究,是在網(wǎng)上調(diào)查的基礎(chǔ)上并輔助其他的信息渠道,針對基于ios的音樂播放器的開發(fā)是否具備必要性和可能性。對新的音樂播放器的開發(fā)從技術(shù)、操作、經(jīng)濟等不同方面進行分析研究,來保證投資的失誤,保證音樂播放器的開發(fā)成功。就我們學的的知識知道可行性分析可以在最短的時間內(nèi)分析出這款基于ios的音樂播放器是否可以達到預(yù)定的效果。(1)經(jīng)濟可行性分析:這款基于ios的音樂播放器的開發(fā)是通過蘋果系統(tǒng)的xcode來進行的。雖然本人不可能購買蘋果筆記本來開發(fā)這款項目,但現(xiàn)階段人

6、們可以在不同的電腦上運行蘋果系統(tǒng)。那就是人們所說的黑蘋果,通過一定的技術(shù)使非蘋果筆記本也可運行蘋果系統(tǒng)。開發(fā)音樂播放器所需的圖片,自己可以不通過專業(yè)人士來繪制。自己通過破解現(xiàn)有app store上的在線應(yīng)用,來獲取自己想要的資源。并且這個過程很是簡單,不存在浪費人力物力的現(xiàn)象。所以得出開發(fā)一款基于ios的音樂播放器在經(jīng)濟方面是可行的。(2)技術(shù)可行性分析:開發(fā)基于ios的音樂播放器運用到的技術(shù)是object-c,以及一些ios開發(fā)的ui設(shè)計,某些類庫的應(yīng)用等等。就技術(shù)方面而言,自己學習ios技術(shù)已經(jīng)有四五個月的基礎(chǔ)了,相對于開發(fā)一款音樂播放器而言自己的技術(shù)是完全可以勝任的。而自己在黑蘋果上裝的

7、xcode完全可以勝任這次開發(fā)的需求。從而分析得出開發(fā)這款音樂播放器在技術(shù)方面是可行的。(3)社會可行性分析:開發(fā)這款音樂播放器,本人不是為了盈利的目的不會損害到任何人的利益。這款音樂播放器雖有一部分按照酷狗音樂來完成,但自己不會發(fā)布出去,所以不會影響到酷狗公司的利益。本人開發(fā)這款音樂播放器符合國家的方針政策,不影響任何組織的利益,沒有宗教方面的宣傳同時不會影響社會穩(wěn)定。所以可以得出本人開發(fā)基于ios的音樂播放器在社會方面是可行的。 所以,綜上所述本人的基于ios的音樂播放器的開發(fā)是可行的。2.2需求分析需求分析指的是在建立一個新的應(yīng)用的時,就這個新的應(yīng)用的目的、范圍、定義及功能這些方面所要做

8、的工作。需求分析是完成一個應(yīng)用必不可少的部分。在進行一款項目開發(fā)的過程中,開發(fā)者必須確定客戶的需求,在確定了客戶需求后才能進行應(yīng)用的開發(fā)。根據(jù)當前社會形勢,蘋果系統(tǒng)在中國逐漸流行,單單是ios方面的音樂播放器行業(yè)也已經(jīng)具備了相當?shù)囊?guī)模3。市場上的音樂播放器品牌繁多,定位不一,基本滿足了各層次消費者的需求。最新的調(diào)查顯示比較大的音樂播放器市場,并不是很樂觀。而外形新穎、小巧輕便靈活的迷你音樂播放器卻很受年輕人的青睞和歡迎。雖然國內(nèi)的較大的音樂播放器銷售狀況不是很好,但是迷你音樂播放器卻是個例外,市場發(fā)展前景不容小覷?;诖?,設(shè)計音樂播放器重點還是在于美觀的外形和其吸引人的性能,小體積卻可以實現(xiàn)相

9、對更大的功率,新型的迷你音樂播放器要有其他的附加功能,可以更好的吸引用戶。2.3系統(tǒng)開發(fā)工具介紹2.3.1 objective-c技術(shù)object-c是擴充c的面向?qū)ο缶幊陶Z言。它主要使用于mac os x和gnustep這兩個使用openstep標準的系統(tǒng),而在nextstep和openstep中它更是基本語言。objective-c可以在gcc運作的系統(tǒng)寫和編譯,因為gcc含objective-c的編譯器。1980年代初布萊德確斯在其公司stepstone發(fā)明objective-c。他對軟件設(shè)計和編程里的真實可用度問題十分關(guān)心,目前主要是編寫ios操作系統(tǒng)應(yīng)用程序的利器。近幾年object

10、ive-c排名大幅提升,它的流行當歸功于iphone的成功,因為objective-c一直被用于編寫iphone應(yīng)用程序4。objective-c是非常實際的語言。它是一個用c寫成、很小的運行庫,只會令應(yīng)用程序的大小增加很小,和大部分oo系統(tǒng)使用極大的vm執(zhí)行時間會取代了整個系統(tǒng)的運作相反。objc寫成的程序通常不會比其原始碼大很多。而其函式庫亦和smalltalk系統(tǒng)要使用極大的內(nèi)存來開啟一個窗口的情況相反。2.3.2 xcode開發(fā)工具xcode是開發(fā)人員建立基于ios的應(yīng)用最快捷的方式。xcode是蘋果公司向開發(fā)人員提供的集成開發(fā)環(huán)境。其運行于蘋果公司的mac操作系統(tǒng)下。不管你用c、c+

11、、objective-c或java編寫程序,在applescript里編寫腳本,還是試圖從另一個奇妙的工具中轉(zhuǎn)移編碼,你會發(fā)現(xiàn) xcode 編譯速度極快,每次操作都很快速和輕松5。蘋果公司為用戶提供了全套免費的cocoa程序開發(fā)工具。mac os x一起發(fā)行,在蘋果公司官方的網(wǎng)站下載6。2.3.3 sqlite簡介sqlite是一款輕型的數(shù)據(jù)庫7。是遵守acid的關(guān)聯(lián)式數(shù)據(jù)庫管理系統(tǒng),它的設(shè)計目標是嵌入式的,而且目前已經(jīng)在很多嵌入式產(chǎn)品中使用了它,它占用資源非常的低,在嵌入式設(shè)備中,可能只需要幾百k的內(nèi)存就夠了。它能夠支持windows/linux/unix等等主流的操作系統(tǒng),同時能夠跟很多程

12、序語言相結(jié)合,比如 tcl、c#、php、java等,還有odbc接口,同樣比起mysql、postgresql這兩款開源世界著名的數(shù)據(jù)庫管理系統(tǒng)來講,它的處理速度比他們都快。sqlite包含在一個相對小的c庫中。它是d.richardhipp建立的公有領(lǐng)域項目8。不像常見的客戶-服務(wù)器范例,sqlite引擎不是個程序與之通信的獨立進程,而是連接到程序中成為它的一個主要部分。所以主要的通信協(xié)議是在編程語言內(nèi)的直接api調(diào)用。這在消耗總量、延遲時間和整體簡單性上有積極的作用。整個數(shù)據(jù)庫都在宿主主機上存儲在一個單一的文件中。它的簡單的設(shè)計是通過在開始一個事務(wù)的時候鎖定整個數(shù)據(jù)文件而完成的。2.3.

13、4 visual studio簡介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 studio中的編程語言運行于.net framework中。framework有助于基于web和windows的應(yīng)用程序開發(fā),允許來自不同語言的對象共同運行,并

14、標準化了語言引用數(shù)據(jù)和對象的方式。visual studio .net是微軟公司推出的程序開發(fā)工作。和以前的visual studio相比,visual studio .net 是一個質(zhì)的飛躍。c # 是visual studio .net的重要組成部分。在visual studio .net 平臺上使用c #語言可以開發(fā)出各種各樣的應(yīng)用程序9。在.net平臺中,c#語言是一種腳本語言,即簡化的c#語言。c#語言已經(jīng)通過國際標準組織的認證,成為一種國際標準的計算機語言。.net framework 是用于生成、部署和運行應(yīng)用程序的多語言環(huán)境。.net framework通過公共語言運行庫、.n

15、et框架類庫、microsoft 中間語言、jit即時編譯等機制生成應(yīng)用程序。3應(yīng)用總體設(shè)計在經(jīng)過可行性分析后本章將主要介紹應(yīng)用的總體設(shè)計。應(yīng)用所實現(xiàn)的功能的強弱是衡量一款應(yīng)用的標準。通過對音樂播放器的全面分析并結(jié)合調(diào)研的情況,得出了這款音樂播放器的結(jié)構(gòu)圖與功能模塊圖。3.1音樂播放器的功能模塊概況根據(jù)需求分析的結(jié)果得到音樂播放器的基本模塊包括以下幾個模塊(1). 我的音樂模塊:其中主要有本地音樂、我喜歡的音樂、最近播放的音樂的幾個部分組成。(2).網(wǎng)絡(luò)音樂模塊: 該模塊主要包括最新、歌單、排行榜、歌手等幾部分構(gòu)成。(3).更多更能模塊:該模塊主要包括換膚、意見反饋、設(shè)置及部分構(gòu)成。根據(jù)音樂播

16、放器的功能分析可以畫出音樂播放器的功能模塊圖,如圖1所示圖 1 音樂播放器功能模塊圖3.2音樂播放器各功能模塊介紹各功能模塊介紹如下:(1) 我的音樂模塊用戶可以通過此模塊來播放本地的音樂。具體播放功能包括音樂的演唱、歌詞的顯示、播放進度的顯示、歌曲的暫停、播放下一首等功能。用戶可以通過本地音樂列表將歌曲存儲成我喜歡的音樂,同時在播放的過程中會將播放過的歌曲名存儲起來,對用戶進行提示。(2)網(wǎng)絡(luò)歌曲模塊用戶可以通過本模塊進行選擇網(wǎng)絡(luò)上的音樂信息,同時用戶可以將網(wǎng)絡(luò)上的歌曲下載到本地音樂中進行播放,用戶根據(jù)不同的歌曲信息進行歌曲搜索,方便了用戶的使用。(3)更多功能模塊用戶可以通過此模塊對本款音

17、樂播放器進行換膚操作,更改本款音樂的皮膚。用戶可以通過意見反饋頁面來提出自己的意見。相應(yīng)的設(shè)置模塊,用戶可以進行一些對本應(yīng)用的操作,使本應(yīng)用更加適合用戶需求。4音樂播放器詳細設(shè)計4.1音樂播放器界面設(shè)計(1)我的音樂界面如圖4-1所示圖4-1 我的音樂用戶可以通過此界面選擇不同的信息。點擊本地音樂可以進入音樂播放界面,點擊我喜歡可以進入我喜歡界面,其中的歌曲是自己從本地音樂界面中選取出來的,而最近播放界面顯示用戶最近播放的歌曲。此界面部分相關(guān)代碼如下:- (void)viewdidloadmaintableviewarray=nsmutablearray allocinitwithobject

18、s:本地音樂,ipod音樂,我喜歡,本地收藏,網(wǎng)絡(luò)收藏,最近播放, nil;uiview *vi=uiview allocinitwithframe:cgrectmake(0, 0, 280, 480); self.view addsubview:vi; vi setbackgroundcolor:uicolor colorwithred:58/255.0 green:58/255.0 blue:58/255.0 alpha:1;lableone=uilabel allocinitwithframe:cgrectmake(11, 72, 25, 120); lableone.text=我的音樂

19、; lableone.userinteractionenabled=yes; lableone.highlighted=yes; vi addsubview:lableone; labletwo=uilabel allocinitwithframe:cgrectmake(11, 140+57, 25, 120); labletwo.text=網(wǎng)絡(luò)音樂; labletwo.textcolor=uicolor colorwithred:200/255.0 green:200/255.0 blue:200/255.0 alpha:1; labletwo.userinteractionenabled=

20、yes; vi addsubview:labletwo; lablethree=uilabel allocinitwithframe:cgrectmake(11, 280+52, 25, 120); lablethree.text=更多功能; lablethree.textcolor=uicolor colorwithred:200/255.0 green:200/255.0 blue:200/255.0 alpha:1; vi addsubview:lablethree; uitapgesturerecognizer *tapgestureone=uitapgesturerecognizer

21、 allocinitwithtarget:self action:selector(choseit:); lableone addgesturerecognizer:tapgestureone; tapgestureone release;此段代碼得到具體含義是,加載初始界面并添加相關(guān)的手勢來控制maintableviewarray顯示的內(nèi)容。隨后在加載tableview的過程中運行uitableview的方法即:cellforrowatindexpath: 和didselectrowatindexpath:其中cellforrowatindexpath是控制每一個cell所顯示的內(nèi)容,而di

22、dselectrowatindexpath則是在這些cell被點中時判斷哪個被點中了,要運行什么方法。(2) 網(wǎng)絡(luò)音樂界面如圖4-2所示圖4-2 網(wǎng)絡(luò)音樂界面用戶可以從此界面中選擇網(wǎng)絡(luò)相關(guān)的音樂。點擊歌單會彈出歌單界面,其中是各種流行的單曲。點擊排行榜則會彈出當前的流行歌曲排行榜,同樣點擊歌手則會彈出歌手界面。此界面的代碼是只要將最初的maintableviewarray的顯示內(nèi)容改變了,并通過相應(yīng)的手勢來達到內(nèi)容的改變。手勢方法相關(guān)的代碼如下:-(void)choseit:(uitapgesturerecognizer *)tap maintableviewarray removeallob

23、jects; cgpoint point=tap locationinview:self.view; if(cgrectcontainspoint(lableone.frame, point) flag=0; array removeallobjects; maintableviewarray=nsmutablearray allocinitwithobjects:本地音樂,ipod音樂,我喜歡,本地收藏,網(wǎng)絡(luò)收藏,最近播放, nil; labletwo.highlighted=no; lablethree.highlighted=no; lableone.highlighted=yes; l

24、ableone.highlightedtextcolor=uicolor whitecolor; signimage.frame=cgrectmake(43, 68, 4, 120); else if(cgrectcontainspoint(labletwo.frame, point) flag=1; array removeallobjects; maintableviewarray=nsmutablearray allocinitwithobjects:搜索,最新,歌單,排行榜,歌手,分類,電臺,mv, nil; signimage.frame=cgrectmake(43, 197, 4,

25、 120); lableone.highlighted=no; lablethree.highlighted=no; labletwo.highlighted=yes; labletwo.highlightedtextcolor=uicolor whitecolor; else flag=2; array removeallobjects; maintableviewarray=nsmutablearray allocinitwithobjects:僅在wifi下聯(lián)網(wǎng),換膚,睡眠定時,wifi電腦傳歌,91助手itools傳歌,意見反饋,設(shè)置,應(yīng)用,nil; signimage.frame=c

26、grectmake(43, 332, 4, 120); labletwo.highlighted=no; lableone.highlighted=no; lablethree.highlighted=yes; lablethree.highlightedtextcolor=uicolor whitecolor; tableview reloaddata;在此方法中不只改變了maintableviewarray的內(nèi)容,同時改變了選中字體的顏色以及未選中字體的顏色。同時signimage的位置也發(fā)生相應(yīng)的改變。(3)更多功能界面如圖4-3所示圖4-3 更多功能界面用戶可以在此界面進行播放器的設(shè)置

27、,例如點擊換膚則會彈出換膚界面,在換膚界面會有三種皮膚供用戶選擇。點擊意見反饋會彈出意見反饋界面,用戶可以通過此界面對本應(yīng)用提出意見,并保存到相應(yīng)的數(shù)據(jù)庫中。點擊設(shè)置會進入設(shè)置界面用戶可以進行相應(yīng)的操作。此界面的代碼也與網(wǎng)絡(luò)音樂界面的代碼相同。這三個界面內(nèi)容顯示在同一個uitableview上,其中我的音樂、網(wǎng)絡(luò)音樂、更多功能是三個uilable,即使用來顯示文字的。將uilable的屬性設(shè)置為可以與用戶交互后點擊這三個uilable就可達到按鈕的效果。將三個點擊手勢加到這三個uilable上,設(shè)置運行方法。更改右側(cè)的uitableview上顯示的內(nèi)容。同時更改標志圖片的位置,是應(yīng)用顯得更加美

28、觀。(3)本地歌曲界面如圖4-4所示圖4-4 本地歌曲界面用戶點擊初始界面中的本地歌曲,就會彈出此界面。在這個界面中顯示的是存儲在本地的歌曲名稱。點擊任何一個歌曲名字就可進行該歌曲的播放。在下面的播放條中可以顯示歌曲的總時間,歌曲名稱以及播放歌曲的時間按。同時觸動向左滑動的手勢,將會顯示出歌曲的歌詞。點擊暫停/開始按鈕可是歌曲暫停會繼續(xù)。點擊下一首按鈕將播放在本地列表中的下一首歌曲。此界面的相關(guān)代碼如下:- (void)viewdidload musicplaybar=uiview allocinitwithframe:cgrectmake(0, 410, 320, 50); faview a

29、ddsubview:musicplaybar; imageofmusic=uiimageview allocinitwithframe:cgrectmake(2, 2, 46, 46); imageofmusic.image=uiimage imagenamed:currentmusic.smallimageofmusic; imageofmusic.userinteractionenabled=yes; musicplaybar addsubview:imageofmusic; smallprogressview=myprogerss allocinit; smallprogressview

30、.frame=cgrectmake(51, 42, 250, 2); musicplaybar addsubview:smallprogressview; totaltime=uilabel allocinitwithframe:cgrectmake(51, 23, 80, 20); totaltime.text=00:00; musicplaybar addsubview:totaltime; uiview *sepview=uiview allocinitwithframe:cgrectmake(90, 28, 1, 10); musicplaybar addsubview:sepview

31、; smallprogressview.curtime.frame=cgrectmake(100, 23, 80, 20); smallprogressview.curtime.text=00:00; musicplaybar addsubview:smallprogressview.curtime; startbutton=uibutton buttonwithtype:uibuttontypecustom; startbutton.frame=cgrectmake(235, 10, 20, 20); startbutton setbackgroundimage:uiimage imagen

32、amed:playarticle_play.png forstate:uicontrolstatenormal; startbutton addtarget:self action:selector(startmusic) forcontrolevents:uicontroleventtouchupinside; musicplaybar addsubview:startbutton; uibutton *nextbutton=uibutton buttonwithtype:uibuttontypecustom; nextbutton.frame=cgrectmake(275, 10, 20,

33、 20); nextbutton setbackgroundimage:uiimage imagenamed:play_bar_next.png forstate:uicontrolstatenormal; nextbutton addtarget:self action:selector(nextmusic) forcontrolevents:uicontroleventtouchupinside;musicplaybar addsubview:nextbutton; musicarray=nsmutablearray allocinitwithobjects:一眼萬年,夜曲,最炫民族風,n

34、il; musicnamearray=nsarray allocinitwithobjects:一眼萬年,夜曲,最炫民族風,nil; curmusicnumber=0; faheadview=uiimageview allocinitwithframe:cgrectmake(0, 0, 320, 44); faheadview.image=uiimage imagenamed:navbar_bg2x.png; faheadview.userinteractionenabled=yes; faview addsubview:faheadview; faheadview release; fari

35、ghtbutton=uibutton buttonwithtype:uibuttontypecustom; farightbutton setbackgroundimage:uiimage imagenamed:nav-menu-icon2x.png forstate:uicontrolstatenormal; farightbutton.frame=cgrectmake(5, 5, 40, 30); farightbutton addtarget:self action:selector(changeview:) forcontrolevents:uicontroleventtouchupi

36、nside; faheadview addsubview:farightbutton;在本段代碼中,對界面上添加了音樂播放條,并添加了用來顯示總時間以及播放時間的lable,在播放條中添加開始(暫停)、下一首按鈕。而顯示歌曲名的uitableview在最初的uitableview的didselectrowatindexpath方法中生成。相應(yīng)的代碼如下:if(indexpath.row=0) uitableview *localmusictableview=uitableview allocinitwithframe:cgrectmake(0, 0, 320, 386); localmusic

37、tableview.delegate=self; localmusictableview.datasource=self; totalbackview addsubview:localmusictableview; whichtableview=4; othertableviewarray removeallobjects; othertableviewarray addobjectsfromarray:musicarray;其中indexpath.row是判斷點擊了uitableview的哪一行,來進行下一步的操作(4)我喜歡界面如圖4-5所示圖4-5 我喜歡界面用戶在本地歌曲界面將某首歌曲

38、設(shè)置為我喜歡,則這首歌曲的名字會存儲到我喜歡的界面中。(5)最近播放界面如圖4-6所示圖4-6 最近播放界面用戶點開此界面會顯示出用戶播放歌曲的歷史記錄,在不同時間播放了同一首歌曲目錄會自動刪除較早的記錄保留最新的播放記錄。此界面的相應(yīng)代碼如下:else if(indexpath.row=5) int j=lastarray count; faheadlable.text=nsstring stringwithformat:最近播放(%d),j; if(j=0) uiimageview *im=uiimageview allocinitwithframe:cgrectmake(0, 0, 32

39、0, 386); im.image=uiimage imagenamed:nillist_bg.png; totalbackview addsubview:im; im release; else uiscrollview *sc=uiscrollview allocinitwithframe:cgrectmake(0, 0, 320, 386); sc.contentsize=cgsizemake(320, 386*3); for(int i=0;ij;i+) uilabel *la=uilabel allocinitwithframe:cgrectmake(0, i*30, 320, 30

40、); la.text=lastarray objectatindex:i; la.font=uifont systemfontofsize:14; sc addsubview:la; la release; totalbackview addsubview:sc; 在此段代碼中包含了,在沒有播放過音樂時顯示那個界面,在播放了歌曲后顯示那個界面。(6)歌單界面如圖4-7 排行榜界面如圖4-8 歌手界面如圖4-9 圖4-7 歌單界面 圖4-8 排行榜界面圖4-9 歌手界面用戶在網(wǎng)絡(luò)歌曲界面點擊不同的內(nèi)容會彈出不同的網(wǎng)絡(luò)歌曲內(nèi)容。這些內(nèi)容都是從真正的網(wǎng)上的得到的。本人封裝了一個下載類,可以將網(wǎng)上的信

41、息下載下來顯示到界面上。點擊網(wǎng)絡(luò)歌曲的不同內(nèi)容彈出的信息都會出現(xiàn)在同一個界面上。也就是在點擊網(wǎng)絡(luò)歌曲的某一內(nèi)容時,顯示界面的uitableview內(nèi)容必須為空,要實現(xiàn)點擊不同內(nèi)容顯示不同信息就需要自己對每一個uitableview設(shè)置標志變量,來區(qū)分到底該顯示哪個uitableview。這三個界面都用到了下載類,從自己抓取的網(wǎng)絡(luò)上提取數(shù)據(jù),并顯示在相應(yīng)的界面中。重要代碼如下:-(void)downloadfromurl:(nsurl *)url mydata=nsmutabledata allocinit; nsurlrequest *request=nsurlrequest requestw

42、ithurl:url; myconnection=nsurlconnection allocinitwithrequest:request delegate:self;-(void)connection:(nsurlconnection *)connection didreceivedata:(nsdata *)data mydata appenddata:data;-(void)connection:(nsurlconnection *)connection didreceiveresponse :( nsurlresponse *)response mydata setlength:0;-

43、(void)connectiondidfinishloading:(nsurlconnection *)connection if(delegate respondstoselector:selector(downloadcomplited:) delegate downloadcomplited:self; 這段代碼是下載類中的主要代碼,以前下載使用的是名為asi的第三方庫,后來自己改寫成了用蘋果自帶的下載鏈接庫來下載數(shù)據(jù)。將網(wǎng)上的數(shù)據(jù)下載成為nsdata性的數(shù)據(jù),并保存起來,在主視圖控制器的代碼中應(yīng)用。調(diào)用下載數(shù)據(jù)的代碼如下:-(void)downloadcomplited:(httpdo

44、wnload *)hd savearray removeallobjects; nsdictionary *dict=nsjsonserialization jsonobjectwithdata:hd.mydata options:nsjsonreadingmutablecontainers error:nil; nsarray *musiclistarray=nsarray allocinit; if(whichtableview=3|whichtableview=5) musiclistarray=dict objectforkey:song_list; for(nsdictionary

45、*sundict in musiclistarray) nsstring *str=nsstring stringwithformat:%,sundict objectforkey:country; musiclistitem *item=musiclistitem allocinit; item.smallimage=sundict objectforkey:pic_small; oftitle=sundict objectforkey:title; item.detaillable=nsstring stringwithformat:% %,sundict objectf

46、orkey:author,str; savearray addobject:item; (7)皮膚界面如圖4-10所示圖4-10 更改皮膚界面用戶可以通過此界面更改播放器的皮膚。有三種皮膚可供用戶選擇。由于該音樂播放重點在精簡、小巧,也就沒有必要設(shè)置更多地顏色供用戶自己選擇。整個應(yīng)用運行在同一個viewcontroller上,所以對皮膚的改變只需設(shè)置下變量即可,不必如那些擁有許多viewcontroller的應(yīng)用運用通知來改變皮膚。改變皮膚的代碼如下:-(void)nsnotification:(uibutton *)button if(button.tag!=rembernumofcolor

47、) switch (button.tag) case 500: colorofskin=1; faheadview.image=uiimage imagenamed:navbar_bg2x.png; farightbutton setbackgroundimage:uiimage imagenamed:nav-menu-icon2x.png forstate:uicontrolstatenormal; musicplaybar.backgroundcolor=uicolor blackcolor; break; case 501: colorofskin=2; faheadview.image

48、=uiimage imagenamed:skin_pink_kg_nav_bar.png; musicplaybar.backgroundcolor=uicolor blackcolor; farightbutton setbackgroundimage:uiimage imagenamed:skin_pink_nav-menu-icon2x.png forstate:uicontrolstatenormal; musicplaybar.backgroundcolor=uicolor colorwithred:218/255.0 green:102/255.0 blue:145/255.0 a

49、lpha:1; break; case 502: colorofskin=3; faheadview.image=uiimage imagenamed:voiceslider_bg.png; farightbutton setbackgroundimage:uiimage imagenamed:skin_black_nav-menu-icon_pressed2x.png forstate:uicontrolstatenormal; break; 本段代碼通過switch來判斷點擊了那個圖片,進而決定作出相應(yīng)的改變。(8)意見反饋界面如圖4-11所示圖4-11 意見反饋界面用戶可以通過此界面來對

50、本款軟件發(fā)表意見。在聯(lián)網(wǎng)的狀態(tài)下,用戶可以將反饋的意見發(fā)表到相關(guān)的數(shù)據(jù)庫中。本人就可對此程序按照用戶提出的意見來做出相應(yīng)的更改。反饋界面的代碼是將控件顯示到界面上。并鏈接自己的數(shù)據(jù)庫將要傳輸?shù)男畔⒈4娴阶约旱臄?shù)據(jù)庫。(9)設(shè)置界面如圖4-12所示圖4-12 設(shè)置界面用戶在此界面可以對本款音樂播放器進行相關(guān)的設(shè)置,用戶可以查看此款音樂播放器的信息,清空緩存的操作。(10)音樂播放界面如圖4-13所示圖4-13 音樂播放界面用戶在此界面可以通過點擊歌曲名字來播放相應(yīng)的歌曲,也可點擊下面的開始按鈕或下一首按鈕來播放歌曲。在黑色條中會顯示出歌曲名稱、歌曲總長度以及播放時間的長度等等。播放功能的具體代碼如下:-(void)startmusic openorclose+; if(openorclose%2=1) startbutton setbackgroundimage:uiimage imagenamed:play_bar_passed.png forstate:uicontrolstatenormal; smallprogressview pro

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論