1.在xml布局文件中添加SeekBar:
2.在Activity中为SeekBar设置拖动监听器,并更新当前时间:
SeekBar seekBar = (SeekBar) findViewById(R.id.seekBar);
seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
int progressChanged = 0;
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if(fromUser) {
mediaPlayer.seekTo(mediaPlayer.getDuration() * progress / 100);
progressChanged = progress;
}
}
public void onStartTrackingTouch(SeekBar seekBar) {
// Do something here, if you want to do anything at the start of
// touching the seekbar
}
public void onStopTrackingTouch(SeekBar seekBar) {
textView.setText(millisecondsToString(mediaPlayer.getCurrentPosition()));
}
});
3.在Activity中添加一个handler,使用postDelayed方法更新SeekBar和当前时间的UI:
private final Handler mHandler = new Handler();
Runnable mUpdateTimeTask = new Runnable() {
public void run() {
long totalDuration = mediaPlayer.getDuration();
long currentDuration = mediaPlayer.getCurrentPosition();
// Updating progress bar
int progress = (int)(getProgressPercentage(currentDuration, totalDuration));
seekBar.setProgress(progress);
// Updating current time
textView.setText(millisecondsToString(currentDuration));
// Running this thread after 100 milliseconds
mHandler.postDelayed(this, 100);
}
};
private double getProgressPercentage(long currentDuration, long totalDuration) {
Double percentage = (double) 0;
long currentSeconds = (int) (currentDuration / 1000);
long totalSeconds = (int) (totalDuration / 1000);
// Calculating percentage
percentage =(((double)currentSeconds)/totalSeconds)*100;
return percentage;
}
private String millisecondsToString(long milliseconds) {
long minutes = TimeUnit.MILLISECONDS.toMinutes(milliseconds);
long seconds = TimeUnit.MILLISECONDS.toSeconds(milliseconds)
- TimeUnit.MINUTES.toSeconds(minutes);
return String.format("%d:%02d", minutes, seconds);
}
4.在Activity的onCreate方法中启动handler的线程:
// Starting the thread
mHandler.postDelayed(mUpdateTimeTask, 100);
这样就可以实现SeekBar和当前时间的同步更新了。