ExoPlayer - 在 DefaultTimeBar 中更改拇指
Posted
技术标签:
【中文标题】ExoPlayer - 在 DefaultTimeBar 中更改拇指【英文标题】:ExoPlayer - changing thumb in DefaultTimeBar 【发布时间】:2018-03-21 22:03:05 【问题描述】:据我了解,从 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
中设置自己的拇指图标?
【问题讨论】:
在 ExoPlayer github 页面上也创建了问题:github.com/google/ExoPlayer/issues/3337 【参考方案1】:我没有找到在 DefaultTimeBar 中设置拇指图标的选项。
您可以复制 DefaultTimeBar 并通过更改 drawPlayhead(Canvas canvas) 方法自定义拇指。
你也可以通过添加exo_playback_control_view.xml来改变它的颜色。 (洗涤器 == 拇指)
<com.google.android.exoplayer2.ui.DefaultTimeBar
android:id="@id/exo_progress"
android:layout_
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_/>
更多关于自定义 ExoPlayer 的 UI 组件的信息:https://medium.com/google-exoplayer/customizing-exoplayers-ui-components-728cf55ee07a
'
==========更新================
可以使用以下属性来更改可绘制的scrubber:
app:scrubber_drawable="@drawable/ic_scrubber"
app:scrubber_enabled_size="24dp"
【讨论】:
【参考方案2】:这个选项是 ExoPlayer 团队在 ticket 提出后添加的。
app:scrubber_drawable="@drawable/ic_scrubber"
【讨论】:
干得好,经过大量搜索,找到了这个。节省了我的时间,谢谢。【参考方案3】:在我的情况下,我需要在聚焦时更改洗涤器(拇指)的颜色。 所以我创建了一个像这样的drawable 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:
android: />/
<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: android:/>/
<solid android:color="@android:color/holo_red_dark"/>
</shape>
这是我将drawable添加到scrubber的方法。
<com.google.android.exoplayer2.ui.PlayerView
android:id="@+id/videoPlayerView"
android:layout_
android:layout_
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" />
如果你只需要改变scrubber(拇指)的颜色和启用大小,你可以使用以下属性:
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
【讨论】:
以上是关于ExoPlayer - 在 DefaultTimeBar 中更改拇指的主要内容,如果未能解决你的问题,请参考以下文章
ExoPlayer - 在 DefaultTimeBar 中更改拇指