您的位置:首页 > 移动开发 > Android开发

可以滑动的视频播放器(VideoView)

2016-07-12 10:59 477 查看
项目中经常用到一个视频播放器下面有一个评论列表,或者有一些其他的列表。一般情况下,安卓不鼓励视频滚动的。但是偶尔遇到这种要求又不得不做。很不幸我就遇到了。

round1

楼主把VideoView放到了ScrollView,同时把VideoView的高设置成了wrap_content,问题出现了。VideoView不可见了。后来才发现VideoView必须设置成固定宽高才会出现。

round2

成功在ScrollView中放入了VideoView,但是滑动时,会有黑边,好丑。而且滑动不够流畅。百度发现给VideoView设置一个透明色的背景就好了。流畅了很多,但是仍然不是很好,勉强能满足楼主的要求。

之后运行不久,又发现一个问题。这里交代下,我们的应用上面的视频的高度是要变化的,楼主就用了强制布局,得到视频的第一帧图片,然后按照比例设置VideoView的宽高。

RelativeLayout.LayoutParams linearParams = (RelativeLayout.LayoutParams) videoView.getLayoutParams();
WindowManager wm = this.getWindowManager();
//得到屏幕宽
int width = wm.getDefaultDisplay().getWidth();
//得到视频放大比例
double bili = (double) width / mVideoWidth;
//把视频宽设置为屏幕宽
linearParams.width = width;// 控件的宽强制设成
//得到视频放大后的高
int height = (int) (mVideoHeight * bili);
//设置视频的宽高
linearParams.height = height;
CHBApplication.Log(height + "");
videoView.setLayoutParams(linearParams);

问题出现了,当视频的高度小于一整屏幕,listView又特别长的时候,滑动会出现一条线。没错那条线就是VideoView的下边界。

round 3

楼主在这里卡了好久。思来想去,可以滑动的控件只有ScrollView,ListView。然后就改用多item的listView。问题又出现了,滑动起来流畅了很多。但是,因为复用的关系,当VideoView滑出屏幕是,视频播放暂停。再滑回来,视频重头播放。不复用,又感觉应用性能不够好。

round 4

突然想到,是因为复用导致的暂停,那我给listView添加个头布局不就好了?想到就做。

完美。滑动没黑线,滑动起来也流畅了很多。就是楼主想要的效果。

这里楼主给大家上传一个addHeadView和多item布局的源码,在一个代码了,大家把注释打开就可以分别看到两种效果。但是视频连接没有。大家只要放进去视频连接就可以看到效果了。当然不放连接也能看到效果。但是看不到播放而已。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息