私はカスタムビデオプレーヤーを作成しようとしています。 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;
}
};
[MediaController.java](http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.0.3_r1/android/widget/MediaController.java# MediaController)、&あなたがその動作を気に入らなければそれを修正し、あなたがやっていることで修正することはできません。目に見えるコントローラーはおそらくすべてのタッチイベントを消費するので、何らかの形でタッチ操作にフックする必要があります – zapl
私はあなたが言ったことを試したがっていますが、それは良いアイデアだとは思わないので多くの依存関係が必要です。私はちょうどmediacontrollerと同時に非表示と表示するヘッダーを追加したいと思いますが、明らかにそれほど簡単ではありません。 – Fr4nz
MediaController.javaは内部APIに依存しています。それで、すべての依存関係ファイルをインポートしようとする選択肢でもありません.WindowsController.makeNewWindow(mContext)を使わずにMediaControllerの「フローティングウィンドウ」機能を再作成する方法を見つける必要があります。 – MaximumGoat