码迷,mamicode.com
首页 > 其他好文 > 详细

Notification

时间:2016-06-18 18:19:36      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:


什么是 Notification

Notification 是一种具有全局效果的通知,它会展现在屏幕的顶端,首先会表现行为一个图标,当用户向下滑动的时候,会展示出通知的具体内容。

因为 Android 的快速发展,随着 android 版本的快速升级,导致了一些兼容性问题。对于 Notification 而言,Android 3.0 是一个分水岭,在之前构建 Notification 推荐使用 NotificationCompate.Builder,它位于 android.support.v4.app 包中。而在 Android 3.0 后,一般推荐使用 Notification.Builder 构建。

Notification 的基本布局

技术分享
上面的组成元素依次是:

  1. Title/Name:标题
  2. Icon/Photo:大图标
  3. Message:信息内容
  4. 内容文字:通知消息,在小图标左手边的一个文字
  5. Secondary Icon:小图标
  6. Timestamp:通知时间

Notification 的扩展布局

在 Jelly Bean 中你可以为通知提供更多事件的细节。你可以通过扩展布局显示消息的前几行或者预览图片,这样用户可以看到更多的内容。用户可以通过 pinch-zoom 或者双手指滑动来打开扩展布局。Android 为单条消息提供了两种扩展布局(文字和图像)供你开发时使用。

技术分享

NotificationManager

通知一般是通过NotificationManager服务发送一个 Notification 对象来完成,NotificationManager 位于应用程序的框架层中,是一个重要的系统级服务,应用程序可以通过它来向系统发送全局的通知。

NotificationManager 类是一个通知管理器类,以单例模式来获取其对象,该对象是由系统维护的服务。你可以通过调用context.getSystemService(Context.NOTIFICATION_SERVICE)来获取 NotificationManager 对象。

发送通知

你可以通过调用 NotificationManager 对象的notify()方法来发送一个通知。notify() 有两个重载的方法:

  1. notify (int id, Notification notification)
  2. notify (String tag, int id, Notification notification)

NotificationManager 在发送通知的时候,需要给 notification 设置一个唯一的标识,这个标识在调用 notify(id, notification) 的时候体现为参数id,而在调用 notify(tag, id, notification) 时则体现为(tag, id)的值对。

更新通知

你也可以通过调用 notify() 来跟新某个通知。对于一个已经显示的通知,如果你想更新它,只需调用 notify() 方法,并传入一个(或一对)和原通知相同的标识即可。

移除通知

Android 提供两种方式来移除通知:

  • 一种是通过 Notification 自己维护,通过调用 Notification.Builder 的setAutoCancel (true),可以使通知可以在用户点击之后自动消失。
  • 另外一种方式是使用 NotificationManager 来维护,通过调用cancle(id)cancle(tag, id)来移除某个指定的通知,或者,你可以通过调用cancleAll()来移除所有通知。

Notification.Builder

  • build()->Notification
    得到 Notification 对象。

  • setContentIntent(PendingIntent )->Notification.Builder
    提供一个 PendingIntent 来响应通知的点击事件。

  • setContentTitle(CharSequence title)->Notification.Builder
    设置标题

  • setContentText(CharSequence text)->Notification.Builder
    设置内容

  • setSubText(CharSequence text)->Notfication.Builder
    设置内容下面的一小行的文字

  • setTicker(CharSequence tickerText)->Notification.Builder
    设置收到通知时,在顶部显示的文字信息

  • setWhen(long when)->Notification.Builder
    设置通知时间,一般是设置收到的时间 System.currentTimeMillis()

  • setSmallIcon(int icon)->Notification.Builder
    设置右下角的图标,在接收到通知的时候也会在顶部显示这个小图标。

  • setLargeIcon(Bitmap icon)->Notification.Builder
    设置左边的大图标。

  • setAutoCancel(boolean autoCancel)->Notification.Builder
    使通知在用户点击之后自动消失(默认不消失)。

  • setDefaults(int defaults)->Notification.Builder
    向通知添加声音、闪烁和震动效果。
    你可以通过位或运算符|来组合多种属性:DEFAULT_SOUND, DEFAULT_VIBRATE, DEFAULT_LIGHTS
    你也可以启动所有的默认属性:DEFAULT_ALL

  • setVibrate(long[] pattern)->Notification.Builder
    设置震动方式

  • setLights(int argb, int onMs, int offMs)->Notification.Builder
    设置闪烁灯提醒,参数依次是:灯光颜色、亮的持续时间、暗的持续时间。
    不是所有颜色都可以,这跟设备有关,有些手机还不带三色灯;
    另外,你需要为 Notification 设置 flags 为 Notification.FLAG_SHOW_LIGHTS 时才支持三色灯;

  • setSound(Uri sound)->Notification.Builder
    设置接收到通知时的铃声,可是是系统的,也可以是自定义的。

  • setOnGoing(boolean ongoing)->Notification.Builder
    设置它是一个正在进行的通知,它通常表示一个后台任务。如用户在播放音乐、下载文件、同步操作等,因此而占用设备。

  • setProgress(int max, int progress, boolean indeterminate)->Notification.Builder
    设置带进度条(ProgressBar)的通知,参数依次为:进度条的最大值、当前值、进度是否不确定。

  • setPriority(int proprity)->Notification.Builder
    设置优先级

优先级 描述
MAX 重要而紧急的通知,通知用户这个事件是时间紧迫而且需要立即处理的。
HIGH 高优先级,用于重要的通讯内容,如短信或聊天等。
DEFAULT 默认优先级,用于没有特殊优先级分类的通知。
LOW 低优先级,用于通知一些不是很紧急的事件。
MIN 最低优先级,用于后台消息(天气或位置信息),只有用户下拉通知栏时才能看到内容。




Notification

标签:

原文地址:http://www.cnblogs.com/thens/p/5596453.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!