HarmonyOS 鸿蒙Next开发设置窗口的背景颜色

发布于 1周前 作者 eggper 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next开发设置窗口的背景颜色

import { KeyboardAvoidMode, window } from '@kit.ArkUI'; // 导入ArkUI的window模块
import { common } from '@kit.AbilityKit'; // 导入AbilityKit的common模块

export class AppUtil {
  private static windowStage: window.WindowStage; // 静态变量,用于存储窗口管理器
  private static context: common.UIAbilityContext; // 静态变量,用于存储UIAbility的上下文信息

  /**
   * 初始化方法,缓存全局变量,在UIAbility的onWindowStageCreate方法中调用该方法进行初始化。
   * Initialization method, caches global variables, call this method in the onWindowStageCreate method of UIAbility for initialization.
   * @param context 上下文
   * @param windowStage 窗口管理器
   */
  static init(context: common.UIAbilityContext, windowStage: window.WindowStage) {
    AppUtil.context = context; // 初始化上下文
    AppUtil.windowStage = windowStage; // 初始化窗口管理器
  }

  /**
   * 获取主窗口
   * Get the main window
   */
  static getMainWindow(): window.Window {
    if (!AppUtil.windowStage) { // 如果窗口管理器未初始化
      console.error("windowStage为空,请在UIAbility的onWindowStageCreate方法中调用AppUtil的init方法进行初始化!WindowStage is null, please call the init method of AppUtil in the onWindowStageCreate method of UIAbility for initialization!");
    }
    return AppUtil.windowStage.getMainWindowSync(); // 同步获取主窗口
  }

  /**
   * 获取UIContext
   * @returns
   */
  static getUIContext(): UIContext {
    return AppUtil.getMainWindow().getUIContext();
  }
  
  /**
   * 设置窗口的背景颜色。此方法在Stage模型下使用,需要在loadContent()或setUIContent()方法调用之后才会生效。
   *
   * @param color 需要设置的背景颜色,格式为十六进制RGB或ARGB颜色代码,例如"#00FF00"或"#FF00FF00",大小写不敏感。
   * @param windowClass 可选参数,指定要设置背景颜色的具体窗口实例。如果不提供,则默认使用主窗口。
   *
   * @returns 返回一个Promise对象,表示异步操作的完成状态。
   */
  static async setWindowBackgroundColor(color: string, windowClass?: window.Window) {
    try {
      // 如果没有提供具体的窗口实例,则使用主窗口
      if (!windowClass) {
        windowClass = AppUtil.getMainWindow();
      }
      // 设置窗口的背景颜色,并返回一个Promise对象
      return windowClass.setWindowBackgroundColor(color);
    } catch (err) {
      // 如果设置过程中发生错误,记录错误信息
      console.error(JSON.stringify(err));
      // 返回一个空的Promise对象,表示操作完成
      return;
    }
  }
}
1 回复

在HarmonyOS鸿蒙Next开发中,设置窗口的背景颜色是一个常见的需求。以下是实现这一功能的步骤:

  1. 获取窗口实例:首先,你需要获取到当前窗口的实例。在ArkUI框架中,你可以通过window.getLastWindow(getContext())来获取到最后一个窗口实例。
  2. 设置背景颜色:获取到窗口实例后,你可以使用setWindowBackgroundColor方法来设置窗口的背景颜色。该方法接受一个颜色值作为参数,颜色值可以使用十六进制表示,例如'#FF0000'表示红色。

示例代码如下:

import { window } from '@kit.ArkUI';

async function setWindowBgColor() {
    const windowStage = await window.getLastWindow(getContext());
    if (windowStage) {
        windowStage.setWindowBackgroundColor('#FF0000'); // 设置背景颜色为红色
    }
}

// 在合适的生命周期函数中调用setWindowBgColor函数

请注意,以上代码需要在合适的生命周期函数中调用,例如在页面加载或显示时。

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

回到顶部