HarmonyOS 鸿蒙Next 设置应用显示模式固定为浅色模式
HarmonyOS 鸿蒙Next 设置应用显示模式固定为浅色模式
按照文档提示,使用this.context.getApplicationContext().setColorMode(ConfigurationConstant.ColorMode.COLOR_MODE_DARK) 的方式去设置应用显示模式没有起作用,一直是跟随系统的显示模式。
3 回复
应用主动设置深浅色模式:即颜色只固定,不跟随系统模式变动。 监听深浅色切换事件:this.context.config.colorMode以及onConfigurationUpdate监听颜色模式变得,参考https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-app-ability-configuration-V5 。demo如下:
import { AbilityConstant, Configuration, UIAbility, Want } from '@kit.AbilityKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
import { window } from '@kit.ArkUI';
import { BusinessError } from '@kit.BasicServicesKit';
export default class EntryAbility extends UIAbility {
colorMode: number | undefined = 0
onConfigurationUpdate(newConfig: Configuration): void {
this.colorMode = newConfig.colorMode
let windowStage: window.WindowStage | undefined = AppStorage.get('windowStage')
if (windowStage !== undefined) {
this.changeColor(windowStage)
}
}
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');
this.colorMode = this.context.config.colorMode
}
onDestroy(): void {
hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onDestroy');
}
changeColor(windowStage: window.WindowStage) {
let windowClass: window.Window | null
windowStage.getMainWindow((err: BusinessError, data) => {
let errCode: number = err.code;
if (errCode) {
console.error('Failed to obtain the main window. Cause: ' + JSON.stringify(err));
return;
}
windowClass = data;
console.info('Succeeded in obtaining the main window. Data: ' + JSON.stringify(data));
let sysBarProps: window.SystemBarProperties = {
statusBarColor: this.colorMode === 0 ? '#aa00ff0b' : '#ff00ff',
navigationBarColor: '#00ff00',
// 以下两个属性从API Version 8开始支持
statusBarContentColor: this.colorMode === 0 ? '#aaff0000' : '#ff002aff',
navigationBarContentColor: '#ffffff'
};
windowClass.setWindowSystemBarProperties(sysBarProps, (err: BusinessError) => {
let errCode: number = err.code;
if (errCode) {
console.error('Failed to set the system bar properties. Cause: ' + JSON.stringify(err));
return;
}
console.info('Succeeded in setting the system bar properties.');
});
})
}
onWindowStageCreate(windowStage: window.WindowStage): void {
// Main window is created, set main page for this ability
hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate');
AppStorage.setOrCreate('windowStage', windowStage)
this.changeColor(windowStage)
windowStage.loadContent('pages/Index', (err) => {
if (err.code) {
hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? '');
return;
}
hilog.info(0x0000, 'testTag', 'Succeeded in loading the content.');
});
}
onWindowStageDestroy(): void {
// Main window is destroyed, release UI related resources
hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageDestroy');
}
onForeground(): void {
// Ability has brought to foreground
hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onForeground');
}
onBackground(): void {
// Ability has back to background
hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onBackground');
}
}
更多关于HarmonyOS 鸿蒙Next 设置应用显示模式固定为浅色模式的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
是在 Ability 的 onWindowStageCreate 中设置的吗?
在HarmonyOS 鸿蒙Next系统中,若要将应用显示模式固定为浅色模式,可以通过以下步骤进行操作:
-
开发者选项设置:
- 首先,确保你的设备已开启开发者模式。若未开启,前往“设置” > “关于手机” > 连续点击“版本号”7次以启用开发者模式。
- 进入“设置” > “系统和更新” > “开发人员选项”。
-
强制应用浅色模式:
- 在开发人员选项中,寻找“强制应用使用浅色模式”或类似名称的设置项。
- 勾选该选项,使所有应用强制采用浅色模式显示。
-
应用级设置(如适用):
- 某些应用可能支持独立设置显示模式。可在应用内“设置”或“偏好设置”中寻找相关选项,并固定为浅色模式。
-
重启应用或设备:
- 完成上述设置后,重启相关应用或整个设备,以确保设置生效。
请注意,不是所有应用都支持强制浅色模式,具体效果可能因应用而异。此外,系统更新可能会改变设置路径或选项名称,请参考最新系统文档进行操作。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html