ExoPlayer - изменение большого пальца в DefaultTimeBar

Насколько я понял из релизной заметки версии 2.4.0 ExoplayerSeekBar был заменен на DefaultTimeBar. https://github.com/google/ExoPlayer/blob/dev-v2/RELEASENOTES.md

Как я вижу, 19 февраля 2017 года: https://github.com/bigexxx/ExoPlayer/blob/c5db6f39a6e07b4f98364ff40476e4e213172488/library/src/main/java/com/google/android/exoplayer2/ui/PlaybackControlView.java exo_progress был типа SeekBar:

(строка 285): progressBar = (SeekBar) findViewById(R.id.exo_progress);

А прямо сейчас: github.com/google/ExoPlayer/blob/release-v2/library/ui/src/main/java/com/google/android/exoplayer2/ui/PlaybackControlView.java

it is:

(строка: 384):timeBar = (TimeBar) findViewById(R.id.exo_progress);

DefaultTimeBar не имеет такого метода, как .setThumb(), и мне кажется, что thumb создается как Canvas в drawPlayhead(Canvas canvas).

Вопрос: можно ли в DefaultTimeBar установить свою иконку большого пальца?


person Nimdokai    schedule 10.10.2017    source источник
comment
также создал вопрос на странице github ExoPlayer: github.com/google/ExoPlayer/issues/3337   -  person Nimdokai    schedule 11.10.2017


Ответы (3)


Я не нашел возможности установить значок большого пальца в DefaultTimeBar.

Вы можете скопировать DefaultTimeBar и настроить бегунок, изменив метод drawPlayhead(Canvas canvas).

Также вы можете изменить его цвет, добавив exo_playback_control_view.xml. (скруббер == большой палец)

        <com.google.android.exoplayer2.ui.DefaultTimeBar
            android:id="@id/exo_progress"
            android:layout_width="0dp"
            android:layout_weight="1"
            app:scrubber_color="@color/scrubberColor"
            app:played_color="@color/playedColor"
            app:unplayed_color="@color/unplayedColor"
            app:buffered_color="@color/bufferedColor"
            android:layout_height="26dp"/>

Дополнительная информация о настройке компонентов пользовательского интерфейса ExoPlayer: https://medium.com/google-exoplayer/customizing-exoplayers-ui-components-728cf55ee07a

'

========== ОБНОВЛЕНИЕ =================

Следующие свойства могут быть использованы для изменения рисования скруббера:

    app:scrubber_drawable="@drawable/ic_scrubber"
    app:scrubber_enabled_size="24dp"
person Alexey    schedule 10.10.2017

Эта опция была добавлена ​​командой ExoPlayer после моего вопроса в этой фиксации: https://github.com/google/ExoPlayer/commit/3602a9a7e41d41f76bfd621b88413873086ec154

app:scrubber_drawable="@drawable/ic_scrubber"
person Nimdokai    schedule 09.07.2018
comment
Хорошая работа, после долгих поисков нашел это. Сэкономил мое время, спасибо. - person ranasaha; 05.04.2019

В моем случае мне нужно изменить цвет ползунка (большого пальца), когда он сфокусирован. Поэтому я создал такой рисунок bg_progressbar_play_video

 <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_focused="true"
        android:drawable="@drawable/bg_progressbar_play_video_focused"/>

    <item android:drawable="@drawable/bg_progressbar_play_video_normal"/>
</selector>

А вот и bg_progressbar_play_video_normal

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <size
        android:width="14dp"
        android:height="14dp" />/
    <solid android:color="#ffffff" />

</shape>

и bg_progressbar_play_video_focused

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval"
    >
<size android:height="14dp" android:width="14dp"/>/
    <solid android:color="@android:color/holo_red_dark"/>
</shape>

и вот как я добавил возможность рисования в скруббер.

   <com.google.android.exoplayer2.ui.PlayerView
        android:id="@+id/videoPlayerView"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:background="#000000"
        android:focusable="true"
        app:played_color="@android:color/holo_red_dark"
        app:scrubber_drawable="@drawable/bg_progressbar_play_video"
        app:layout_constraintDimensionRatio="16:9"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

Если вам просто нужно изменить цвет и размер скруббера (большой палец), вы можете использовать следующие атрибуты:

 app:scrubber_enabled_size="24dp"
 app:scrubber_color="@android:color/holo_red_dark"

Подробнее об этих атрибутах, которые вы можете настроить, читайте здесь: https://exoplayer.dev/doc/reference/com/google/android/exoplayer2/ui/DefaultTimeBar.html

person NhatVM    schedule 10.01.2021