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。现在,覆盖“隐藏”和“显示”方法并做你想做的事。很简单,我也做过同样的事情。在隐藏方法中,您可以将标题的可见性设置为消失或不可见(取决于您的要求)。

于 2012-09-10T05:02:22.463 回答