本文总结一下开发中使用的Notification的常见样式
Demo下载地址
demo里有两首歌和打包后的apk,所以比较大,如果网不好下载请耐心!
代码中用的自定义常量
1 2 3 4 5 6 7 8 9 |
public static final int TYPE_Normal = 1; public static final int TYPE_Progress = 2; public static final int TYPE_BigText = 3; public static final int TYPE_Inbox = 4; public static final int TYPE_BigPicture = 5; public static final int TYPE_Hangup = 6; public static final int TYPE_Media = 7; public static final int TYPE_Customer = 8; private NotificationManager manger = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); |
所需权限
1 2 |
<uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.FLASHLIGHT"/> |
一.普通通知
这是最常见通知样式,如下图
举例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
private void simpleNotify(){ //为了版本兼容 选择V7包下的NotificationCompat进行构造 NotificationCompat.Builder builder = new NotificationCompat.Builder(this); //Ticker是状态栏显示的提示 builder.setTicker("简单Notification"); //第一行内容 通常作为通知栏标题 builder.setContentTitle("标题"); //第二行内容 通常是通知正文 builder.setContentText("通知内容"); //第三行内容 通常是内容摘要什么的 在低版本机器上不一定显示 builder.setSubText("这里显示的是通知第三行内容!"); //ContentInfo 在通知的右侧 时间的下面 用来展示一些其他信息 //builder.setContentInfo("2"); //number设计用来显示同种通知的数量和ContentInfo的位置一样,如果设置了ContentInfo则number会被隐藏 builder.setNumber(2); //可以点击通知栏的删除按钮删除 builder.setAutoCancel(true); //系统状态栏显示的小图标 builder.setSmallIcon(R.mipmap.ic_launcher); //下拉显示的大图标 builder.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.drawable.push)); Intent intent = new Intent(this,SettingsActivity.class); PendingIntent pIntent = PendingIntent.getActivity(this,1,intent,0); //点击跳转的intent builder.setContentIntent(pIntent); //通知默认的声音 震动 呼吸灯 builder.setDefaults(NotificationCompat.DEFAULT_ALL); Notification notification = builder.build(); manger.notify(TYPE_Normal,notification); } |
build内提供了很多设置,但是在不同的系统版本显示有很多差异,使用时需要注意
- setTicker 通知到来时低版本上会在系统状态栏显示一小段时间 5.0以上版本好像没有用了
- setContentInfo和setNumber同时使用 number会被隐藏
- setSubText显示在通知栏的第三行文本,在低版本上不显示,比如4.0系统
- setVibrate设置震动 参数是个long[]{震动时长,间隔时长,震动时长,间隔时长…}单位毫秒 设置提醒声音 setSound(Uri sound) 一般默认的就好
- builder.setLights()设置呼吸灯的颜色 并不是所有颜色都被支持 个人感觉没什么用
- 清除通知栏特定通知 manager.cancel(id) id即为manger.notify()的第一个参数
二.下载进度的通知
效果图
代码举例