连麦系列之小窗口点击切换


连麦系列之小窗口点击切换


上篇文章给连麦功能梳理了下思路,不知道小伙伴们有没有什么自己的观点呢?如果有好的想法或者建议可以评论或者私信我哦~

本篇文章来总结一下,在连麦状态下,小窗口点击,切换与大窗的视图,然后再点击,再切回来。

就类似这样的


连麦系列之小窗口点击切换

重码保护


做的时候其实是有好几个想法的,既然是总结篇,那么就把做时候的想法罗列一下吧!

方案1、在点击小窗时,大窗和小窗切换流播放

比如现在是主播端,切换时,大窗播放小主播的流,小窗播放大主播的流

如果这样做,需要处理:

<code>大窗先停止播放原流
大窗播放对方流
小窗停止播放原流
小窗播放对方流
在连麦关闭时,大窗恢复播放原流,小窗停止播放然后退出
/<code>

因为感觉频繁切换流会影响性能,所以又想了方案2

方案2、页面最上面一层覆盖一层和小窗一样大小的小窗,然后点击时控制两个小窗的流、大小、最外层小窗的显示、隐藏

需要处理的有:

<code>* 布局最上层添加和小窗一样大小的小窗,这里统称 小窗2,原小窗成为小窗1

第一次点击时
* 大窗停止播放源流
* 小窗1变大
* 小窗2显示出来
* 小窗2播放大窗原来的流
第二次点击时
* 小窗2停止播放流
* 小窗2隐藏
* 大窗播放原流
* 小窗1变小
结束连麦时,小窗1 小窗2消失
/<code>

这样做,没有了切换流,但是步骤就稍微繁琐了,于是想到了方案3

方案3、点击切换大小窗的层级、大小

需要处理的有

<code>* 大窗变小窗大小,然后层级跑到最外层
* 小窗变大窗大小,然后层级跑到最里层
* 结束连麦时,小窗消失,大窗恢复
/<code>

方案三即不涉及切换流带来的反应慢的问题,处理的步骤也是很少的,所以就选择了方案三。

那么问题就很好解决了,切换层级方法

view.setZ(100.f);是将view 切换到最外层view.setZ(0.f);是将view切换到最里层

使用这个方法,再结合 layoutparams 就完成上图的效果了


有遇到这种情况的小伙伴快来试试看吧,如果有更好的思路还望评论下,感谢~~


分享到:


相關文章: