是在你的应用常规界面之外展示的消息,当app让系统发送一个消息的时候,消息
首先以图表的形式显示在通知栏,要查看消息的详情需要进入通知抽屉(notificationdrawer中查看)
通知栏和通知抽屉都是系统层面的,你可以随时查看,不限制于appNotification的设计
作为android UI 中很重要的组成部分,notification拥有属于自己专属的设计规则Notification的界面元素
在通知抽屉中的notification有两种显示方式,取决于你的android版本以及notification drawer的状态
(1)普通视图
这种风格是notification drawer的标准显示方式
(2)宽视图
指你的notification被展开的时候会显示更大的视图,这种风格是android4.1版本之后才有的新特性
2、创建一个Notification
首先将notification的一些UI信息以及相关动作NotificationCompat.Builder对象,然后通过NotificationCompat.Builder.build()来获得notification对象自己,然后调用NotificationManager.notify()向系统转交这个通知一个notification对象需要包含以下内容:
小图标(setSmallIcon()获取)
标题(setContentTitle()获取)
详情文字(setContentText()获取)
除此之外,其余内容都是可选的可以去官网看下NotificationCompat.Builder的相关文档
Notification的动作与行为虽然这也是可选的,但是你还是应该为你的notification至少添加一种行为:允许用户通过点击notif进入一个activity中,进行更多的查看或者后续操作,一个notification可以提供多种动作,而且你也应该让用户点击一个notification之后能总是有相应的响应动作,通常是打开一个activity,你还可以在notification中添加能响应点击事件的button,比如延迟一下闹钟,或者立即回复一条短消息
- 在notification内部,一个动作本身是被定义在一个PendingIntent中,PendingIntent包含一个用于启动你app中的activity的intent,要讲PendingIntent和一个手势联系起来,
你需要调用合适的NotificationCompat.Builder方法,比如你想在点击notification文字的时候启动activity,你需要调用NotificationCompat.Builder的setContentIntent()来添加PendingIntent。启动一个activity是notification动作相应中最普遍的一类宽视图
3、管理Notification
* **删除通知:**
- 通知会一直存在,知道下面的情况之一发生用户手动一条一条的清楚通知,或者使用"清楚所有"(如果通知允许被清除)用户点击通知,当你创建这个通知的时候使用了setAutoCancel();你为一个指定ID的通知调用了cancel(),这个方法也去删除正在执行的通知你调用了cancelAll()方法,这将删除所有你之前发布的通知
4、显示进度通知栏
- 通知可以包含一个动态的进图指示器,用来显示当前操作的进度,如果你能估计这个操作总共有多久,已经任何时间点上完成进度,那么你可以用一个"确定"格式的指示器(进度条),如果说你没法估计操作的长度,用"不确定"格式的指示器进度条指示器是实现了ProgressBar来执行显示的调用setProgress()方法来使用进度条指示器开始于Android4.0,在之前的版本,你必须创建自己的通知布局来包含ProgressBar视图
5、自定义通知视图
通知的框架允许自定义通知的布局,通过RemoteViews对象来定义通知的外观,自定义通知布局与常规通知相似当时他是基于定义在xml文件的RemoteViews对象来操作的
自定义通知的可用高度是取决与通知视图的,正常的视图高度限制在64dp,可展开视图的而不惧高度限制在256dp
为了去定义自己的通知布局,从扩充xml文件获取一个RemoteViews对象的实例开始,然后,类似于调用setContentTitls()方法 一样,我们需要滴啊用setContent(),为了能设置更多细节,我们使用RemoteViews对象的方法来设置更多的内容
1、创建一个单独的xml文件,用来定义通知的布局,
2、在应用里面,使用RemoteViews对象的方法来给你的通知设置文本和图标,通过调用setContent()把你的RemoteViewsdyuxuabg 放到NotificationCompat.Builder里面,避免使用背景视图,引文你的文本可能变得不易阅读RemoteViews对象也包含一些方法用来给你去添加Chronometer和ProgressBar。想要了解更多的自定义布局通知,参考文档
3、注意:当你使用自定义的通知条的时候,特别要注意你自定义的通知条在不同方向与分辨率的设备上是如何工作的,当然这条建议对所有的视图布局,都很重要,但对通知条来说尤其重要的,因为通知抽屉的控件十分有限,不要把自己的通知条做的太过复杂,确保他的灵活性
4、为自定义的通知条文本使用样式资源
自定义通知条的时候总是使用样式资源去定义文本,通知的背景颜色会变得与设备当前版本的android有很大的反差,使用样式文件能帮你很好的解决这一点,从2.3开始,系统就为标准的通知布局定义了文本的样式,如果你在2.3以及以上更高的版本上使用同样的样式,你必须确保你的文本相对于背景是可以看见的