android - ExoPlayer 中的自定义时间栏

标签 android onclicklistener avplayerviewcontroller exoplayer2.x

我想使用 PlayerView 在 exoplayer 中创建一个自定义时间栏:

  1. 不能被用户拖动,只能在视频中显示进度

更新:好的,所以我可以通过将 touch_target_height 设置为 0dp 来禁用拖动!

  1. 允许底层 PlayerView 可点击(由于顶部的 Controller ,我失去了 PlayerView 的可点击性)
  2. 始终显示在 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/

相关文章:

json - 无需在 Swift 中关闭应用程序即可重新加载已解析的 URL

android - android中两个标记之间的路由

java - boolean onClickEventListener 返回的目的

android - Android 的 <merge> 标签在 XML 布局中的用途是什么?

Android EditText 阻止其父级的 OnClickListener

android onclick 被错误的类捕获

swift - 如何使用 AVPlayer 进行基本身份验证来播放服务器上的视频文件?

ios - 仅适用于 iPhone x 的 AVPlayer 全屏问题

android - 在 Android 中访问/读取低级 WiFi 网络数据包?

Android WebView 无法添加多个 javascript 接口(interface)