如何更改媒体控制器的水龙头表面?

时间:2012-05-08 12:04:36

标签: android android-videoview mediacontroller

我正在尝试制作自定义视频播放器。我使用VideoView显示我的电影和MediaController来控制视频。

当用户点击屏幕时,它应显示标题和媒体控制器3秒(或更多,如果用户继续执行操作)。如果用户再次点击视频,则应隐藏这两个元素。

在屏幕上第一次点击时,标题和控制器显示我的预期。我的问题是,当我尝试再次点击屏幕时,它只隐藏控制器,标题不会消失。我认为这是因为MediaController定义了自己的tap表面,所以我的问题是如何改变它?如何在不编码我自己的MediaController的情况下更改MediaController对象的tap表面?

这是我用来做我想要的代码:

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;
    }
};

1 个答案:

答案 0 :(得分:1)

首先构建您的类并扩展MediaController。现在,覆盖“隐藏”和“显示”方法并执行您想要执行的操作。它很简单,我做了同样的事情。 在hide方法中,你可以将标题的可见性设置为Gone或不可见(取决于你的requiremnets)。