最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Android仿音乐播放器功能
时间:2017-03-28 编辑:简简单单 来源:一聚教程网
读取本地音乐文件
源代码:
代码如下 | 复制代码 |
importandroid.media.MediaPlayer; importandroid.support.v7.app.AppCompatActivity; importandroid.os.Bundle; importandroid.view.View; importandroid.widget.ImageButton; importandroid.widget.SeekBar; importandroid.widget.TextView;
publicclassMainActivityextendsAppCompatActivity {
privateMediaPlayer mediaPlayer; privateSeekBar seekBar; privateTextView tv_mian_stop; privateTextView tv_mian_start; privateintmusicaction; @Override protectedvoidonCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv_mian_start = (TextView) findViewById(R.id.tv_mian_start); tv_mian_stop = (TextView) findViewById(R.id.tv_mian_stop); seekBar = (SeekBar) findViewById(R.id.seekBar);
//进度条的监听事件 seekBar.setOnSeekBarChangeListener(newSeekBar.OnSeekBarChangeListener() { @Override publicvoidonProgressChanged(SeekBar seekBar,intprogress,booleanfromUser) { //改变 //每当进度条发生改变时tv_mian_start的值发生变化 //new TimeUtil().secToTime()一个外部类(时间格式转化) tv_mian_start.setText(newTimeUtil().secToTime(mediaPlayer.getCurrentPosition()/1000)+""); } @Override publicvoidonStartTrackingTouch(SeekBar seekBar) { //开始 }
@Override publicvoidonStopTrackingTouch(SeekBar seekBar) { //结束 //获取拖动结束之后的位置 intprogrss=seekBar.getProgress(); mediaPlayer.seekTo(progrss); } }); }
publicvoidisPlay(View view){ ImageButton imageButton= (ImageButton) view; if(mediaPlayer==null){ mediaPlayer = MediaPlayer.create(this, R.raw.seve); mediaPlayer.start(); //把图标修改为暂停的图标 imageButton.setImageResource(android.R.drawable.ic_media_pause); //获取音乐的总时长 intmuiscsum=mediaPlayer.getDuration(); //设置进度条的最大值为总时长 seekBar.setMax(muiscsum);
//执行一个多线程的耗时操作 newMyThread().start();
tv_mian_stop.setText(newTimeUtil().secToTime(muiscsum/1000)+""); }elseif(mediaPlayer.isPlaying()){ mediaPlayer.pause(); imageButton.setImageResource(android.R.drawable.ic_media_play); }else{ mediaPlayer.start(); imageButton.setImageResource(android.R.drawable.ic_media_pause); } }
classMyThreadextendsThread{ @Override publicvoidrun() { super.run(); //当进度条的当前值小于最大值时进度条发生改变 while(seekBar.getProgress()<=seekBar.getMax()){
//获取当前音乐播放的位置 musicaction = mediaPlayer.getCurrentPosition(); //让进度条动起来 seekBar.setProgress(musicaction);
}
} }
} |
时间格式转化类:
代码如下 | 复制代码 |
publicclassTimeUtil {
publicstaticString secToTime(inttime) { String timeStr =null; inthour =0; intminute =0; intsecond =0; if(time <=0) return"00:00"; else{ minute = time /60; if(minute<60) { second = time %60; timeStr = unitFormat(minute) +":"+ unitFormat(second); }else{ hour = minute /60; if(hour >99) return"99:59:59"; minute = minute %60; second = time - hour *3600- minute *60; timeStr = unitFormat(hour) +":"+ unitFormat(minute) +":"+ unitFormat(second); } } returntimeStr; }
privatestaticString unitFormat(inti) { String retStr =null; if(i >=0&& i<10) retStr ="0"+ Integer.toString(i); else retStr =""+ i; returnretStr; }
} |
真机效果图:
-
上一个: IOS点击按钮隐藏状态栏详解及实例代码
-
下一个: Android实现返回键操作思路