您的位置:首页 > 移动开发 > Android开发

Android Notification常见样式总结

2017-10-27 11:34 295 查看
代码中用的自定义常量

?
所需权限

?

一.普通通知

这是最常见通知样式,如下图





举例

?
build内提供了很多设置,但是在不同的系统版本显示有很多差异,使用时需要注意

setTicker 通知到来时低版本上会在系统状态栏显示一小段时间 5.0以上版本好像没有用了 setContentInfo和setNumber同时使用 number会被隐藏 setSubText显示在通知栏的第三行文本,在低版本上不显示,比如4.0系统 setVibrate设置震动 参数是个long[]{震动时长,间隔时长,震动时长,间隔时长…}单位毫秒 设置提醒声音 setSound(Uri sound) 一般默认的就好 builder.setLights()设置呼吸灯的颜色 并不是所有颜色都被支持 个人感觉没什么用
清除通知栏特定通知 manager.cancel(id) id即为manger.notify()的第一个参数

二.下载进度的通知

效果图



代码举例

?
注意事项

1. setProgress的第三个bool类型的参数表示progressbar的Indeterminate属性 指是否使用不确定模式

2. 高版本上progressbar的进度值可以在setContentInfo显示,但是低版本上使用这个属性会导致progressbar不显示,setContentText一样

三.BigTextStyle通知

点击后展开可显示大段文字内容的通知


效果图

点击前



点击后



代码举例<喎�"/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxwcmUgY2xhc3M9"brush:java;">
private void bigTextStyle(){ NotificationCompat.Builder builder = new NotificationCompat.Builder(this); builder.setContentTitle("BigTextStyle"); builder.setContentText("BigTextStyle演示示例"); builder.setSmallIcon(R.mipmap.ic_launcher);
builder.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.drawable.notification)); android.support.v4.app.NotificationCompat.BigTextStyle style = new android.support.v4.app.NotificationCompat.BigTextStyle(); style.bigText("这里是点击通知后要显示的正文,可以换行可以显示很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长");
style.setBigContentTitle("点击后的标题"); //SummaryText没什么用 可以不设置 style.setSummaryText("末尾只一行的文字内容"); builder.setStyle(style); builder.setAutoCancel(true); Intent intent = new Intent(this,SettingsActivity.class); PendingIntent pIntent = PendingIntent.getActivity(this,1,intent,0);
builder.setContentIntent(pIntent); builder.setDefaults(NotificationCompat.DEFAULT_ALL); Notification notification = builder.build(); manger.notify(TYPE_BigText,notification); }


注意事项

1. 使用类 android.support.v4.app.NotificationCompat.BigTextStyle

2. 在低版本系统上只显示点击前的普通通知样式 如4.4可以点击展开,在4.0系统上就不行

3. 点击前后的ContentTitle、ContentText可以不一致,bigText内容可以自动换行 好像最多5行的样子

四.InboxStyle

与bigTextStyle类似,点击前显示普通通知样式,点击后展开


效果图 (点击后)



代码举例

?
注意事项

1. 使用类android.support.v4.app.NotificationCompat.InboxStyle

2. 每行内容过长时并不会自动换行

3. addline可以添加多行 但是多余5行的时候每行高度会有截断

4. 同BigTextStyle 低版本上系统只能显示普通样式

五.BigPictureStyle

点击后可以显示一个大图的通知


效果图(点击后)



代码举例

?
注意事项

1. 使用类android.support.v4.app.NotificationCompat.BigPictureStyle

2. style.bigPicture传递的是个bitmap对象 所以也不应该传过大的图 否则会oom

3. 同BigTextStyle 低版本上系统只能显示普通样式

六.hangup横幅通知

类似于手机QQ消息的通知,不显示在通知栏而是以横幅的模式显示在其他应用上方


效果图



代码示例

?
注意事项

1. 此种效果只在5.0以上系统中有效

2. mainfest中需要添加


3. 可能还需要在设置开启横幅通知权限(在设置通知管理中)

4. 在部分改版rom上可能会直接弹出应用而不是显示横幅

七.MediaStyle

主要是用来关联音频播放服务的,点击后不会自动消失,通知栏的清空也不可用


效果图

点击前



点击展开后



在4.0系统上的效果 不能展开但是可以最多显示3个按钮外加一个CancelButton



代码示例

?
注意事项

1. 使用类v7包下的NotificationCompat.MediaStyle

2. addAction方法并普通样式也可以用,使用后普通通知可以点击展开,展开部分会显示一排添加的图标,并且可以给每个图标设置不同的点击事件

3. 最多可以添加5哥action 并排显示在点击展开的部分

4. setShowActionsInCompactView的参数是添加的action在所有action组成的数组中的下标,从0开始

5. setShowActionsInCompactView设置的action会显示在点击前的通知的右侧,低版本上也可以显示

6. setShowCancelButton(true)会在通知的右上部分显示一个删除图标 5.0以下有效

八.自定义通知栏布局

其实就是设置一个romateViews


演示效果



代码示例

?
布局文件

?
注意事项

1. 不同控件 PendingIntent.getXXX的requestCode不能相同

2. RemoteViews的具体用法请自行百度 这里就不展开说明了

3. 自定义布局的高需要是64dp 没有为什么 官方给的

4. 需要更改通知栏布局的时候 其实就是以同一个NotifyId发个新的通知 替换掉老的

5. LargeIcon可以不设置,但是smallIcon和title需要设置,不然通知不能显示

6. LargeIcon如果设置了并且自定义布局内相同位置还有一个icon的画在低版本系统上可能会都显示,高版本不会显示LargeIcon
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: