美文网首页Android音视频系列
DetailVideo-一个无缝切换的GSYVideoPlaye

DetailVideo-一个无缝切换的GSYVideoPlaye

作者: MIRROR1217 | 来源:发表于2020-09-02 17:17 被阅读0次

    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地址

    相关文章

      网友评论

        本文标题:DetailVideo-一个无缝切换的GSYVideoPlaye

        本文链接:https://www.haomeiwen.com/subject/qckwsktx.html