Android自定义Notification的一些坑

第一次在简书发文章,有问题多指教

本篇介绍自定义通知样式时会遇到的一些坑,本篇旨在记录坑,而不在全面讲解自定义的方法

  • 文字颜色:强烈使用系统定义的文字颜色,否则需要固定背景色
  • 自定义View的尺寸: 建议自适应,因为不同系统高度会有差别
  • 不同系统版本的兼容性处理

详细讲解

文字颜色

首先一个大前提,通知栏的背景色的颜色是不确定的,有深色,也有浅色。
这里分两种情况说明。
一种是自定义布局的背景色固定,这种情况下可以直接指定文字颜色。但是这种在通知栏的观感不是很好,比如浅色通知栏,显示一条黑色通知显得很突兀,也不好看。

第二种是透明背景色,这时文字颜色就不能固定了,好在系统提供的对应的文字样式。

原生系统提供了通知栏的适配样式,这个样式会保证在通知栏的文字颜色一直是正常可见的。

某些定制系统使用了系统提供的样式还是会有问题,比如小米6.0的某个版本。其他定制系统也类似,后面有详细讨论

下面先说下如何使用系统样式来适配

由于5.0引入MeterialDesign,5.0及以上的样式命名有所更改,所以需要分别设置。

SDK21以下

values/style.xml

标题样式

android:textAppearance="@android:style/TextAppearance.StatusBar.EventContent.Title"

文字颜色:

android:textAppearance="@android:style/TextAppearance.StatusBar.EventContent"

SDK21及以上

标题颜色

android:textAppearance="@android:style/TextAppearance.Material.Notification.Title"

内容颜色

android:textAppearance="@android:style/TextAppearance.Material.Notification.Info"

注意:

上面的解决方案在实际使用中发现小米的6.0MRA58K版本是暗色通知栏,会导致颜色适配失效,经研究此版本系统样式采用的仍然是21以下的样式配置。 这就造成小米和原生系统的适配冲突。

最终经过研究有以下方案可以解决

  • 1,为小米手机做适配,单独写一套小米的适配样式布局。通过判断手机型号来适配,但是有个比较大的缺点就是如果其他系统也有类似问题那么需要长时间收集各种机型增加判断条件来适配。这一个积累工作,长期劳心劳神
  • 2,直接不设置文字颜色,这样的适应性会比较广一些,但是在小米手机上对某些奇葩一点的主题也可能会导致文字与背景同色
  • 3,再就是上面说的设置固定的背景色,不过据网上了解有些系统也会忽略自定义的背景色,这个倒是可以通过图片来解决,详细的就没做深入探究。

我能说最终还是选择了不设置文字颜色来解决的么...吐槽一下定制系统。

自定义View的尺寸

首先Android原生系统中定义的样式大致有两种,一是普通通知,另一种是4.1以后引入的扩展通知
普通通知高度为64dp,扩展通知高度为256dp。但是由于国内不同定制系统对这两种高度有不同处理,所以推荐使用自适应的布局,尽量不要固定宽高。
至于通知的宽度,不只受屏幕宽度影响,也受自制系统影响。比如华为系统的通知左侧会有时间轴、小米和魅族系统左右会预留padding空间等等。

所以尺寸上尽量做到自适应。

不同系统版本的兼容

扩展布局只支持4.1以上系统,对于4.1以下,可以只设置普通视图的布局。
对于7.0以上系统一定不要直接使用notification.bigContentView来设置布局,此方法早已废弃,尤其7.0以后bigContentView可能为空值

一些代码细节

  • 创建通知可以使用v4包中的NotificatoinCompat.Builder,以兼容11以下版本。
  • 设置自定义布局推荐同时设置普通状态和扩展状态的布局,否则有些手机会出现 Bad Notification Exception
builder.setCustomContentView(buildNormalView(pushMessage));
builder.setCustomBigContentView(buildNoImgView(pushMessage));

Android系统提供的富媒体样式

上面说的都是自定义样式,这里顺便提一下系统目前提供的样式。

在4.1以下,只有标准模式,就是包含图标标题文字的基本样式。

4.1及以上增加了扩展视图,提供了BigText,BigImage两种样式

  • BigText: 在原有标准样式的基础上增大了内容文字的区域,可以容纳大量文字
  • BigImg: 在原有基础上扩展开之后会将图标展示为大图的样式

详细可以参考Google Notification Design

我的博客: www.xkjchen.com

参考:
Google Notification API
Google Notification Design

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,951评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,606评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,601评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,478评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,565评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,587评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,590评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,337评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,785评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,096评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,273评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,935评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,578评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,199评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,440评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,163评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,133评论 2 352

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,008评论 25 707
  • 内容抽屉菜单ListViewWebViewSwitchButton按钮点赞按钮进度条TabLayout图标下拉刷新...
    皇小弟阅读 46,748评论 22 665
  • 原文出处: http://www.androidchina.net/6174.html Notification在...
    木木00阅读 12,321评论 3 32
  • 踏上寻梦的征途 我渴望前进 我盼望成长 我知道 路途坎坷难忘 但我依然自由翱翔 或许 这艰苦的经历 带给我人生的仰望
    忆梦女孩阅读 147评论 0 0
  • 对于团队中需要清除的人需要及早行动,拖着是对双方的不负责任,该做的决定要及早做。
    楼小楼_elf阅读 224评论 0 0