android videoview 播放之前短暂黑屏

最近在做视频闪屏页,但是遇到了一个困难

VideoView播放视频的时候会出现黑屏,能够清晰看到黑色的屏幕,很不美观

照惯例,遇到问题先看有没有网友解决过,发现了几篇博客

Android VideoView播放本地视频短暂黑屏的解决方法

android videoview 播放前黑屏的解决方法之一

但是两个博客都没有能解决我的问题,第一篇博客提到的onInfo里面的回调其实是渲染完成的回调,但是忽略个问题:视频渲染完成,那么就可以直接播放了吗?

所以我再次想了下,播放之前黑屏的原因不在于缓冲的多少?而是在于缓冲完毕之后什么时候开始播放?黑屏就是黑在渲染完毕了但是还没有播放视频呢

所以根据第二篇博客的启发,我们可以这样搞:

在VideoView上面盖一层View,当视频开始播放的时候(注意不是缓冲完毕)再把View隐藏掉,如何判断视频已经开始播放了呢?利用Runnable+Handler

代码如下:

 videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer mp) {
                mediaPlayer = mp;
                videoView.start();
                mVideoViewHandler.post(runable_play);
            }
        });
runable_play= new Runnable() {
            @Override
            public void run() {
                if(mediaPlayer!=null&&mediaPlayer.getCurrentPosition()>0){
                    test_img.setVisibility(View.GONE);
                }
                if(test_img.getVisibility()==View.GONE){
                    runable_play = null;
                    mVideoViewHandler = null;
                }else {
                    mVideoViewHandler.postDelayed(runable_play, 0);
                }
            }
        };

猜你喜欢

转载自blog.csdn.net/losingcarryjie/article/details/80548851