通过建造者模式来创建通知。
为了兼容低版本,v4 Support Library中提供了
NotificationCompat.Builder()这个替代方法。
它与Notification.Builder()类似,二者没有太大区别。
通知基本用法
属性
- setSmallIcon 小图标
- setContentTitle 标题
- setContentText 详细信息
- setAutoCancel(boolean) 是否点击通知自动取消
- setOngoing(boolean) 设置是否不能消除该通知; 利用它设置他为一个正在进行的通知。他们通常是用来表示一个后台任务,用户积极参与(如播放音乐)或以某种方式正在等待,因此占用设备(如一个文件下载,同步操作,主动网络连接)
- setWhen() 时间,如果不设置,则默认显示当前的系统时间
- setContentIntent(pendingIntent) 设置意图
- setPriority(Notification.PRIORITY_DEFAULT) 设置该通知优先级
- setDefaults 向通知添加声音、闪灯和震动效果,最简单、最一致的方式是使用当前的用户默认设置,使用defaults属性
Notification.DEFAULT_VISIBLE //添加默认震动提醒 需要VIBRATE permission
Notification.DEFAULT_SOUND //添加默认声音提醒
Notification.DEFAULT_LIGHTS //添加默认三色灯提醒
Notification.DEFAULT_ALL //添加默认以上三种全部提醒
- setUsesChronometer 是否显示时间计时
- setProgress(intmax, int progress, boolean indeterminate) 设置进度, indeterminate 表示是否是不明确的进度条。可以通过setProgress(0,0,false)移除进度条
- setContentIntent(PendingIntent intent) 功能:设置通知栏点击意图。
- addAction 向通知添加操作,操作通常与通知的content相连被系统作为按钮来显示。在系统的content下方显示图片与title,点击这个图片或者title就会触发设置的intent
- setLargeIcon(BitmapFactory.decodeResource(getResources(),R.drawable.wechat));
- setStyle 设置风格
NotificationCompat.BigPictureStyle inboxStyle = new NotificationCompat.BigPictureStyle();
inboxStyle.setBigContentTitle("大视图内容");
inboxStyle.bigPicture(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher));
inboxStyle.bigLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher_round));
or
builder.setStyle(new Notification.InboxStyle()
.addLine("abcdefg")
.addLine("hijklmn")
.setBigContentTitle("6 new message")
.setSummaryText("大概内容"));
164f459d6790c0e2.gif
PendingIntent
- FLAG_CANCEL_CURRENT:如果要创建的PendingIntent已经存在了,那么在创建新的PendingIntent之前,原先已经存在的PendingIntent中的intent将不能使用
- FLAG_NO_CREATE:如果要创建的PendingIntent尚未存在,则不创建新的PendingIntent,直接返回null
- FLAG_ONE_SHOT:相同的PendingIntent只能使用一次,且遇到相同的PendingIntent时不会去更新PendingIntent中封装的Intent的extra部分的内容
- FLAG_UPDATE_CURRENT:如果要创建的PendingIntent已经存在了,那么在保留原先PendingIntent的同时,将原先PendingIntent封装的Intent中的extra部分替换为现在新创建的PendingIntent的intent中extra的内容
浮动通知
以横幅的形式 在屏幕顶端悬浮显示。
通过setFullScreenIntent()设置。需要注意的是,可能需要去设置通知的横幅显示或者锁屏显示。
试验的时候,在模拟器上可以弹出浮动通知,然后可能还需要手动的去取消。但是真机上总是直接跳pendingIntent的内容,未找到原因!
自定义视图
通过RemoteViews来创建视图
RemoteViews mRemoteViews = new RemoteViews(String packageName, int layoutId);
设置的图片属性
mRemoteViews.setImageViewResource(int viewId, int srcId);
设置点击意图:
mRemoteViews.setOnClickPendingIntent(int viewId,PendingIntent pendingIntent);
设置文字
mRemoteViews.setTextViewText(R.id.tv_custom_song_singer, "周杰伦");
与builder关联
builder.setCustomContentView()
网友评论