我一直在寻找一种方法来摆脱 VideoView 上令人讨厌的黑色初始屏幕。start()
方法运行。
我尝试过在小部件上使用背景图像,但它根本无法按预期工作。
我还尝试将视频中第一帧的图像放在 VideoView 之上,并在start()
方法。
添加 onPrepared 侦听器以启动视频,然后隐藏图像。这是可行的,但在过渡过程中有一个可怕的闪烁,我不知道如何消除它。
添加 MediaController 根本没有任何效果。问题仍然存在(我仍然看到黑色闪烁),并且我根本不想让视频控件可见。
我的代码如下所示:
VideoView vSurface= (VideoView) findViewById(R.id.surfaceView1);
vSurface.setVideoURI(Uri.parse("android.resource://com.mypackage/" + R.raw.video1));
vSurface.setVisibility(View.VISIBLE);
vSurface.setOnPreparedListener(this);
vSurface.setDrawingCacheEnabled(true);
vSurface.setOnErrorListener(this);
我遇到了同样的问题,并用上面接受的解决方案加上这个解决方案:
@Override
public void onPrepared(MediaPlayer mp) {
mp.setOnInfoListener(new MediaPlayer.OnInfoListener() {
@Override
public boolean onInfo(MediaPlayer mp, int what, int extra) {
Log.d(TAG, "onInfo, what = " + what);
if (what == MediaPlayer.MEDIA_INFO_VIDEO_RENDERING_START) {
// video started; hide the placeholder.
placeholder.setVisibility(View.GONE);
return true;
}
return false;
}
});
我认为 onPrepared 只是意味着视频已准备好播放,但并不意味着视频开始播放。如果在onPrepared中隐藏占位符,屏幕仍然显示黑屏。
在我的 Note3 和 Nexus 上,这个解决方案运行良好。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)