Android Notification常见样式总结

本文总结一下开发中使用的Notification的常见样式
Demo下载地址
demo里有两首歌和打包后的apk,所以比较大,如果网不好下载请耐心!

代码中用的自定义常量

所需权限

一.普通通知

这是最常见通知样式,如下图
这里写图片描述
这里写图片描述

举例

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

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

二.下载进度的通知

效果图
这里写图片描述
代码举例

注意事项
1. setProgress的第三个bool类型的参数表示progressbar的Indeterminate属性 指是否使用不确定模式
2. 高版本上progressbar的进度值可以在setContentInfo显示,但是低版本上使用这个属性会导致progressbar不显示,setContentText一样

三.BigTextStyle通知

点击后展开可显示大段文字内容的通知
效果图
点击前
这里写图片描述
点击后
这里写图片描述

代码举例

注意事项
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中需要添加<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
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

九.仿 QQ 音乐的 Notification

有人想要仿 QQ 音乐的样式,其实代码很简单和自定义的差不多。

点击或下拉后展示效果图
这里写图片描述
代码示例

R.layout.notification_big_content的布局文件也很简单就不上代码了
需要注意的是
bigContentView是 api16以上才支持的,所以4.1以下还是没有效果的
另外bigContentView布局的高度需要是100dp。

Demo下载地址
demo里有两首歌和打包后的apk,所以比较大,如果网不好下载请耐心!由于 qq 音乐那个是后来加上去的所以 Demo 里并没有,请自行测试

2 7 收藏 评论

相关文章

可能感兴趣的话题



直接登录
跳到底部
返回顶部