想一想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 name
        bunlde.putString("class", "com.test. badge.MainActivity"); // com.test. badge.MainActivity is your apk main activity
        bunlde.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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千里马学框架

帮助你了,就请我喝杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值