Android为应用添加数字角标的简单实现

角标,英语是badge,也就是“徽章,像章,奖章; 象征,标记”的意思。

效果图

可以看到图中的环信单聊这个app右上角的红色的圆圈,里面有6这个数字的,就是一种角标。

一般来说,应用的角标是用来标记有多少条提醒(Notification)没读(unread),一旦点击提示进应用阅读了,角标也会消失。

一些必要的说明

角标原本是苹果的iOS中的东西,Android原生并不支持角标,因为Google的意思是让大家用Notification(提示栏)即可,不过无妨,厉害的Android第三方厂商可以通过在自定义的Launcher(启动器)中操作来实现添加角标。

原理

添加角标的原理就是发送一个Broadcast(广播),在广播的Intent中指定需要被添加角标的应用的packageName(包名),className(类名),count(角标数目)。当然了,不同厂商的手机的角标操作的Intent的action是不一样的。

在AndroidManifest.xml中添加读取和写入角标的权限:

<uses-permission android:name="com.sec.android.provider.badge.permission.READ" />
<uses-permission android:name="com.sec.android.provider.badge.permission.WRITE" />

设置角标和清除角标的工具类

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Android实现购物车及其他功能的角标

    1.先来张效果图 2.自定义一个角标工具类BottomBarView . ** * Created by Administrator on 2016/12/27. * 角标工具类 */ public class BottomBarView extends RelativeLayout { private Context context; private TextView bar_num; private int count = 0; public BottomBarView(Context co

  • Android 实现桌面未读角标

    在小米 三星  索尼 手机 :图标上显示数字(未读消息数):这部分代码,是从QQ5.0.apk中找的. 小米已经测试通过了, 三星和索尼的,由于没有相应的手机,没有测试,有的,可能修改一下代码(判断是什么手机的代码), 测试一下,可以在回复一下测试结果,谢谢 1.原生系统(原生的Launcher ),只能修改快捷方式,增加和删除都会有toast提示 2.小米 三星  索尼 手机: 自定义的launcher:  发送显示未读消息数的action已经不同了.具体可以去看代码... 判断手机的代码:

  • Android为应用添加数字角标的简单实现

    角标,英语是badge,也就是"徽章,像章,奖章: 象征,标记"的意思. 效果图 可以看到图中的环信单聊这个app右上角的红色的圆圈,里面有6这个数字的,就是一种角标. 一般来说,应用的角标是用来标记有多少条提醒(Notification)没读(unread),一旦点击提示进应用阅读了,角标也会消失. 一些必要的说明 角标原本是苹果的iOS中的东西,Android原生并不支持角标,因为Google的意思是让大家用Notification(提示栏)即可,不过无妨,厉害的Android第

  • Android 实现带角标的ImageView(微博,QQ消息提示)

    角标绘制过程:用画笔量出一个字符的宽度作为角标背景的半径(R),然后判断传入字符串的总长度 如果只有一位字符:那么就以 R 为半径,画一个圆,然后在圆中写上数字 如果有两位以上的字符,就不能单纯用一个圆了,用画笔测量字符串的完整长度( len ),然后在右上角画一个圆,在这个圆的圆心左边 len 长度的位置 作为圆心再画一个圆,最后以这个两个圆的上下顶点(一共四个)构成一个矩形,进行填充 源码地址:https://github.com/SiKang123/AndroidToolBox 效果如下:

  • android实现添加耳机状态图标的方法

    本文实例讲述了android实现添加耳机状态图标的方法.分享给大家供大家参考.具体如下: 原生态的android系统是没有耳机插入或未插入的状态指示的,本文就是讲解如何添加耳机插入的状态指示.效果图如下 如图,当插入耳机后,在status bar上出现了一个耳机的图标. 这个耳机的图标和sim卡信号等图标在status bar的右边,因此这个实现肯定不是通过notification实现的,那么添加这个功能只能在framwork里面寻找了.具体的修改步骤如下: 1.在frameworks/base

  • 小程序角标的添加及绑定购物车数量进行实时更新的实现代码

    首先介绍一下角标的方法: // tabBer角标 index代表的是第几个tabber text表示角标内容 wx.setTabBarBadge({ index: 2, text: '1' }) } { wx.removeTabBarBadge({ //移除指定位置的tabbar右上角的标志 index: 2, }) 接下来介绍怎么实现绑定购物车数量进行实时更新: 这里的话代码在App.js里,这是因为我的tabbar底部的是需要填充数量,所以为了实时监听,我在APP.js里面做了如下操作 //

  • Android数据加密之Base64编码算法的简单实现

    前面学习总结了平时开发中遇见的各种数据加密方式,最终都会对加密后的二进制数据进行Base64编码,起到一种二次加密的效果,其实呢Base64从严格意义上来说的话不是一种加密算法,而是一种编码算法,为何要使用Base64编码呢?它解决了什么问题?这也是本文探讨的东西? 什么Base64算法? Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,Base64并不是安全领域的加密算法,其实Base64只能算是一个编码算法,对数据内容进行编码来适合传输.标准Base64编码解码无需额外信

  • Android实现购物车添加商品特效

    一.引言 以前在饿了么上面订餐的时候,曾经看到过这么一个特效,就是将商品加入订单时,会有一个小球呈抛物线状落入购物车中,然后购物车中的数量会改变.具体的效果如下图. 效果很简单,就是一个抛物线的动画,那么我们应该用什么技术来实现呢?想了想,动画层是不个错的选择!下面开始分析及实现 二.分析 当点击购买按钮的时候,我们在布局上加入一个动画层,然后让小球在动画层上做抛物线运动,就可实现上图中的效果了. 说到做抛物线运动,当然需要数学上的一点小知识. 抛物线的原理很简单,其实就是X轴方向保持匀速线性运

  • 如何将tensorflow训练好的模型移植到Android (MNIST手写数字识别)

    [尊重原创,转载请注明出处]https://blog.csdn.net/guyuealian/article/details/79672257 项目Github下载地址:https://github.com/PanJinquan/Mnist-tensorFlow-AndroidDemo 本博客将以最简单的方式,利用TensorFlow实现了MNIST手写数字识别,并将Python TensoFlow训练好的模型移植到Android手机上运行.网上也有很多移植教程,大部分是在Ubuntu(Linu

  • 微信小程序实现可拖动悬浮图标(包括按钮角标的实现)

    在制作商城类微信小程序的过程中,我们经常会碰到需要增加可拖动悬浮图标的情况,本文简单的介绍一下可拖动悬浮按钮的实现. 运行截图: 主要代码: js: var startPoint Page({ data: { //按钮位置参数 buttonTop: 0, buttonLeft: 0, windowHeight: '', windowWidth: '', //角标显示数字 corner_data:0, }, onLoad:function(){ //定义角标数字 this.setData({ co

  • Android实现SQLite添加、更新及删除行的方法

    本文实例讲述了Android实现SQLite添加.更新及删除行的方法.分享给大家供大家参考,具体如下: SQLiteDatabase类暴露了特定的方法,如insert.delete和update等方法,这些方法包装了执行这些动作所需的SQL语句.尽管如此,execSQL方法允许你在数据库表上执行任何有效的SQL语句,而这些动作就是你想要手动执行的. 在任何时候,如果你修改了底层数据库的值,你都应该调用任一在当前表上浏览的Cursor的refreshQuery方法. 插入新行 为了创建一个新行,构

  • Android 仿微信自定义数字键盘的实现代码

    本文介绍了Android 仿微信自定义数字键盘的实现代码,分享给大家,希望对大家有帮助 最终效果: 实现这个自定义键盘的思路很简单: 要写出一个数字键盘的布局: 与 Edittext 结合使用,对每个按键的点击事件进行处理: 禁用系统软键盘. 有了思路,实现起来就不难了. 1. 实现键盘的 xml 布局 网格样式的布局用 GridView 或者 RecyclerView 都可以实现,其实用 GridView 更方便一些,不过我为了多熟悉 RecyclerView 的用法,这里选择用了 Recyc

随机推荐