Android通知
什么是通知(Notification):具有全局的效果,可以在任何界面快速预览消息
1.在任何界面都可以快速预览
2.快速打开app
3.实时正在进行的浏览
如何使用通知:
创建通知对象的方式:
NotificationCompat.Builder nb = new NotificationCompat.Builder(this);
发布通知的方法
manager.notify(1, builder.build());
常用的几个方法
- setSmallIcon() 用于设置通知的小图标,只能使用纯 alpha 图层的图片进行设
置,小图标会显示在系统状态栏上。
- setLargeIcon() 设置通知的大图标,当下拉通知后显示的图标。
- setWhen() 指定通知被创建的时间,以毫秒为单位,下拉通知后会将时间显示在相应的通知上。
- notify() 方法接收两个参数,参数一 id 指定通知的 id,要保证每个通知的 id 是不同的;参数二 Notification对象,传入之前创建好的即可。
- setContentText() 文本内容
- setContentTitle() 标题
实现系统默认的通知栏效果:
第一步:获取状态通知栏管理:
NotificationManager mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
第二步:实例化通知栏构造器NotificationCompat.Builder:
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this);
第三步:对Builder进行配置:
mBuilder.setContentTitle("测试标题")//设置通知栏标题
mBuilder.setContentText("测试内容")
//设置通知栏点击意图
mBuilder.setContentIntent(getDefalutIntent(Notification.FLAG_AUTO_CANCEL))
//设置通知集合的数量
//mBuilder.setNumber(number)
//通知首次出现在通知栏,带上升动画效果的
mBuilder.setTicker("测试通知来啦")
//通知产生的时间,会在通知信息里显示,一般是系统获取到的时间
mBuilder.setWhen(System.currentTimeMillis())
//设置该通知优先级
mBuilder.setPriority(Notification.PRIORITY_DEFAULT)
//设置这个标志当用户单击面板就可以让通知将自动取消
//ture,设置他为一个正在进行的通知。他们通常是用来表示一个后台任务,用户积极参与(如播放 音乐)或以某种方式正在等待,因此占用设备(如一个文件下载,同步操作,主动网络连接)
//mBuilder.setAutoCancel(true)
mBuilder.setOngoing(false)
//向通知添加声音、闪灯和振动效果的最简单、最一致的方式是使用当前的用户默认设置,使用defaults属性,可以组合
mBuilder.setDefaults(Notification.DEFAULT_VIBRATE)
//设置通知小ICON
mBuilder.setSmallIcon(R.drawable.ic_launcher);
一个简单的小例子
public void simpleNotice(View view) {
//此Builder为android.support.v4.app.NotificationCompat.Builder中的,下同。
Builder mBuilder = new Builder(this);
//系统收到通知时,通知栏上面显示的文字。
mBuilder.setTicker(天津,晴,2~15度,微风);
//显示在通知栏上的小图标
mBuilder.setSmallIcon(R.drawable.consult_answer);
//通知标题
mBuilder.setContentTitle(天气预报);
//通知内容
mBuilder.setContentText(天津,晴,2~15度,微风);
//设置大图标,即通知条上左侧的图片(如果只设置了小图标,则此处会显示小图标) mBuilder.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.share_sina));
//显示在小图标左侧的数字
mBuilder.setNumber(6);
//设置为不可清除模式
mBuilder.setOngoing(true);
//显示通知,id必须不重复,否则新的通知会覆盖旧的通知(利用这一特性,可以对通知进行更新)
nm.notify(1, mBuilder.build());
}