DetailVideo-一个无缝切换的GSYVideoPlayer

GSYVideoPlayer是一款开源并且强大的Android视频播放器,具体的可以看官网GSY,里面有很多例子,但是我现在有个需求,需要播放器的进度状态等能无缝的从一个切换到另一个,两者保持一致。Demo中只有从列表切换到详情的时候可以,但是从详情返回时列表重新加载视频了,所以研究了下如何实现双重无缝切换的。

经过研究发现,最重要的是cloneParams方法,该方法会把AVideo的参数状态等克隆到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地址

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。