HarmonyOS 鸿蒙Next中状态栏对比度低

HarmonyOS 鸿蒙Next中状态栏对比度低 我的背景是个视频,改成白色文字的状态栏,检测到低,然后我改成黑色又说低。我现在隐藏状态栏,不知道是否符合要求


更多关于HarmonyOS 鸿蒙Next中状态栏对比度低的实战教程也可以访问 https://www.itying.com/category-93-b0.html

5 回复

隐藏状态栏,审核时也是不行的,如果不想更改状态栏的蓝色,可以更改下颜色比较统一的背景图,如果想实现色彩对比度符合审核要求,可以参考如下操作进行更改。

应用使用的色彩需满足最小对比度要求(设计为不可用状态的组件也需遵守色彩最小对比度要求),参考视觉风格

  • 图标或标题文字与背景对比度需大于3:1,可设置组件背景颜色,请参阅背景设置-backgroundColor
  • 正文文字与背景对比度需大于4.5:1,可字体设置颜色,请参阅文本通用-fontColor
  • 色彩对比度计算方法:
    • 色彩对比度计算公式如下:
      $色彩对比度=(L_1+0.05)/(L_2+0.05)$
      其中:
      • L~1~:较亮颜色的相对亮度(取值范围0~1)。
      • L~2~:较暗颜色的相对亮度(取值范围0~1)。
    • 相对亮度计算公式如下:
      $相对亮度L=0.2126R+0.7152G+0.0722*B$
      其中:
      • R:红色通道(RED)的归一化值。
      • G:绿色通道(GREEN)的归一化值。
      • B:蓝色通道(BLUE)的归一化值。
    • 各颜色通道的sRGB计算公式如下:
      各颜色通道的sRGB值通过对应颜色通道8位RGB值除以255获得:
      $XsRGB=X8位/255$
    • 各颜色通道的归一化值计算公式如下:
      如果各颜色通道的sRGB值≤0.04045,则对应颜色通道的归一化值R/G/B为:
      $X=XsRGB/12.92$,
      否则:
      $X=((XsRGB+0.055)/1.055)^{2.4}$
      其中X代指R/G/B。

以文字颜色为#FFFFFF,背景颜色为#FA2C19为例:

计算文字颜色的相对亮度L~1~:

  1. 分解RGB通道值:

    • 红色(R):FF→十进制值255。
    • 绿色(G):FF→十进制值255。
    • 蓝色(B):FF→十进制值255。
  2. 归一化处理,计算各颜色通道的sRGB值:

    • RsRGB=255/255=1;
    • GsRGB=255/255=1;
    • BsRGB=255/255=1;
  3. sRGB到线性RGB转换(满足伽马校正),因为以上三个sRGB都大于0.04045,所以计算公式为:
    $X=((XsRGB+0.055)/1.055)^{2.4}$
    即R、G、B分别为:

    • R=((RsRGB+0.055)/1.055)^2.4^=1;
    • G=((GsRGB+0.055)/1.055)^2.4^=1;
    • B=((BsRGB+0.055)/1.055)^2.4^=1;
  4. 计算相对亮度L~1~:

    • L~1~=0.2126R+0.7152G+0.0722*B=1;

计算背景颜色的相对亮度L~2~:

  1. 分解RGB通道值:

    • 红色(R):FA→十进制值250。
    • 绿色(G):2C→十进制值44。
    • 蓝色(B):19→十进制值25。
  2. 归一化处理,计算各颜色通道的sRGB值:

    • RsRGB=250/255≈0.98;
    • GsRGB=44/255≈0.17;
    • BsRGB=25/255≈0.10;
  3. sRGB到线性RGB转换(满足伽马校正),因为以上三个sRGB都大于0.04045,所以计算公式为:
    $X=((XsRGB+0.055)/1.055)^{2.4}$
    即R、G、B分别为:

    • R=((RsRGB+0.055)/1.055)^2.4^≈0.955;
    • G=((GsRGB+0.055)/1.055)^2.4^≈0.025;
    • B=((BsRGB+0.055)/1.055)^2.4^≈0.010;
  4. 计算相对亮度L~2~:

L~2~=0.2126R+0.7152G+0.0722*B≈0.23;

计算色彩对比度:

色彩对比度=(L~1~+0.05)/(L~2~+0.05)≈3.89:1;

色彩对比度结果分析:

色彩对比度3.89:1,大于3:1,满足UX体验对色彩对比度的要求。

更多关于HarmonyOS 鸿蒙Next中状态栏对比度低的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


就得用视频,他这个规则没考虑我用视频的情况,

如果使用视频做背景,也需要每帧都满足对比度要求,

在HarmonyOS Next中,状态栏对比度低可能是由于系统主题或色彩方案设置导致。可以尝试调整系统显示设置中的色彩模式或对比度选项,或更换高对比度主题。部分情况下,应用兼容性问题也可能影响状态栏显示效果。

在HarmonyOS Next中,状态栏文字对比度问题通常与动态背景适配相关。根据你提供的截图,系统检测到对比度低是因为状态栏文字颜色未能根据视频背景的明暗变化自动调整。HarmonyOS的设计规范要求状态栏文字与背景的对比度至少达到4.5:1(AA级标准)以确保可读性。

隐藏状态栏虽然能规避对比度问题,但会牺牲系统信息的可见性。建议通过以下方式优化:

  1. 使用WindowsetStatusBarColor方法动态计算背景平均亮度,并切换深色/浅色状态栏文字
  2. 对视频区域上方实施半透明遮罩层,稳定文字显示环境
  3. 在视频播放期间临时调整状态栏区域为固定色值

具体可参考HarmonyOS设计指南中“动态色彩适配”章节,通过UIObserver监听界面元素变化实时调整状态栏样式。

回到顶部