节操播放器——视频充满布局、监听播放结束(循环播放)、隐藏进度条等

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_24712507/article/details/86073053

1.导包:目前测了几个版本的,下面这个版本可以实现充满布局。

implementation 'cn.jzvd:jiaozivideoplayer:6.2.4'

2.XML部分:

<cn.jzvd.JZVideoPlayerStandard
    android:id="@+id/videocontroller"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    />

3.代码部分:看了下节操的源码,是对原生组件的封装,比较友好,但是没有播放情况的反馈,可以用handler去实时动态的监听。

// 节操播放器
mVideoplayer = (JZVideoPlayerStandard) findViewById(R.id.videocontroller);
mVideoplayer.fullscreenButton.setVisibility(View.GONE);
mVideoplayer.progressBar.setVisibility(View.GONE);
mVideoplayer.currentTimeTextView.setVisibility(View.GONE);
mVideoplayer.totalTimeTextView.setVisibility(View.GONE);
mVideoplayer.tinyBackImageView.setVisibility(View.GONE);
mVideoplayer.batteryLevel.setVisibility(View.GONE);
mVideoplayer.thumbImageView.setImageResource(R.drawable.welcome_landscape);  // 背景图(不会充满屏幕)
mVideoplayer.startButton.setVisibility(View.GONE);

//设置容器内播放器高,解决黑边(视频全屏)
JZVideoPlayer.setVideoImageDisplayType(JZVideoPlayer.VIDEO_IMAGE_DISPLAY_TYPE_FILL_PARENT);
mVideoplayer.TOOL_BAR_EXIST = false;

我用的比较傻的方式去实现的,只能说实现了功能,性能上要处理一下:

private Runnable runnable = new Runnable() {
    @Override
    public void run() {
        if (mVideoList.size() > 0 && null != mVideoplayer) {
            if (mVideoplayer.currentState == JZVideoPlayer.CURRENT_STATE_AUTO_COMPLETE ||
                    mVideoplayer.currentState == JZVideoPlayer.CURRENT_STATE_ERROR) {
                videoNow += 1;
                if (videoNow >= mVideoList.size()) videoNow = 0;
                mVideoplayer.setUp(mVideoList.get(videoNow), JZVideoPlayerStandard.SCROLL_AXIS_HORIZONTAL);
                mVideoplayer.startVideo();
            }
        }
        myHandler.postDelayed(this, 1000);
    }
};

4.播放:

mVideoplayer.setUp(file.getAbsolutePath(), JZVideoPlayerStandard.SCROLL_AXIS_HORIZONTAL);
mVideoplayer.startVideo();

5.其他细节:

@Override
protected void onPause() {
    super.onPause();
    // 视频回去的时候要暂停
    ((AudioManager) getSystemService(
            Context.AUDIO_SERVICE)).requestAudioFocus(
            new AudioManager.OnAudioFocusChangeListener() {
                @Override
                public void onAudioFocusChange(int focusChange) {
                }
            }, AudioManager.STREAM_MUSIC,
            AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);
}

猜你喜欢

转载自blog.csdn.net/qq_24712507/article/details/86073053