HarmonyOS 鸿蒙Next 深浅色模式,应用如何动态的开关“跟随系统”
HarmonyOS 鸿蒙Next 深浅色模式,应用如何动态的开关“跟随系统”
深浅色模式,应用如何动态的开关“跟随系统”
1. 蓝信App设置中,有个显示设置页面,里面有个“跟随系统自动”的开关
2. 当打开时,应用外观会自动跟随系统自动切换浅色,深色
3. 当关闭时,用户选择浅色,那蓝信app永久显示浅色外观
用户选择深色时,那蓝信app永久显示深色外观
配置组件颜色后,组件颜色不跟随系统主题配色切换,框架定义了两种颜色模式,取值如下: 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动态地控制是否跟随系统的深浅色模式。具体实现方式如下:
-
获取当前系统设置: 使用
ohos.agp.components.Configuration
类获取当前系统的深浅色模式设置。通过getUiMode()
方法检查UI_MODE_NIGHT_MASK
来判断当前是深色模式还是浅色模式。 -
动态开关“跟随系统”: 应用可以通过修改其
Window
的属性来动态决定是否跟随系统深浅色模式。在鸿蒙系统中,可以通过setUiOptions
方法配合View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
等标志位来调整界面显示。但直接控制跟随系统深浅色模式的API通常是通过应用的主题配置实现的。 -
实现代码: 在代码中,可以通过设置主题或修改
Window
的属性来动态改变是否跟随系统。例如,通过setTheme
方法在应用启动时或运行时切换主题,以匹配或忽略系统的深浅色模式。 -
注意事项: 确保在修改主题或
Window
属性时,应用界面能够平滑过渡,避免用户体验上的突兀。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html