一、Bug描述
在使用VideoView播放视频的时候总会有一个短暂的闪屏要么空白要么黑屏。
二、解决方案
出现黑屏或者白屏主要是在视频渲染之前的这段时间surface还在做准备工作,显示的只是背景,所以我们设置一个背景,比如视频的第一帧。
三、代码实现
给videoView设置一个自己想要的背景
<CustomVideoView
android:id="@+id/video_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@color/color_white" />
在VideoView准备播放的时候可以在再设置带边框透明背景(带边框是为了解决有黑边的问题)
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/transparent" />
<stroke
android:width="1dp"
android:color="@color/color_white" />
</shape>
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.setOnInfoListener(new MediaPlayer.OnInfoListener() {
@Override
public boolean onInfo(MediaPlayer mp, int what, int extra) {
if (what == MediaPlayer.MEDIA_INFO_VIDEO_RENDERING_START) {
// 视屏播放的时候把背景设置为带边框的透明背景,解决视屏播放黑屏,或者有黑线的问题
videoView.setBackground(getDrawable(R.drawable.ih_launch_video_playing_bg));
return true;
}
return false;
}
});
}
});