我打算为我的应用编写自定义媒体控制器。我计划使用搜索栏来寻求和展示进展。试图实现这一点。
有没有人有这样的实施,或者我走错了路?
答案 0 :(得分:23)
最后我想出来了!!
我提出的解决方案是这样的:
首先将搜索栏的最大进度设置为视频的持续时间
videoView.setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
seekBar.setMax(videoView.getDuration());
seekBar.postDelayed(onEverySecond, 1000);
}
});
此runnable将继续更新进度条:
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);
}
}
});
答案 1 :(得分:0)
您设置了seconday progress。
不,你走在正确的轨道上。它非常适合显示流(媒体)的下载进度和当前位置等内容。