Git地址
播放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