android:隐藏媒体控制器功能

时间:2011-07-13 13:46:54

标签: android android-videoview mediacontroller

我有视频视频,当视频开始时,媒体控制器显示3秒钟。我想要隐藏媒体控制器,除非我点击屏幕。我试过了

MediaController mc= new MediaController();
mc.hide();
Videoview.setMediaController(mc);
..
..
..

但它没有用..有什么建议吗?

2 个答案:

答案 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);
....

现在,控件最初是隐藏的,当用户点击屏幕时,它们会按预期显示。