Android为应用添加数字角标的简单实现
角标,英语是badge,也就是“徽章,像章,奖章; 象征,标记”的意思。
创新互联是一家网站设计公司,集创意、互联网应用、软件技术为一体的创意网站建设服务商,主营产品:成都响应式网站建设、品牌网站设计、成都营销网站建设。我们专注企业品牌在网站中的整体树立,网络互动的体验,以及在手机等移动端的优质呈现。网站设计制作、成都网站制作、移动互联产品、网络运营、VI设计、云产品.运维为核心业务。为用户提供一站式解决方案,我们深知市场的竞争激烈,认真对待每位客户,为客户提供赏析悦目的作品,网站的价值服务。
效果图
可以看到图中的环信单聊这个app右上角的红色的圆圈,里面有6这个数字的,就是一种角标。
一般来说,应用的角标是用来标记有多少条提醒(Notification)没读(unread),一旦点击提示进应用阅读了,角标也会消失。
一些必要的说明
角标原本是苹果的iOS中的东西,Android原生并不支持角标,因为Google的意思是让大家用Notification(提示栏)即可,不过无妨,厉害的Android第三方厂商可以通过在自定义的Launcher(启动器)中操作来实现添加角标。
原理
添加角标的原理就是发送一个Broadcast(广播),在广播的Intent中指定需要被添加角标的应用的packageName(包名),className(类名),count(角标数目)。当然了,不同厂商的手机的角标操作的Intent的action是不一样的。
在AndroidManifest.xml中添加读取和写入角标的权限:
设置角标和清除角标的工具类
public class BadgeUtils { private static final String INTENT_ACTION = "android.intent.action.BADGE_COUNT_UPDATE"; private static final String INTENT_EXTRA_BADGE_COUNT = "badge_count"; private static final String INTENT_EXTRA_PACKAGENAME = "badge_count_package_name"; private static final String INTENT_EXTRA_ACTIVITY_NAME = "badge_count_class_name"; //设置角标 public static void setBadgeCount(Context context, int badgeCount) { Intent intent = new Intent(INTENT_ACTION); intent.putExtra(INTENT_EXTRA_BADGE_COUNT, badgeCount); intent.putExtra(INTENT_EXTRA_PACKAGENAME, getComponentName(context).getPackageName()); intent.putExtra(INTENT_EXTRA_ACTIVITY_NAME, getComponentName(context).getClassName()); context.sendBroadcast(intent); } //清除角标 public static void removeBadge(Context context){ setBadgeCount(context,0); } //获取ComponentName private static ComponentName getComponentName(Context context) { return context.getApplicationContext().getPackageManager() .getLaunchIntentForPackage(context.getApplicationContext().getPackageName()) .getComponent(); } }
注意:
因为不同手机厂商的action不同,所以可能导致某些手机不能使用,在此推荐一个github的第三方库:https://github.com/leolin310148/ShortcutBadger
github地址:https://github.com/zhouxu88/AppBadge
完整demo下载地址:AppBadge_jb51.rar
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持创新互联。
本文标题:Android为应用添加数字角标的简单实现
网站地址:http://scyanting.com/article/ieegeo.html