我正在尝试制作自定义视频播放器。我使用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;
}
};
答案 0 :(得分:1)
首先构建您的类并扩展MediaController。现在,覆盖“隐藏”和“显示”方法并执行您想要执行的操作。它很简单,我做了同样的事情。 在hide方法中,你可以将标题的可见性设置为Gone或不可见(取决于你的requiremnets)。