我正在实施一个带广告的视频播放器。最后,在广告播放恢复后,播放暂停并显示一些广告。
为了实现这一点,我使用VideoView和另一个View完成了FrameLayout以显示广告。
当广告中断时,我会这样做:
videoView.pause();
videoView.setVisibility(View.GONE);
adsView.setVisibility(View.VISIBLE):
//Play ads for X time
adsView.setVisibility(View.GONE);
videoView.setVisibility(View.VISIBLE);
videoView.play();
它非常简单,除了Nexus 7之外,它在我尝试的所有设备上都能正常工作。 在Nexus 7上重新开始播放时,视频会变小并且不会填满整个屏幕。它仅使用aprox 1/4的屏幕。
经过大量时间调查后,我意识到只有在我改变VideoView的可见性时才会发生这种情况。如果我对以下行//videoView.setVisibility(View.GONE);
发表评论,问题就会消失,但我看不到广告。
可能相关的一些日志:
NvOsDebugPrintf BeginSequence 640x368
NvOsDebugPrintf pnvsi->nDecodeBuffers = 9
NvOsDebugPrintf Display Resolution : (640x360)
NvOsDebugPrintf Display Aspect Ratio : (128x360)
显示宽高比(128x360)应与显示分辨率(640x360)相同,但不是。
有什么想法吗? 感谢
答案 0 :(得分:0)
不确定原因但似乎存在测量误差(我认为还有其他关于n7的测量问题的报告)。 View.GONE导致视图被重新分配,以便考虑到现在没有消失视图的空间。
作为一种解决方法,您可以避免重新出现 - 尝试将两个视图放在RelativeLayout中,并通过在宽度和高度上设置fill_parent来使它们完全重叠。然后,您可以使用不会导致小部件调整大小的setVisibility(View.INVISIBLE)
。