提交 ca9e9159 编写于 作者: G guoshuyu

add use doc

上级 a756356d
## 两种简单的使用方法
### 一、列表中使用
#### 模式一 [ListVideoActivity](https://github.com/CarGuo/GSYVideoPlayer/blob/master/app/src/main/java/com/example/gsyvideoplayer/ListVideoActivity.java)
1、adapter布局中添加播放控件
```
<com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer
android:id="@+id/detail_player"
android:layout_width="match_parent"
android:layout_height="@dimen/post_media_height" />
```
2、配置播放控件(也可以使用builder模式,详见下方detail模式中)
```
//增加title
holder.gsyVideoPlayer.getTitleTextView().setVisibility(View.GONE);
//设置返回键
holder.gsyVideoPlayer.getBackButton().setVisibility(View.GONE);
//设置全屏按键功能 holder.gsyVideoPlayer.getFullscreenButton().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
holder.gsyVideoPlayer.startWindowFullscreen(context, false, true);
}
});
//防止错位设置
holder.gsyVideoPlayer.setPlayTag(TAG);
holder.gsyVideoPlayer.setPlayPosition(position);
//是否根据视频尺寸,自动选择竖屏全屏或者横屏全屏
holder.gsyVideoPlayer.setAutoFullWithSize(true);
//音频焦点冲突时是否释放
holder.gsyVideoPlayer.setReleaseWhenLossAudio(false);
//全屏动画
holder.gsyVideoPlayer.setShowFullAnimation(true);
//小屏时不触摸滑动
holder.gsyVideoPlayer.setIsTouchWiget(false);
//全屏是否需要lock功能
holder.gsyVideoPlayer.setNeedLockFull(true);
```
3、Activity中配置生命周期
```
@Override
protected void onCreate(Bundle savedInstanceState) {
···
videoList.setOnScrollListener(new AbsListView.OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
int lastVisibleItem = firstVisibleItem + visibleItemCount;
//大于0说明有播放
if (GSYVideoManager.instance().getPlayPosition() >= 0) {
//当前播放的位置
int position = GSYVideoManager.instance().getPlayPosition();
//对应的播放列表TAG
if (GSYVideoManager.instance().getPlayTag().equals(ListNormalAdapter.TAG)
&& (position < firstVisibleItem || position > lastVisibleItem)) {
if(GSYVideoManager.isFullState(ListVideoActivity.this)) {
return;
}
//如果滑出去了上面和下面就是否,和今日头条一样
GSYVideoManager.releaseAllVideos();
adapter.notifyDataSetChanged();
}
}
}
});
···
}
@Override
public void onBackPressed() {
if (GSYVideoManager.backFromWindowFull(this)) {
return;
}
super.onBackPressed();
}
@Override
protected void onPause() {
super.onPause();
GSYVideoManager.onPause();
}
@Override
protected void onResume() {
super.onResume();
GSYVideoManager.onResume();
}
@Override
protected void onDestroy() {
super.onDestroy();
GSYVideoManager.releaseAllVideos();
}
```
#### 模式二 [ListVideo2Activity](https://github.com/CarGuo/GSYVideoPlayer/blob/master/app/src/main/java/com/example/gsyvideoplayer/ListVideo2Activity.java)
一、item布局中添加
```
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<FrameLayout
android:id="@+id/list_item_container"
android:layout_width="match_parent"
android:layout_height="@dimen/post_media_height"
android:scaleType="centerCrop"
android:src="@mipmap/xxx1" />
<ImageView
android:id="@+id/list_item_btn"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:layout_gravity="center_vertical"
android:src="@drawable/video_click_play_selector" />
</RelativeLayout>
```
2、Activity中创建helper和配置生命周期
```
GSYVideoHelper smallVideoHelper;
ListVideoAdapter listVideoAdapter;
GSYVideoHelper.GSYVideoHelperBuilder gsySmallVideoHelperBuilder;
int lastVisibleItem;
int firstVisibleItem;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list_video2);
//创建小窗口帮助类
smallVideoHelper = new GSYVideoHelper(this);
//配置
gsySmallVideoHelperBuilder = new GSYVideoHelper.GSYVideoHelperBuilder();
gsySmallVideoHelperBuilder
.setHideStatusBar(true)
.setNeedLockFull(true)
.setCacheWithPlay(true)
.setShowFullAnimation(false)
.setRotateViewAuto(false)
.setLockLand(true)
.setVideoAllCallBack(new GSYSampleCallBack(){
@Override
public void onQuitSmallWidget(String url, Object... objects) {
super.onQuitSmallWidget(url, objects);
//大于0说明有播放,//对应的播放列表TAG
if (smallVideoHelper.getPlayPosition() >= 0 && smallVideoHelper.getPlayTAG().equals(ListVideoAdapter.TAG)) {
//当前播放的位置
int position = smallVideoHelper.getPlayPosition();
//不可视的是时候
if ((position < firstVisibleItem || position > lastVisibleItem)) {
//释放掉视频
smallVideoHelper.releaseVideoPlayer();
listVideoAdapter.notifyDataSetChanged();
}
}
}
});
smallVideoHelper.setGsyVideoOptionBuilder(gsySmallVideoHelperBuilder);
videoList.setOnScrollListener(new AbsListView.OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
ListVideo2Activity.this.firstVisibleItem = firstVisibleItem;
lastVisibleItem = firstVisibleItem + visibleItemCount;
//大于0说明有播放,//对应的播放列表TAG
if (smallVideoHelper.getPlayPosition() >= 0 && smallVideoHelper.getPlayTAG().equals(ListVideoAdapter.TAG)) {
//当前播放的位置
int position = smallVideoHelper.getPlayPosition();
//不可视的是时候
if ((position < firstVisibleItem || position > lastVisibleItem)) {
//如果是小窗口就不需要处理
if (!smallVideoHelper.isSmall()) {
//小窗口
int size = CommonUtil.dip2px(ListVideo2Activity.this, 150);
smallVideoHelper.showSmallVideo(new Point(size, size), false, true);
}
} else {
if (smallVideoHelper.isSmall()) {
smallVideoHelper.smallVideoToNormal();
}
}
}
}
});
}
@Override
public void onBackPressed() {
if (smallVideoHelper.backFromFull()) {
return;
}
super.onBackPressed();
}
@Override
protected void onDestroy() {
super.onDestroy();
smallVideoHelper.releaseVideoPlayer();
GSYVideoManager.releaseAllVideos();
}
```
3、adapter中使用helper
```
smallVideoHelper.addVideoPlayer(position, holder.imageView, TAG, holder.videoContainer, holder.playerBtn);
holder.playerBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
notifyDataSetChanged();
smallVideoHelper.setPlayPositionAndTag(position, TAG);
final String url = "http://9890.vod.myqcloud.com/9890_4e292f9a3dd011e6b4078980237cc3d3.f20.mp4";
gsySmallVideoHelperBuilder.setVideoTitle("title " + position)
.setUrl(url);
smallVideoHelper.startPlay();
}
});
```
### 二、详情页播放
#### 模式一 [DetailControlActivity](https://github.com/CarGuo/GSYVideoPlayer/blob/master/app/src/main/java/com/example/gsyvideoplayer/DetailControlActivity.java)
1、布局中添加播放控件
```
<com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer
android:id="@+id/detail_player"
android:layout_width="match_parent"
android:layout_height="@dimen/post_media_height" />
```
2、Activity继承**GSYBaseActivityDetail**
```
public class DetailControlActivity extends GSYBaseActivityDetail<StandardGSYVideoPlayer>
```
3、重载配置
```
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
···
//调用父类方法
initVideoBuilderMode();
···
});
@Override
public StandardGSYVideoPlayer getGSYVideoPlayer() {
return detailPlayer;
}
@Override
public GSYVideoOptionBuilder getGSYVideoOptionBuilder() {
//内置封面可参考SampleCoverVideo
ImageView imageView = new ImageView(this);
loadCover(imageView, url);
return new GSYVideoOptionBuilder()
.setThumbImageView(imageView)
.setUrl(url)
.setCacheWithPlay(true)
.setVideoTitle(" ")
.setIsTouchWiget(true)
.setRotateViewAuto(false)
.setLockLand(false)
.setShowFullAnimation(true)//打开动画
.setNeedLockFull(true)
.setSeekRatio(1);
}
@Override
public void clickForFullScreen() {
}
```
#### 模式二 [DetailPlayer](https://github.com/CarGuo/GSYVideoPlayer/blob/master/app/src/main/java/com/example/gsyvideoplayer/DetailPlayer.java)
1、布局中添加播放控件
```
<com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer
android:id="@+id/detail_player"
android:layout_width="match_parent"
android:layout_height="@dimen/post_media_height" />
```
2、配置播放器、添加旋转外部旋转支持、增加监听。(可以用builder模式,也可以会直接通过player设置)
```
//外部辅助的旋转,帮助全屏
orientationUtils = new OrientationUtils(this, detailPlayer);
//初始化不打开外部的旋转
orientationUtils.setEnable(false);
GSYVideoOptionBuilder gsyVideoOption = new GSYVideoOptionBuilder();
gsyVideoOption.setThumbImageView(imageView)
.setIsTouchWiget(true)
.setRotateViewAuto(false)
.setLockLand(false)
.setAutoFullWithSize(true)
.setShowFullAnimation(false)
.setNeedLockFull(true)
.setUrl(url)
.setCacheWithPlay(false)
.setVideoTitle("测试视频")
.setVideoAllCallBack(new GSYSampleCallBack() {
@Override
public void onPrepared(String url, Object... objects) {
Debuger.printfError("***** onPrepared **** " + objects[0]);//title
Debuger.printfError("***** onPrepared **** " + objects[1]);//当前全屏player
super.onPrepared(url, objects);
//开始播放了才能旋转和全屏
orientationUtils.setEnable(true);
//记录是否播放标记位
isPlay = true;
}
@Override
public void onEnterFullscreen(String url, Object... objects) {
super.onEnterFullscreen(url, objects);
Debuger.printfError("***** onEnterFullscreen **** " + objects[0]);//title
Debuger.printfError("***** onEnterFullscreen **** " + objects[1]);//当前全屏player
}
@Override
public void onAutoComplete(String url, Object... objects) {
super.onAutoComplete(url, objects);
}
@Override
public void onQuitFullscreen(String url, Object... objects) {
super.onQuitFullscreen(url, objects);
Debuger.printfError("***** onQuitFullscreen **** " + objects[0]);//title
Debuger.printfError("***** onQuitFullscreen **** " + objects[1]);//当前非全屏player
if (orientationUtils != null) {
orientationUtils.backToProtVideo();
}
}
}).setLockClickListener(new LockClickListener() {
@Override
public void onClick(View view, boolean lock) {
if (orientationUtils != null) {
//配合下方的onConfigurationChanged
orientationUtils.setEnable(!lock);
}
}
}).setGSYVideoProgressListener(new GSYVideoProgressListener() {
@Override
public void onProgress(int progress, int secProgress, int currentPosition, int duration) {
Debuger.printfLog(" progress " + progress + " secProgress " + secProgress + " currentPosition " + currentPosition + " duration " + duration);
}
}) .build(detailPlayer);
//全屏方法
detailPlayer.getFullscreenButton().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//直接横屏
orientationUtils.resolveByClick();
//第一个true是否需要隐藏actionbar,第二个true是否需要隐藏statusbar
detailPlayer.startWindowFullscreen(DetailPlayer.this, true, true);
}
});
```
3、配置生命周期
```
@Override
public void onBackPressed() {
//配置返回
if (orientationUtils != null) {
orientationUtils.backToProtVideo();
}
if (GSYVideoManager.backFromWindowFull(this)) {
return;
}
super.onBackPressed();
}
@Override
protected void onPause() {
//暂停
detailPlayer.getFullWindowPlayer().onVideoPause();
super.onPause();
isPause = true;
}
@Override
protected void onResume() {
//恢复播放
detailPlayer.getFullWindowPlayer().onVideoResume(false);
super.onResume();
isPause = false;
}
@Override
protected void onDestroy() {
//销毁
super.onDestroy();
if (isPlay) {
detailPlayer.getFullWindowPlayer().release();
}
if (orientationUtils != null)
orientationUtils.releaseListener();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
//如果旋转了就全屏
if (isPlay && !isPause) {
detailPlayer.onConfigurationChanged(this, newConfig, orientationUtils, true, true);
}
}
```
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册