当前位置: 首页 > news >正文

想一想android桌面的未读计数角标应该如何设计呢?

背景:

近来有vip学员朋友询问到一个关于国内手机厂商是如何实现的角标的,他们是否有统一的角标方案?具体应该如何实现桌面的角标国内呢?
在这里插入图片描述

关于以上桌面角标实现问题,其实还算是一个手机国内的硬性指标,因为用户们看app是否有新消息都是靠app未读角标进行的,但是比较遗憾是google针对这种未读角标,并没有在最开始进行统一设计和用户接口,导致国内手机厂商很多都是各自有自己角标方案,这个无疑对手机厂商还是app厂商都是一个非常大的痛点。

痛点1:对于手机厂商,需要维护自己未读角标方案,还需要考虑的自己的手机出货量,这些第三方app是否可以适配,也就是无法保证很多app进行适配,可能导致很多app无法显示角标,用户体验不好。

痛点2:很多第三方app互联网厂商,因为各个手机厂商的角标方案都不尽相同,所以不得不对针对市面上各个手机进行挨个适配。维护成本很大

上面其实就是目前国内app角标的一个情况,其实还是非常希望google这块可以完全做好这一块未读计数角标的统一,让各个厂商和app都不用在这个国内上繁杂适配。

说完了大概目前角标情况,我们回到我们能做的技术层面,设备厂商的Launcher应该如何设计一个好的角标功能呢?让所有第三方应用适配起来方便,自身逻辑也很清晰合理呢?

这个答案我这边建议大家可以考虑去参考国内几个手机大厂的的角标sdk适配手册,这里我特别推荐大家去看看华为的角标适配sdk,看完后其实我相信你就可以推测出华为的角标在桌面的实现方案,自己也可以实现一个类似的角标方案。
下面给大家展示一下华为的角标适配sdk:

1. 简介

角标是华为桌面提供给各应用一种展示未读信息的操作,以未读信息的数字合成一张图片并绘制到该应用图标的右上角。

2. 业务样例

在这里插入图片描述

1. 概述

角标是华为桌面提供给各应用显示未读消息用的,会在应用图标右上角绘制一张消息条数的图标。

1.1 架构

下图展示了华为桌面角标SDK 的架构。
在这里插入图片描述

1.2 支持平台

系统版本:EMUI4.1 及以上

桌面版本:6.3.29

支持设备:华为设备

2. 角标功能开发指南

1、声明权限
< uses - permission android: name = "android.permission.INTERNET" / ><uses - permission android: name = "com.huawei.android.launcher.permission.CHANGE_BADGE " / >
2、在需要进行角标显示地方,采用如下方法传递数据给华为桌面应用。
Bundle extra = new Bundle();
extra.putString("package", "xxxxxx");
extra.putString("class", "yyyyyyy");
extra.putInt("badgenumber", i);
context.getContentResolver().call(Uri.parse("content://com.huawei.android.launcher.settings/badge/"), "change_badge", null, extra);

关键参数说明:

package:应用包名
class:桌面图标对应的应用入口Activity类
badgenumber:角标数字

示例:

boolean mIsSupportedBade = true;
if (mIsSupportedBade) {setBadgeNum(num);
}
/** set badge number*/
public void setBadgeNum(int num) {try {Bundle bunlde = new Bundle();bunlde.putString("package", "com.test.badge"); // com.test.badge is your package namebunlde.putString("class", "com.test. badge.MainActivity"); // com.test. badge.MainActivity is your apk main activitybunlde.putInt("badgenumber", num);this.getContentResolver().call(Uri.parse("content://com.huawei.android.launcher.settings/badge/"), "change_badge", null, bunlde);} catch (Exception e) {mIsSupportedBade = false;}
}
3、特殊情形考虑:

对于第三应用打开和退出时,是否还继续显示角标取决应用传递的值(badgenumber为0时,不显示角标;badgenumber大于0时,显示角标)。
当第三方应用package和class发生变化时,需传递该变化后的信息。

参考地址:
https://developer.huawei.com/consumer/cn/doc/Corner-Guides/30802

相关文章:

  • 【每日一题 | 2025年5.19 ~ 5.25】动态规划相关题
  • Lua5.4.2常用API整理记录
  • static详解
  • 固态硬盘颗粒类型、选型与应用场景深度解析
  • Muduo网络库流程分析
  • 【Linux学习笔记】深入理解ELF和动静态库加载原理
  • python 程序实现了毫米波大规模MIMO系统中的信道估计对比实验
  • MySQL索引深度解析:从原理到实践
  • Maven Profile高级策略与冲突解决
  • 修复ubuntu server笔记本合盖导致的无线网卡故障
  • 电子学会的二级考试复习资料
  • 基于微信小程序的漫展系统的设计与实现
  • 【从0到1搞懂大模型】chatGPT 中的对齐优化(RLHF)讲解与实战(9)
  • 北京航空航天大学保研上机真题
  • 相机内参 opencv
  • Linux架构篇、第五章_03gitlab的搭建
  • Linux中的文件系统和软硬连接
  • 豆瓣电视剧数据工程实践:从爬虫到智能存储的技术演进(含完整代码)
  • 【linux】mount命令
  • 【TDengine源码阅读】taosMemoryDbgInit函数
  • wordpress默认后台路径/宁波优化网页基本流程
  • 网站制作多少钱方案/百度推广后台登录首页
  • 游戏网站搭建需要多少钱/百度权重什么意思
  • 哪里有广告设计制作的培训/seo新方法
  • 上海企业网站建设哪家好/八爪鱼磁力搜索引擎
  • 东莞高端品牌网站建设/微信管理系统登录入口