堆叠通知信息

作者: Daz_ye | 来源:发表于2016-10-30 16:43 被阅读0次

    以下内容翻译自android wear的官方教程,本人水平有限,如有错误欢迎指出
    home
    以下正文


    在你的手机上,你不应该给相似的内容产生多条通知。比如用户收到了两条新信息时,你不应该生成两条信息而是一条总结性信息:“2条新消息”。


    但是总结消息在手表上是不适用的,因为如果不能在手表上阅读每条信息的细节,用户们就需要打开手机来查看消息内容。所以在手表上,你需要把所有的信息堆叠起来。被堆叠起来的信息看起来就像一张卡片,用户可以分别的查看每条信息。而且, setGroup()方法让你的app在手机上仍然显示一条总结性的消息。

    把通知添加到组里

    为了添加到正确的组,你要在调用setGroup方法的时候需要指定一个key来标识。

    final static String GROUP_KEY_EMAILS = "group_key_emails";
    
    // 建立Notification并设置到合适的组里
    Notification notif = new NotificationCompat.Builder(mContext)
             .setContentTitle("New mail from " + sender1)
             .setContentText(subject1)
             .setSmallIcon(R.drawable.new_mail)
             .setGroup(GROUP_KEY_EMAILS)
             .build();
    
    // 发送通知
    NotificationManagerCompat notificationManager =
            NotificationManagerCompat.from(this);
    notificationManager.notify(notificationId1, notif);
    

    接下来,当你在创建其他通知的时候,指定相同的key。这个通知将会和上面的这个通知堆叠起来。

    Notification notif2 = new NotificationCompat.Builder(mContext)
             .setContentTitle("New mail from " + sender2)
             .setContentText(subject2)
             .setSmallIcon(R.drawable.new_mail)
             .setGroup(GROUP_KEY_EMAILS)
             .build();notificationManager.notify(notificationId2, notif2);
    

    默认的,通知会按照你添加的顺序来排列,最新的通知会显示在最上面。你也可以通过调用 setSortKey()来按照你想要的方式排序。

    添加总结性的消息

    在你的手机上提供总结性的消息仍然是非常重要的,用setGroupSummary()来添加这个专用的总结消息。
    这个总结消息将不会出现在你的手表上,而只会出现在你的手机上。

    Bitmap largeIcon = BitmapFactory.decodeResource(getResources(),
            R.drawable.ic_large_icon);
    // 建立 InboxStyle 风格的通知
    Notification summaryNotification = new NotificationCompat.Builder(mContext)
            .setContentTitle("2 new messages")
            .setSmallIcon(R.drawable.ic_small_icon)
            .setLargeIcon(largeIcon)
            .setStyle(new NotificationCompat.InboxStyle()
                    .addLine("Alex Faaborg   Check this out")
                    .addLine("Jeff Chang   Launch Party")
                    .setBigContentTitle("2 new messages")
                    .setSummaryText("johndoe@gmail.com"))
            .setGroup(GROUP_KEY_EMAILS)
            .setGroupSummary(true)
            .build();
    notificationManager.notify(notificationId3, summaryNotification);
    

    这个通知使用了 NotificationCompat.InboxStyle,这种风格非常适用与邮件或者消息信息。你也可以使用其他在 NotificationCompat里定义的style或无style的总结消息。

    tip:如果你想得到图片上的文字效果,你可以阅读 Styling with HTML markupStyling with Spannables

    总结消息也可以通过其他各种方式影响手表上通知的样子,比如你可以设置背景图片和添加action.

    下面是添加背景图片的例子。

    Bitmap background = BitmapFactory.decodeResource(getResources(),
            R.drawable.ic_background);
    
    NotificationCompat.WearableExtender wearableExtender =
            new NotificationCompat.WearableExtender()
            .setBackground(background);
    
    // 建立InboxStyle notification
    Notification summaryNotificationWithBackground =
            new NotificationCompat.Builder(mContext)
            .setContentTitle("2 new messages")
            ...
            .extend(wearableExtender)
            .setGroup(GROUP_KEY_EMAILS)
            .setGroupSummary(true)
            .build();
    

    相关文章

      网友评论

        本文标题:堆叠通知信息

        本文链接:https://www.haomeiwen.com/subject/kikuuttx.html