ExoPlayer - 在 DefaultTimeBar 中改变拇指
ExoPlayer - changing thumb in DefaultTimeBar
据我所知,2.4.0 版 ExoplayerSeekBar
的发行说明已被 DefaultTimeBar
取代。
https://github.com/google/ExoPlayer/blob/dev-v2/RELEASENOTES.md
如我所见,截至 2017 年 2 月 19 日: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
是:
(行:384):timeBar = (TimeBar) findViewById(R.id.exo_progress);
DefaultTimeBar 没有像 .setThumb()
这样的方法,在我看来拇指是在 drawPlayhead(Canvas canvas)
.
中创建的 Canvas
问题:是否可以在DefaultTimeBar
中设置自己的拇指图标?
我没有在 DefaultTimeBar 中找到设置缩略图图标的选项。
您可以通过更改 drawPlayhead(Canvas canvas) 方法复制 DefaultTimeBar 并自定义缩略图。
您还可以通过添加 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 UI 组件的更多信息:https://medium.com/google-exoplayer/customizing-exoplayers-ui-components-728cf55ee07a
'
==========更新================
可以使用以下属性来更改洗涤器可绘制对象:
app:scrubber_drawable="@drawable/ic_scrubber"
app:scrubber_enabled_size="24dp"
这个选项是ExoPlayer团队在ticket提出后添加的。
app:scrubber_drawable="@drawable/ic_scrubber"
就我而言,我需要在聚焦时更改洗涤器(拇指)的颜色。
所以我创建了一个这样的可绘制对象
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>
这是我将可绘制对象添加到 scrubber 的方法。
<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
据我所知,2.4.0 版 ExoplayerSeekBar
的发行说明已被 DefaultTimeBar
取代。
https://github.com/google/ExoPlayer/blob/dev-v2/RELEASENOTES.md
如我所见,截至 2017 年 2 月 19 日: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
是:
(行:384):timeBar = (TimeBar) findViewById(R.id.exo_progress);
DefaultTimeBar 没有像 .setThumb()
这样的方法,在我看来拇指是在 drawPlayhead(Canvas canvas)
.
Canvas
问题:是否可以在DefaultTimeBar
中设置自己的拇指图标?
我没有在 DefaultTimeBar 中找到设置缩略图图标的选项。
您可以通过更改 drawPlayhead(Canvas canvas) 方法复制 DefaultTimeBar 并自定义缩略图。
您还可以通过添加 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 UI 组件的更多信息:https://medium.com/google-exoplayer/customizing-exoplayers-ui-components-728cf55ee07a
'
==========更新================
可以使用以下属性来更改洗涤器可绘制对象:
app:scrubber_drawable="@drawable/ic_scrubber"
app:scrubber_enabled_size="24dp"
这个选项是ExoPlayer团队在ticket提出后添加的。
app:scrubber_drawable="@drawable/ic_scrubber"
就我而言,我需要在聚焦时更改洗涤器(拇指)的颜色。 所以我创建了一个这样的可绘制对象 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>
这是我将可绘制对象添加到 scrubber 的方法。
<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