如何在android中使用Seekbar作为seekBar以及progressBar同时使用?

时间:2011-10-11 19:23:28

标签: android progress-bar seekbar mediacontroller

我打算为我的应用编写自定义媒体控制器。我计划使用搜索栏来寻求和展示进展。试图实现这一点。

有没有人有这样的实施,或者我走错了路?

2 个答案:

答案 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

不,你走在正确的轨道上。它非常适合显示流(媒体)的下载进度和当前位置等内容。