我想使用 PlayerView 在 exoplayer 中创建一个自定义时间栏:
- 不能被用户拖动,只能在视频中显示进度
更新:好的,所以我可以通过将 touch_target_height 设置为 0dp 来禁用拖动!
- 允许底层 PlayerView 可点击(由于顶部的 Controller ,我失去了 PlayerView 的可点击性)
- 始终显示在 PlayerView 表面(自定义 Controller 仅在单击 PlayerView 一次时出现)
我尝试在自定义 Controller 布局中使用 DefaultTimeBar,但无法禁用时间栏的拖动。此外, Controller 仅在点击时显示,到目前为止我已经尝试了以下操作:
在布局 XML 的 PlayerView 组件上,添加了以下内容以禁用隐藏 Controller ,但仍需要第一次单击 PlayerView 才能显示 Controller 。
app:show_timeout="0"
app:hide_on_touch="false"
我需要在 PlayerView 上捕获 onClick 事件,在我引入自定义 Controller 布局之前我能够捕获该事件。我有 PlayerView 既可聚焦又可点击
android:focusable="true"
android:clickable="true"
此外,为了在 DefaultTimeBar 中禁用拖动时间栏,我执行了以下操作,但它仅从时间栏中删除了拇指(或 slider ),并没有禁用拖动:
app:scrubber_enabled_size="0dp"
app:scrubber_disabled_size="0dp"
app:scrubber_dragged_size="0dp"
关于如何做这三件事有什么想法吗?
谢谢,
AB
最佳答案
关于第三件事,您可以尝试以编程方式进行。
您可以在 DefaultTimeBar 中验证此方法:
- onScrubStart(...)
- onScrubMove(...)
- onScrubStop(...)
并为它们中的每一个实现你的逻辑(也许一个简单的返回就足够了)。
请查看此链接了解更多详情:OnScrubListener
关于android - ExoPlayer 中的自定义时间栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58747620/