android 直播间小窗口_android 直播间小窗口


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

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

就类似这样的


android 直播间小窗口_android 直播间小窗口_02

重码保护


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

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

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

如果这样做,需要处理:

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

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

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

需要处理的有:

* 布局最上层添加和小窗一样大小的小窗,这里统称 小窗2,原小窗成为小窗1第一次点击时* 大窗停止播放源流* 小窗1变大* 小窗2显示出来* 小窗2播放大窗原来的流第二次点击时* 小窗2停止播放流* 小窗2隐藏* 大窗播放原流* 小窗1变小结束连麦时,小窗1 小窗2消失

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

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

需要处理的有

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

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

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

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

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


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