开发中当使用SwipeBackActivity进行滑动返回后,发现一个奇葩的问题,将Activity底色设为透明后VideoView也变透明了,而且是无视父布局区域的。
这里我自己提供了一个解决办法:
为VideoView设置背景色,这样可以避免透明的问题,但是同时图像也被掩盖了(坑爹)。这里就需要我们对视频进行判断,而VideoView的判断机制是很坑爹的,需要在onPrepared()方法中进行判断,并且就算onPrepared回调了也不能保证视频开始播放,仅仅代表视频准备完毕。这样就需要判断用户开始播放视频的时间以及视频结束时再将背景色设置回来,特别是当网络不好的时候,需要判断的情况很多,一不小心就会出问题。
所以又在网上找了很多相关的帖子,最终终于找到一个相对好的解决方法:
videoView.setZOrderOnTop(true);
因为VideoView 继承于SurfaceView,而SurfaceView会出现黑屏或者透明的问题。这个方法是将SurfaceView挪到上层。这样就能简单的避免透明的发生。
最近发现一个新的问题,这个方法必须在布局一开始绘制时进行调用才会生效,并且设置了该方法后videoview上的别的空间会被遮挡,虽然依然能够被点击。
转载自:http://blog.csdn.net/EdisonChang/article/details/52087248