最近项目迭代需要添加视频播放功能,由于若干原因就选择了优酷视频,本来挺简单的一个功能在做的时候居然碰到了若干意想不到的问题,果然还是优酷视频提供的demo最稳定啊,啥问题木有~~o(>_<)o ~~
好了,闲话不多说,就聊聊我在项目中使用优酷视频云时遇到的问题吧!
1、viewpager+fragment结构,在卡片中播放视频,当时做的时候想都没想就靠惯性在每个item中放了一枚mYoukuPlayerView,然后就碰到了复用问题,优酷视频的生命周期就得不到保障了,于是就想到了动态添加,当卡片中有视频时把mYoukuPlayerView动态添加进item中,这样一来整个fragment就有且只有一个播放面板了,O(∩_∩)O
实现方式很简单,在item中放一个空的LinearLayout,背景设置为黑色,child设置居中, 当用户点击播放按钮时再动态添加进这个空的布局当中,然后把空的LinearLayout设置为可见,这时就能妥妥的播放视频啦!
2、卡片左右切换视频停不下来有木有!我们知道viewpager默认加载3张,通过设置setOffscreenPageLimit(1)来限制默认加载的条数,但是这样还是不行啊有木有,于是就read the fucking source code
绝望了,本来想设置为0,结果不起作用,于是就想到了重写viewpager,把默认值改为0,然后也这样做了,结果每滑动一下都要时间加载,没有了流畅度的viewpager绝不能忍,于是乎想到了以下方法:
1)添加滑动监听addOnPageChangeListener(this);
2)在onPageSelected中判断视频是否正在播放, 通过添加播放器回调得到当前视频的播放状态
有了它就能知道是否有视频在播放了
通过调用release()方法把视频给释放掉,but,切换回来后黑了有木有,这是因为没有把添加播放器的linearlayout给move掉
然后adapter调用此方法就大功告成啦!
3、播放广告切换卡片视频停不下来
这个问题着实让我头疼了一段时间,后来从头到尾翻看了优酷视频的源码,终于让我找到了解决办法,通过调用mYoukuPlayer获得mMediaPlayerDelegate, 然后调用isADShowing,值为true or false来判断视频是否正在播放广告。
4、如何刷新单个的item
这个问题让人很头疼,默认一张卡片的左右两边随着卡片的加载而默认加载,到卡片的左边或右边的第二张时(因为设置了offset为0)才会刷新adapter,解决办法来了
在fragment中onpageSelected方法中监听position,在adapter中通过设置的tag获取currentPage,如果等于当前的position,返回POSITION_NONE,这是adapter就会刷新item了!
好了,以上就是大致碰到的问题了,一些小问题想不起来就不一一描述了,希望能给正在用优酷视频或将要用优酷视频的小伙伴给予帮助,不是打广告,不是打广告,不是打广告,重要的事情一定要说三遍!