Как использовать панель поиска в Android одновременно как панель поиска, так и панель прогресса?

#android #progress-bar #seekbar #mediacontroller

#Android #индикатор выполнения #панель поиска #mediacontroller

Вопрос:

Я намерен написать пользовательский медиа-контроллер для своего приложения. Я планировал использовать панель поиска как для поиска, так и для отображения прогресса. Пытаюсь реализовать это.

У кого-нибудь есть такая реализация или я на неправильном пути?

Ответ №1:

Наконец-то я понял это!!

Решение, которое я придумал, было примерно таким :

Прежде всего установите максимальный прогресс для панели поиска в качестве продолжительности видео

 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);
            }
        }
    });
  

Комментарии:

1. отлично! но когда видео заканчивается, и я хочу воспроизвести videoView.start() его снова, панель поиска не работает, как решить эту проблему?

Ответ №2:

Вы устанавливаете второй день выполнения.

Нет, вы на правильном пути. Это очень хорошо для отображения таких данных, как ход загрузки и текущее местоположение потоков (мультимедиа).

Комментарии:

1. Спасибо за ответ. Но я использую дополнительный прогресс, чтобы показать количество потоков. Я публикую ниже то, что я придумал.