提交 b672fec8 编写于 作者: S shuyu

1.2.6

上级 de74ec5d
......@@ -17,13 +17,13 @@
<dependency>
<groupId>com.shuyu</groupId>
<artifactId>gsyVideoPlayer</artifactId>
<version>1.2.5</version>
<version>1.2.6</version>
<type>pom</type>
</dependency>
```
```
compile 'com.shuyu:gsyVideoPlayer:1.2.5'
compile 'com.shuyu:gsyVideoPlayer:1.2.6'
```
## 效果,录屏下的屏幕旋转和实际有些出入
......@@ -43,6 +43,16 @@ compile 'com.shuyu:gsyVideoPlayer:1.2.5'
* <h4>3、详情模式</h4>
<img src="https://github.com/CarGuo/GSYVideoPlayer/blob/master/04.gif" width="240px" height="426px"/>
### 1.2.6 修正了StandardGSYVideoPlayer的接口全屏回调问题,增加了循环播放的接口
```
public void setLooping(boolean looping)
```
### 1.2.5 增加了新接口,支持直接横屏锁住界面,关闭全屏动画,组合接口使用
* GSYVideoPlayer
......
......@@ -8,10 +8,12 @@ import android.widget.BaseAdapter;
import android.widget.ImageView;
import com.example.gsyvideoplayer.R;
import com.example.gsyvideoplayer.listener.SampleListener;
import com.example.gsyvideoplayer.model.VideoModel;
import com.shuyu.gsyvideoplayer.GSYVideoManager;
import com.shuyu.gsyvideoplayer.GSYVideoPlayer;
import com.shuyu.gsyvideoplayer.listener.StandardVideoAllCallBack;
import com.shuyu.gsyvideoplayer.utils.Debuger;
import com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer;
import java.util.ArrayList;
......@@ -95,7 +97,10 @@ public class ListNormalAdapter extends BaseAdapter {
holder.gsyVideoPlayer.setLockLand(true);
holder.gsyVideoPlayer.setPlayTag(TAG);
holder.gsyVideoPlayer.setShowFullAnimation(true);
//循环
holder.gsyVideoPlayer.setLooping(true);
holder.gsyVideoPlayer.setPlayPosition(position);
holder.gsyVideoPlayer.setStandardVideoAllCallBack(sampleListener);
return convertView;
}
......@@ -113,4 +118,31 @@ public class ListNormalAdapter extends BaseAdapter {
StandardGSYVideoPlayer gsyVideoPlayer;
}
//小窗口关闭被点击的时候回调处理回复页面
SampleListener sampleListener = new SampleListener(){
@Override
public void onPrepared(String url, Object... objects) {
super.onPrepared(url, objects);
Debuger.printfLog("onPrepared");
}
@Override
public void onQuitSmallWidget(String url, Object... objects) {
super.onQuitSmallWidget(url, objects);
Debuger.printfLog("onQuitSmallWidget");
}
@Override
public void onClickBlankFullscreen(String url, Object... objects) {
super.onClickBlankFullscreen(url, objects);
Debuger.printfLog("onClickBlankFullscreen");
}
@Override
public void onEnterFullscreen(String url, Object... objects) {
super.onEnterFullscreen(url, objects);
Debuger.printfLog("onEnterFullscreen");
}
};
}
......@@ -86,6 +86,7 @@ public class ListVideoAdapter extends BaseAdapter {
@Override
public void onClick(View v) {
notifyDataSetChanged();
listVideoUtil.setLoop(true);
listVideoUtil.setPlayPositionAndTag(position, TAG);
final String url = "http://baobab.wdjcdn.com/14564977406580.mp4";
listVideoUtil.startPlay(url);
......
......@@ -18,7 +18,7 @@ org.gradle.jvmargs=-Xmx1536m
BINTRAY_USER=
BINTRAY_KEY=
PROJ_GROUP=com.shuyu
PROJ_VERSION=1.2.5
PROJ_VERSION=1.2.6
PROJ_NAME=gsyVideo
PROJ_WEBSITEURL=hhttps://github.com/CarGuo/GSYVideoPlayer
PROJ_ISSUETRACKERURL=
......
......@@ -131,6 +131,7 @@ public class GSYVideoManager implements IMediaPlayer.OnPreparedListener, IMediaP
mediaPlayer = new IjkMediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource(((GSYModel) msg.obj).getUrl(), ((GSYModel) msg.obj).getMapHeadData());
mediaPlayer.setLooping(((GSYModel) msg.obj).isLooping());
mediaPlayer.setOnCompletionListener(GSYVideoManager.this);
mediaPlayer.setOnBufferingUpdateListener(GSYVideoManager.this);
mediaPlayer.setScreenOnWhilePlaying(true);
......@@ -145,17 +146,19 @@ public class GSYVideoManager implements IMediaPlayer.OnPreparedListener, IMediaP
}
break;
case HANDLER_SETDISPLAY:
if (msg.obj == null) {
if (msg.obj == null && mediaPlayer != null) {
mediaPlayer.setSurface(null);
} else {
Surface holder = (Surface) msg.obj;
if (holder.isValid()) {
if (mediaPlayer != null && holder.isValid()) {
mediaPlayer.setSurface(holder);
}
}
break;
case HANDLER_RELEASE:
mediaPlayer.release();
if (mediaPlayer != null) {
mediaPlayer.release();
}
break;
}
}
......
......@@ -123,8 +123,6 @@ public abstract class GSYVideoPlayer extends GSYBaseVideoPlayer implements View.
protected boolean mFirstTouch = false;//是否首次触摸
protected boolean mLooping = false;//// TODO: 2016/11/13 循环
protected boolean mCacheFile = false; //是否是缓存的文件
......@@ -729,6 +727,10 @@ public abstract class GSYVideoPlayer extends GSYBaseVideoPlayer implements View.
public void onBufferingUpdate(int percent) {
if (mCurrentState != CURRENT_STATE_NORMAL && mCurrentState != CURRENT_STATE_PREPAREING) {
setTextAndProgress(percent);
//循环清除进度
if (mLooping && percent == 0 && mProgressBar.getProgress() > 3) {
loopSetProgressAndTime();
}
}
}
......@@ -863,6 +865,7 @@ public abstract class GSYVideoPlayer extends GSYBaseVideoPlayer implements View.
mTotalTimeTextView.setText(CommonUtil.stringForTime(totalTime));
}
protected void resetProgressAndTime() {
mProgressBar.setProgress(0);
mProgressBar.setSecondaryProgress(0);
......@@ -870,6 +873,13 @@ public abstract class GSYVideoPlayer extends GSYBaseVideoPlayer implements View.
mTotalTimeTextView.setText(CommonUtil.stringForTime(0));
}
protected void loopSetProgressAndTime() {
mProgressBar.setProgress(0);
mProgressBar.setSecondaryProgress(0);
mCurrentTimeTextView.setText(CommonUtil.stringForTime(0));
}
/**
* 页面销毁了记得调用是否所有的video
*/
......
......@@ -43,6 +43,7 @@ public class ListVideoUtil {
private boolean isSmall; //当前是否小屏
private boolean hideStatusBar; //是否隐藏有状态bar
private boolean hideActionBar; //是否隐藏有状态ActionBar
private boolean isLoop;//循环
private int[] listItemRect;//当前item框的屏幕位置
......@@ -114,6 +115,8 @@ public class ListVideoUtil {
gsyVideoPlayer.release();
gsyVideoPlayer.setLooping(isLoop);
gsyVideoPlayer.setUp(url, true, "");
//增加title
......@@ -494,6 +497,17 @@ public class ListVideoUtil {
}
public boolean isLoop() {
return isLoop;
}
/**
* 循环
*/
public void setLoop(boolean loop) {
isLoop = loop;
}
/**
* 获取当前总时长
*/
......@@ -509,7 +523,7 @@ public class ListVideoUtil {
}
/**
* 获取播放器
* 获取播放器,直接拿播放器,根据需要自定义配置
*/
public StandardGSYVideoPlayer getGsyVideoPlayer() {
return gsyVideoPlayer;
......
......@@ -65,6 +65,8 @@ public abstract class GSYBaseVideoPlayer extends FrameLayout implements GSYMedia
protected boolean mLockLand = false;//当前全屏是否锁定全屏
protected boolean mLooping = false;//循环
protected Context mContext;
protected String mOriginUrl; //原来的url
......@@ -195,7 +197,7 @@ public abstract class GSYBaseVideoPlayer extends FrameLayout implements GSYMedia
* @param actionBar 是否有actionBar,有的话需要隐藏
* @param statusBar 是否有状态bar,有的话需要隐藏
*/
public void startWindowFullscreen(final Context context, final boolean actionBar, final boolean statusBar) {
public GSYBaseVideoPlayer startWindowFullscreen(final Context context, final boolean actionBar, final boolean statusBar) {
hideSupportActionBar(context, actionBar, statusBar);
......@@ -224,7 +226,7 @@ public abstract class GSYBaseVideoPlayer extends FrameLayout implements GSYMedia
gsyVideoPlayer.setId(FULLSCREEN_ID);
gsyVideoPlayer.setIfCurrentIsFullscreen(true);
gsyVideoPlayer.setVideoAllCallBack(mVideoAllCallBack);
gsyVideoPlayer.setLooping(isLooping());
final FrameLayout.LayoutParams lpParent = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
final FrameLayout frameLayout = new FrameLayout(context);
frameLayout.setBackgroundColor(Color.BLACK);
......@@ -271,10 +273,11 @@ public abstract class GSYBaseVideoPlayer extends FrameLayout implements GSYMedia
GSYVideoManager.instance().setLastListener(this);
GSYVideoManager.instance().setListener(gsyVideoPlayer);
return gsyVideoPlayer;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
......@@ -332,7 +335,7 @@ public abstract class GSYBaseVideoPlayer extends FrameLayout implements GSYMedia
/**
* 显示小窗口
*/
public void showSmallVideo(Point size, final boolean actionBar, final boolean statusBar) {
public GSYBaseVideoPlayer showSmallVideo(Point size, final boolean actionBar, final boolean statusBar) {
final ViewGroup vp = getViewGroup();
......@@ -373,6 +376,7 @@ public abstract class GSYBaseVideoPlayer extends FrameLayout implements GSYMedia
//隐藏掉所有的弹出状态哟
gsyVideoPlayer.onClickUiToggle();
gsyVideoPlayer.setVideoAllCallBack(mVideoAllCallBack);
gsyVideoPlayer.setLooping(isLooping());
gsyVideoPlayer.setSmallVideoTextureView(new SmallVideoTouch(gsyVideoPlayer, marginLeft, marginTop));
GSYVideoManager.instance().setLastListener(this);
......@@ -383,12 +387,11 @@ public abstract class GSYBaseVideoPlayer extends FrameLayout implements GSYMedia
mVideoAllCallBack.onEnterSmallWidget(mUrl, mObjects);
}
} catch (InstantiationException e) {
e.printStackTrace();
return gsyVideoPlayer;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
......@@ -489,6 +492,18 @@ public abstract class GSYBaseVideoPlayer extends FrameLayout implements GSYMedia
}
public boolean isLooping() {
return mLooping;
}
/**
* 设置循环
*/
public void setLooping(boolean looping) {
this.mLooping = looping;
}
/**
* 设置播放过程中的回调
*
......
......@@ -5,6 +5,7 @@ import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.graphics.Point;
import android.graphics.drawable.Drawable;
import android.text.TextUtils;
import android.util.AttributeSet;
......@@ -503,7 +504,7 @@ public class StandardGSYVideoPlayer extends GSYVideoPlayer {
mProgressDialog.getWindow().addFlags(32);
mProgressDialog.getWindow().addFlags(16);
mProgressDialog.getWindow().setLayout(-2, -2);
if(mDialogProgressNormalColor != -11) {
if (mDialogProgressNormalColor != -11) {
mDialogTotalTime.setTextColor(mDialogProgressNormalColor);
}
if (mDialogProgressHighLightColor != -11) {
......@@ -603,6 +604,39 @@ public class StandardGSYVideoPlayer extends GSYVideoPlayer {
}
}
@Override
protected void loopSetProgressAndTime() {
super.loopSetProgressAndTime();
mBottomProgressBar.setProgress(0);
}
@Override
public void onBackFullscreen() {
clearFullscreenLayout();
}
@Override
public GSYBaseVideoPlayer startWindowFullscreen(Context context, boolean actionBar, boolean statusBar) {
GSYBaseVideoPlayer gsyBaseVideoPlayer = super.startWindowFullscreen(context, actionBar, statusBar);
if (gsyBaseVideoPlayer != null) {
StandardGSYVideoPlayer gsyVideoPlayer = (StandardGSYVideoPlayer) gsyBaseVideoPlayer;
gsyVideoPlayer.setStandardVideoAllCallBack(mStandardVideoAllCallBack);
}
return gsyBaseVideoPlayer;
}
@Override
public GSYBaseVideoPlayer showSmallVideo(Point size, boolean actionBar, boolean statusBar) {
GSYBaseVideoPlayer gsyBaseVideoPlayer = super.showSmallVideo(size, actionBar, statusBar);
if (gsyBaseVideoPlayer != null) {
StandardGSYVideoPlayer gsyVideoPlayer = (StandardGSYVideoPlayer) gsyBaseVideoPlayer;
gsyVideoPlayer.setStandardVideoAllCallBack(mStandardVideoAllCallBack);
}
return gsyBaseVideoPlayer;
}
private void startDismissControlViewTimer() {
cancelDismissControlViewTimer();
......@@ -677,10 +711,6 @@ public class StandardGSYVideoPlayer extends GSYVideoPlayer {
return mTitleTextView;
}
@Override
public void onBackFullscreen() {
clearFullscreenLayout();
}
/**
* 底部进度条-弹出的
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册