HarmonyOS 有无应用内所有UI显示置灰的设置方式?

新闻类有时候需要APP的交互根据要求置灰,有一个需求是全局置灰,目前我们的实现方式主要是在每个组件、Page的顶层UI控件通过设置 .grayscale(this.grayscaleValue) 来实现。

但如果全局需要置灰的场合,这种配置方式就很繁琐,每个新增的组件或者页面都要设置,有时还容易忘记加。

想问一下有无APP全局配置置灰的方式,无需对新增组件或者页面通过代码设定就能实现APP全局置灰, 包括Dialog等。

阅读 500
1 个回答

参考下面demo,在onWindowStageCreate 中设置

windowStage.loadContent('pages/TabsTestPage', (err) => {
  if (err.code) {
    console.error(`Failed to set the content. Cause code: ${err.code}`);
    return;
  }
  console.info('Succeeded in setting the content.');
  let grayScale: number = 1;
  try {
    if (canIUse("SystemCapability.Window.SessionManager")) {
      let windowClass =  windowStage.getMainWindowSync()
      let promise = windowClass?.setWindowGrayScale(grayScale);
      promise?.then(() => {
        console.info('Succeeded in setting the grayScale.');
      }).catch((err: BusinessError) => {
        console.error(`Failed to set the grayScale. Cause code: ${err.code}, message: ${err.message}`);
      });
    }
  } catch (exception) {
    console.error(`Failed to set the grayScale. Cause code: ${exception.code}, message: ${exception.message}`);
  }
});