一个简单的通用红点模块方案


前言

最近正在筹备一个3D次世代的手游项目,项目起步阶段涉及很多框架和通用的模块封装设计,在此期间发现在网络上收集相关资源比较麻烦,也就诱发了单开一个博客记录项目筹备阶段所收集到的一些文档的想法。

今天说一下游戏开发过程中经常用到的红点推送。


一、红点是什么?

红点推送,经常用在各类APP中,无论游戏还是社交软件,均可看到它的存在;
红点系统设计初衷大致为了达成一下两种目的:

  1. 作为一种通知推送形式,告知用户有未查阅的信息;
  2. 为重要的业务入口导流,增加点击量,进而增大业务曝光率

在游戏项目的应用一般就包括:

  • 引导玩家领取奖励
  • 引导玩家体验全新开启的系统
  • 引导玩家查看新的活动
  • 提醒玩家玩法次数已更新
  • 提醒玩家有新的提升可操作

基于以上,我们可以看到红点系统基本可以说是贯穿了游戏大部分系统,那么我们也就产生了希望能提前设计一个通用的红点模块,约定各种规则后方便后续开发过程中进行模块化调用;

二、红点分类

红点的触发条件我们先定义为均通过各个模块自行决定何时何故触发;
通用模块负责红点的表现逻辑以及红点的上报叠加逻辑处理;
在这里我们暂时将小红点归类为三种通用红点类型:

1.常规小红点

常规小红点:即为单纯的小红点,无任何附加信息显示;在这里插入图片描述

2.数字红点

数字红点:在红点基础上增加了数量信息显示(数字最大三位);
在这里插入图片描述

3.文字信息类红点

文字信息类红点:通过文字标签的形式代表红点显示;
在这里插入图片描述

红点类型在模块封装时约定定义参数,其他系统进行调用时根据调用参数显示对应的红点;
红点的显示位置在各个系统中自行预留锚点(一般根据图标类型进行分类给予默认锚点规则即可);

可通过表格的方式,配置新增红点类型以及调用的红点资源;

类型ID红点备注父类型优先权重红点资源
1小红点11redpoint.png
2数字红点22Nu_redpoint.png
3"新"标记36Xin_redpoint.png
4"限时"标记34Xian_redpoint.png
5"推荐"标记35Jian_redpoint.png
6"hot"标记33Hot_redpoint.png

类型ID:对应各个系统调用时的传参类型;
红点备注:主要给维护者看的备注;
父类型:对应上面定义的三种红点大类型,控制整个子类型的基础逻辑;
优先权重:主要作用在父级按钮上出现两个文本红点时的显示优先级控制;
红点资源:主要用于各种红点资源维护;

三、红点通用规则和叠加

通用规则:

  • 红点由触发点逐级向上传递(直到达到顶层1级入口);
  • 至上而下界面展开时,隐藏展开的父级按钮红点(比如当一个界面的切页按钮上有红点,展开切页后,对应切页的红点隐藏);

叠加规则:

  • 不同类型的红点叠加时根据优先权重配置显示优先级(取优先级高的显示);
  • 相同类型红点叠加根据其大类型调用规则,规则如下:
父类型叠加规则
小红点叠加显示仍为单一小红点
数字红点数字数值累加显示
文本红点叠加显示仍为单一对应文本小红点

在这里插入图片描述

困了,红点清楚和生命周期就不写了,临时起意想要写写画画,也就没啥排版格式了,大家将就看~

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
好的,你想要在安卓应用中实现一个消息小红点是吗?可以通过步骤来实现: 1. 在你的应用布局文件中,找需要显示小红点的视图组件,一个图标或者按钮。 2. 在你的活动()或者片段(Fragment中,找到对应的视图组件,并获取它的引用。 3. 创建一个红点的视图,并设置它的宽度、高度和背景颜色等属性。 4. 根据消息数量动态地决定是否显示小红点。你可以根据业务逻辑来判断是否有新消息到达并决定是否显示小红点。 5. 如果需要显示小红点,将它添加到对应视图组件的布局中,并设置正确的位置。 下面是一个简单的示例代码,演示如何实现消息小红点: ```java // 获取视图组件的引用 Button messageButton = findViewById(R.id.message_button); // 创建小红点视图 View dotView = new View(this); dotView.setBackgroundResource(R.drawable.red_dot); int dotSize = getResources().getDimensionPixelSize(R.dimen.red_dot_size); dotView.setLayoutParams(new ViewGroup.LayoutParams(dotSize, dotSize)); // 根据消息数量判断是否显示小红点 int messageCount = getMessageCount(); if (messageCount > 0) { // 添加小红点到布局中 messageButton.addView(dotView); } // 其他代码... ``` 上述代码中,我们假设有一个按钮 `messageButton`,当有新消息到达时,会显示小红点。你需要替换示例中的 `R.id.message_button` 为你应用中对应的视图组件的 ID,以及根据你的业务逻辑来获取消息数量。 希望这个示例对你有帮助!如有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值