通知--一般当我在手记下拉的时候会发现一排信息提示(天气情况,qq消息,UC推荐,58推荐等等),这些就是通知。
通知分为三种:普通广播 自定义广播 大视图广播。
普通广播的创建:
通知的内容和属性:NotificationCompat内部的builder类进行通知的内容进行设置,各种set方法;
通知的属性:通过Notification实例的falg设置通知属性;
通知实例的获得:通过Builder类的builder()方法创建;
通知的发送:通过notificationManger的notify()方法发送通知;
普通通知的创建发送以及方法讲解:
1.创建Notification的builder类
NotificationCompat.Builder builder=new NotificationCompat.Builder(this);
2.利用builder实例设置Notification属性:
//设置通知标题栏内容
builder.setContentTitle("通知的标题")
//设置通知详细信息栏内容
.setContentText("通知的内容")
//设置大小图标会在下main继续讲
.setSmallIcon(R.mipmap.ic_launcher)
.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.aa))
.setTicker("状态栏中提示内容")
//设置通知栏点击执行的意图 pendingIntent(也就是点击完成跳转);
.setContentIntent(pendingIntent)
//设置通知集合的数量(没用到过)
.setNumber(6)
//通知产生的时间,会在通知信息里显示,一般是系统获取到的时间
//如果不写,默认为通知发出时系统的时间;
.setWhen(System.currentTimeMillis())
//设置该通知优先级(在广播中用过这个属性)
.setPriority(Notification.PRIORITY_DEFAULT)
//设置这个标志当用户单击面板就可以让通知将自动取消
.setAutoCancel(false)
//点击或则侧滑通知,通知不会消失;利用它设置他为一个正在进行的通知。他们通常是用来表示一个后台任务,用户积极参与(如播放音乐)或以某种方式正在等待,因此占用设备(如一个文件下载,同步操作,主动网络连接)
.setOngoing(true);
//提示模式
.setDefaults(Notification.DEFAULT_VIBRATE)
方法详解:
.setSmallIcon(R.mipmap.ic_launcher)
.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.aa))
.setTicker("状态栏中提示内容")
第一种:当只设置了SmallIcon没有设置LargeIcon的时候:SmallIcon的图标将会出现在LargeIcon的位置,而小图标位置将不会又图标。
第二中:当既有SmallIcon又有LargeIcon的时候,LargeIcon将会出现在LargeIcon位置,SmallIcon也会出现在SmallIcon的位置;
setTicker()是在通知发出的时候,在状态栏弹出的提示内容(弹出提示的内容又小图标和Ticker方法中的内容)
注意:小图标必须有,否则将无法显示通知;
.setPriority(Notification.PRIORITY_DEFAULT)//设置通知的优先级别
Notification.PRIORITY_DEFAULT 默认
Notification.PRIORITY_HIGH 高
Notification.PRIORITY_LOW 低
Notification.PRIORITY_MAX 最高
Notification.PRIORITY_MIN 最低
.setDefaults(int defaults)(需要 VIBRATE permission) ;
功能:向通知添加声音、闪灯和振动效果的最简单、使用默认(defaults)属性,可以组合多个属性
对应属性:
Notification.DEFAULT_VIBRATE //添加默认震动提醒
Notification.DEFAULT_SOUND // 添加默认声音提醒
Notification.DEFAULT_LIGHTS// 添加默认三色灯提醒
Notification.DEFAULT_ALL// 添加默认以上3种全部提醒
setVibrate(long[] pattern)设置自定义震动模式
//延迟0ms,然后振动200ms,在延迟200ms,接着在振动300ms。
.setVibrate(new long[] {0,200,200,300});
//设定自定义灯光
.setLights(int RGB,int onTime,int lowLight)
参数说明:
RGB 表示灯光颜色、 onTime亮持续时间、lowLight暗的时间。
注意:只有在设置了标志符Flags为Notification.FLAG_SHOW_LIGHTS的时候,才支持三色灯提醒。
这边的颜色跟设备有关,不是所有的颜色都可以,要看具体设备。
设定自定义音乐
setSound(Uri music)
.setSound(Uri.parse("file:///sdcard/xx/xx.mp3"))
进度条的说明:
setProgress(int max ,int value ,boolean sure);
参数说明:
max---进度条最大值;
value---进度条当前值;
sure----进度条进度是否确定;
true为进度条不确定,max与value就不会在进度条中显示;
false进度条确定,max与value正常显示
进度条取消:setProgress(0, 0, false)
方法版本问题:4.0后才可以在buidler中调用setProgress()方法;
//获得Notification实例
NotificationCompat notificaton=builder.buidler();
//通过Notification的flag设置属性;
设置属性代码:
notification.flags = Notification.FLAG_AUTO_CANCEL;
提醒标志符成员:
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 //表示正在运行的服务
自定以通知的基本使用:
自定布局的创建:
RemoteViews mRemoteViews = new RemoteViews(String packageName, int layoutId);
参数说明:packageName :报名,通过getPackageName()
layoutId:加载自定义布局ID;
设置自定义布局的属性:
设置的图片属性
mRemoteViews.setImageViewResource(int viewId, int srcId);
参数说明 viewId 为自定义布局中,Button等布局的ID;
srcId 为需要设置图片的ID;
设置点击意图:
mRemoteViews.setOnClickPendingIntent(int viewId,PendingIntent pendingIntent);
参数说明:viewId 为自定义布局中,Button等布局的ID;
pendingIntent 为点击相应按钮需要执行的意图;
添加自定义布局:
mBuilder.setContent(mRemoteViews)
NotificationManager的发送,更新,删除
notificationManager.cancel(int ID);
参数说名:ID为发送通知的时候设置的ID;取消该ID;
notify(int id, Notification notification); // 将通知加入状态栏,,标记为id
参数说明:id相当于notification的一一对应标志;
// 在Android进行通知处理,首先需要重系统哪里获得通知管理器NotificationManager,它是一个系统Service。
NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
还有大图风格---尚未完成