How to use a Seekbar in android as a seekBar as well as a progressBar simultaneously?

后端 未结 2 805
予麋鹿
予麋鹿 2021-01-04 18:46

I intend to write a custom media controller for my app. I was planning to use seekbar to do both seeking and showing progress. Trying to implement this.

Does anyone

相关标签:
2条回答
  • 2021-01-04 19:29

    Finally I figured it out!!

    The solution that I came up with was something like this :

    First of all set the max progress for seekbar as the duration of the video

    videoView.setOnPreparedListener(new OnPreparedListener() {
    
            @Override
            public void onPrepared(MediaPlayer mp) {
    
                seekBar.setMax(videoView.getDuration());
                seekBar.postDelayed(onEverySecond, 1000);
            }
        });
    

    This runnable will keep on updating the progressbar :

    private Runnable onEverySecond=new Runnable() {
    
        @Override
        public void run() {
    
            if(seekBar != null) {
                seekBar.setProgress(videoView.getCurrentPosition());
            }
    
            if(videoView.isPlaying()) {
                seekBar.postDelayed(onEverySecond, 1000);
            }
    
        }
    };
    

    And then the setOnSeekBarChangeListener for the seekbar can be used to take the user seeks on the media. By using the fromUser boolean we can make out whether it was a call back due to user's interaction or the

    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);
                }
            }
        });
    
    0 讨论(0)
  • 2021-01-04 19:30

    You set the seconday progress.

    No, you're on the right track. It is very good for displaying stuff like download progress and current location for streams (media).

    0 讨论(0)
提交回复
热议问题