Android MediaController拦截所有其他触摸事件

时间:2011-10-26 22:16:04

标签: android touch-event mediacontroller

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

围绕那个想法?

4 个答案:

答案 0 :(得分:12)

您可以查看my answer on overriding dispatchTouchEvent(),将点击次数MediaController传递给基础Button,但我猜测您使用MediaController的方式有问题。你可以张贴你的布局吗?

<强> UPD: 实际上,罢工。我刚刚查看了MediaController代码,结果发现它为自己创建了一个新的Window。这就是为什么你的点击不会被派遣 - 他们被派遣到另一个窗口。另外,据我所知constructor code,如果你通过xml对MediaController进行充气(即在布局文件中使用它然后只是通过代码中的id找到它) - 它不会创建额外的Window。这很奇怪,但我确信他们有理由这样做。

因此,解决方案是尝试在布局文件中使用MediaController,或者使用CommonsWare's solution。如果您尝试使用xml,请告诉我它是怎么回事。

答案 1 :(得分:8)

  

围绕那个想法?

请勿使用MediaController。创建自己的控制器UI,根据需要弹出并显示。虽然this sample project可能不再完全有效,但正如我三年未提及的那样,它会显示您自己的控制器面板会在触摸时弹出然后消失。

答案 2 :(得分:1)

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

无论如何,我怀疑这会很好用,因为VideoView实例化了自己的MediaPlayer并用它来播放媒体。 (见VideoView.java

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

答案 3 :(得分:0)

我面临同样的问题,因为媒体播放器我的UI元素块,花了5个小时后我得到了解决方案

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