由于工作现在接触到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绑定videoviewgetHolder().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即可,这样问题就想要的效果就实现了.

在Android的cocos2d-x项目中,开发者遇到了VideoView调整大小的难题。通过继承SurfaceView创建自定义VideoView,并使用MediaPlayer播放视频。问题在于将VideoView添加到ViewGroup时,视频大小未改变。解决办法是使用ViewGroup.LayoutParams设置视频大小。为了达到类似视频播放器的上下黑边效果,创建了一个黑色背景的布局,将VideoView嵌入其中。
——自定义videoview设置视频大小,实现上下黑边&spm=1001.2101.3001.5002&articleId=21020775&d=1&t=3&u=ac53e34dc0284c7fbb08132f78e688e4)
1150

被折叠的 条评论
为什么被折叠?



