播放UI的显示、控制层、手势处理等类
GSYVideoControlView
里面可以查询一些功能ID,后面View类型只做参考作用,非限制死的类型
//播放按键 View
mStartButton = findViewById(R.id.start);
//title TextView
mTitleTextView = findViewById(R.id.title);
//返回按键 ImageView
mBackButton = findViewById(R.id.back);
//全屏按键 ImageView
mFullscreenButton = findViewById(R.id.fullscreen);
//进度条 SeekBar
mProgressBar = findViewById(R.id.progress);
//当前进度时间显示 TextView
mCurrentTimeTextView =findViewById(R.id.current);
//总时长显示 TextView
mTotalTimeTextView = findViewById(R.id.total);
//底部区域显示 ViewGroup
mBottomContainer = findViewById(R.id.layout_bottom);
//顶部区域显示 ViewGroup
mTopContainer = findViewById(R.id.layout_top);
//底部进度条 ProgressBar
mBottomProgressBar =findViewById(R.id.bottom_progressbar);
//封面父布局 RelativeLayout
mThumbImageViewLayout = findViewById(R.id.thumb);
//锁定图标 ImageView
mLockScreen = findViewById(R.id.lock_screen);
//加载中 View
mLoadingProgressBar = findViewById(R.id.loading);
//小窗口关闭按键 View
mSmallClose = findViewById(R.id.small_close);
设置内置控件ID的样式:
//设置播放显示状态
setStateAndUi(CURRENT_STATE_PAUSE);
//全屏拉伸显示,使用这个属性时,surface_container建议使用FrameLayout
<FrameLayout
android:id="@+id/surface_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center" />
继承GSYVideoControlView后
可以用getGSYVideoManager().xxx 调用播放器功能,具体功能可以到GSYVideoViewBridge这个类中查看
回调方法参考类VideoAllCallBack:
//开始加载,objects[0]是title,object[1]是当前所处播放器(全屏或非全屏)
void onStartPrepared(String url, Object... objects);
//加载成功,objects[0]是title,object[1]是当前所处播放器(全屏或非全屏)
void onPrepared(String url, Object... objects);
//点击了开始按键播放,objects[0]是title,object[1]是当前所处播放器(全屏或非全屏)
void onClickStartIcon(String url, Object... objects);
//点击了错误状态下的开始按键,objects[0]是title,object[1]是当前所处播放器(全屏或非全屏)
void onClickStartError(String url, Object... objects);
//点击了播放状态下的开始按键--->停止,objects[0]是title,object[1]是当前所处播放器(全屏或非全屏)
void onClickStop(String url, Object... objects);
//点击了全屏播放状态下的开始按键--->停止,objects[0]是title,object[1]是当前所处播放器(全屏或非全屏)
void onClickStopFullscreen(String url, Object... objects);
//点击了暂停状态下的开始按键--->播放,objects[0]是title,object[1]是当前所处播放器(全屏或非全屏)
void onClickResume(String url, Object... objects);
//点击了全屏暂停状态下的开始按键--->播放,objects[0]是title,object[1]是当前所处播放器(全屏或非全屏)
void onClickResumeFullscreen(String url, Object... objects);
//点击了空白弹出seekbar,objects[0]是title,object[1]是当前所处播放器(全屏或非全屏)
void onClickSeekbar(String url, Object... objects);
//点击了全屏的seekbar,objects[0]是title,object[1]是当前所处播放器(全屏或非全屏)
void onClickSeekbarFullscreen(String url, Object... objects);
//播放完了,objects[0]是title,object[1]是当前所处播放器(全屏或非全屏)
void onAutoComplete(String url, Object... objects);
//进去全屏,objects[0]是title,object[1]是当前所处播放器(全屏或非全屏)
void onEnterFullscreen(String url, Object... objects);
//退出全屏,objects[0]是title,object[1]是当前所处播放器(全屏或非全屏)
void onQuitFullscreen(String url, Object... objects);
//进入小窗口,objects[0]是title,object[1]是当前所处播放器(全屏或非全屏)
void onQuitSmallWidget(String url, Object... objects);
//退出小窗口,objects[0]是title,object[1]是当前所处播放器(全屏或非全屏)
void onEnterSmallWidget(String url, Object... objects);
//触摸调整声音,objects[0]是title,object[1]是当前所处播放器(全屏或非全屏)
void onTouchScreenSeekVolume(String url, Object... objects);
//触摸调整进度,objects[0]是title,object[1]是当前所处播放器(全屏或非全屏)
void onTouchScreenSeekPosition(String url, Object... objects);
//触摸调整亮度,objects[0]是title,object[1]是当前所处播放器(全屏或非全屏)
void onTouchScreenSeekLight(String url, Object... objects);
//播放错误,objects[0]是title,object[1]是当前所处播放器(全屏或非全屏)
void onPlayError(String url, Object... objects);
//点击了空白区域开始播放,objects[0]是title,object[1]是当前所处播放器(全屏或非全屏)
void onClickStartThumb(String url, Object... objects);
//点击了播放中的空白区域,objects[0]是title,object[1]是当前所处播放器(全屏或非全屏)
void onClickBlank(String url, Object... objects);
//点击了全屏播放中的空白区域,objects[0]是title,object[1]是当前所处播放器(全屏或非全屏)
void onClickBlankFullscreen(String url, Object... objects);
在调用initVideoBuilderMode()初始化时,会自动注册一个回调为当前类,所以如果你不想在当前播放类里处理回调,而是继承了StandardGSYVideoPlayer类来处理的话,则需要在initVideoBuilderMode()之后再调用 detailPlayer.setVideoAllCallBack(new GSYSampleCallBack());GSYSampleCallBack这个类为你可以重写一些你需要的回调,而不需要所有回调都实现,VideoAllCallBack这个类则会实现所有回调
如果用自己的回调,需要在onQuitFullscreen里面处理退出全屏回调,否则退出全屏会有问题
@Override
public void onQuitFullscreen(String url, Object... objects) {
if (orientationUtils != null) {
orientationUtils.backToProtVideo();
}
}
//源代码里会默认实现,自己可根据情况选择性需要实现
@Override
public void onPrepared(String url, Object... objects) {
if (orientationUtils == null) {
throw new NullPointerException("initVideo() or initVideoBuilderMode() first");
}
//开始播放了才能旋转和全屏
orientationUtils.setEnable(getDetailOrientationRotateAuto() && !isAutoFullWithSize());
isPlay = true;
}
GSYVideoView类:
包含了播放器的各种状态记录
设置进度回调:
setGSYVideoProgressListener(new GSYVideoProgressListener() {
@Override
public void onProgress(int progress, int secProgress, int currentPosition, int duration) {
Log.i("onProgress", "progress:" + progress + "\tsecProgress:" + secProgress + "\tcurrentPosition:" + currentPosition);
}
});
该方法所在类:GSYVideoControlView