我有视频视频,当视频开始时,媒体控制器显示3秒钟。我想要隐藏媒体控制器,除非我点击屏幕。我试过了
MediaController mc= new MediaController();
mc.hide();
Videoview.setMediaController(mc);
..
..
..
但它没有用..有什么建议吗?
答案 0 :(得分:5)
这不是隐藏MediaController的真正解决方案,但是如果你想完全摆脱这件事,那就这样做:
videoView.setMediaController(null);
你最初可以通过上面的方式隐藏它,然后当你想要它显示时(onClick或onTouch或其他),只需创建一个新的MediaController并在videoView上设置它。我添加了一个布尔值来防止动作多次发生。
@Override
public boolean onTouchEvent(MotionEvent ev) {
if (ev.getAction() == MotionEvent.ACTION_DOWN) {
if (controllerCreated == false) {
videoView.setMediaController(mc);
mc.show();
controllerCreated = true;
}
return true;
} else {
return false;
}
}
答案 1 :(得分:0)
不幸的是,这是VideoView
中的硬编码行为:
...
if (mTargetState == STATE_PLAYING) {
start();
if (mMediaController != null) {
mMediaController.show();
}
...
作为一种解决方法,将MediaController
打包到您自己的班级中并禁止初始show()
调用,如下所示:
package pkg.your;
import android.content.Context;
import android.widget.MediaController;
public class MyMediaController extends MediaController {
private boolean suppressed = true;
public MyMediaController(Context context) {
super(context);
}
@Override
public void show(int timeout) {
if (! suppressed) {
super.show(timeout);
}
suppressed = false;
}
}
然后,像往常一样简单地连接上面的MyMediaController
,例如:
MyMediaController mc = mediaController = new MyMediaController(this);
mc.setAnchorView(videoView);
mc.setMediaPlayer(videoView);
videoView.setMediaController(mc);
....
现在,控件最初是隐藏的,当用户点击屏幕时,它们会按预期显示。