UI层的信息推送,小红点系统
小红点系统
模块预览图:
图1
图2
图1为子层,图2为主层,当子层拥有信息时,往主层通知。
思路:子层绑定主层。当消息状态来了,通知主层,主层亮起红点。这就意味着,我们要把这个系统写成树形结构。
首先我们要有个根节点,根节点下有许多子节点,子节点下又会拥有许多子节点。这点必须要清楚。
理清上面关系后,开始整理代码
首先:
我们需要创建和绑定根节点
当我传入的第一个节点是空的,那么默认设置它为根节点,否则就会往它下面增加子节点
再然后就是一个创建普通节点的重载方法
这里我们会通过它的Key去找到对应的父节点,找到后,往父节点下创建子节点。
然后我们的每个节点都会有个小红点,所以我们需要把对应的节点绑定对应的UI。包括节点的获取
public class BaseNode{public string key;public BaseNode parent;public BaseNode rootNode;public bool nodeValue;public bool localValue;public GameObject ui;public List<BaseNode> childNode_list = new List<BaseNode>();public BaseNode() { }public BaseNode(string urlKey, bool value){this.key = urlKey;this.nodeValue = value;}/// <summary>/// 根据Key找到父节点/// </summary>/// <param name="nKey"></param>public void AddChild(BaseNode node){if (!this.childNode_list.Contains(node)){this.childNode_list.Add(node);node.parent = this;}this.Update();}protected void Update(){this.nodeValue = this.localValue;if (!this.localValue){for (int i = 0; i < this.childNode_list.Count; i++){this.nodeValue |= this.childNode_list[i].nodeValue;}}UpdateUI();if (this.parent != null){this.parent.Update();}}public void SetValue(bool vals){this.localValue = vals;Update();}private void UpdateUI(){if (ui != null){ui.SetActive(this.nodeValue);}}public void BindUI(GameObject ui){this.ui = ui;UpdateUI();}}
上面的代码是节点类,这节点类里面包含它所有的子节点,同理,如果是子节点,那么它也会包含它所有的子节点。
AddChild : 添加节点,当我们需要动态添加节点,可添加进入后调用Update的更新节点
this.localValue : 表示当前节点的状态,true是亮起,false是熄灭。都会调用Update去更新
BindUI:绑定节点对应的小红点,通过 SetValue 来控制状态
大致就是这样,不是很难,当初我竟然想去写二叉树,脑袋秀了
UI层的信息推送,小红点系统相关推荐
- 信息推送分发服务器系统,消息事件的分发方法、分发平台、系统及服务器专利_专利查询 - 天眼查...
1.一种消息事件的分发方法,其特征在于,包括:如果监测到消息发布服务发布的消息事件,获取预先存储的配置信息:其中,所述配置信息包括所述消息发布服务,以及所述消息发布服务对应的至少一个消息订阅服务:根据 ...
- 基于位置服务的信息推送系统设计
1.1 研究目的与意义 随着空间信息技术和网络技术的快速发展,普通的地图信息展示已经无法满足人们的需求.GIS(Geographic Information System)作为拥有处理和分析空间信息 ...
- 微信公众号信息推送实现业务解耦
序 最近第三方服务需要增加微信模板信息推送能力,要与业务系统解耦.微服务架构的springCloud下第三方服务增加能力. 一.技术选型 看了下微信公众号的信息推送开发文档,发现不难,就是一个个接口对 ...
- bmob云服务器信息推送,FAQ-Bmob后端云
Q: Bmob 平台是做什么的? A: Bmob 是多租户无模式的移动应用云服务,它可以让 android/IOS/WP 等移动开 发者无需掌握任何一门服务器开发语言(如 JAVA/PHP 等),将注 ...
- Github系列之二:开源 一行代码实现多形式多动画的推送小红点WZLBadge(iOS)
更新日志 V1.2 2015.09.25 1.UITabBarItem badge is supproted; 2.Enable change badge properties when badge ...
- php 微信客服信息推送失败 微信重复推送客服消息 40001 45047
1 /*** 2 * 微信客服发送信息 3 * 微信客服信息推送失败 微信重复推送客服消息 40001 45047 4 * 递归提交到微信 直到提交成功 5 * @param $openid 6 * ...
- 钉钉 php 推送,微信模板推送,钉钉信息推送
上午的时候看到有朋友需要微信推送,正好我也需要,之前一直用 Server 酱的,但是最近用不了,想找一个替代品,一开始准备选择钉钉,除了打卡,我很少使用钉钉,邮件提醒是备用方案,其实和 Server ...
- 微信开发3之php模板信息推送
模板信息推送:需要在后台开通了模板消息推送接口 PHP代码如下: <?php $appid="wxxxxxxxxxxxxxxxxxx"; //填写微信后台的appid $ap ...
- 【imessage群发苹果推信】[iMessageSuspic](Apple推送服务)使用信息推送服务
Apple信息推送服务(ApplePushNotificationservice), 由Apple根据官方新闻服务提供. 交货包括顶部,声音和Badgenumber比例指南(),应用程序可以在任何条件 ...
最新文章
- 【iOS】Mapkit的使用:地图显示、定位、大头针、气泡等
- python文本替换 数据库_Python pptx(Power Point)查找和替换文本(ctrl+H)
- php python 函数互相翻译的网站
- android 观察者更新ui,android通过观察者模式实现更新UI
- 阿里云ECS在CentOS 6.9中使用Nginx提示:nginx: [emerg] socket() [::]:80 failed (97: Address family not supported
- AT2371-[AGC013E]Placing Squares【矩阵乘法】
- LeetCode 837. 新21点(动态规划)
- [转]linux之top命令
- 硅谷还是程序员的“圣地”吗?
- 第三届 Apache Flink 极客挑战赛暨 AAIG CUP 攻略发布!
- VS中javascript注释快捷键
- dubbo接口调试工具
- 老男孩教育33期周末班-决心书
- RSF 分布式 RPC 服务信息的暴露
- 苹果录屏功能没有声音_手机录屏没有声音如何处理?可以从这三个方面入手看看...
- ppt文件太大如何压缩变小?
- Windows下控制网络连接的常用命令
- 十、纺织品库存管理系统全部功能展示
- php 原理 淘口令 解密_淘口令解析 - super19911115的个人空间 - OSCHINA - 中文开源技术交流社区...
- 算法-动态规划-股票交易