我打算为我的应用程序编写一个自定义媒体控制器。我打算使用 seekbar 来进行搜索和显示进度。试图实现这一点。
有没有人有这样的实现,或者我走错了路?
我打算为我的应用程序编写一个自定义媒体控制器。我打算使用 seekbar 来进行搜索和显示进度。试图实现这一点。
有没有人有这样的实现,或者我走错了路?
最后我想通了!!
我想出的解决方案是这样的:
首先将搜索栏的最大进度设置为视频的持续时间
videoView.setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
seekBar.setMax(videoView.getDuration());
seekBar.postDelayed(onEverySecond, 1000);
}
});
此可运行文件将继续更新进度条:
private Runnable onEverySecond=new Runnable() {
@Override
public void run() {
if(seekBar != null) {
seekBar.setProgress(videoView.getCurrentPosition());
}
if(videoView.isPlaying()) {
seekBar.postDelayed(onEverySecond, 1000);
}
}
};
然后可以使用搜索栏的 setOnSeekBarChangeListener 来获取用户在媒体上的搜索。通过使用fromUser布尔值,我们可以确定它是由于用户交互还是由于
seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
if(fromUser) {
// this is when actually seekbar has been seeked to a new position
videoView.seekTo(progress);
}
}
});
你设置了第二个进度。
不,你在正确的轨道上。它非常适合显示下载进度和流(媒体)的当前位置等内容。