【问题标题】:Android MediaController intercepts all other touch eventsAndroid MediaController 拦截所有其他触摸事件
【发布时间】:2011-12-16 02:43:03
【问题描述】:

我的应用程序的上半部分有一个VideoView,下面有一个MediaController。下半部分是带有一些按钮的图像。虽然MediaController 是可见的,但下面的按钮是不可点击的。就像MediaController 可见时,它会拦截所有其他触摸事件,即使它们不在MediaController 的范围内。

有什么想法吗?

【问题讨论】:

  • 您能告诉我们您的应用程序的 XML 布局是什么样的吗?
  • 顺便说一句,我没有开始这个赏金。我必须深入研究我的项目才能找到 XML
  • 有一个非常相似的问题:stackoverflow.com/questions/12022117/… 但由于那里没有接受任何答案,因此标记这个重复项没有意义。

标签: android touch-event mediacontroller


【解决方案1】:

您可以查看my answer on overriding dispatchTouchEvent() 以将点击通过MediaController 传递给底层Button,但我猜您使用MediaController 的方式有问题。你能发布你的布局吗?

统一更新: 其实,打那个。我刚刚查看了MediaController 代码,结果发现它为自己创建了一个新的Window。这就是为什么您的点击没有被分派——它们被分派到另一个窗口。另外,据我从constructor code 得知,如果您通过 xml 扩展 MediaController(即在布局文件中使用它,然后通过代码中的 id 找到它)- 它不会创建额外的 @987654331 @。这很奇怪,但我相信他们这样做是有原因的。

因此,解决方案是尝试在布局文件中使用 MediaController 或使用 CommonsWare's solution。请让我知道它是如何进行的,以防您尝试使用 xml。

【讨论】:

  • Media controller "使用这个类的方法是以编程方式实例化它"。在布局中使用它似乎会导致空指针异常的崩溃
  • @Casebash 在 xml 布局中创建 MediaController 时,show() 和 hide() 等函数无效 - 因此该场景也是有效的。此外,他们一开始就不会为 xml 创建构造函数。 NPE 发生在什么时候?
  • 它在setAnchorView 期间崩溃。我删除了它,但现在它不显示了
  • 同样的问题 Casebash - 你找到解决方案了吗?
  • @smitalm 啊,半年后仍然收到感谢的真棒感觉......很高兴我能提供帮助,请确保为答案投票;)
【解决方案2】:

有什么想法吗?

不要使用MediaController。创建您自己的控制器 UI,根据需要弹出并显示。虽然this sample project 可能不再完全起作用,因为我已经三年没有碰过它,但它展示了拥有自己的控制器面板,它会在触摸时弹出然后消失。

【讨论】:

  • 这是建议避免使用MediaController,还是仅在需要其下方的 UI 才能继续运行的情况下使用?
  • @Spinner:好吧,如果您希望点击 UI 的其余部分来工作,那么肯定需要避免这种情况。除此之外,最后我检查了一下,无论如何,MediaController 从 UI 和功能的角度来看有点蹩脚,所以你可能最好用别的东西。话虽如此,如果您不介意 MediaController 成为有效的模态,并且想要使用它,请继续。
【解决方案3】:

您能否提供您的 VideoView 实例化代码和用于切换 MediaPlayers 的代码?

无论如何,我怀疑这是否能正常工作,因为 VideoView 实例化了它自己的 MediaPlayer 并使用它来播放媒体。 (见VideoView.java

您可能需要关闭 VideoView 本身,或使用您自己的 SurfaceView 子类构建 VideoView 的替代品。

【讨论】:

    【解决方案4】:

    我遇到了同样的问题,由于媒体播放器导致我的 UI 元素阻塞,花了 5 个小时后我得到了解决方案

    我只是将 mediaPlayer.prepare() 替换为 mediaPlayer.prepareAsync();

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-09
      • 1970-01-01
      相关资源
      最近更新 更多