今天,我遇到了同样的问题,并发现了一个非常糟糕的解决方案,解决了这个令人讨厌的问题:我意识到可以为背景色/可绘制对象设置背景颜色/可绘制对象
VideoView,使其在视频表面混合并完全隐藏。这仅在基础视频仍在
播放时有效
,而在停止时(正常结束或
stopPlayback()调用时均无效)不起作用,否则,您将再次看到黑色闪烁。也不要在一开始就设置背景,否则视频从一开始就将被完全隐藏。
因此,对我而言,唯一合乎逻辑的步骤是在开始播放视频之前发布延迟的事件-
并且由于我知道视频的长度,因此我让此事件在正常结束之前的几毫秒内发生。我拍摄了VLC中最后一帧的屏幕截图,然后将其像这样混合:
private void startVideo(){ introVideo.setBackgroundDrawable(null); introVideo.postDelayed(new Runnable() { public void run() { if (!introVideo.isPlaying()) return; introVideo.setBackgroundResource(R.drawable.video_still_image); // other stuff here, for example a custom transition to // another activity } }, 7500); // the video is roughly 8000ms long introVideo.start();}但是,这还不够,因为当视频实际结束时,我仍然会出现短暂的黑屏闪烁,因此我还必须将静止图像设置为包含视频的容器的背景(在我的情况下,是视频的布局活动):
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/video_still_image"> <VideoView android:id="@+id/introVideo" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_alignParentRight="true" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_alignParentBottom="true" android:layout_marginTop="-10dip" /></RelativeLayout>
此活动以全屏呈现,并且视频(大部分)缩放为总屏幕尺寸(屏幕1024x600,视频960x640)。我 主要 说的 是
,因为某种未知的原因,布局的背景图片会在顶部融合约10像素。这是我必须应用的最后一个技巧-将视频容器
-10dip移到顶部的空白处。
现在,这在我的Galaxy Tab上看起来很棒,但是我不敢在SGS2手机上对其进行测试…



