【中软国际】HarmonyOS自定义常用通知栏 原创 精华
目录
前言
通知(Notification)旨在让用户以合适的方式及时获得有用的新消息,帮助用户高效地处理任务。
系统为开发者提供了不同种类的通知样式模板可以使用,开发者也可以根据自己需要自定义通知样式。
HarmonyOS通知相关类
与通知相关的主要逻辑在NotificationSlot、NotificationRequest 和 NotificationHelper这三个类中,那这三个类都有什么作用呢?下面为大家逐一介绍。
1. NotificationSlot
这是一个定义通知的主题类,它可以设置通知的特征集合,包括通知到来时的提示音调、振动、锁屏显示以及设置通知的重要级别等。一般可以在应用的AbilityPackage里设置,用以统一整个应用的通知主题特征,一个应用也可以关联多个不同NotificationSlot。
- 重点说下NotificationSlot的几个重要级别,也可以查看官方Api文档:
- LEVEL_NONE: 表示通知不发布。
- LEVEL_MIN:表示通知可以发布,但是不显示在通知栏,不自动弹出,无提示音;该级别不适用于前台服务的场景。
- LEVEL_LOW:表示通知可以发布且显示在通知栏,不自动弹出,无提示音。
- LEVEL_DEFAULT:表示通知发布后可在通知栏显示,不自动弹出,触发提示音。
- LEVEL_HIGH:表示通知发布后可在通知栏显示,自动弹出,触发提示音。
- 代码示例
关于设置呼吸灯说明,由于手上只有一部P40Pro不带呼吸灯,所以无法验证实际效果。
2. NotificationRequest
NotificationRequest是通知最主要的部分,主要设置通知的样式,HarmonyOS主要提供了6种类型的样式:普通文本NotificationNormalContent、长文本NotificationLongTextContent、图片NotificationPictureContent、多行NotificationMultiLineContent、社交NotificationConversationalContent、媒体NotificationMediaContent。另外还有一种自定义样式,这些会在后面具体介绍。
虽然通知中提供了各种属性的设置,但是一个通知对象,有几个属性是必须要设置的,其他的属性均是可选的,必须设置的属性如下:
- 小图标,使用setLittleIcon()方法设置。
- 标题,使用setTitle()方法设置。
- 文本内容,使用setText()方法设置。
调用setIntentAgent()设置通知可以触发的事件
具体API就不一一介绍了,可以参考官方
3. NotificationHelper
该静态类主要是管理通知,提供了发布、更新、删除通知等静态方法;
主要接口如下:
- publishNotification(NotificationRequest request),发布通知,当NotificationRequest被设置后,通过该接口去发布通知;
- cancelNotification(int notificationId),取消通知,每个NotificationRequest创建时都必须有一个notificationId,可以通过这个接口取消创建的通知;
- cancelAllNotifications(),取消之前发布的所有通知;
- addNotificationSlot(NotificationSlot slot),创建一个NotificationSlot;
- setNotificationBadgeNum(int num),设置通知的角标;
通知的代码结构基本就是围绕这三个类来构建的,其中最重要的就是NotificationRequest这个类,整个HarmonyOS各种酷炫通知都是基于这个类来定制的,所以研究通知,不如说其实就是研究NotificationRequest。下面就来介绍下HarmonyOS官方提供的6中样式以及自定义样式,基本也就包含日常所有的通知需求了。
HarmonyOS通知样式
1. 普通文本NotificationNormalContent
这是通知最基础也是最常用的样式,对应设置NotificationRequest.setLittleIcon()、NotificationNormalContent.setTitle()、NotificationNormalContent.setText();
- 效果图
- 代码示例
2. 长文本NotificationLongTextContent
- 效果图
- 代码示例
3. 图片NotificationPictureContent
- 效果图
- 代码示例
4. 多行NotificationMultiLineContent
- 效果图
- 代码示例
5. 社交NotificationConversationalContent
- 效果图
- 代码示例
6. 媒体NotificationMediaContent
具体媒体会话管理,请参考开发-媒体会话管理开发指导
- 效果图
- 代码示例
7. 自定义通知样式
- 效果图
- 代码示例
上面这些就是通知常用的几种效果,有很多其他的属性没有在demo中展示出来,比如角标、通知栏进度条等,这些都有属性可以设置的,相比其他移动操作系统,鸿蒙的通知样式更加丰富全面也更加统一,相对来说开发的成本也更高一些,希望鸿蒙发展的越来越好。
作者: 伏雄
更多原创内容请关注:中软国际 HarmonyOS 技术学院
入门到精通、技巧到案例,系统化分享HarmonyOS开发技术,欢迎投稿和订阅,让我们一起携手前行共建鸿蒙生态。
厉害,各种文本看了个遍
牛,原来通知还能玩出这么多花样
强(๑•̀ㅂ•́)و✧
牛,原来通知还能玩出这么多花样
优质文章!
666
大佬,请教个问题,自定义样式中多个按钮如何设置不同的IntentAgent
感谢分享
超级实用