版权声明:本文为博主原创文章,未经博主允许不得转载。 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); }