目录
客户端实现:
高能用户入口实现逻辑:
接口服务信息(服务端下发):
执行方案:
(1)数据类新增服务端下发字段
编辑
(2) UI添加
寻找思路:
(3)超能用户icon显示逻辑
找到url数据链路
icon_show数据链路
(4)添加跳转逻辑
客户端实现:
- 在榜单内用户荣誉中间加入高能用户按钮(icon仅主播和用户主态可见)
- 神秘人不显示高能用户按钮
- 点击按钮即可跳转高能用户榜单
高能用户入口实现逻辑:
接口服务信息(服务端下发):
客户端用户数据,是服务端随时下发更新的
用户App通过网络请求接口获取《服务端的下发数据》来更新URI和实现具体操作
执行方案:
~对应位置显示icon(已实现)
~添加神秘人和show_icon监控(已实现)
~设置点击事件成功跳转(已实现)
~加入点击埋点(已添加)
(1)数据类新增服务端下发字段
@JvmField
@JSONField(name = "服务端定义字段名称")
BilLiveContributionRank中添加字段icon_jpg和icon_jump_url(通用配置)
BiliLiveMobileRank.RankItem添加字段icon_show(个体用户)
(2) UI添加
寻找思路:
在Android Studio的Running Device添加数据线连接设备;
通过Toggle Layout Inspector找到对应控件位置
找到解析此整个xml文件的代码位置
文件夹下定位xml文件位置,使用select Opened File
选中xml文件,使用Alt+F7 或 Find Usages找打具体解析xml资源位置
如图:
处理解析位置,位于ContributionTopRankHolder类内部,因此定位到View代码位置
(3)超能用户icon显示逻辑
找到url数据链路
在具体业务逻辑实现位置,通过数据链路获取
在LiveRoomGoldRankFragmentV4中golaRankData就是相关数据类的livedata形式,也是获取到的下发数据,后续直接调用使用即可
接口获取网络数据-》ViewModel回调拿到-》传递给FragmentA-》FragmentA初始化FragmentB为B中对应属性赋值,B最终拿到网络数据
FragmentV4中一个属性goldRankData疑似
从GoldPageV2的属性rankData拿到的值
GoldPageV2实例化的时候,调用ViewModel中值为其赋值
在网络接口中,回调数据赋值给mContributionRankData
数据源-网络接口请求数据
icon_show数据链路
因为icon_show属于个人用户字段,onBind方法内获取每个用户RankTopData
找到RankTopData数据类实例化
发现在一个Observer调用的get方法
又回到goldRankData,只要他变化则触发上面接口实现
所以数据源还是最终又从goldRankData链路得到。
(4)添加跳转逻辑
利用接口ILiveContributionApiProvider回调
接口方法navToSuperUserEvent,分别在播端,看端实现跳转逻辑 看端在LiveRoomTabPageLandFragment实现接口,并添加埋点
播端在LiveStreamRankPanel实现接口并添加埋点
(5)具体方法体