HarmonyOS应用深浅适配

应用深浅色适配

概念

  1. 当系统存在深浅两种显示模式,为提升用户体验,应用适配深浅色模式。从应用与系统配置关联的角度,适配深浅色模式可以分为以下两种情况
    1. 应用跟随系统的深浅色模式
    2. 自定义的深浅色资源

自定义资源实现

  • 在resource目录下增加深色模式限定词目录(命令dark),只有应用存在dark资源文件夹,应用才会被系统识别为存在深色模式

图片资源适配

  • 采用资源限定词目录的方式,参照颜色适配方法,将深色模式下对应的同名(跟浅色适配下同名)放到dark/media中
  • 对于SVG格式的一些简单的图标,可以使用fillColor属性配合系统资源改变图片的绘制颜色

系统默认判断规则

  1. 如果应用工程dark目录下有深色资源,则系统内置组件在深色模式下回自动切换为深色
  2. 如果没有任何深色资源,则系统内置组件在深色模式下保持浅色模式体验

应用主动设置深浅模式

  1. 应用默认配置为跟随系统切换深浅色模式,如果不希望应用跟随系统深浅色模式变化,可主动设置应用的深浅色风格,设置后,应用的深浅色模式固定,不会随着系统改变

样例

跟随系统

  • 在EntryAbility中的onCreat进行设置(前提是resource目录下设置了深色模式下限定词目录
    //主动设置深浅色模式
    /*
     * ConfigurationConstant.ColorMode.COLOR_MODE_NOT_SET   跟随系统
     * ConfigurationConstant.ColorMode.COLOR_MODE_LIGHT     浅色模式
     * ConfigurationConstant.ColorMode.COLOR_MODE_dark      深色模式
     * */
    this.context.getApplicationContext().setColorMode(ConfigurationConstant.ColorMode.COLOR_MODE_NOT_SET)

app应用中自定义

  • 前提也是在resource下设置了深色模式下限定词目录
  Button('点击更换app——color模式')
    .onClick(() => {
      this.flg = !this.flg
      if (this.flg) {
          //获取上下文--获取app上上下文--设置模式颜色--配置常量
        getContext(this).getApplicationContext().setColorMode(ConfigurationConstant.ColorMode.COLOR_MODE_DARK)
      } else {
        getContext(this).getApplicationContext().setColorMode(ConfigurationConstant.ColorMode.COLOR_MODE_LIGHT)
      }
    })

你可能感兴趣的:(harmonyos,华为)