私のアプリの上半分には、VideoView
そのMediaController
下に があります。下半分はいくつかのボタンがある画像です。が表示されている間、MediaController
下のボタンはクリックできません。が表示されている間、MediaController
の境界内になくても、他のすべてのタッチ イベントをインターセプトするようなものMediaController
です。
それについて何か考えはありますか?
私のアプリの上半分には、VideoView
そのMediaController
下に があります。下半分はいくつかのボタンがある画像です。が表示されている間、MediaController
下のボタンはクリックできません。が表示されている間、MediaController
の境界内になくても、他のすべてのタッチ イベントをインターセプトするようなものMediaController
です。
それについて何か考えはありますか?
クリックを基になる に渡すためのオーバーライドに関する私の回答をdispatchTouchEvent()
確認できますが、MediaController の使用方法に問題があると思います。あなたのレイアウトを投稿できますか?MediaController
Button
UPD:
実際、それを打ってください。MediaController
コードを調べたところWindow
、それ自体が新しいものを作成していることがわかりました。これが、クリックがディスパッチされない理由です。クリックは別のウィンドウにディスパッチされます。また、コンストラクタ コードからわかる限り、xml を介して MediaController をインフレートすると (つまり、レイアウト ファイルで使用し、コードから id で検索するだけです)、余分な は作成されませんWindow
。それは奇妙ですが、それには理由があったと確信しています。
したがって、解決策は、レイアウト ファイルで MediaController を使用するか、CommonsWare のソリューションを使用することです。xml を試してみた場合にどうなるか教えてください。
それについて何か考えはありますか?
使用しないでくださいMediaController
。必要に応じてポップアップして表示する独自のコントローラー UI を作成します。このサンプル プロジェクトは、私が 3 年間触れていないため、完全に機能しなくなる可能性がありますが、タッチするとポップアップして消える独自のコントローラー パネルがあることを示しています。
VideoViewインスタンス化コードとMediaPlayersを切り替えるために使用するコードを提供していただけますか?
いずれにせよ、VideoViewは独自のMediaPlayerをインスタンス化し、それを使用してメディアを再生するため、これがうまく機能するとは思えません。(VideoView.javaを参照)
おそらく、VideoView自体を切り替えるか、SurfaceViewの独自のサブクラスを使用してVideoViewの代替を構築する必要があります。
同じ問題に直面しています。メディア プレーヤーが原因で UI 要素がブロックされました。5 時間を費やした後、解決策が得られました。
mediaPlayer.prepare() を mediaPlayer.prepareAsync(); に置き換えるだけです。