Android开发

Android videoView闪屏

本文主要是介绍Android videoView闪屏,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、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默认宽高设置match_parent无效果,所以重写一下VideoView的onMeasure

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
   super.onMeasure(widthMeasureSpec, heightMeasureSpec);
   setMeasuredDimension(View.MeasureSpec.getSize(widthMeasureSpec), View.MeasureSpec.getSize(heightMeasureSpec));
}

在VideoView准备播放的时候可以在再设置背景透明

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) {
                    // video 视屏播放的时候把背景设置为透明
                    videoView.setBackgroundColor(Color.TRANSPARENT);
                    return true;
                }
                return false;
            }
        });
    }
});
这篇关于Android videoView闪屏的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!