java音樂(lè)實(shí)訓(xùn)報(bào)告_第1頁(yè)
java音樂(lè)實(shí)訓(xùn)報(bào)告_第2頁(yè)
java音樂(lè)實(shí)訓(xùn)報(bào)告_第3頁(yè)
java音樂(lè)實(shí)訓(xùn)報(bào)告_第4頁(yè)
java音樂(lè)實(shí)訓(xùn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩22頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

新鄉(xiāng)學(xué)院計(jì)算機(jī)與信息工程學(xué)院項(xiàng)目實(shí)訓(xùn)報(bào)告項(xiàng)目名稱班級(jí)學(xué)號(hào)姓名指導(dǎo)教師2015年12月29日目錄

TOC\o"1-2"\h\z\u第1章概述 1第2章需求分析 22.1項(xiàng)目背景 22.2項(xiàng)目需求 2第3章相關(guān)技術(shù) 33.1Adnroid平臺(tái)介紹 33.2關(guān)鍵技術(shù)研究 3第4章概要設(shè)計(jì) 44.1系統(tǒng)體系結(jié)構(gòu) 44.2用戶界面設(shè) 4第5章詳細(xì)設(shè)計(jì) 65.1播放設(shè)置以及后臺(tái)播放源碼 65.2獲取網(wǎng)絡(luò)歌曲分類列表的代碼實(shí)現(xiàn). 13第6章結(jié)論 24PAGE1 -PAGE1-第1章概述本課題要求:設(shè)計(jì)一個(gè)基于Android的手機(jī)端音樂(lè)播放器軟件。實(shí)現(xiàn)的功能有:a)能在Android上利用其播放本地和遠(yuǎn)程的歌曲。b)能通過(guò)一個(gè)搜索框?qū)崿F(xiàn)本地和遠(yuǎn)程的搜索功能.c) 可以實(shí)現(xiàn)后臺(tái)播放,并能流暢的實(shí)現(xiàn)多界面的跳轉(zhuǎn)。需重點(diǎn)研究的關(guān)鍵問(wèn)題:實(shí)現(xiàn)播放,后臺(tái)播放,進(jìn)度條顯示進(jìn)度等,以及網(wǎng)絡(luò)請(qǐng)求數(shù)據(jù)和處理。解決思路:瀏覽Android開(kāi)源網(wǎng)站,認(rèn)證學(xué)習(xí),并請(qǐng)教老師,學(xué)習(xí)相關(guān)知識(shí);不過(guò)主要還是靠自己的解題思路,解決問(wèn)題的能力。PAGE5第2章需求分析2.1項(xiàng)目背景移動(dòng)互聯(lián)網(wǎng)時(shí)代的來(lái)臨,直接促進(jìn)了搭載智能操作系統(tǒng)、具有強(qiáng)大擴(kuò)展性的智能手機(jī)、平板電腦等移動(dòng)終端產(chǎn)業(yè)的蓬勃發(fā)展。搭載安卓操作系統(tǒng)的智能手機(jī)目前已經(jīng)成為市場(chǎng)上最炙手可熱的智能產(chǎn)品。開(kāi)放的源代碼和零成本已經(jīng)讓安卓在全世界范圍內(nèi)受到青睞并迅速獲得了主要手機(jī)廠商和數(shù)百萬(wàn)軟件開(kāi)發(fā)者的支持,無(wú)疑android已經(jīng)是智能設(shè)別領(lǐng)域的老大.在這個(gè)移動(dòng)互聯(lián)網(wǎng)飛速發(fā)展的時(shí)代,帶動(dòng)全球的經(jīng)濟(jì)重心向著輕小得移動(dòng)端發(fā)展.人們的衣食住行已經(jīng)和手機(jī)這種設(shè)別息息相關(guān),甚至是不可分割的狀態(tài).出于這個(gè)時(shí)代的背景,Android端的娛樂(lè)軟件更是層出不窮.這些軟件豐富了人們的閑暇之余.所以我打算入手一款?yuàn)蕵?lè)軟件,為大家揭秘神秘的android軟件.該課題的主要設(shè)計(jì)任務(wù)是實(shí)現(xiàn)android設(shè)備上的音樂(lè)播放器功能,屬于自己設(shè)計(jì)的一款軟件,輕巧方便,沒(méi)有廣告,內(nèi)存利用率高,是一款實(shí)用而且高端的手機(jī)軟件。2.2項(xiàng)目需求“i音樂(lè)”是一款手機(jī)音樂(lè)播放器,它通過(guò)搜索本地文件,實(shí)現(xiàn)本地音樂(lè)文件的播放,同時(shí)又能獲取網(wǎng)絡(luò)歌曲,簡(jiǎn)單一句話:麻雀雖小五臟俱全?!癷音樂(lè)”的主要目的是開(kāi)發(fā)一個(gè)可以播放主流的音樂(lè)格式,本設(shè)計(jì)實(shí)現(xiàn)主要功能是播放MP3,WAV,OGG等格式的音樂(lè)文件,并且控制播放,暫停,停止,音量控制,選擇上一曲,選擇下一曲,視覺(jué)外觀,列表文件和歌曲文件的管理操作等多種播放控制,界面簡(jiǎn)明,操作簡(jiǎn)單。第3章相關(guān)技術(shù)3.1Adnroid平臺(tái)介紹Android是一種基于Linux的自由及開(kāi)放源代碼的操作系統(tǒng),主要使用于移動(dòng)設(shè)備,如智能手機(jī)和平板電腦,由Google公司和開(kāi)放手機(jī)聯(lián)盟領(lǐng)導(dǎo)及開(kāi)發(fā)。尚未有統(tǒng)一中文名稱,中國(guó)大陸地區(qū)較多人使用“安卓”或“安致”。Android操作系統(tǒng)最初由AndyRubin開(kāi)發(fā),主要支持手機(jī)。2005年8月由Google收購(gòu)注資。2007年11月,Google與84家硬件制造商、軟件開(kāi)發(fā)商及電信營(yíng)運(yùn)商組建開(kāi)放手機(jī)聯(lián)盟共同研發(fā)改良Android系統(tǒng)。隨后Google以Apache開(kāi)源許可證的授權(quán)方式,發(fā)布了Android的源代碼。第一部Android智能手機(jī)發(fā)布于2008年10月。Android逐漸擴(kuò)展到平板電腦及其他領(lǐng)域上,如電視、數(shù)碼相機(jī)、游戲機(jī)等。2011年第一季度,Android在全球的市場(chǎng)份額首次超過(guò)塞班系統(tǒng),躍居全球第一。2012年11月數(shù)據(jù)顯示,Android占據(jù)全球智能手機(jī)操作系統(tǒng)市場(chǎng)76%的份額,中國(guó)市場(chǎng)占有率為90%。2013年09月24日谷歌開(kāi)發(fā)的操作系統(tǒng)Android在迎來(lái)了5歲生日,全世界采用這款系統(tǒng)的設(shè)備數(shù)量已經(jīng)達(dá)到10億臺(tái)。3.2關(guān)鍵技術(shù)研究應(yīng)用SQLLite數(shù)據(jù)庫(kù):SQLite提供結(jié)構(gòu)化的數(shù)據(jù)存取。SQLite是一款輕型的數(shù)據(jù)庫(kù),它的設(shè)計(jì)目標(biāo)是嵌入式的,目前已經(jīng)在很多嵌入式產(chǎn)品使用了它,它占用的資源非常低。它能夠支持Windows/Linux/Unix等主流的操作系統(tǒng),同時(shí)能夠跟很多程序語(yǔ)言相結(jié)合,比如php,Java等,還有ODBC接口,同樣比起Mysql,PostgreSQL來(lái)講,它的處理速度比它們都快。它無(wú)需安裝和管理配置,它是一個(gè)儲(chǔ)存在單一磁盤文件中的完整數(shù)據(jù)庫(kù),體積小,雖只有250KB但支持?jǐn)?shù)據(jù)庫(kù)大小至2TB。它雖然很小巧,但是支持的SQL語(yǔ)句毫不遜色于其它開(kāi)源數(shù)據(jù)庫(kù)。同時(shí)它還支持事務(wù)功能和并發(fā)處理等等。SQLite也是一套開(kāi)放性的關(guān)聯(lián)式資料庫(kù),其特點(diǎn)在于輕量性方面的設(shè)計(jì)結(jié)構(gòu),更適合在手機(jī)上使用。第4章概要設(shè)計(jì)4.1系統(tǒng)體系結(jié)構(gòu)系統(tǒng)旨在實(shí)現(xiàn)音樂(lè)播放和控制,主要有如下幾個(gè)核心功能模塊如圖5所示。主程序主程序 程序運(yùn)行,顯示各個(gè)界面內(nèi)容.設(shè)置退出程序運(yùn)行,顯示各個(gè)界面內(nèi)容.設(shè)置退出,徹底退出軟件.實(shí)現(xiàn)網(wǎng)絡(luò)請(qǐng)求數(shù)據(jù),并顯示.實(shí)現(xiàn)音頻文件的播放功能自動(dòng)搜索本地音頻文件并添加到目錄.圖5系統(tǒng)功能模塊圖4.2用戶界面設(shè) 4.2.1 i音樂(lè)圖4.2.2顯示主界面和菜單欄 4.2.3音樂(lè)清單PAGE25-第5章詳細(xì)設(shè)計(jì)5.1播放設(shè)置以及后臺(tái)播放源碼具體實(shí)現(xiàn)代碼如下:package.xxu.imusic;importjava.util.ArrayList;importjava.util.List;importbutterknife.Bind;importbutterknife.ButterKnife;importbutterknife.OnClick;import.xxu.imusic.app.MyApp;import.xxu.imusic.constant.Constants;import.xxu.imusic.fragment.PlayFragment;import.xxu.imusic.fragment.PlayListFragment;import.xxu.imusic.utils.CommonUtils;importandroid.content.BroadcastReceiver;importandroid.content.Context;importandroid.content.Intent;importandroid.content.IntentFilter;importandroid.os.Bundle;importandroid.os.Handler;importandroid.os.Message;importandroid.support.v4.app.Fragment;importandroid.support.v4.app.FragmentActivity;importandroid.support.v4.app.FragmentManager;importandroid.support.v4.app.FragmentPagerAdapter;importandroid.support.v4.view.ViewPager;importandroid.support.v4.view.ViewPager.OnPageChangeListener;importandroid.util.Log;importandroid.view.View;importandroid.view.Window;importandroid.view.View.OnClickListener;importandroid.widget.ImageView;importandroid.widget.RelativeLayout;importandroid.widget.SeekBar;importandroid.widget.Toast;importandroid.widget.SeekBar.OnSeekBarChangeListener;publicclassPlayActivityextendsFragmentActivity{ @Bind(R.id.vp_play_pages) ViewPagerviewPager; privateFragmentPagerAdapteradapter; privateList<Fragment>fragments; @Bind(R.id.header_play_activity_title) RelativeLayoutrlHeader; @Bind(R.id.iv_fragment_play_next) ImageViewivNext; @Bind(R.id.iv_fragment_play_pauseOrplay) ImageViewivPlayOrPause; @Bind(R.id.iv_fragment_play_previous) ImageViewivPrevious; @Bind(R.id.pb_fragment_play_progress) SeekBarpbProgress; MyAppapp; privatestaticfinalintCURRENT_SEEKBAR_PROGRESS=100; privateHandlerhandler; BroadcastReceiverreceiver; @Override protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_play); ButterKnife.bind(this); initFragments(); initViewPager(); viewPager.setCurrentItem(1); initHeader(); receiver=newInnerBrocastReceiver(); IntentFilterfilter=newIntentFilter(); filter.addAction(Constants.INTENT_ACTION_IS_PLAYING); registerReceiver(receiver,filter); handler=newHandler(newInnerHandlerCallBack()); app=MyApp.getInstance(); initView(); } /** *≥?

oa?title */ privatevoidinitHeader(){ CommonUtils.setHeaderText(rlHeader,getString(R.string.local_music)); CommonUtils.setHeaderLeftIamgeView(rlHeader,R.drawable.back_arrow,newOnClickListener(){ @Override publicvoidonClick(Viewv){ finish(); } },getResources()); } /** *≥?

oa?Fragment */ privatevoidinitFragments(){ fragments=newArrayList<Fragment>(); fragments.add(newPlayListFragment()); // Fragmentfragment=newPlayFragment();// Bundlebundle=newBundle();// bundle.putString("mainActivity","mainActivity");// fragment.setArguments(bundle); fragments.add(newPlayFragment()); } /** *≥?

oa?ViewPager */ privatevoidinitViewPager(){ adapter=newInnerFragmentAdapter(getSupportFragmentManager(),fragments); viewPager.setAdapter(adapter); viewPager.setOnPageChangeListener(newOnPageChangeListener(){ @Override publicvoidonPageSelected(intarg0){ //TODOμo∫Ωπ???ViewPager } @Override publicvoidonPageScrolled(intarg0,floatarg1,intarg2){ } @Override publicvoidonPageScrollStateChanged(intarg0){ } }); } /** *?‘??“???o?≥–?‘FragmentPagerAdapter

≈‰?? *@authorfeixiang * */ privateclassInnerFragmentAdapterextendsFragmentPagerAdapter{ privateList<Fragment>fragments; publicInnerFragmentAdapter(FragmentManagerfm,List<Fragment>fragments){ super(fm); this.fragments=fragments; } @Override publicFragmentgetItem(intarg0){ returnfragments.get(arg0); } @Override publicintgetCount(){ returnfragments==null?0:fragments.size(); } } /** *≥?

oa?∏?÷÷View??o? */ privatevoidinitView(){ pbProgress.setOnSeekBarChangeListener(newOnSeekBarChangeListener(){ @Override publicvoidonStopTrackingTouch(SeekBarseekBar){ intcurrentPosition=app.getCurrentMusicDuration()/100*pbProgress.getProgress(); app.setCurrentPosition(currentPosition); Intentintent=newIntent(); intent.setAction(Constants.INTENT_ACTION_SEEK_TO_POSITION); sendBroadcast(intent); Log.i("info","currentPosition"+currentPosition); } @Override publicvoidonStartTrackingTouch(SeekBarseekBar){ } @Override publicvoidonProgressChanged(SeekBarseekBar,intprogress, booleanfromUser){ } }); } privateclassUpdateSeekBarThreadextendsThread{ @Override publicvoidrun(){ while(true){ Message.obtain(handler,CURRENT_SEEKBAR_PROGRESS).sendToTarget(); try{ Thread.sleep(800); }catch(InterruptedExceptione){ e.printStackTrace(); } } } } privateclassInnerHandlerCallBackimplementsHandler.Callback{ @Override publicbooleanhandleMessage(Messagemsg){ switch(msg.what){ caseCURRENT_SEEKBAR_PROGRESS: inta=app.getCurrentPosition(); intb=app.getCurrentMusicDuration(); intpercent=100*a/b;// Log.i("info","≤?∑≈Ωˉ??"+percent+"μ±?∞≤?∑≈

±≥§"+a+"??

±≥§"+b); pbProgress.setProgress(percent); break; } returnfalse; } } privateclassInnerBrocastReceiverextendsBroadcastReceiver{ @Override publicvoidonReceive(Contextcontext,Intentintent){ Stringaction=intent.getAction(); if(Constants.INTENT_ACTION_IS_PLAYING.equals(action)){ if(app.isPlaying()){ ivPlayOrPause.setImageResource(R.drawable.kg_btn_noti_pause_pressed); }else{ ivPlayOrPause.setImageResource(R.drawable.kg_btn_noti_play_pressed); } newUpdateSeekBarThread().start(); } } } @OnClick({R.id.iv_fragment_play_next,R.id.iv_fragment_play_pauseOrplay,R.id.iv_fragment_play_previous}) publicvoidoptions(Viewv){ Intentintent=newIntent(); switch(v.getId()){ caseR.id.iv_fragment_play_previous: intent.setAction(Constants.INTENT_ACTION_PREVIOUS); Toast.makeText(getApplicationContext(),"previous",Toast.LENGTH_SHORT).show(); break; caseR.id.iv_fragment_play_pauseOrplay: intent.setAction(Constants.INTENT_ACTION_PLAY_OR_PAUSE); Toast.makeText(getApplicationContext(),"pauseOrplay",Toast.LENGTH_SHORT).show(); break; caseR.id.iv_fragment_play_next: intent.setAction(Constants.INTENT_ACTION_NEXT); Toast.makeText(getApplicationContext(),"next",Toast.LENGTH_SHORT).show(); break; } sendBroadcast(intent); } @Override protectedvoidonDestroy(){ unregisterReceiver(receiver); super.onDestroy(); }}5.2獲取網(wǎng)絡(luò)歌曲分類列表的代碼實(shí)現(xiàn).具體的代碼實(shí)現(xiàn):package.xxu.imusic;importjava.util.ArrayList;importjava.util.List;importandroid.app.Activity;importandroid.app.AlertDialog;importandroid.app.AlertDialog.Builder;importandroid.content.Intent;importandroid.os.Bundle;importandroid.os.Handler;importandroid.os.Message;importandroid.text.TextUtils;importandroid.util.Log;importandroid.view.LayoutInflater;importandroid.view.View;importandroid.view.Window;importandroid.view.View.OnClickListener;importandroid.widget.AdapterView;importandroid.widget.AdapterView.OnItemClickListener;importandroid.widget.Button;importandroid.widget.EditText;importandroid.widget.GridView;importandroid.widget.RelativeLayout;importandroid.widget.TabHost;importandroid.widget.TabHost.TabSpec;importandroid.widget.TextView;importandroid.widget.Toast;importbutterknife.Bind;importbutterknife.ButterKnife;importbutterknife.OnClick;import.xxu.imusic.adapter.NetNewAlbumAdapter;import.xxu.imusic.constant.Constants;import.xxu.imusic.entity.NewNetAlbum;import.xxu.imusic.utils.CommonUtils;import.xxu.imusic.utils.HttpUtils;import.xxu.imusic.utils.JsonUtils;importcom.handmark.pulltorefresh.library.PullToRefreshBase;importcom.handmark.pulltorefresh.library.PullToRefreshBase.Mode;importcom.handmark.pulltorefresh.library.PullToRefreshBase.OnRefreshListener;importcom.handmark.pulltorefresh.library.PullToRefreshGridView;publicclassNetAlbumActivityextendsActivityimplementsConstants{ @Bind(R.id.et_net_music_search) EditTextetSearch; @Bind(R.id.btn_net_music_search) ButtonbtnSearch; @Bind(R.id.lv_net_album_HY) PullToRefreshGridViewgridViewHY; @Bind(R.id.lv_net_album_OM) PullToRefreshGridViewgridViewOM; @Bind(R.id.lv_net_album_RH) PullToRefreshGridViewgridViewRH; privateTabHosttbHost; privateHandlerhandler; @Bind(R.id.rl_net_music_header) RelativeLayoutrlHeader; /** *

≈‰?? */ privateNetNewAlbumAdapteradapterHY; privateNetNewAlbumAdapteradapterOM; privateNetNewAlbumAdapteradapterRH; /** *

???‘¥ */ privateList<NewNetAlbum>dataHY; privateList<NewNetAlbum>dataOM; privateList<NewNetAlbum>dataRH; /** *?ˉ?á

???“≥?? */ privateintpageHY=1; privateintpageOM=1; privateintpageRH=1; privateStringuriHY; privateStringuriOM; privateStringuriRH; privatefinalintWHAT_SUCCESS=110; privatefinalintDATA_TYPE_HY=0; privatefinalintDATA_TYPE_OM=1; privatefinalintDATA_TYPE_RH=2; @Override protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_net_music); ButterKnife.bind(this); handler=newHandler(newInnerCallback()); initHeader(); initTabHost(); initGridViewHY(); initGridViewOM(); initGridViewRH(); uriHY=URI_NEW_HY_ALBUMS+"page="+pageHY; newGetNewMusicThread(uriHY,DATA_TYPE_HY).start(); uriOM=URI_NEW_OM_ALBUMS+"page="+pageOM; newGetNewMusicThread(uriOM,DATA_TYPE_OM).start(); uriRH=URI_NEW_RH_ALBUMS+"page="+pageRH; newGetNewMusicThread(uriRH,DATA_TYPE_RH).start(); } /** *≥?

oa?title */ privatevoidinitHeader(){ CommonUtils.setHeaderText(rlHeader,"?ˉ?á??o≠"); CommonUtils.setHeaderLeftIamgeView(rlHeader,R.drawable.back_arrow,newOnClickListener(){ @Override publicvoidonClick(Viewv){ finish(); } },getResources()); } /** *≥?

oa?GridViewHY */ privatevoidinitGridViewHY(){ dataHY=newArrayList<NewNetAlbum>(); adapterHY=newNetNewAlbumAdapter(NetAlbumActivity.this,dataHY); gridViewHY.setMode(Mode.PULL_FROM_END); gridViewHY.setOnRefreshListener(newOnRefreshListener<GridView>(){ @Override publicvoidonRefresh(PullToRefreshBase<GridView>refreshView){ pageHY++; uriHY=URI_NEW_HY_ALBUMS+"&page="+pageHY; newGetNewMusicThread(uriHY,DATA_TYPE_HY).start(); } }); gridViewHY.setOnItemClickListener(newOnItemClickListener(){ @Override publicvoidonItemClick(AdapterView<?>parent,Viewview, intposition,longid){ Builderbuilder=newAlertDialog.Builder(NetAlbumActivity.this); Viewv=LayoutInflater.from(NetAlbumActivity.this).inflate(R.layout.dialog_view_layout,null); builder.setTitle("–°?·

?").setView(v).setNegativeButton("∑μa?",null); builder.create().show(); } }); gridViewHY.setAdapter(adapterHY); } /** *≥?

oa?GridViewOM */ privatevoidinitGridViewOM(){ dataOM=newArrayList<NewNetAlbum>(); adapterOM=newNetNewAlbumAdapter(NetAlbumActivity.this,dataOM); gridViewOM.setMode(Mode.PULL_FROM_END); gridViewOM.setOnRefreshListener(newOnRefreshListener<GridView>(){ @Override publicvoidonRefresh(PullToRefreshBase<GridView>refreshView){ pageOM++; uriOM=URI_NEW_OM_ALBUMS+"&page="+pageOM; newGetNewMusicThread(uriOM,DATA_TYPE_OM).start(); } }); gridViewOM.setOnItemClickListener(newOnItemClickListener(){ @Override publicvoidonItemClick(AdapterView<?>parent,Viewview, intposition,longid){ Builderbuilder=newAlertDialog.Builder(NetAlbumActivity.this); Viewv=LayoutInflater.from(NetAlbumActivity.this).inflate(R.layout.dialog_view_layout,null); builder.setTitle("–°?·

?").setView(v).setNegativeButton("∑μa?",null); builder.create().show(); } }); gridViewOM.setAdapter(adapterOM); } /** *≥?

oa?GridViewRH */ privatevoidinitGridViewRH(){ dataRH=newArrayList<NewNetAlbum>(); adapterRH=newNetNewAlbumAdapter(NetAlbumActivity.this,dataRH); gridViewRH.setMode(Mode.PULL_FROM_END); gridViewRH.setOnRefreshListener(newOnRefreshListener<GridView>(){ @Override publicvoidonRefresh(PullToRefreshBase<GridView>refreshView){ pageRH++; uriRH=URI_NEW_RH_ALBUMS+"&page="+pageRH; newGetNewMusicThread(uriRH,DATA_TYPE_RH).start(); } }); gridViewRH.setOnItemClickListener(newOnItemClickListener(){ @Override publicvoidonItemClick(AdapterView<?>parent,Viewview, intposition,longid){ Builderbuilder=newAlertDialog.Builder(NetAlbumActivity.this); Viewv=LayoutInflater.from(NetAlbumActivity.this).inflate(R.layout.dialog_view_layout,null); builder.setTitle("–°?·

?").setView(v).setNegativeButton("∑μa?",null); builder.create().show(); } }); gridViewRH.setAdapter(adapterRH); } /** *≥?

oa?TabHost */ privatevoidinitTabHost(){ tbHost=(TabHost)findViewById(R.id.tabhost); tbHost.setup(); TabSpectab1=tbHost.newTabSpec("First"); tab1.setIndicator(createView("a?”?")); tab1.setContent(R.id.rl_new_music_HY); tbHost.addTab(tab1); TabSpectab2=tbHost.newTabSpec("Second"); tab2.setIndicator(createView("≈∑√?")); tab2.setContent(R.id.rl_new_music_OM); tbHost.addTab(tab2); TabSpectab3=tbHost.newTabSpec("Third"); tab3.setIndicator(createView("?’∫′")); tab3.setContent(R.id.rl_new_music_RH); tbHost.addTab(tab3); } /** *aò?°TabHostμ?±í??≤o?÷View *@paramtabName *@return */ privateViewcreateView(StringtabName){ Viewview=LayoutInflater.from(NetAlbumActivity.this).inflate(R.layout.tabhost_tab_layout,null); TextViewtv=(TextView)view.findViewById(R.id.tv_tabhost_tab); tv.setText(tabName); returnview; } /** *μ?a?à—à? * *@paramv */ @OnClick(R.id.btn_net_music_search) publicvoidsearch(Viewv){ Stringparam=etSearch.getText().toString(); if(!TextUtils.isEmpty(param)){ Intentintent=newIntent(NetAlbumActivity.this,SearchNetMusicResultActivity.class); intent.putExtra("search",param); startActivity(intent); } } /** *?‘??“???

μ?÷Handler.CallbackΩ”?? *@authorfeixiang * */ privateclassInnerCallbackimplementsHandler.Callback{ @SuppressWarnings("unchecked") @Override publicbooleanhandleMessage(Messagemsg){ if(msg.what==WHAT_SUCCESS){ List<NewNetAlbum>data=(List<NewNe

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論