我有一个VideoView,它占据了活动的上半部分,在屏幕的下半部分显示了一些图像和文本。当活动开始时,我正在视频视图中播放rtsp视频流。我已经通过以下代码将一个MediaController附加到VideoView:
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显示在屏幕上我想要显示的位置,我还需要采取其他步骤吗?
发布于 2011-08-12 21:17:55
尝试setAnchorView() --根据我对源代码的阅读,MediaController将出现在锚视图的底部。
发布于 2012-09-07 19:25:48
只有在知道videoview大小的情况下,设置锚视图才会起作用--它不会在初始化时生效。但是你可以这样做:
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);
}
});
}
});发布于 2014-07-02 19:15:37
我找到了非常简单的解决方案。
只需将videoView包装在FrameLayout中,然后就可以从代码中将MediaController添加到该FrameLayout中,如下所示:
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);编辑:自从我发布了这个答案后,我遇到了很多隐藏它和控制它大小的问题,所以我最终做的就是创建了我自己的布局,我可以使用这些控件进行动画处理,而不会感到头疼
https://stackoverflow.com/questions/3686729
复制相似问题