カスタム ビデオ プレーヤーを作成しようとしています。VideoView を使用してムービーを表示し、MediaController を使用してビデオを制御します。
ユーザーが画面をタップすると、ヘッダーとメディア コントローラーが 3 秒間表示されます (ユーザーが操作を続ける場合はそれ以上)。ユーザーがビデオをもう一度タップすると、両方の要素が非表示になります。
画面を最初にタップすると、ヘッダーとコントローラーが期待どおりに表示されます。私の問題は、画面をもう一度タップしようとすると、コントローラーが非表示になるだけで、ヘッダーが消えないことです。これは、MediaController が独自のタップ サーフェスを定義しているためだと思います。私の質問は、これを変更する方法です。独自の MediaController をコーディングせずに MediaController オブジェクトのタップ面を変更する方法は?
これは私が欲しいものに使用するコードです:
private static final int ELAPSED_TIME = 2000;
private boolean visible;
@Override
public boolean onTouch(View v, MotionEvent event) {
// onTap
if (event.getAction() == MotionEvent.ACTION_DOWN) {
// Supprime le callback pour cacher les contrôles s'il y en avait un en cours
hideHandler.removeCallbacks(onElapsedTime);
// Affiche les contrôles s'il n'était pas déjà affichés
if (!visible) {
header.setVisibility(View.VISIBLE);
controller.show(0); // 0 -> Visible jusqu'à ce que hide() soit appelé
visible = true;
}
else {
header.setVisibility(View.GONE);
controller.hide();
visible = false;
}
// Défini un runnable a exécuter après ELAPSED_TIME pour cacher le header et le contrôleur
hideHandler.postDelayed(onElapsedTime, ELAPSED_TIME);
}
return true;
}
private Runnable onElapsedTime = new Runnable() {
public void run() {
header.setVisibility(View.GONE);
controller.hide();
visible = false;
}
};