【Interface&navigation】创建一个可扩展的通知(38)


基本通知通常包括标题,文本行以及用户可以响应的一个或多个动作。要提供更多信息,您还可以通过应用此页面中所述的多个通知模板之一来创建大型可扩展通知。

首先,使用“创建通知”中所述的所有基本内容构建 通知。然后,setStyle()使用样式对象调用并提供与每个模板对应的信息,如下所示。

添加大图像


要在通知中添加图像,请传递NotificationCompat.BigPictureStyleto 的实例 setStyle()。

Notification notification = new NotificationCompat.Builder(mContext, CHANNEL_ID)
        .setSmallIcon(R.drawable.new_post)
        .setContentTitle(imageTitle)
        .setContentText(imageDescription)
        .setStyle(new NotificationCompat.BigPictureStyle()
               .bigPicture(myBitmap))
        .build();

要在折叠通知时使图像显示为缩略图(如图1所示),请调用setLargeIcon()并传递图像,但也可以调用 BigPictureStyle.bigLargeIcon()并传递它,null以便在扩展通知时大图标消失:

Notification notification = new NotificationCompat.Builder(mContext, CHANNEL_ID)
        .setSmallIcon(R.drawable.new_post)
        .setContentTitle(imageTitle)
        .setContentText(imageDescription)
        .setLargeIcon(myBitmap)
        .setStyle(new NotificationCompat.BigPictureStyle()
                .bigPicture(myBitmap)
                .bigLargeIcon(null))
        .build();

【Interface&navigation】创建一个可扩展的通知(38)
图1.使用的通知 NotificationCompat.BigPictureStyle

添加大块文本


应用于NotificationCompat.BigTextStyle通知的扩展内容区域中的显示文本:

Notification notification = new NotificationCompat.Builder(mContext, CHANNEL_ID)
        .setSmallIcon(R.drawable.new_mail)
        .setContentTitle(emailObject.getSenderName())
        .setContentText(emailObject.getSubject())
        .setLargeIcon(emailObject.getSenderAvatar())
        .setStyle(new NotificationCompat.BigTextStyle()
                .bigText(emailObject.getSubjectAndSnippet()))
        .build();

【Interface&navigation】创建一个可扩展的通知(38)
图2.使用的通知 NotificationCompat.BigTextStyle

提示: 要在文本中添加格式(粗体,斜体,换行符等),可以 使用HTML标记添加样式。

创建收件箱样式的通知


NotificationCompat.InboxStyle如果要添加多个简短摘要行(例如来自传入电子邮件的摘要),请应用于通知。这允许您添加多个内容文本,每个内容文本被截断为一行,而不是由提供的一行连续文本 NotificationCompat.BigTextStyle。

要添加新行,请addLine() 最多调用6次。如果添加超过6行,则只显示前6行。

Notification notification = new NotificationCompat.Builder(mContext, CHANNEL_ID)
        .setSmallIcon(R.drawable.new_mail)
        .setContentTitle("5 New mails from " + sender.toString())
        .setContentText(subject)
        .setLargeIcon(aBitmap)
        .setStyle(new NotificationCompat.InboxStyle()
                .addLine(messageSnippet1)
                .addLine(messageSnippet2))
        .build();

提示: 您可以通过添加样式和HTML标记(例如粗体主题)来区分每行中的消息主题和消息 。

在通知中显示对话


应用于NotificationCompat.MessagingStyle显示任意数量的人之间的连续消息。这对于消息传递应用程序是理想的,因为它通过分别处理发件人姓名和消息文本为每条消息提供一致的布局,并且每条消息可以是多行长。

要添加新消息,请调用addMessage(),传递消息文本,接收时间和发件人姓名。您也可以将此信息作为NotificationCompat.MessagingStyle.Message对象传递。

NotificationCompat.MessagingStyle.Message message1 =
        new NotificationCompat.MessagingStyle.Message(messages[0].getText(),
                                                      messages[0].getTime(),
                                                      messages[0].getSender());
NotificationCompat.MessagingStyle.Message message2 =
        new NotificationCompat.MessagingStyle.Message(messages[1].getText(),
                                                      messages[1].getTime(),
                                                      messages[1].getSender());

Notification notification = new NotificationCompat.Builder(mContext, CHANNEL_ID)
        .setSmallIcon(R.drawable.new_message)
        .setStyle(new NotificationCompat.MessagingStyle(resources.getString(R.string.reply_name))
                .addMessage(message1)
                .addMessage(message2))
        .build();

【Interface&navigation】创建一个可扩展的通知(38)
图3.使用的通知 NotificationCompat.MessagingStyle

注意:使用时NotificationCompat.MessagingStyle,给予setContentTitle()和的 任何值 setContentText()都将被忽略。

(可选)您可以调用setConversationTitle()添加会话上方显示的标题。这可能是用户创建的组名称,如果没有特定名称,则可能是对话中的参与者列表。不要为一对一聊天设置会话标题,因为系统使用此字段的存在作为会话是一个组的提示。

此样式仅适用于运行Android 7.0(API级别24)及更高版本的设备。使用NotificationCompat上面演示的兼容性库()时,MessagingStyle的通知将自动回退到支持的扩展通知样式。

在为聊天对话构建此类通知时,您还应 添加直接回复操作。

使用媒体控件创建通知


应用于NotificationCompat.MediaStyle显示媒体播放控件和跟踪信息。

调用addAction()多达五次,最多可显示五个独立的图标按钮。并致电 setLargeIcon()设置专辑封面。

与其他通知样式不同,MediaStyle还允许您通过指定也应出现在折叠视图中的三个操作按钮来修改折叠大小的内容视图。为此,请提供操作按钮索引setShowActionsInCompactView()。

如果通知表示活动的媒体会话,则还使用附加 MediaSession.Token到通知 setMediaSession()。Android然后将其识别为表示活动媒体会话的通知并相应地做出响应(例如,通过在锁定屏幕中显示专辑图片)。

Notification notification = new NotificationCompat.Builder(context, CHANNEL_ID)
        // Show controls on lock screen even when user hides sensitive content.
        .setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
        .setSmallIcon(R.drawable.ic_stat_player)
        // Add media control buttons that invoke intents in your media service
        .addAction(R.drawable.ic_prev, "Previous", prevPendingIntent) // #0
        .addAction(R.drawable.ic_pause, "Pause", pausePendingIntent)  // #1
        .addAction(R.drawable.ic_next, "Next", nextPendingIntent)     // #2
        // Apply the media style template
        .setStyle(new NotificationCompat.MediaStyle()
                .setShowActionsInCompactView(1 /* #1: pause button */)
                .setMediaSession(mMediaSession.getSessionToken()))
        .setContentTitle("Wonderful music")
        .setContentText("My Awesome Band")
        .setLargeIcon(albumArtBitmap)
        .build();

【Interface&navigation】创建一个可扩展的通知(38)
图4.使用的通知 NotificationCompat.MediaStyle

有关更多信息,请阅读将MediaStyle通知与前台服务一起使用。

注意:除非您使用设置其他类别,否则使用创建的通知NotificationCompat.MediaStyle将其类别设置为。CATEGORY_TRANSPORTsetCategory()

联系我

QQ:94297366
微信打赏:https://pan.baidu.com/s/1dSBXk3eFZu3mAMkw3xu9KQ

公众号推荐:

【Interface&navigation】创建一个可扩展的通知(38)

转载于:https://blog.51cto.com/4789781/2153943

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值