HarmonyOS 鸿蒙Next 深浅色模式,应用如何动态的开关“跟随系统”

发布于 1周前 作者 zlyuanteng 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 深浅色模式,应用如何动态的开关“跟随系统”

深浅色模式,应用如何动态的开关“跟随系统”

1. 蓝信App设置中,有个显示设置页面,里面有个“跟随系统自动”的开关

2. 当打开时,应用外观会自动跟随系统自动切换浅色,深色

3. 当关闭时,用户选择浅色,那蓝信app永久显示浅色外观

用户选择深色时,那蓝信app永久显示深色外观

2 回复

配置组件颜色后,组件颜色不跟随系统主题配色切换,框架定义了两种颜色模式,取值如下: dark:深色模式

light:浅色模式

应用开发中使用的各类资源文件,需要放入特定子目录中存储管理。resources目录包括三大类目录,一类为base目录,一类为限定词目录,还有一类为rawfile目录。自定义深浅色模式的资源文件夹属于限定词目录。

创建深浅色模式资源:

右键点击resources文件夹,新建"Resource Directory"

在弹出框内选择"Color Mode"选项,新建Light/Dark资源文件夹

右键点击Light/Dark资源文件夹中的element文件夹,新建"Element Resource File"

在弹出框内选择"Root element"为"color"类型,创建颜色资源文件

深浅色资源文件格式如下:

{

"color": [

{

"name": "start_window_background",

"value": "#FFFFFF"

},

{

"name": "background",

"value": "#FFFFFF"

},

{

"name": "font_color",

"value": "#FFFFFF"

},

{

"name": "button_background",

"value": "#0000FF"

}

]

}

未配置Light/Dark颜色文件时,应用默认使用base资源目录下的颜色文件

提供一下代码进行参考:

demo:应用中使用$r符号取用资源文件

// 对单个页面进行设置

import ConfigurationConstant from '@ohos.app.ability.ConfigurationConstant';

@Entry

@Component

struct ForceSetExample {

  onPageShow() {

    let applicationContext = getContext().getApplicationContext();

    applicationContext.setColorMode(ConfigurationConstant.ColorMode.COLOR_MODE_DARK);

  }

  onPageHide() {

    let applicationContext = getContext().getApplicationContext();

    applicationContext.setColorMode(ConfigurationConstant.ColorMode.COLOR_MODE_LIGHT);

    applicationContext.setColorMode(ConfigurationConstant.ColorMode.COLOR_MODE_NOT_SET);

  }

  build() {

    Column() {

      Text('进入页面强制设置为深色模式').fontSize(25).margin(15)

      Text('退出页面时先设置为浅色模式').fontSize(25).margin(15)

      Text('再设置为跟随系统').fontSize(25).margin(15)

      Search({ placeholder: 'Type to search...' })

        .searchButton('SEARCH')

        .width(400)

        .height(40)

        .placeholderFont({ size: 14, weight: 400 })

        .textFont({ size: 14, weight: 400 })

        .margin(20)

      Button('按钮一')

        .width('50%').margin('10%').backgroundColor($r('app.color.background'))

      Button('按钮二')

        .width('50%').margin('10%')

    }.width('100%')

  }

}

1、跟随系统动态控制开启,就是能及时拿到当前系统是否为深色模式,是就显示深色模式,反之依然参考https://developer.huawei.com/consumer/cn/forum/topic/0204164387845919126?fid=0109140870620153026

2、跟随系统动态控制关闭,则和系统是否深色模式没有关系,做两个模式的选择按钮用户自行选择即可

更多关于HarmonyOS 鸿蒙Next 深浅色模式,应用如何动态的开关“跟随系统”的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS 鸿蒙Next系统中,应用可以通过系统API动态地控制是否跟随系统的深浅色模式。具体实现方式如下:

  1. 获取当前系统设置: 使用ohos.agp.components.Configuration类获取当前系统的深浅色模式设置。通过getUiMode()方法检查UI_MODE_NIGHT_MASK来判断当前是深色模式还是浅色模式。

  2. 动态开关“跟随系统”: 应用可以通过修改其Window的属性来动态决定是否跟随系统深浅色模式。在鸿蒙系统中,可以通过setUiOptions方法配合View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR等标志位来调整界面显示。但直接控制跟随系统深浅色模式的API通常是通过应用的主题配置实现的。

  3. 实现代码: 在代码中,可以通过设置主题或修改Window的属性来动态改变是否跟随系统。例如,通过setTheme方法在应用启动时或运行时切换主题,以匹配或忽略系统的深浅色模式。

  4. 注意事项: 确保在修改主题或Window属性时,应用界面能够平滑过渡,避免用户体验上的突兀。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部