Android开发——Notification通知的使用及NotificationCopat.Builder常用设置API
2018-01-29 17:21
507 查看
想要看全部设置的请看这一篇【转】NotificationCopat.Builder全部设置
常用设置:
Notification创建类似Dialog的创建,通过Notification类中提供的各种方法来设置属性,最后build方法生成
NotificationManger的实例可以通过getSystemService这个方法获得
PendingIntent与Intent有关系,这是一个延迟意图,可以通过调用getActivity,getBroadcastReceiver,getService三个方法获得实例
priority:PRIORITY_DEFAULT//通知的重要程度
when:System.currentTimeMillis()//时间
audiostream:STREAM_DEFAULT//音效系统默认音效
上面的这三个我们一般情况下可以不用设置,系统会自动帮我们设置
下面就是一个简单的使用,设置了标题,内容,小图标,点击通知栏的该信息会跳转到main2Activity中,具体可以看注释,之后由这个普通使用的通知作为基础讲解NotificationCopat.Builder中的其他设置
由于只有一条信息,我们可能看不出最高重要程度的区别,但是,我们如果再设置音效或者震动,那么这条通知就会弹窗显示
实现弹窗显示的两种方法:一,当重要程度为最高,且设置了音效或者是震动;二,调用setFullScreenIntent()
图片与之前那张一样,我就不放出来了,值得说的是这个方法的第二个参数,为什么是false呢,如果是true的话,当你在玩游戏的时候,屏幕是全屏,然后这条通知就不需要点击,直接就会跳转到某个界面去,除非是来电了才会用true,其他情况若是使用的话,用户估计直接卸载APP
有四个参数可以选择,由英文也可以看出是什么意思了吧,这里就不多解释了
这里我就简单地说两种,长文本显示和大图片显示,更多的请看这一篇Android开发——Notification通知的各种Style详解
一、BigTextStyle长文本显示
BigPictureStyle大图片显示
个人觉得自定义布局可以做成像音乐播放器的通知栏那样,不过,今天就暂时简单的学习,之后有学到再补充
常用设置:
设置属性 | 说明 |
setAutoCancel(booleanautocancel) | 设置点击信息后自动清除通知 |
setContent(RemoteViewview) | 设置自定义通知 |
setContentTitle(Stringstring) | 设置标题 |
setContentText(Stringstring) | 设置内容 |
SetContentIntent(PendingIntentintent) | 设置点击信息后的跳转(意图) |
setWhen(longwhen) | 设置时间 |
setPriority(intpri) | 设置通知的重要程度 |
setStyle(Stylestyle) | 设置样式 |
setVisibility(intvisibility) | 设置锁屏显示 |
setDefault(intdefaults) | 设置默认 |
setLight(intargb,intonMs,intoffMs) | 设置呼吸灯闪烁效果 |
setSound(Urisound) | 设置通知音效 |
setVibrate(long[]pattern) | 设置震动效果 |
setCategory(Stringcategory) | 设置通知类别 |
setColor(intargb) | 设置通知栏颜色 |
setFullScreenIntent(PendingIntentintent,booleanb) | 设置弹窗显示 |
简单步骤说明:
创建一个notification,需要NotificationManager(这是一个系统的服务类,由名字很容易知道是用来管理Notification通知类的)和Notification(通知类)Notification创建类似Dialog的创建,通过Notification类中提供的各种方法来设置属性,最后build方法生成
NotificationManger的实例可以通过getSystemService这个方法获得
PendingIntent与Intent有关系,这是一个延迟意图,可以通过调用getActivity,getBroadcastReceiver,getService三个方法获得实例
普通使用:
NotificationCompat.Builder自动设置的默认值:priority:PRIORITY_DEFAULT//通知的重要程度
when:System.currentTimeMillis()//时间
audiostream:STREAM_DEFAULT//音效系统默认音效
上面的这三个我们一般情况下可以不用设置,系统会自动帮我们设置
下面就是一个简单的使用,设置了标题,内容,小图标,点击通知栏的该信息会跳转到main2Activity中,具体可以看注释,之后由这个普通使用的通知作为基础讲解NotificationCopat.Builder中的其他设置
Intentintent=newIntent(this,Main2Activity.class); PendingIntentpendingIntent=PendingIntent.getActivity(this,0,intent,0); NotificationManagermanger=(NotificationManager)getSystemService(NOTIFICATION_SERVICE); Notificationnotification=newNotificationCompat.Builder(this) .setContentTitle("thisiscotenttitle")//设置标题,必要 .setContentText("contentText")//设置内容,必要 .setWhen(System.currentTimeMillis())//设置时间,默认设置,可以忽略 .setSmallIcon(R.mipmap.ic_launcher)//设置通知栏的小图标,必须设置 .setAutoCancel(true)//设置自动删除,点击通知栏信息之后系统会自动将状态栏的通知删除,要与setContentIntent连用 .setContentIntent(pendingIntent)//设置在通知栏中点击该信息之后的跳转,参数是一个pendingIntent .build(); manger.notify(1,notification);//id为1
setLargeIcon
Intentintent=newIntent(this,Main2Activity.class); PendingIntentpendingIntent=PendingIntent.getActivity(this,0,intent,0); NotificationManagermanger=(NotificationManager)getSystemService(NOTIFICATION_SERVICE); Notificationnotification=newNotificationCompat.Builder(this) .setContentTitle("thisiscotenttitle")//设置标题,必要 .setContentText("contentText")//设置内容,必要 .setWhen(System.currentTimeMillis())//设置时间,默认设置,可以忽略 .setSmallIcon(R.mipmap.ic_launcher)//设置通知栏的小图标,必须设置 .setAutoCancel(true)//设置自动删除,点击通知栏信息之后系统会自动将状态栏的通知删除 .setContentIntent(pendingIntent)//设置在通知栏中点击该信息之后的跳转,参数是一个pendingIntent .setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher)) //设置大图标,未设置时使用小图标代替,拉下通知栏显示的那个图标 //设置大图片BitmpFactory.decodeResource(Resourceres,intid)根据给定的资源Id解析成位图 .build(); manger.notify(1,notification);
setPriority实现弹窗信息
Intentintent=newIntent(this,Main2Activity.class); PendingIntentpendingIntent=PendingIntent.getActivity(this,0,intent,0); NotificationManagermanger=(NotificationManager)getSystemService(NOTIFICATION_SERVICE); Notificationnotification=newNotificationCompat.Builder(this) .setContentTitle("thisiscotenttitle")//设置标题,必要 .setContentText("contentText")//设置内容,必要 .setWhen(System.currentTimeMillis())//设置时间,默认设置,可以忽略 .setSmallIcon(R.mipmap.ic_launcher)//设置通知栏的小图标,必须设置 .setAutoCancel(true)//设置自动删除,点击通知栏信息之后系统会自动将状态栏的通知删除 .setContentIntent(pendingIntent)//设置在通知栏中点击该信息之后的跳转,参数是一个pendingIntent .setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher)) //设置大图标,未设置时使用小图标代替,拉下通知栏显示的那个图标 //设置大图片BitmpFactory.decodeResource(Resourceres,intid)根据给定的资源Id解析成位图 .setPriority(NotificationCompat.PRIORITY_MAX)//设置为最高重要程度 .setDefaults(NotificationCompat.DEFAULT_SOUND)//设置音效为默认 .build(); manger.notify(1,notification);
由于只有一条信息,我们可能看不出最高重要程度的区别,但是,我们如果再设置音效或者震动,那么这条通知就会弹窗显示
实现弹窗显示的两种方法:一,当重要程度为最高,且设置了音效或者是震动;二,调用setFullScreenIntent()
setFullScreenIntent
Intentintent=newIntent(this,Main2Activity.class);
PendingIntentpendingIntent=PendingIntent.getActivity(this,0,intent,0);
NotificationManagermanger=(NotificationManager)getSystemService(NOTIFICATION_SERVICE);
Notificationnotification=newNotificationCompat.Builder(this)
.setContentTitle("thisiscotenttitle")//设置标题,必要
.setContentText("contentText")//设置内容,必要
.setWhen(System.currentTimeMillis())//设置时间,默认设置,可以忽略
.setSmallIcon(R.mipmap.ic_launcher)//设置通知栏的小图标,必须设置
.setAutoCancel(true)//设置自动删除,点击通知栏信息之后系统会自动将状态栏的通知删除
.setContentIntent(pendingIntent)//设置在通知栏中点击该信息之后的跳转,参数是一个pendingIntent
.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher))
//设置大图标,未设置时使用小图标代替,拉下通知栏显示的那个图标
//设置大图片BitmpFactory.decodeResource(Resourceres,intid)根据给定的资源Id解析成位图
.setFullScreenIntent(pendingIntent,false) .build(); manger.notify(1,notification);
图片与之前那张一样,我就不放出来了,值得说的是这个方法的第二个参数,为什么是false呢,如果是true的话,当你在玩游戏的时候,屏幕是全屏,然后这条通知就不需要点击,直接就会跳转到某个界面去,除非是来电了才会用true,其他情况若是使用的话,用户估计直接卸载APP
setDefault
之前也是使用了这个设置与setPriority连用实现了弹窗消息,简单解释,这个可以设置音效,震动和呼吸灯的默认效果,也可以单独设置某个的默认,之前我就是单独设置了音效的默认有四个参数可以选择,由英文也可以看出是什么意思了吧,这里就不多解释了
setStyle
这里我就简单地说两种,长文本显示和大图片显示,更多的请看这一篇
一、BigTextStyle长文本显示
Intentintent=newIntent(this,Main2Activity.class);
PendingIntentpendingIntent=PendingIntent.getActivity(this,0,intent,0);
NotificationManagermanger=(NotificationManager)getSystemService(NOTIFICATION_SERVICE);
Notificationnotification=newNotificationCompat.Builder(this)
.setContentTitle("thisiscotenttitle")//设置标题,必要
.setContentText("contentText")//设置内容,必要
.setWhen(System.currentTimeMillis())//设置时间,默认设置,可以忽略
.setSmallIcon(R.mipmap.ic_launcher)//设置通知栏的小图标,必须设置
.setAutoCancel(true)//设置自动删除,点击通知栏信息之后系统会自动将状态栏的通知删除
.setContentIntent(pendingIntent)//设置在通知栏中点击该信息之后的跳转,参数是一个pendingIntent
.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher))
//设置大图标,未设置时使用小图标代替,拉下通知栏显示的那个图标
//设置大图片BitmpFactory.decodeResource(Resourceres,intid)根据给定的资源Id解析成位
.setStyle(newNotificationCompat.BigTextStyle().bigText("长内容长内容长内容长内容长内容长内容长内容长内容长内容长内容长
内容长内容长内容长内容长内容长内容长内容长内容长内容长内容"))
.build();
manger.notify(1,notification);
BigPictureStyle大图片显示
Intentintent=newIntent(this,Main2Activity.class);
PendingIntentpendingIntent=PendingIntent.getActivity(this,0,intent,0);
NotificationManagermanger=(NotificationManager)getSystemService(NOTIFICATION_SERVICE);
Notificationnotification=newNotificationCompat.Builder(this)
.setContentTitle("thisiscotenttitle")//设置标题,必要
.setContentText("contentText")//设置内容,必要
.setWhen(System.currentTimeMillis())//设置时间,默认设置,可以忽略
.setSmallIcon(R.mipmap.ic_launcher)//设置通知栏的小图标,必须设置
.setAutoCancel(true)//设置自动删除,点击通知栏信息之后系统会自动将状态栏的通知删除
.setContentIntent(pendingIntent)//设置在通知栏中点击该信息之后的跳转,参数是一个pendingIntent
.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher))
//设置大图标,未设置时使用小图标代替,拉下通知栏显示的那个图标
//设置大图片BitmpFactory.decodeResource(Resourceres,intid)根据给定的资源Id解析成位
.setStyle(newNotificationCompat.BigPictureStyle().bigPicture(BitmapFactory.decodeResource(getResources(),R.drawable.index)))
.build();
manger.notify(1,notification);
setContent
参数是一个RemoteView,由名字大概可以知道是一个View,定义一个布局文件,之后与其绑定,之后,为布局中的按钮设置onClick事件,之后调用setContent,remoteView作为参数传入RemoteViewsremoteView=newRemoteViews(getPackageName(),R.layout.notification);
remoteView.setOnClickPendingIntent(R.id.last_btn,pendingIntent);
个人觉得自定义布局可以做成像音乐播放器的通知栏那样,不过,今天就暂时简单的学习,之后有学到再补充
相关文章推荐
- Android 通知(使用NotificationCompat.Builder )
- Android创建通知栏Notification(使用新API)
- 在 Xamarin.Android 中使用 Notification.Builder 构建通知
- Android中使用Notification并通过点击Notification启动启动通知详细Activity,点击返回键和按钮返回主界面
- android Notification 状态栏通知使用示例
- Android Notification 使用详解之三:通过服务更新进度通知&在Activity中监听服务进度
- Android NotificationManager与Notification(通知栏) 的使用
- Android中通知(Notification)的简单使用
- Android中通知的使用-----Notification详解
- Android--使用Notification在通知栏显示消息
- Android 音乐播放器的开发教程(十)通知栏Notification的使用 ----- 小达
- Android NotificationManager与Notification(通知栏) 的使用
- Android v4包使用NotificationCompat.Builder 遇到undefined的问题
- Android中通知的使用-----Notification详解
- android通知(Notification)的使用
- Android设置通知Notification
- Android 通知栏 NotificationManager和Notification的使用总结
- Android Notification 使用详解之二:可更新进度的通知
- Android Notification使用系统通知栏布局出现的图标问题
- 通知设置Android通知(Notification)示例