首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于VideoView的MediaController定位

基于VideoView的MediaController定位
EN

Stack Overflow用户
提问于 2010-09-11 01:15:59
回答 10查看 64.2K关注 0票数 67

我有一个VideoView,它占据了活动的上半部分,在屏幕的下半部分显示了一些图像和文本。当活动开始时,我正在视频视图中播放rtsp视频流。我已经通过以下代码将一个MediaController附加到VideoView:

代码语言:javascript
复制
    MediaController controller = new MediaController(this);
    controller.setAnchorView(this.videoView);
    controller.setMediaPlayer(this.videoView);
    this.videoView.setMediaController(controller);

当我点击VideoView在屏幕上调出MediaController时,我希望播放控件会覆盖在VideoView的底部区域( MediaController的底部,甚至与VideoView的底部)。相反,MediaController在屏幕下方弹出,覆盖了我在VideoView下面的一些图形和文本。

要使MediaController显示在屏幕上我想要显示的位置,我还需要采取其他步骤吗?

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2011-08-12 21:17:55

尝试setAnchorView() --根据我对源代码的阅读,MediaController将出现在锚视图的底部。

票数 7
EN

Stack Overflow用户

发布于 2012-09-07 19:25:48

只有在知道videoview大小的情况下,设置锚视图才会起作用--它不会在初始化时生效。但是你可以这样做:

代码语言:javascript
复制
video.setOnPreparedListener(new OnPreparedListener() {
        @Override
        public void onPrepared(MediaPlayer mp) {
            mp.setOnVideoSizeChangedListener(new OnVideoSizeChangedListener() { 
            @Override
            public void onVideoSizeChanged(MediaPlayer mp, int width, int height) {
                /*
                 * add media controller
                 */
                mc = new MediaController(YourActivity.this);
                video.setMediaController(mc);
                /*
                 * and set its position on screen
                 */
                mc.setAnchorView(video);
            }
        });
    }
});
票数 54
EN

Stack Overflow用户

发布于 2014-07-02 19:15:37

我找到了非常简单的解决方案。

只需将videoView包装在FrameLayout中,然后就可以从代码中将MediaController添加到该FrameLayout中,如下所示:

代码语言:javascript
复制
    MediaController mc = new MediaController(context);
    videoView.setMediaController(mc);

    FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
    lp.gravity = Gravity.BOTTOM;
    mc.setLayoutParams(lp);

    ((ViewGroup) mc.getParent()).removeView(mc);

    ((FrameLayout) findViewById(R.id.videoViewWrapper)).addView(mc);

编辑:自从我发布了这个答案后,我遇到了很多隐藏它和控制它大小的问题,所以我最终做的就是创建了我自己的布局,我可以使用这些控件进行动画处理,而不会感到头疼

票数 23
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3686729

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档