前面扯了这么多蛋,还说直切正题比较好,不然可能会有人不耐烦直接拿把下面砍了我!
1.直播页面的搭建
上图是某客的直播画面,咱们来好好分析每个页面模块都有什么东西,把它一一分解开来进行分析!
1.顶部模块
顶部左边是 主播头像.标题.名称 - 普通的线形布局即可实现(布局背景让UI 切个图 用点9图)
顶部右边是 成员列表信息 -用水平的recyview
顶部右边底下是 日期(水印)信息,sdk内部可提供(也可自定义)
2.中部模块
中部的礼物布局,包含着 观众信息 礼物 个数 等,这个个数可叠加,要考虑一个个队列里添加view并定时移除。
直播消息布局, 这里是直播重中之重,包含着普通的消息样式 系统消息样式,包含文字样式的处理等
3.底部模块
底部左边:输入消息按钮 , 切换软键盘方式。
底部右边分别有分享 礼物 退出 等按钮,对应着功能~~
2.分析好了,我们就开始搭建布局吧~~~
由于这个布局页面布局层次有点多,需要区分不同模块,尽量减少布局层次,做好机型适配。
我采用的方式多用include merge 这些布局样式,用的AutoLayout工具类进行屏幕进行适配,在 Relativelayout尽量用布局对齐,稍后布局xml文件分享给大家哈!
3.直播逻辑
推流端:请求推流参数->初始化直播画面->创建房间和标题->开始直播->开始连接IM接收消息>退出房间->关闭直播
拉流端 :请求拉流地址->初始化直播画面->加入房间->连接IM接收消息>退出房间->退出直播
分析了下,两者有共通之处,都要连接IM,加入房间,接收消息,退出房间 里面很多控件都是共通的 所以我打算写一个基类 抽离两者方法 即可,不同之处即用复写即可。
废话少说 ~demo代码 迟点更新到我的github上哈,有问题可以提出下问题哈,一起交流交流!!!
敲不动代码了,啊, 我还有一个Bug没改啊·!我还要写啥么,wait for me!
直播代码 跳转地址 LiveDemo–点我点我