GSYVideoPlayer是一款開源并且強大的Android視頻播放器睹酌,具體的可以看官網(wǎng)GSY,里面有很多例子,但是我現(xiàn)在有個需求,需要播放器的進度狀態(tài)等能無縫的從一個切換到另一個,兩者保持一致议慰。Demo中只有從列表切換到詳情的時候可以肴楷,但是從詳情返回時列表重新加載視頻了,所以研究了下如何實現(xiàn)雙重無縫切換的焦人。
經(jīng)過研究發(fā)現(xiàn),最重要的是
cloneParams
方法重父,該方法會把AVideo的參數(shù)狀態(tài)等克隆到BVideo,然后addTextureView
添加播放的view
就可以了花椭,具體代碼如下:
public class DetailVideo extends StandardGSYVideoPlayer {
public DetailVideo(Context context, Boolean fullFlag) {
super(context, fullFlag);
}
public DetailVideo(Context context) {
super(context);
}
public DetailVideo(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void init(Context context) {
super.init(context);
}
public void setSurfaceToPlay() {
addTextureView();
startProgressTimer();
getGSYVideoManager().setLastListener(this);
getGSYVideoManager().setListener(this);
checkoutState();
}
public DetailVideo saveState() {
DetailVideo switchVideo = new DetailVideo(getContext());
cloneParams(this, switchVideo);
return switchVideo;
}
public void cloneState(DetailVideo switchVideo) {
cloneParams(switchVideo, this);
}
}
效果GIF圖片
SVID_20200902_170214_144444.gif
可以看到切換時無縫銜接,Good!
最后房午,留下Demo地址