Android开发中遇到的问题(一)——自定义videoview设置视频大小,实现上下黑边

cocos2d-x 同时被 2 个专栏收录
3 篇文章 0 订阅
2 篇文章 0 订阅

由于工作现在接触到cocos2d-x android平台项目,上来改的videoview的修改视频大小bug,真心是被坑到了...(当然也有一部分原因是因为我是小白)

自定义videoview视频播放器的实现主要是依赖videoview继承surfaceView类,定义类成员MediaPlayer,让类成员MediaPlayer在videoview中播放,简易代码如下:

SurfaceHolder holder = getHolder();
m_mediaPlayer = new MediaPlayer();
mPlayer.setDisplay(holder);

此时,视频的大小,完全依赖于videoview的layout,这个时候只要设置videoview的layout,也就设置了视频的大小,这其中的原理不少博客中已说明。

这里我们动态产生videoview的layout,代码如下:

LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams)getLayoutParams();
lp.height = vHeight;  //设置layout高
lp.width = vWidth;  //设置layout宽
lp.gravity = Gravity.CENTER; //设置居中
setLayoutParams(lp); //将动态产生的layout绑定videoview
getHolder().setFixedSize(vWidth, vHeight); //设置视频分辨率

这样就设置了我们自定义videoview的大小。

之前我的videoview定义了layout的类型,但视频大小却没发生变化,后来发现,是因为在activity中,将videoview加入ViewGroup类型所致,就限制了layout的类型,只有设置ViewGroup.LayoutParams,才会响应对视频大小的设置。

之后为了实现像视频播放器那种上下黑边效果,又定义了一个layout,并将layout设置背景色为黑色,再将videoview加入此布局中,简易代码如下:

int Width = getWindowManager().getDefaultDisplay().getWidth(); //获取屏幕宽度
int Height = getWindowManager().getDefaultDisplay().getHeight(); //获取屏幕高度
LinearLayout ll = new LinearLayout(this);
ll.setBackgroundColor(Color.BLACK); //设置layout背景为黑色
LinearLayout.LayoutParams lp1 =  new LinearLayout.LayoutParams(Width,Height);
lp1.gravity = Gravity.CENTER;
ll.setLayoutParams(lp1);
ll.addView(videoView);
之后再将定义的layout ll 加入ViewGroup即可,这样问题就想要的效果就实现了.

  • 2
    点赞
  • 1
    评论
  • 3
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值