不管什么APP都会加上的「夜间模式」,腾讯是怎么设计的?

移动开发
下面会讲到的是我以前接手过的一个项目——设计 app 的「夜间模式」。在这个项目中,为了能够达到用户观看的最佳舒适度,不断的调试试验,其中也融入了一些方法,算是在感性设计基础上,多了一些理性的考量。

大家都知道,设计一定没有单纯的「感性的设计」与「理性的设计」。

多年以前,我在一本书中读到过这么一段对于绘画和设计异同的描述:「绘画是主观的,设计是客观的。绘画是绘画者对自身情感的表达与宣泄,为的是取悦自己。而设计是设计师最大限度摒除自我见识所带来的障碍,为的是取悦大众。」

虽然这个分类方法还是显得简单粗暴了些,但是大体上我深以为然。

下面会讲到的是我以前接手过的一个项目——设计 app 的「夜间模式」。在这个项目中,为了能够达到用户观看的最佳舒适度,不断的调试试验,其中也融入了一些方法,算是在感性设计基础上,多了一些理性的考量。

下文我会从两大块进行说明:设计+实现。

一、如何设计出舒适的夜间模式

1. 背景:为何要做夜间模式 

我们的 app 受众以低龄学生为主,工作日内,低龄学生用户需要早起上学,受此影响,他们习惯在早上的吃饭或上学途中、课间或午休,利用碎片化时间阅读漫画。

他们也习惯在睡前和熄灯后,把白天没看完的漫画读完,此时是使用较为集中的时间段,因此他们对夜间阅读功能有一定需求,目前的白天版本在夜晚看来实在太过闪耀了。

2.设计目标

提高夜间使用 app 的舒适度。

3. 设计思考

确定设计目标以后,接下来就要先捋一捋可能会面临的各种问题。界面中,包含了图片、文字、图标、背景色、分割线等,我们首要确定的是背景色值,因为它决定了夜晚模式的基调。那么背景色值又与什么相关联呢?我会按照下图顺序一个个的来解答。 

4. 背景色之亮度思考

先说说亮度,亮度其实可以被测量,也有相对应的单位。(此处有参考 qq 夜间模式)

我们常用来描述光的物理量有4个:发光强度/光通量/光照度/亮度。

这最后一项「亮度」正是我们想要的。亮度是指物体明暗的程度,定义是单位面积的发光强度,它的单位是 nit(尼特);1nit=1 cd/m²。 

上图是人眼细胞的一些特性,划横线处可以看出,主要负责夜晚视觉的杆状细胞,作用范围是0.034cd/m²。

结论:夜晚,我们最终的屏幕亮度应该保证在0.034cd/m²左右是较为合适的。

(题外话:有种东西叫亮度测试仪,可以测量亮度。)

5. 背景色之彩度思考

夜晚中,我们对图片中颜色的判断会有误差,如下图,单看右边图中的色彩,很难猜到其真实的色彩;因为在夜晚,主要是我们人眼的杆状细胞起作用。 

官方解释:杆状细胞主要负责夜晚及周边视觉。相较于锥状细胞,杆状细胞对光更为敏感,较容易看到微弱的亮光,因此在极低的照度下,人眼仅依赖杆状细胞,称为暗视觉,其无法分辨颜色,故所有表面看起来仅有灰阶明暗的差异;人眼约有一亿两千万个杆状细胞,仅存在于视网膜的周边,因该处缺乏锥状细胞,以致我们对视野的周边部份有辨色上的困难。杆状细胞的损伤则导致夜盲。

通俗一点解释:人眼在夜间可辨识出的颜色种类较少,所以不用和白天一样使用缤纷的色彩表现;还有一点需要注意,晚上长时间注视着高饱和度的色彩,会觉得刺眼,舒适度不够。

结论:夜晚,应使用低彩度的色彩、且尽量减少颜色的种类。

除了低彩度,还有另一个问题也值得注意:不同色相下的暗色系需要保持相对的视觉亮度均衡。

下图中的暗色系,通过亮度公式,换算成灰色系之后,亮度上还是会稍有差异,在实际取色中要注意均衡这一点,保证视觉舒适度。(亮度公式:0.299*R + 0.587*G + 0.114*B=y) 

6. 背景色之护眼模式

在夜间,通常情况下,我们面对屏幕的距离会比白天更近,在长时间近距离的注视下,对眼睛伤害比白天更大。使得我们眼睛造成伤害的就是 HEV 蓝光,当然,蓝光对人眼造成的伤害程度取决于很多原因,包括屏幕的技术、屏幕大小、屏幕亮度、色温和用户脸部的距离和持续的时间。

下图中可以看出,各大手机厂商的护眼模式,通过降低亮度,蓝光得到有效控制;而蓝黄是一对互补色,如果想从色温上降低蓝色,黄色自然会增强。 

 

题外话:如果我们将「蓝光下降比-亮度下降比」的值近似看成在亮度条件一样的情况下蓝光的减少量,那么除了苹果(超过60%)之外其余7款手机的蓝光量只下降了25%左右,给苹果鼓掌。

结论:在硬件与时间不能更改的情况下,通过前面提到的降低亮度和调整屏幕色温也能降低 hev 蓝光对眼睛的伤害。

小结:夜晚,背景色应该选择低彩度、色相偏黄、亮度值在0.034-34之间。

根据以上结论,选出了夜间模式的背景色#1A1714。

7. 对比色的处理

背景色确立之后,需要注意的有两点:

背景色/文字/图片的区分处理

如下图,在夜晚长时间观看的情况下,左边一组「图片/文字/辅助文字」的组合比右边来的舒适;由此可得出,在夜间,对比度不需要太过明显,需要柔和一些,视觉舒适度会更高;否则对比会太明显,文字或过亮或过暗。 

多机型验证

有了上述的大致思路以后,就是进行海量的机型测试了;经过一段时间真实晚上场景的测试,以及对热门且夜晚模式舒适度较高的 app 做了研究,我得出:

  • 文字与背景对比度—3:1~5:1
  • 图片色与背景对比度—4:1~6.5:1

下图是夜间模式的部分设计稿: 

(对比度可通过软件 Colour Contrast Analyser 测出)

下面是我挑选了几个肉眼看上去舒适度高的 app,对它们的夜间模式做了些研究,看看是否符合我以上的研究,结果如下:基本也与我拟订的范围贴合度很高。(y 表示的是总亮度) 

二、如何把设计稿实现出来

思考实现这部分的时候,有很多的疑问。整个 app 的页面太多,我要全部做出来,再给开发标注吗?icon 如何处理,我需要重新制作一份夜间模式的 icon 吗?夜间模式和换肤其实很像,可不可以复用呢?如何做到把设计和开发投入产出比最大化呢?

下面就一一来讲解,我将这部分分为三块来说明:文字+图片+icon。

1. 文字

面对的问题:页面太多,无法针对每个页面做视觉稿。

解决方案:找出共性,归纳白天文字色,针对每个色值给出对应的夜间色值;根据前面的分析,夜间模式的对比度是不需要做明显区分的,所以我把以下5种文字色,缩减成2种带透明度的白色:45%、30%。辅助文字色的选取注意上面说的视觉平衡,可以用亮度公式来判断。 

方案延展:我为什么选用了带透明度的白色呢?因为夜间模式其实也是一种换肤,那这个方案是否可以为以后的换肤做准备呢?最后我把分割线与文字色由纯色变成带透明度的色值,这么做能适配任意色值背景(除浅色背景下),为后续换肤打基础(全局背景&弹框背景除外)。 

按照以上的规律,把白天的文字色做减法,归纳为以下的表格;只要把这个表格给到开发,让他们按照表格去实施,就能够完美的实现夜间模式的文字替换了。 

2. 图片

图片变暗的方式有两种,各有优缺点,但可以解决大部分的图片变暗问题。

方法一:图片处于顶层,背景设置为黑色,改变图片透明度,达到图片视觉变暗的效果。 

存在的问题:图片变透明以后,可能会露出底层的某些隐藏控件。

结论:可以小面积使用

方法二:图片处于底层,上面覆盖一层黑色透明层,达到图片视觉变暗的效果。 

存在的问题:开发的实现方法在这里就不细说了,但这两种实现方法会稍有内存开销,且对 gif 图不适用。

结论:目前来说比较合适的方案,可以使用。

3. icon

Icon 的表现形式比较的多样化,但还是有规律可循,我把 icon 分为三种:单色、非单色、特殊位置。

单色icon

问题:这么多 icon?难道我要重新画一遍,切图给开发吗?

答案:肯定不用。我先统一收拢了 icon 的颜色种类,只留下品牌色、正常装饰色、不可点击色,分别对这三种给出相应的色值,再配合一段代码即可;这样为以后的换肤做准备,不同的皮肤颜色,只需要潇洒的给开发一个颜色值即可得到以下的效果。 

非单色icon

非单色的 icon 是指包含两种及两种以上的颜色值的 icon,此类 icon 可以参考图片的实现方式即可。

特殊位置的icon

有些部分的 icon 是不能用代码实现变暗的,比如下图中的头像旁边的「VIP身份标识」,这些 icon 就只能重新设计夜间模式的样子,切图给开发。 

总结

我们来回顾一下上面说的夜间模式整体过程是什么? 

希望每一个设计的背后,都有可以支持的理论依据,不纯是主观臆想,我们也正在这条道路上慢慢摸索,以上有不正确的地方,欢迎指正。

责任编辑:未丽燕 来源: TCD设计中心
相关推荐

2021-08-02 09:03:07

感知性模式互联网设计

2016-07-22 10:28:47

业务运维APP

2020-11-24 19:20:02

iOS夜间模式缓存

2021-11-29 10:27:24

设计模式程序员

2017-01-18 22:19:05

iOSApp开发

2021-07-29 14:42:55

设计模式Java

2015-03-26 10:05:59

UI设计师UI设计

2011-07-26 14:35:02

Windows 200安全模式

2018-09-28 16:35:31

APP图标工具

2020-03-18 09:31:47

设计模式软件

2024-11-08 09:41:02

2014-12-19 11:07:18

IaaSDevOps

2015-07-22 11:35:26

2011-06-14 13:31:00

FS模式

2015-05-15 13:21:22

URL系统设计

2022-05-09 08:04:50

工厂模式设计模式

2019-05-06 11:26:33

设计师需求执行

2023-12-05 08:20:05

单例模式Python

2016-03-27 22:30:00

2021-03-18 08:36:24

核心代码ACM模式面试ti
点赞
收藏

51CTO技术栈公众号