安卓音樂播放器開發(fā),含源代碼_第1頁
安卓音樂播放器開發(fā),含源代碼_第2頁
安卓音樂播放器開發(fā),含源代碼_第3頁
安卓音樂播放器開發(fā),含源代碼_第4頁
安卓音樂播放器開發(fā),含源代碼_第5頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、基于an droid平臺(tái)的音樂播放器開發(fā)實(shí)驗(yàn)報(bào)告學(xué)生姓名:溫從林學(xué) 號(hào):班 級(jí):計(jì)自1201第一章引言1.1項(xiàng)目背景當(dāng)今社會(huì)的生活節(jié)奏越來越快,人們對(duì)手機(jī)的要求也越來越高,由于手機(jī)市場(chǎng)發(fā) 展迅速,使得手機(jī)操作系統(tǒng)也出現(xiàn)了不同各類,現(xiàn)在的市場(chǎng)上主要有三個(gè)手機(jī)操作系 統(tǒng),Win dowsmobile,symbia n,以及谷歌的 An droid操作系統(tǒng),其中占有開放源代碼 優(yōu)勢(shì)的An droid系統(tǒng)有最大的發(fā)展前景。那么能否在手機(jī)上擁有自己編寫的個(gè)性音樂 播放器呢?能的,谷歌 An droid系統(tǒng)就能做到。本文的音樂播放器就是基于谷歌 An droid手機(jī)平臺(tái)的播放器。An droid :是谷歌

2、于2007年公布的開放式源代碼手機(jī)系統(tǒng),它的開放性就優(yōu)于其 它封閉式的手機(jī)系統(tǒng),因此,任何人都可能根據(jù)自己的喜好將手機(jī)系統(tǒng)中的所有功能 重新編寫。這使得越來越多的人關(guān)注這個(gè)操作系統(tǒng)。本次作品音樂播放器就是基于 An droid平臺(tái)的。1.2編寫目的現(xiàn)今社會(huì)生活緊張,而欣賞音樂是其中最好的舒緩壓力的方式之一,本項(xiàng)目的目 的是開發(fā)一個(gè)可以播放主流音樂文件格式的播放器,本設(shè)計(jì)實(shí)現(xiàn)的主要功能是播放 Mp3 Wav多種格式的音樂文件,并且能夠控制播放,暫停,停止,播放列等基本播放 控制功能,界面簡(jiǎn)明,操作簡(jiǎn)單。本項(xiàng)目是一款基于An droid手機(jī)平臺(tái)的音樂播放器,使 An droid手機(jī)擁有個(gè)性的多媒體

3、播放器,使手機(jī)顯得更生動(dòng)靈活化,與人們更為接近,讓手機(jī)主人隨時(shí)隨地處 于音樂視頻的旋律之中。使人們的生活更加多樣化。也使設(shè)計(jì)者更加熟練An droid的技術(shù)和其它在市場(chǎng)上的特點(diǎn)。1.3開發(fā)環(huán)境Eclipse、An droid SDK 320第二章 系統(tǒng)需求分析2.1功能需求(用例圖分析)根據(jù)項(xiàng)目的目標(biāo),我們可獲得項(xiàng)目系統(tǒng)的基本需求,以下從不同角度來描述系統(tǒng) 的需求,并且使用用例圖來描述,系統(tǒng)的功能需求,我們分成四部分來概括,即播放 器的基本控制需要,播放列表管理需求,播放器友好性需求和播放器擴(kuò)展卡需求。以 下分別描述:2.1.1播放器的用例圖假設(shè)安裝了音樂播放器的用戶是系統(tǒng)的主要設(shè)計(jì)對(duì)象,其擁

4、有以下操作,啟動(dòng)軟件、播放音樂、暫停播放、停止播放、退出軟件,其用例圖如下圖2.1播放器基本用例圖2.1.2用例分析前置條件:無基本事件流:1.用戶啟動(dòng)軟件2.播放器將播放列表中的當(dāng)前的歌曲用例名稱:播放參與者:用戶目標(biāo):使得用戶可以播放在播放列表中選中的歌曲前置條件:播放器正在運(yùn)行基本事件流:1.用戶單擊“播放”按鈕2.播放器將播放列表中的當(dāng)前的歌曲用例名稱:暫停參與者:用戶目標(biāo):使得用戶可以暫停正在播放的歌曲前置條件:歌曲正在播放且未停止和暫?;臼录鳎?.用戶單擊“暫?!卑粹o2.播放器將暫停當(dāng)前的歌曲用例名稱:停止參與者:用戶目標(biāo):使得用戶可以停止正在播放的歌曲前置條件:歌曲正在播放或

5、暫停基本事件流:1.用戶單擊“停止”按鈕2.播放器將停止當(dāng)前播放的歌曲用例名稱:退出參與者:用戶目標(biāo):使得用戶退出或者后臺(tái)播放音樂前置條件:程序在運(yùn)行基本事件流:1.用戶按返回鍵2.播放器退出或者進(jìn)入后臺(tái)播放第三章概要設(shè)計(jì)3.1軟件播放流程圖Stepl.啟動(dòng)軟件后,軟件自動(dòng)檢索手機(jī)和 sd卡的音頻文件,并組織顯示成列表Step2.點(diǎn)擊列表的歌曲名字。Step3.播放音樂。Step4.點(diǎn)擊暫停,音樂暫停Step5.點(diǎn)擊播放轉(zhuǎn)到step3Step6.點(diǎn)擊停止停止播放音樂Step7 .點(diǎn)擊退出。啟動(dòng)軟件自動(dòng)檢索手機(jī)中暫停/退出軟件圖3.1音樂播放器流第四章界面展示4.1軟件部署系統(tǒng)編譯生成apk文件

6、,將apk文件拷到手機(jī)或者sd卡中,直接打幵即可 安裝。4.2啟動(dòng)軟件打幵軟件后的界面4.3歌曲列表界面歌曲列表界面4.4播放界面4.5收藏界面4.6在線搜索音樂界面第五章結(jié)論(1) 通過本次幵發(fā)解決了諸如SD卡音樂文件搜索并顯示、聯(lián)網(wǎng)搜索歌曲等難題,對(duì)安卓的幵發(fā)有了更深入的認(rèn)識(shí)。(2) 通過對(duì)An droid手機(jī)平臺(tái)的音樂播放器軟件的開發(fā),使我對(duì)An droid音樂播放器系統(tǒng)的整體設(shè)計(jì)有一個(gè)深入的了解,對(duì)整個(gè)流程也會(huì)有一個(gè)清晰的認(rèn)識(shí)。開發(fā)An droid音樂播放器,要抓住開發(fā)的核心部分,音樂播放器大體由播放主界面、 播放列 表、菜單、播放設(shè)置、文件瀏覽、歌曲搜索六大核心組成。(3) 本次程序

7、設(shè)計(jì),對(duì)播放器的系統(tǒng)結(jié)構(gòu)框架做了精心的構(gòu)思與設(shè)計(jì),采用主要開發(fā)工具是Eclips4.0+Java 語言的支持,An droid Developme nt Tool 的插件,和An droid SDK2.1版本的全面結(jié)合,才使整個(gè)音樂播放器系統(tǒng)得以實(shí)現(xiàn)第五章部分源代碼以下給出功能實(shí)現(xiàn)代碼,布局,風(fēng)格等代碼量過大,放在壓縮文件中MainActivity.java:packageimportimportimportimportimportimportimportimportimportimportpublic class MainActivity extends ActionBarActivity

8、Overrideprotected void onCreate(Bundle savedlnstanceState) super .onCreate(savedlnstanceState);requestWindowFeature(Window. FEATURE_NO_TITLE);setContentView(R.layout. fragment_main );Thread thread = new Thread() public void run() try sleep (2500); catch (InterruptedException e) e.printStackTrace();f

9、inish();Intent intent =new Intent(MainActivity.this , MusicActivity. class );startActivity(intent);thread.start();Overridepublic boolean onCreateOptionsMenu(Menu menu) / Inflate the menu; this adds items to the action bar if it is present.getMenulnflater().inflate(R.menu.main , menu);return true ;Ov

10、erridepublic boolean onOptionsltemSelected(Menultem item) / Handle action bar item clicks here. The action bar will / automatically handle clicks on the Home/Up button, so long/ as you specify a parent activity in AndroidM id = item.getltemld();if (id = R.id. action_settings ) return

11、true ;return super .onOptionsltemSelected(item);* A placeholder fragment containing a simple view.*/public static class PlaceholderFragment extends Fragment public PlaceholderFragment。Overridepublic View onCreateView(Layoutlnflater inflater, ViewGroup container,Bundle savedlnstanceState) ,container,

12、View rootView = inflater.inflate(R .l ayout.fragment_mainfalse );return rootView;BandanActivity.javapackage ;importimportimportimportimportimportimportimportimportimportimportimportpublic class Ban gda nActivityimportprivateListViewlistview ;privateStri ngmusicpath ;privateint _ids ;/存放音樂文件的id數(shù)組priv

13、ateStri ng_titles ;/存放音樂文件的標(biāo)題數(shù)組privateStri ng_artists ;/存放音樂藝術(shù)家的標(biāo)題數(shù)組privateStri ng_path ;/存放音樂路徑的標(biāo)題數(shù)組privateStri ng_times ;/存放總時(shí)間的標(biāo)題數(shù)組privateStri ng_album ;/存放專輯的標(biāo)題數(shù)組privateint _sizes ;/存放文件大小的標(biāo)題數(shù)組privateStri ng_displa yn ame;/存放名稱的標(biāo)題數(shù)組Overrideprotectedvoidon Create(B un dle saved In sta nceState) e

14、xte nds Activity super .onCreate(savedInstanceState);setC onten tView(R .1 ayout.ban gda nm usic_list););listview= (ListView) fin dViewByld(R.id.ban gda n_music_listlistview.setO nl temClickListe ner(new MusicList On ClickListe ner();ShowMp3List();*顯示MP3言息,其中ds保存了所有音樂文件的_ID ,用來確定到底要播放哪一首歌曲, _titles存

15、放音樂名,用來顯示在播放界面,*而_path存放音樂文件的路徑(刪除文件時(shí)會(huì)用到)*/private void ShowMp3List() /用游標(biāo)查找媒體詳細(xì)信息Cursor cursor = this .getC onten tResolver().query( EXTERNAL_CONTENT.new Strin g TITLE ,DURATION,ARTIST,_ID,_URI/標(biāo)題,游標(biāo)從0讀取 持續(xù)時(shí)間,1藝術(shù)家,2/ id,3DISPLAY_NAME / DATAALBUM_ID, ALBUM SIZE , null/* 將游標(biāo)移到第一位 */cursor.moveToFirst

16、();/*分別將各個(gè)標(biāo)題數(shù)組實(shí)例化ids/顯示名稱,4 數(shù)據(jù),5專輯名稱ID,6專輯,7/,null ARTIST); / 大小,8*/new intcursor.getCo un t();_titles =new Strin gcursor.getCo un t();_artists = new Strin gcursor.getCo un t();_path =new Strin gcursor.getCo un t();_album =new Strin gcursor.getCo un t();_times=new Strin gcursor.getCo un t();_displa

17、yn ame= new Strin gcursor.getCo un t();_sizes = new int cursor.getCount();到的內(nèi)容格式為/mnt/sdcard/子文件夾名/音樂文件名,而我們想要得到的是/sdcard/子文件夾名音樂文件名*/for (int i = 0; i cursor.getCount(); i+) _ids i = cursor.getInt(3);_titles i = cursor.getStri ng(0);_artists i = cursor.getStri ng(2);_path i = cursor.getString(5).su

18、bstring(4);/*以下是為提供音樂詳細(xì)信息而生成的*/_album i = cursor.getString(7);_times i = toTime(cursor.getInt(1);_sizes i = cursor.getInt(8);_displa yn ame i = cursor.getStri ng(4);cursor.moveToNext();listview .setAdapter( new MusicListAdapter( this , cursor);/*時(shí)間的轉(zhuǎn)換*/public String toTime( int time) time /= 1000;in

19、t minute = time / 60;int second = time % 60;minute %= 60;/*返回結(jié)果用string 的format方法把時(shí)間轉(zhuǎn)換成字符類型*/returnStri ng.format (%02d:%02d , min ute, seco nd);/*音樂列表添加監(jiān)聽器,點(diǎn)擊之后播放音樂*/public class MusicList On ClickListe nerimpleme ntsOn ItemClickListe ner Overridepublic void on ltemClick(AdapterViewargO,View view, i

20、ntpositi on,long id) musicpath =/mnt +_path position;playMusic( musicpath );/*putExtraMusic(positio n);*/Intentintent= newInten t(Ba ngda nActivity.thisPlayMusicActivity. class );startActivity(i ntent);fin ish();public void playMusic(String musicpath) try MediaPlayer mp = new MediaPlayer(); mp.reset

21、();mp.setDataSource(musicpath);mp.prepare();mp.start(); catch (Exception e)無法播放此文件newToast. makeText (getApplicationContext(), Toast. LENGTH_SHOR)Tshow();public void putExtraMusic( int position) In te ntintentIntent(BangdanActivity.this ,PlayMusicActivity. class );/*i nten t.putExtra(_ids, _ids);int

22、en t.putExtra(_path, _path);in te nt.putExtra(_titles, _titles);inten t.putExtra(_artists, _artists);inten t.putExtra(positi on, positi on);startActivity(i nte nt);fin ish();*/intent = new In te nt();Bun dle bun dle =new Bun dle();bun dle.put lnt(positio n , 25);inten t.putExtras(b un dle);intent.se

23、tClass(BangdanActivity.this , PlayMusicActivity.class );startActivity(i nte nt);fin ish();Overrideprotected void onStop() super .onStop();private long exitTime = 0;publicboolean onKeyDown( int keyCode, KeyEvent event) if (keyCode =KeyEvent. KEYCODE_BACK &event.getAction()KeyEve nt. ACTION_DOWNif (Sy

24、stem.currentTimeMillis()- exitTime ) 2000)Toast. makeText (getApplicationContext(),再按一次退出程序Toast. LENGTH_SHOR)Tshow();exitTime = System.curre ntTimeMillis();else fin ish();System.exit (0);return true ;returnsuper .onKeyDown(keyCode, event);CollectionActivity.javapublic class Collecti on Activity ext

25、e nds Expa ndableListActivity Overridepublic void on Create(B un dle savedI nsta nceState) super. on Create(savedI nsta nceState);/ 一級(jí)條目ListvMapvStr ing,Stri nggroups 二newArrayListvMapvStr in g,Stri ng();MapvStri ng, Stringgroup1= new HashMapvStr ing, Str in g();group1.put(group,【歌手】”);MapvStri ng,

26、Stringgroup2 二new HashMapvStr ing, Str in g();group2.put(group,【專輯】);groups.add(groupl);groups.add(group2);/ 二組條目ListListMapchilds 二newArrayListListMap();/第一組二級(jí)科目數(shù)據(jù)ListvMapvStri ng,Stri ngArrayListvMapvStr in g,Stri ng();MapvStri ng, Stringitem1= new HashMapvStri ng, Stri ng();item1.put(child,林俊杰);M

27、apvStri ng, Stringitem2 二new HashMapvStri ng, Stri ng();item2.put(child,周杰倫);childl.add(iteml);child1.add(item2);/第二組二級(jí)科目數(shù)據(jù)ListvMapvStri ng,Stri ngArrayListvMapvStr in g,Stri ng();MapvStri ng, Stringitem3 二new HashMapvStri ng, Stri ng();item3.put(child,vv因你而在 );MapvStri ng, Stringitem4 二new HashMapv

28、Stri ng, Stri ng();item4.put(child,vv流行主教 );MapvStri ng, Stringitem5 二new HashMapvStri ng, Stri ng();item5.put(child,vv第二天堂 );child2.add(item3);child2.add(item4);child2.add(item5);childl二 newchild2 二newchilds.add(childl);構(gòu)造函數(shù)參數(shù)childs.add(child2);/SimpleExpa ndableListAdapter1.c ontent/2.一級(jí)條目數(shù)據(jù)3.級(jí)條目布

29、局文件/4 . 一級(jí)條目Key5.級(jí)條目顯示信息控件id6.二級(jí)條目數(shù)據(jù)7.二級(jí)條目布局文件8.二級(jí)條目Key9.二級(jí)條目顯示信息控件idsetListAdapter(adapter);private long exitTime = 0;public boolea n on KeyDow n(i nt keyCode, KeyEve nt eve nt) if(keyCode = KeyEvent.KEYCODE_BACK& event.getAction()KeyEve nt.ACTION_DOWN)if(System.curre ntTimeMillis()-exitTime) 2000)

30、Toast.makeText(getApplicatio nCo ntext(),再按一次退出程序, Toast.LENGTH_SHORT).show();exitTime = System.curre ntTimeMillis();else fin ish();System.exit(O);return true;return super. on KeyDow n(keyCode, eve nt);*初始化菜單*/public boolea n onMen uKeyDow n(i nt keyCode, KeyEve nt eve nt) if(keyCode=KeyEve nt.KE YC

31、ODE_MENU& eve nt.getActio n()=KeyEve nt.ACTION_DOWN)Toast.makeText(getApplicationContext(),未定義菜單”Toast.LENGTH_SHORT).show();return true;Contsant.javapublic class Con tsa nt 獲取屏幕的大小0 :寬度1 :高度*/public static in t getScree n(Con text con text) (Win dowMa nager)Win dowMa nagerwin dowMa nagercon text.get

32、SystemService(Co ntext.WINDOW_SERVICE);Display display = wi ndowMa nager.getDefaultDisplay();DisplayMetrics outMetrics = new DisplayMetrics();display.getMetrics(outMetrics);return new int (int)(outMetrics.density * outMetrics.widthPixels),(int) (outMetrics.de nsity * outMetrics.heightPixels) ;/*獲取文件

33、的后綴名,返回大寫*/public static String getSuffix(Stri ng str) int i = str.last In dexOf(.);if (i != -1) retur n str.substri ng(i + 1).toUpperCase();return str;/*格式化文件大小 Byte-MB*/public static Stri ng formatByteToMB(i nt size) float mb=size/1024f/1024f;return Strin g.format(%.2f,mb);LRCbean.javapackage/* 歌詞

34、實(shí)體*/public class LRCbea n private int beg in Time = 0;/ 開始時(shí)間public int getBeginTime() return beg in Time;public void setBeginTime(int beginTime) this .begi nTime = beg in Time;public int getLineTime() returnlin eTime;public void setLineTime(int lineTime) this ineTime = lineTime;public String getLrcB

35、ody() retur n lrcBody;public void setLrcBody(String lrcBody) this.lrcBody = lrcBody;privateprivateint lin eTime = 0;String lrcBody =null ; /歌詞實(shí)體MDialog.java*自定義的對(duì)話框*/public class MDialog exte nds Dialog public MDialog(Co ntext con text) super(c on text);public MDialog(C on text con text, int theme)

36、super(c on text, theme);public static class Builder private Con text con text;private int mIc on = -1;/private CharSeque nee mTitle; / private CharSeque nee mMessage;/private CharSeque nee mTitle; /提示標(biāo)題private CharSeque nee mMessage;/提示內(nèi)容private CharSeque nee mPositiveButt on Text;/ private CharSequ

37、e nee mNegativeButt on Text;/ private CharSeque nee mNeutralButt on Text; / private boolea n mCa ncelable = true;/中間按鈕文本private int mViewSpaci ngLeft;private int mViewSpaci ngTop;private int mViewSpac in gRight;private int mViewSpac in gBottom;private boolea n mViewSpaci ngSpecified = false;/ 提示內(nèi)容Vi

38、ewprivate View mView;private On ClickListe ner mPositiveButto nClickListe ner.mNegativeButt on ClickListe ner, mNeutralButt on ClickListe ner;private OnCan celListe ner mCa ncelListe ner;/ private On KeyListe ner mKeyListe ner;/public Builder(C on text con text) this.c on text = con text;public Buil

39、der setMessage(CharSeque nee message) this.mMessage = message;return this;public Builder setMessage(i nt message) this.mMessage = con text.getText(message); return this;public Builder setTitle(i nt title) this.mTitle = con text.getText(title); return this;public Builder setTitle(CharSeque nee title)

40、 this.mTitle = title;return this;public Builder setIc on (i nt icon) this.mIc on = icon;return this;public Builder setView(View view) this.mView = view;mViewSpaci ngSpecified = false; return this;public Builder setView(View view, i nt left, i nt top, i nt right, int bottom) this.mView = view;this.mV

41、iewSpaci ngLeft = left;this.mViewSpac in gTop = top;this.mViewSpac in gRight = right;this.mViewSpac in gBottom = bottom; mViewSpaci ngSpecified = true; return this;public Builder setPositiveButt on (i nt textId,final On ClickListe ner liste ner) this.mPositiveButt on Text = con text.getText(textld);

42、 this.mPositiveButt on ClickListe ner = liste ner; return this;public Builder setPositiveButt on( Stri ng text,final On ClickListe ner liste ner) this.mPositiveButt on Text = text; this.mPositiveButt on ClickListe ner = liste ner; return this;public Builder setNeutralButt on (i nt textId,final On Cl

43、ickListe ner liste ner) this.mNeutralButt on Text = con text.getText(textld); this.mNeutralButt on ClickListe ner = liste ner; return this;public Builder setNeutralButto n(Stri ng text,final On ClickListe ner liste ner) this.mNeutralButt on Text = text; this.mNeutralButt on ClickListe ner = liste ne

44、r; return this;public Builder setNegativeButt on (i nt textId,final On ClickListe ner liste ner) this.mNegativeButt on Text = con text.getText(textId); this.mNegativeButt on ClickListe ner = liste ner; return this;public Builder setNegativeButt on( Stri ng text,final On ClickListe ner liste ner) thi

45、s.mNegativeButt on Text = text; this.mNegativeButt on ClickListe ner = liste ner; return this;public Builder setCa ncelable(boolea n can celable) this.mCa ncelable = can celable;return this;public Builder set OnCan celListe ner(OnCan celListe ner liste ner) this.mCa ncelListe ner = liste ner;return

46、this;public Builder set On KeyListe ner(On KeyListe ner liste ner) this.mKeyListe ner = liste ner;return this;public MDialog create() LayoutI nflater in flater = (LayoutI nflater) con textgetSystemService(Co ntext.LAYOUT_INFLATER_SERVICE); dialog.setCa ncelable(mCa ncelable);/設(shè)置取消鍵事件if (mCa ncelList

47、e ner != n ull) dialog.set OnCan celListe ner(mCa ncelListe ner);/設(shè)置鍵盤監(jiān)聽事件if (mKeyListe ner != n ull) dialog.set On KeyListe ner(mKeyListe ner);/獲取對(duì)話框布局layout.setLayoutParams( new LayoutParams(LayoutParams.FILL_PARENT ,L ayoutParams.WRAP_CONTENT);/設(shè)置標(biāo)題/設(shè)置圖標(biāo)if (mIco n != -1) int count = 0;/設(shè)置確定按鈕coun

48、 t+;/設(shè)置拒絕按鈕coun t+;/設(shè)置中間按鈕coun t+;if(co un t=0)/ 一個(gè)按鈕時(shí),顯示兩邊空間if (co unt = 1) /設(shè)置提示消息if (!TextUtils.isEmpty(mMessage) else /設(shè)置提示內(nèi)容布局if (mView != n ull) if (mViewSpa cin gSpecified) customPa nel.setPaddi ng(mViewSpaci ngLeft, mViewSpaci ngTop,mViewSpa cin gRight, mViewSpaci ngBottom);customPa nel.addV

49、iew(mView); else dialog.setC onten tView(layout);retur n dialog;public MDialog show() MDialog dialog = create。;dialog.show();retur n dialog;privateboolea nsetButt on( Viewlayout,mPositiveButt on Text2, int id,final Dialog dialog, final On ClickListe ner liste ner) if (!TextUtils.isEmpty(mPositiveBut

50、to nText2) final Button butt on1 = (Butt on) layout.fi ndViewByld(id);butto n1.setText(mPositiveButto nText2);if (liste ner != n ull) butto n1.set On ClickListe ner(new View. On ClickListe ner() public void on Click(View v) liste ner.o nClick(dialog,Dialogl nterface.BUTTON_POSITIVE););else默認(rèn)事件為關(guān)閉對(duì)話框

51、butto n1.set On ClickListe ner(new View. On ClickListe ner() public void on Click(View v) dialog.ca ncel(); dialog.dismiss(););return true; else layout.fi ndViewByld(id).setVisibility(View.GONE);return false;MusicActivity.java/* 以 Tabhost+RadioGroup 組合 */publicclassMusicActivityexte ndsTabActivityOn

52、 CheckedCha ngeListe nerprivate TabHost tabhost;private RadioGroup radiogroup;CharSequeneeimpleme ntsOverrideprotected void on Create(B un die saved In sta nceState) super.。nCreate(savedl nsta nceState);requestWi ndowFeature(Wi ndow.FEATURE_NO_TITLE); tabhost=getTabHost();radiogroup.set On CheckedCh

53、a ngeListe ner(this); radiogroup.setClickable(true);tabhost.addTab(tabhost .n ewTabSpec(local_music).setl ndicator(local_musi c).setC onten t( new Inten t(this,MusicListActivity.class);tabhost.addTab(tabhost .n ewTabSpec(my_collect).setl ndicator(my_collect ).setC onten t( new Inten t(this,Collectio nActivity.class);tabhost.addTab(tabhost. newTabSpec(” net_music)

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論