0

カスタム ビデオ プレーヤーを作成しようとしています。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;
    }
};
4

1 に答える 1

1

最初にクラスを構築し、MediaController を拡張します。次に、「hide」および「show」メソッドをオーバーライドして、やりたいことを実行します。その簡単な、私は同じことをしました。hide メソッドでは、ヘッダーの可視性を Gone または invisible に設定できます (要件によって異なります)。

于 2012-09-10T05:02:22.463 に答える