Android通知Notification

简介:
android通知,是Android系统一个比较有特色的功能,当某个应用希望向用户发送一些提示信息,而该程序又不在前台运行的时候,这时候就需要用到通知,它会在状态栏上方显示通知图标和一些提示文字
功能作用
1.显示接收到短消息、即使消息等信息 (如QQ、微信、新浪、短信)
2.显示客户端的推送消息(如有新版本发布,广告,推荐新闻等)
3.显示正在进行的事物(例如:后台运行的程序)(如音乐播放器、版本更新时候的下载进度等)

学习思路
Notificaiton – service – BroadcastReceiver – Intent(flag、Action等属性应用) – PendingIntent
一个Notificaiton通知的拓展使用就要涉及与4大组建的配合,所以学好整体的知识体系。


参考文档及使用教程:
设计文档 :
官方:http://developer.android.com/design/patterns/notifications.html
译文:http://adchs.github.io/patterns/notifications.html
使用教程 :http://developer.android.com/training/notify-user/index.html
开发文档 :http://developer.android.com/reference/android/app/Notification.html


1.前言

  • 1 .基本布局
    Android基础-------Android通知Notification_第1张图片

(1)普通视图:
高度64dp

(2)大视图的通知在展开前也显示为普通视图

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

  • 2.必要的类

状态通知栏主要涉及到2个类: Notification 和 NotificationManager
Notification为通知信息类,它里面对应了通知栏的各个属性
NotificationManager : 是状态栏通知的管理类,负责发通知、清除通知等操作。

注意:NotificationManager 是一个系统Service,所以必须通过 getSystemService(NOTIFICATION_SERVICE)方法来获取,方法如下

NotificationManager mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);  

2.使用流程

  • 1.流程模块

第一步:创建一个通知栏的Builder构造类 (Create a Notification Builder)
第二步:定义通知栏的Action (Define the Notification’s Action)
第三步:设置通知栏点击事件 (Set the Notification’s Click Behavior)
第四步:通知 (Issue the Notification)

  • 2.代码模块

第一步:获取状态通知栏管理:

NotificationManager mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);  

第二步:实例化通知栏构造器NotificationCompat.Builder:

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this);  

第三步:对Builder进行配置:

mBuilder.setContentTitle("测试标题")//设置通知栏标题      .setContentText("测试内容") /"font-family:Arial;">/设置通知栏显示内容      .setContentIntent(getDefalutIntent(Notification.FLAG_AUTO_CANCEL)) //设置通知栏点击意图  //  .setNumber(number) //设置通知集合的数量      .setTicker("测试通知来啦") //通知首次出现在通知栏,带上升动画效果的      .setWhen(System.currentTimeMillis())//通知产生的时间,会在通知信息里显示,一般是系统获取到的时间      .setPriority(Notification.PRIORITY_DEFAULT) //设置该通知优先级  //  .setAutoCancel(true)//设置这个标志当用户单击面板就可以让通知将自动取消        .setOngoing(false)//ture,设置他为一个正在进行的通知。他们通常是用来表示一个后台任务,用户积极参与(如播放音乐)或以某种方式正在等待,因此占用设备(如一个文件下载,同步操作,主动网络连接)      .setDefaults(Notification.DEFAULT_VIBRATE)//向通知添加声音、闪灯和振动效果的最简单、最一致的方式是使用当前的用户默认设置,使用defaults属性,可以组合      //Notification.DEFAULT_ALL  Notification.DEFAULT_SOUND 添加声音 // requires VIBRATE permission      .setSmallIcon(R.drawable.ic_launcher);//设置通知小ICON  
  • 3.对应的各个方法的属性
    (1)方法:设置提醒标志符Flags
    (2)方法:.setDefaults(int defaults) (NotificationCompat.Builder中的方法,用于提示)
    (3)方法:setVibrate(long[] pattern)
    (4)方法:.setLights(intledARGB ,intledOnMS ,intledOffMS )
    (5)方法:.setSound(Uri sound)
    (6)方法:.setPriority(int pri)
    (7)方法:setOngoing(boolean ongoing)
    (8)方法:setProgress(int max, int progress,boolean indeterminate)

  • 4.设置通知栏PendingIntent

1)什么是PendingIntent
2)PendingIntent什么用
3)相关属性和方法

  • 5.发送通知请求

未完待续….

更多相关文章

  1. 解决国行安卓(Android)手机无谷歌(Google)服务的一个参考方法
  2. Android属性动画—实现第三方登录的上拉展开,下拉隐藏
  3. Android在高jar包版本的工程中修改方法
  4. Android仿虾米音乐播放器之通知栏notification解析
  5. WebView---Android中调用js方法及js中调用本地方法
  6. 【Android】引入百度定位android:process=":remote",导致onCreate
  7. Android xml application属性详解

随机推荐

  1. MySQL 的COUNT(x)性能怎么样?
  2. 在CMD查看Mysql数据时出现中文乱码
  3. 一个mysql数据库的问题啊,我都摸索两天了
  4. 用delphi5修改sql server2000出现“键列
  5. MySQL存储引擎中的MyISAM和InnoDB
  6. 在C#中运用 SQLite
  7. 关与批处理的问题 一个批处理调用SQLplus
  8. spring-boot mybatis mapper生成sql有问
  9. UPDATE Sql不能在集合中聚合
  10. MySQL入门很简单: 2 MySQL数据类型