freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于安卓平臺(tái)android的音樂播放器設(shè)計(jì)畢業(yè)論文-資料下載頁

2025-06-27 20:47本頁面
  

【正文】 thod stub } public void onStartTrackingTouch(SeekBar seekBar) { // TODO Autogenerated method stub } public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { // TODO Autogenerated method stub // 判斷用戶是否觸拖SeekBar并且不為空才執(zhí)行 if (fromUser amp。amp。 != null) { (progress)。 } ((progress))。 } })。 播放調(diào)節(jié)功能實(shí)現(xiàn) 各按鈕水平放置,從左到右依次是上一首、播放、下一首功能按鈕。用的是布局中的線性布局LinearLayout。將其設(shè)置為水平。 播放功能按鈕 LinearLayout中依次放置播放/暫停,上一首、下一首按鈕屬性。配置文件代碼結(jié)構(gòu)如下:LinearLayout android:orientation=horizontal android:layout_width=fill_parent android:layout_height=40dip android:layout_alignParentBottom=true ImageButton /ImageButton ImageButton /ImageButton ImageButton /ImageButton/LinearLayout主要按鈕功能實(shí)現(xiàn)代碼:(1) “上一首”按鈕并實(shí)現(xiàn)功能 (new () { @Override public void onClick(View v) { // TODO Autogenerated method stub Intent play_left = new Intent(, )。 (control, front)。 startService(play_left)。 } })。(2) “播放”按鈕并實(shí)現(xiàn)功能 (new () { public void onClick(View v) { // TODO Autogenerated method stub Intent play_center = new Intent(, )。 (control, play)。 startService(play_center)。 } })。 (3) “下一首”并實(shí)現(xiàn)功能 (new () { public void onClick(View v) { Intent play_right = new Intent(, )。 (control, next)。 startService(play_right)。 } })。 }Android的媒體播放原理:Android源程序已經(jīng)為我們封裝好了一個(gè)接口類,叫MediaPlayer。該接口在執(zhí)行行需要一個(gè)數(shù)據(jù)源,通過如下四個(gè)步驟: 第一步:()。復(fù)位操作,為以后的媒體準(zhǔn)備播放作準(zhǔn)備。 第二步: 傳入歌曲數(shù)據(jù)源,(String path)。參數(shù)需要傳一個(gè)路徑,該接口類在收到路徑后將其轉(zhuǎn)化為數(shù)據(jù)源。 第三步:準(zhǔn)備播放數(shù)據(jù)源,()。 第四步:()。播放數(shù)據(jù)源,該數(shù)據(jù)源播放后,不再與程序 有關(guān),()()。讓其啟動(dòng)。 退出界面 退出程序界面,這個(gè)主要是實(shí)現(xiàn)退出程序功能,用戶如果想退出程序,按下手機(jī)返回,選擇是否退出程序。 退出程序界面是否退出程序主要代碼: public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == ) { Dialog dialog = new MyDialog(,)。 (true)。 ()。 } return (keyCode, event)。 } 歌詞顯示界面當(dāng)播放音樂文件時(shí),如果同時(shí)存在該歌曲的LRC格式的歌詞文件時(shí),系統(tǒng)會(huì)自動(dòng)匹配歌詞并且達(dá)到同步顯示的效果。 歌詞顯示模塊歌詞同步顯示代碼如下: protected void onDraw(Canvas canvas) { // TODO Autogenerated method stub (canvas)。 if (canvas == null) { return。 } ((210, 251, 248, 29))。 ((140, 255, 255, 255))。 (24)。 ()。 (TextSize)。 ()。 try { setText()。 ((Index).getLrc(), width / 2, high / 2, CurrentPaint)。 float tempY = high / 2。 for (int i = Index 1。 i = 0。 i) { tempY = tempY TextHigh。 ((i).getLrc(), width / 2, tempY, NotCurrentPaint)。 } tempY = high / 2。 for (int i = Index + 1。 i ()。 i++) { tempY = tempY + TextHigh。 ((i).getLrc(), width / 2, tempY, NotCurrentPaint)。 } } catch (Exception e) { setText(沒有歌詞文件,趕緊去下載...)。 } } 歌詞解析模塊(1) 處理歌詞文件的類public class LrcProcess { private ListLrcContent LrcList。 private LrcContent mLrcContent。 public LrcProcess() { mLrcContent = new LrcContent()。 LrcList = new ArrayListLrcContent()。 }(2) 讀取歌詞文件的內(nèi)容 public String readLRC(String song_path) { // public void Read(String file){ StringBuilder stringBuilder = new StringBuilder()。 File f = new File((.mp3, .lrc))。 try { FileInputStream fis = new FileInputStream(f)。 InputStreamReader isr = new InputStreamReader(fis, GB2312)。 BufferedReader br = new BufferedReader(isr)。 String s = 。 while ((s = ()) != null) { s = ([, )。 s = (], @)。 String splitLrc_data[] = (@)。 if ( 1) { (splitLrc_data[1])。 int LrcTime = TimeStr(splitLrc_data[0])。 (LrcTime)。 (mLrcContent)。 mLrcContent = new LrcContent()。 } } ()。 ()。 ()。 } catch (FileNotFoundException e) { ()。 (沒有有歌詞文件,趕緊去下載!...)。 } catch (IOException e) { ()。 (沒有讀取到歌詞啊!)。 } return ()。 }(3) 解析歌曲時(shí)間處理類: public int TimeStr(String timeStr) { timeStr = (:, .)。 timeStr = (., @)。 String timeData[] = (@)。 int minute = (timeData[0])。 int second = (timeData[1])。 int millisecond = (timeData[2])。 int currentTime = (minute * 60 + second) * 1000 + millisecond * 10。 return currentTime。 } public ListLrcContent getLrcContent() { return LrcList。 }(4) 獲得歌詞和時(shí)間并返回的類: public class LrcContent { private String Lrc。 private int Lrc_time。 public String getLrc() { return Lrc。 } public void setLrc(String lrc) { Lrc = lrc。 } public int getLrc_time() { return Lrc_time。 } public void setLrc_time(int lrc_time) { Lrc_time = lrc_time。 } }} 歌曲列表界面 歌曲列表顯示界面 。在Android里面,有一個(gè)視圖叫ListView,其特點(diǎn)是一個(gè)有BaseAdapter的屬性,從下到下,或從左到右的顯示方式。系統(tǒng)默認(rèn)的方式每一行只顯示一個(gè)TextView,本播放列表實(shí)現(xiàn)了自定義的方式,剛ListView的每一行顯示一個(gè)音樂圖片和一個(gè)歌曲名字。我們定義一個(gè)類MusicAdapter 繼承了BaseAdapter,然后通過算法對(duì)這個(gè)適配器進(jìn)行擴(kuò)展,擴(kuò)展成為第一行能顯示一張圖片和一個(gè)歌曲名字。由于BaseAdapter是一個(gè)抽象類,我們需要實(shí)現(xiàn)里面的抽象方法getVie()。該方法返回一個(gè)View,即視圖。視圖可以顯示在Activity上,所以就可以看到我們想要的歌曲列表界面。 歌曲列表ListView同樣有一個(gè)監(jiān)聽器new onItemClickListener(){@Override public void onItemClick(AdapterView? arg0, View arg1, int arg2,long arg3) {}},我們只要實(shí)現(xiàn)這個(gè)方法,就可以監(jiān)聽鼠標(biāo)的點(diǎn)擊事件,當(dāng)鼠標(biāo)點(diǎn)擊到每一行時(shí),(int position)得到該行上的信息。這樣就可以通過Intent將數(shù)據(jù)傳入到其它的Activity。歌詞列表界面的添加一個(gè)ListView控件:?xml version= encoding=utf8?LinearLayout xmlns:android= android:orientation=vertical android:layout_width=fill_parent android:layout_height=fill_parent android:background=@drawable/musiclist_bkg TextView/TestView ListView android:id=@+id/listView1 android:layout_width=fill_parent android:layout_height=415dip android:cacheColorHint=00000000/ListView/LinearLayout 專輯列表界面 輯列表采用了網(wǎng)格視圖(GridView) 用它能實(shí)現(xiàn)視圖的網(wǎng)格排列,九宮格視圖就是GridVew最典型的使用,GridView是一個(gè)AdapterView,所以需要通過適配器來綁定數(shù)據(jù),這里使用BaseAdapter。 專輯列表界面添加Gridview控件,結(jié)構(gòu)如下:?xml version= encoding=utf8?RelativeLayout GridView /GridView/RelativeLayout專輯列表部分代碼: 歌曲專輯圖片顯示,如果有歌曲圖片,才會(huì)返回,否則為null,要注意
點(diǎn)擊復(fù)制文檔內(nèi)容
高考資料相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1