9

私のアプリの上半分には、VideoViewそのMediaController下に があります。下半分はいくつかのボタンがある画像です。が表示されている間、MediaController下のボタンはクリックできません。が表示されている間、MediaControllerの境界内になくても、他のすべてのタッチ イベントをインターセプトするようなものMediaControllerです。

それについて何か考えはありますか?

4

4 に答える 4

12

クリックを基になる に渡すためのオーバーライドに関する私の回答をdispatchTouchEvent()確認できますが、MediaController の使用方法に問題があると思います。あなたのレイアウトを投稿できますか?MediaControllerButton

UPD: 実際、それを打ってください。MediaControllerコードを調べたところWindow、それ自体が新しいものを作成していることがわかりました。これが、クリックがディスパッチされない理由です。クリックは別のウィンドウにディスパッチされます。また、コンストラクタ コードからわかる限り、xml を介して MediaController をインフレートすると (つまり、レイアウト ファイルで使用し、コードから id で検索するだけです)、余分な は作成されませんWindow。それは奇妙ですが、それには理由があったと確信しています。

したがって、解決策は、レイアウト ファイルで MediaController を使用するか、CommonsWare のソリューションを使用することです。xml を試してみた場合にどうなるか教えてください。

于 2012-09-17T14:12:44.013 に答える
8

それについて何か考えはありますか?

使用しないでくださいMediaController。必要に応じてポップアップして表示する独自のコントローラー UI を作成します。このサンプル プロジェクトは、私が 3 年間触れていないため、完全に機能しなくなる可能性がありますが、タッチするとポップアップして消える独自のコントローラー パネルがあることを示しています。

于 2012-09-16T17:21:18.420 に答える
1

VideoViewインスタンス化コードとMediaPlayersを切り替えるために使用するコードを提供していただけますか?

いずれにせよ、VideoViewは独自のMediaPlayerをインスタンス化し、それを使用してメディアを再生するため、これがうまく機能するとは思えません。(VideoView.javaを参照)

おそらく、VideoView自体を切り替えるか、SurfaceViewの独自のサブクラスを使用してVideoViewの代替を構築する必要があります。

于 2012-09-16T03:28:59.440 に答える
0

同じ問題に直面しています。メディア プレーヤーが原因で UI 要素がブロックされました。5 時間を費やした後、解決策が得られました。

mediaPlayer.prepare() を mediaPlayer.prepareAsync(); に置き換えるだけです。

于 2016-07-30T07:55:41.437 に答える