在Android中经常会使用到通知机制中的通知栏框架(Notification),它适用于交互事件的通知。它位于顶层可以展开的通知列表,它会时不时地提醒你什么软件改更新了,什么人发你短信了,什么人发你QQ、微信信息等等。
Notification状态栏的功能作用

  • 显示接收到短消息,即时消息等信息(如QQ、微信、短信等)
  • 显示客户端的推送消息(如有软件可以更新、广告、推荐等)
  • 显示正在进行的事物(如后台运行的程序:音乐播放器、下载进度等)

Notification状态栏的基本布局
Notification支持文字内容显示、震动、三色灯、铃声等多种提示形式,在默认下Notification近显示消息标题、消息内容。送达时间这三项内容。通知的基本布局如下图所示:

1. 标题 Title/Name
2. 大图标 Tcon/Photo
3. 内容文字
4. 内容消息 Message
5. 小图标 Secondary Icon
6. 通知的时间 Timestamp,默认是系统发出通知的时间,也可以通过setWhen()来设置

相关的类
状态通知栏主要涉及到两个类:Notification和NotificationManager
Notification为通知信息类,它里面对应了通知栏的各个属性
NotificationManager是状态通知栏的管理类,负责发通知、清除通知等操作。
注意:NotificationManager是一个系统Service,所以必须通过getSystemService(NOTIFICATION_SERVICE)方法来获取,主要的实现如下:

NotificationManager notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);

使用步骤
流程模块:

  1. 创建一个通知栏的Builder构造类
  2. 定义通知栏的Action
  3. 设置通知栏点击事件
  4. 通知

代码实现片段如下:

// 从系统服务中获得通知管理器NotificationManager notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);// 实例化通知栏构造器NotificationCompat.Builder builder = new NotificationCompat.Builder(this);// 对Builder进行配置builder.setContentTitle("测试标题")       .setContentText("测试内容")       .setTicker("测试通知来啦")//通知首次出现在通知栏,带上升动画效果的       .setWhen(System.currentTimeMillis())//通知产生的时间,会在通知信息里显示       .setWhen(System.currentTimeMillis())//通知产生的时间,会在通知信息里显示       .setAutoCancel(true)//设置这个标志当用户单击面板就可以让通知将自动取消         .setOngoing(false)//ture,设置他为一个正在进行的通知。他们通常是用来表示一个后台任务,用户积极参与(如播放音乐)或以某种方式正在等待,因此占用设备(如一个文件下载,同步操作,主动网络连接)       .setDefaults(Notification.DEFAULT_VIBRATE)//向通知添加声音、闪灯和振动效果的最简单、最一致的方式是使用当前的用户默认设置,使用defaults属性,可以组合:Notification.DEFAULT_ALL  Notification.DEFAULT_SOUND 添加声音       .setSmallIcon(R.drawable.ic_launcher);// 点击的意图ACTION是跳转到Intent,点击事件Intent intent = new Intent(this, SecondActivity.class);intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);builder.setContentIntent(pendingIntent);// 构建通知Notification notification = builder.build();// 执行通知notificationManager.notify(notifyId, notification)

接下来介绍一些方法的属性
(1) 方法:设置提醒标志符Flags
功能:提醒标志符,向通知添加声音、闪灯和振动效果等设置达到通知提醒效果,可以组合多个属性
有2种设置方法:
方法1:实例化通知栏之后通过给他添加.flags属性赋值。

Notification notification = builder.build();  notification.flags = Notification.FLAG_AUTO_CANCEL;  

方法2:通过setContentIntent(PendingIntent intent)方法中的意图设置对应的flags

public PendingIntent getDefalutIntent(int flags){      PendingIntent pendingIntent= PendingIntent.getActivity(this, 1, new Intent(), flags);      return pendingIntent;  } 

提醒标志符成员:

Notification.FLAG_SHOW_LIGHTS      //三色灯提醒,在使用三色灯提醒时候必须加该标志符Notification.FLAG_ONGOING_EVENT    //发起正在运行事件(活动中)Notification.FLAG_INSISTENT        //让声音、振动无限循环,直到用户响应 (取消或者打开)Notification.FLAG_ONLY_ALERT_ONCE  //发起Notification后,铃声和震动均只执行一次Notification.FLAG_AUTO_CANCEL      //用户单击通知后自动消失Notification.FLAG_NO_CLEAR         //只有全部清除时,Notification才会清除 ,不清楚该通知(QQ的通知无法清除,就是用的这个)Notification.FLAG_FOREGROUND_SERVICE  //表示正在运行的服务

(2) 方法:.setDefaults(int defaults) (NotificationCompat.Builder中的方法,用于提示)
功能:向通知添加声音、闪灯和振动效果的最简单、使用默认(defaults)属性,可以组合多个属性(和方法1中提示效果一样的)
对应属性:

Notification.DEFAULT_VIBRATE  //添加默认震动提醒  需要 VIBRATE permissionNotification.DEFAULT_SOUND    // 添加默认声音提醒Notification.DEFAULT_LIGHTS   // 添加默认三色灯提醒Notification.DEFAULT_ALL      // 添加默认以上3种全部提醒

(3) 方法:setVibrate(long[] pattern)
功能:设置震动方式。

.setVibrate(new long[] {0,300,500,700}); 

实现效果:延迟0ms,然后振动300ms,在延迟500ms,接着在振动700ms。
以上方法的还有种写法是

builder.build().vibrate = new long[] {0,300,500,700};  

以此类推,2种写法都可以。
如果希望设置默认振动方式,设置了方法(2)中默认为DEFAULT_VIBRATE 即可。

(4) 方法:.setLights(intledARGB ,intledOnMS ,intledOffMS )
功能:android支持三色灯提醒,这个方法就是设置不同场景下的不同颜色的灯。
描述:其中ledARGB 表示灯光颜色、 ledOnMS 亮持续时间、ledOffMS 暗的时间。
注意
1. 只有在设置了标志符Flags为Notification.FLAG_SHOW_LIGHTS的时候,才支持三色灯提醒。
2. 这边的颜色跟设备有关,不是所有的颜色都可以,要看具体设备。
使用:

.setLights(0xff0000ff, 300, 0)  

同理,以下方法也可以设置同样效果:

Notification notify = mBuilder.build();  notify.flags = Notification.FLAG_SHOW_LIGHTS;  notify.ledARGB = 0xff0000ff;  notify.ledOnMS = 300;  notify.ledOffMS = 300;  

如果希望使用默认的三色灯提醒,设置了方法(2)中默认为DEFAULT_LIGHTS即可。

(5)方法:.setSound(Uri sound)
功能:设置默认或则自定义的铃声,来提醒。

//获取默认铃声  .setDefaults(Notification.DEFAULT_SOUND)  //获取自定义铃声  .setSound(Uri.parse("file:///sdcard/xx/xx.mp3"))  //获取Android多媒体库内的铃声   .setSound(Uri.withAppendedPath(Audio.Media.INTERNAL_CONTENT_URI, "5"))  

(6)方法:.setPriority(int pri)

优先级 用户
MAX 重要而紧急的通知,通知用户这个事件是时间上紧迫的或者需要立即处理的。
HIGH 高优先级用于重要的通信内容,例如短消息或者聊天,这些都是对用户来说比较有兴趣的。
DEFAULT 默认优先级用于没有特殊优先级分类的通知。
LOW 低优先级可以通知用户但又不是很紧急的事件。
MIN 用于后台消息 (例如天气或者位置信息)。最低优先级通知将只在状态栏显示图标,只有用户下拉通知抽屉才能看到内容。

对应属性(作用看上面表格就可知道):

Notification.PRIORITY_DEFAULTNotification.PRIORITY_HIGHNotification.PRIORITY_LOWNotification.PRIORITY_MAXNotification.PRIORITY_MIN

(7)方法:setOngoing(boolean ongoing)
功能:设置为ture,表示它为一个正在进行的通知。他们通常是用来表示一个后台任务,用户积极参与(如播放音乐)或以某种方式正在等待,因此占用设备(如一个文件下载,同步操作,主动网络连接)

(8)方法:setProgress(int max, int progress,boolean indeterminate)
属性:max:进度条最大数值 、progress:当前进度、indeterminate:表示进度是否不确定,true为不确定,false为确定
功能:设置带进度条的通知,可以在下载中使用

更多相关文章

  1. Android(安卓)WebView使用的技巧与一些坑
  2. Android入门——利用Canvas完成绘制点、圆、直线、路径、椭圆、
  3. Android学习―7种形式的Android(安卓)Dialog使用举例
  4. Android(安卓)Unity3D 相互交互,及退出继承UnityPlayerActivity的
  5. Android开发历程_18(XML文件解析)
  6. Android(安卓)Quantity Strings 的 getQuantityString方法取值问
  7. Android报表解决方案 使用开源组件iChartjs(二)
  8. 关于android闹钟,设置定时提醒的一点心得
  9. Android(安卓)UI 如何让TextView中的文字居中显示

随机推荐

  1. 0129-数组的排序, 数组的合并, 数组成员
  2. vue学习之路(路由)
  3. 0201-常用字符串函数
  4. Linux发行版的系统目录名称命名规则及用
  5. Centos7最小安装完成后,ifconfig命令用不
  6. 【最新】PMP、ACP换审续费流程
  7. 基于Docker部署Ldap环境
  8. Spinnaker持续交付实战
  9. pdb clone mos文档
  10. 在vim中设置tab缩进为4个字符