项目中经常用到一个视频播放器下面有一个评论列表,或者有一些其他的列表。一般情况下,安卓不鼓励视频滚动的。但是偶尔遇到这种要求又不得不做。很不幸我就遇到了。
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布局的源码,在一个代码了,大家把注释打开就可以分别看到两种效果。但是视频连接没有。大家只要放进去视频连接就可以看到效果了。当然不放连接也能看到效果。但是看不到播放而已。