鸿蒙NEXT开发资源工具类(ArkTs)

复制代码
import { AppUtil } from './AppUtil';
import { StrUtil } from './StrUtil';
import { resourceManager } from '@kit.LocalizationKit';

/**
 * 资源工具类。
 * 提供访问应用资源的能力,包括布尔值、数字、字符串等资源的获取。
 *
 * @author 鸿蒙布道师
 * @since 2025/04/08
 */
export class ResUtil {

  /**
   * 获取提供访问应用资源的能力。
   *
   * @returns 返回 ResourceManager 实例。
   */
  static getResourceManager(): resourceManager.ResourceManager {
    return AppUtil.getContext().resourceManager;
  }

  /**
   * 获取指定资源对应的布尔结果。
   *
   * @param resId 资源 ID 值或资源信息。
   * @returns 返回布尔值。
   */
  static getBoolean(resId: number | Resource): boolean {
    const manager = ResUtil.getResourceManager();
    return typeof resId === 'number' ? manager.getBoolean(resId) : manager.getBoolean(resId);
  }

  /**
   * 获取指定资源名称对应的布尔结果。
   *
   * @param resName 资源名称。
   * @returns 返回布尔值。
   */
  static getBooleanByName(resName: string): boolean {
    return ResUtil.getResourceManager().getBooleanByName(resName);
  }

  /**
   * 获取指定资源对应的整数或浮点数值。
   *
   * @param resId 资源 ID 值或资源信息。
   * @returns 返回数值。
   */
  static getNumber(resId: number | Resource): number {
    const manager = ResUtil.getResourceManager();
    return typeof resId === 'number' ? manager.getNumber(resId) : manager.getNumber(resId);
  }

  /**
   * 获取指定资源名称对应的整数或浮点数值。
   *
   * @param resName 资源名称。
   * @returns 返回数值。
   */
  static getNumberByName(resName: string): number {
    return ResUtil.getResourceManager().getNumberByName(resName);
  }

  /**
   * 获取指定资源对应的字符串。
   * 支持格式化参数:
   * - 格式化符号:%d、%f、%s、%%、%数字\$d、%数字\$f、%数字\$s;
   * - 说明:%%转义为%; %数字\$d表示使用第几个参数;
   * - 示例:%%d格式化后为%d字符串; %1\$d表示使用第一个参数。
   *
   * @param resId 资源 ID 值或资源信息。
   * @param args 格式化字符串资源参数(可选)。
   * @returns 返回格式化后的字符串。
   */
  static getStringSync(resId: number | Resource, ...args: Array<string | number>): string {
    const manager = ResUtil.getResourceManager();
    return typeof resId === 'number'
      ? manager.getStringSync(resId, ...args)
      : manager.getStringSync(resId, ...args);
  }

  /**
   * 异步获取指定资源对应的字符串。
   *
   * @param resId 资源 ID 值或资源信息。
   * @returns 返回 Promise,解析为字符串。
   */
  static async getStringValue(resId: number | Resource): Promise<string> {
    const manager = ResUtil.getResourceManager();
    return typeof resId === 'number'
      ? manager.getStringValue(resId)
      : manager.getStringValue(resId);
  }

  /**
   * 获取指定资源名称对应的字符串(同步)。
   * 支持格式化参数:
   * - 格式化符号:%d、%f、%s、%%、%数字\$d、%数字\$f、%数字\$s;
   * - 说明:%%转义为%; %数字\$d表示使用第几个参数;
   * - 示例:%%d格式化后为%d字符串; %1\$d表示使用第一个参数。
   *
   * @param resName 资源名称。
   * @param args 格式化字符串资源参数(可选)。
   * @returns 返回格式化后的字符串。
   */
  static getStringByNameSync(resName: string, ...args: Array<string | number>): string {
    const manager = ResUtil.getResourceManager();
    return args.length > 0 ? manager.getStringByNameSync(resName, ...args) : manager.getStringByNameSync(resName);
  }

  /**
   * 获取指定资源名称对应的字符串(异步)。
   *
   * @param resName 资源名称。
   * @returns 返回 Promise,解析为字符串。
   */
  static async getStringByName(resName: string): Promise<string> {
    return ResUtil.getResourceManager().getStringByName(resName);
  }

  /**
   * 获取指定资源对应的字符串数组(同步)。
   *
   * @param resId 资源 ID 值或资源信息。
   * @returns 返回字符串数组。
   */
  static getStringArrayValueSync(resId: number | Resource): Array<string> {
    const manager = ResUtil.getResourceManager();
    return typeof resId === 'number' ? manager.getStringArrayValueSync(resId) : manager.getStringArrayValueSync(resId);
  }

  /**
   * 获取指定资源对应的字符串数组(异步)。
   *
   * @param resId 资源 ID 值或资源信息。
   * @returns 返回 Promise,解析为字符串数组。
   */
  static async getStringArrayValue(resId: number | Resource): Promise<Array<string>> {
    const manager = ResUtil.getResourceManager();
    return typeof resId === 'number' ? manager.getStringArrayValue(resId) : manager.getStringArrayValue(resId);
  }

  /**
   * 获取指定资源名称对应的字符串数组(同步)。
   *
   * @param resName 资源名称。
   * @returns 返回字符串数组。
   */
  static getStringArrayByNameSync(resName: string): Array<string> {
    return ResUtil.getResourceManager().getStringArrayByNameSync(resName);
  }

  /**
   * 获取指定资源名称对应的字符串数组(异步)。
   *
   * @param resName 资源名称。
   * @returns 返回 Promise,解析为字符串数组。
   */
  static async getStringArrayByName(resName: string): Promise<Array<string>> {
    return ResUtil.getResourceManager().getStringArrayByName(resName);
  }

  /**
   * 根据指定数量获取单复数字符串(同步)。
   *
   * @param resId 资源 ID 值或资源信息。
   * @param num 数量值。
   * @returns 返回单复数字符串。
   */
  static getPluralStringValueSync(resId: number | Resource, num: number): string {
    const manager = ResUtil.getResourceManager();
    return typeof resId === 'number' ? manager.getPluralStringValueSync(resId, num) : manager.getPluralStringValueSync(resId, num);
  }

  /**
   * 根据指定数量获取单复数字符串(异步)。
   *
   * @param resId 资源 ID 值或资源信息。
   * @param num 数量值。
   * @returns 返回 Promise,解析为单复数字符串。
   */
  static async getPluralStringValue(resId: number | Resource, num: number): Promise<string> {
    const manager = ResUtil.getResourceManager();
    return typeof resId === 'number' ? manager.getPluralStringValue(resId, num) : manager.getPluralStringValue(resId, num);
  }

  /**
   * 根据指定数量获取资源名称对应的单复数字符串(同步)。
   *
   * @param resName 资源名称。
   * @param num 数量值。
   * @returns 返回单复数字符串。
   */
  static getPluralStringByNameSync(resName: string, num: number): string {
    return ResUtil.getResourceManager().getPluralStringByNameSync(resName, num);
  }

  /**
   * 根据指定数量获取资源名称对应的单复数字符串(异步)。
   *
   * @param resName 资源名称。
   * @param num 数量值。
   * @returns 返回 Promise,解析为单复数字符串。
   */
  static async getPluralStringByName(resName: string, num: number): Promise<string> {
    return ResUtil.getResourceManager().getPluralStringByName(resName, num);
  }

  /**
   * 获取指定资源对应的颜色值(十进制)(同步)。
   *
   * @param resId 资源 ID 值或资源信息。
   * @returns 返回颜色值(十进制)。
   */
  static getColorSync(resId: number | Resource): number {
    const manager = ResUtil.getResourceManager();
    return typeof resId === 'number' ? manager.getColorSync(resId) : manager.getColorSync(resId);
  }

  /**
   * 获取指定资源对应的颜色值(十进制)(异步)。
   *
   * @param resId 资源 ID 值或资源信息。
   * @returns 返回 Promise,解析为颜色值(十进制)。
   */
  static async getColor(resId: number | Resource): Promise<number> {
    const manager = ResUtil.getResourceManager();
    return typeof resId === 'number' ? manager.getColor(resId) : manager.getColor(resId);
  }

  /**
   * 获取指定资源名称对应的颜色值(十进制)(同步)。
   *
   * @param resName 资源名称。
   * @returns 返回颜色值(十进制)。
   */
  static getColorByNameSync(resName: string): number {
    return ResUtil.getResourceManager().getColorByNameSync(resName);
  }

  /**
   * 获取指定资源名称对应的颜色值(十进制)(异步)。
   *
   * @param resName 资源名称。
   * @returns 返回 Promise,解析为颜色值(十进制)。
   */
  static async getColorByName(resName: string): Promise<number> {
    return ResUtil.getResourceManager().getColorByName(resName);
  }

  /**
   * 获取指定资源对应的媒体文件内容(同步)。
   *
   * @param resId 资源 ID 值或资源信息。
   * @param density 屏幕密度(可选),0 或缺省表示默认屏幕密度。
   * @returns 返回媒体文件内容(Uint8Array)。
   */
  static getMediaContentSync(resId: number | Resource, density?: number): Uint8Array {
    const manager = ResUtil.getResourceManager();
    return density !== undefined
      ? (typeof resId === 'number' ? manager.getMediaContentSync(resId, density) : manager.getMediaContentSync(resId, density))
      : (typeof resId === 'number' ? manager.getMediaContentSync(resId) : manager.getMediaContentSync(resId));
  }

  /**
   * 获取指定资源对应的媒体文件内容(异步)。
   *
   * @param resId 资源 ID 值或资源信息。
   * @param density 屏幕密度(可选),0 或缺省表示默认屏幕密度。
   * @returns 返回 Promise,解析为媒体文件内容(Uint8Array)。
   */
  static async getMediaContent(resId: number | Resource, density?: number): Promise<Uint8Array> {
    const manager = ResUtil.getResourceManager();
    return density !== undefined
      ? (typeof resId === 'number' ? manager.getMediaContent(resId, density) : manager.getMediaContent(resId, density))
      : (typeof resId === 'number' ? manager.getMediaContent(resId) : manager.getMediaContent(resId));
  }


  /**
   * 获取指定资源名称对应的媒体文件内容(同步或异步)。
   *
   * @param resName 资源名称。
   * @param density 屏幕密度(可选),0 或缺省表示默认屏幕密度。
   * @param isAsync 是否为异步操作,默认为 false。
   * @returns 返回媒体文件内容(Uint8Array)。
   */
  static getMediaByName(resName: string, density?: number, isAsync = false): Uint8Array | Promise<Uint8Array> {
    const manager = ResUtil.getResourceManager();
    if (isAsync) {
      return density !== undefined
        ? manager.getMediaByName(resName, density)
        : manager.getMediaByName(resName);
    } else {
      return density !== undefined
        ? manager.getMediaByNameSync(resName, density)
        : manager.getMediaByNameSync(resName);
    }
  }

  /**
   * 获取指定资源 ID 对应的图片资源 Base64 编码(同步或异步)。
   *
   * @param resId 资源 ID 值或资源信息。
   * @param density 屏幕密度(可选),0 或缺省表示默认屏幕密度。
   * @param isAsync 是否为异步操作,默认为 false。
   * @returns 返回图片资源 Base64 编码。
   */
  static getMediaContentBase64(
    resId: number | Resource,
    density?: number,
    isAsync = false
  ): string | Promise<string> {
    const manager = ResUtil.getResourceManager();
    const callMethod = isAsync ? 'getMediaContentBase64' : 'getMediaContentBase64Sync';

    return density !== undefined
      ? typeof resId === 'number'
        ? manager[callMethod](resId, density)
        : manager[callMethod](resId, density)
      : typeof resId === 'number'
        ? manager[callMethod](resId)
        : manager[callMethod](resId);
  }

  /**
   * 获取指定资源名称对应的图片资源 Base64 编码(同步或异步)。
   *
   * @param resName 资源名称。
   * @param density 屏幕密度(可选),0 或缺省表示默认屏幕密度。
   * @param isAsync 是否为异步操作,默认为 false。
   * @returns 返回图片资源 Base64 编码。
   */
  static getMediaBase64ByName(
    resName: string,
    density?: number,
    isAsync = false
  ): string | Promise<string> {
    const manager = ResUtil.getResourceManager();
    return isAsync
      ? density !== undefined
        ? manager.getMediaBase64ByName(resName, density)
        : manager.getMediaBase64ByName(resName)
      : density !== undefined
        ? manager.getMediaBase64ByNameSync(resName, density)
        : manager.getMediaBase64ByNameSync(resName);
  }

  /**
   * 获取 resources/rawfile 目录下对应的 rawfile 文件内容(同步或异步)。
   *
   * @param path rawfile 文件路径。
   * @param isAsync 是否为异步操作,默认为 false。
   * @returns 返回文件内容(Uint8Array)。
   */
  static getRawFileContent(path: string, isAsync = false): Uint8Array | Promise<Uint8Array> {
    const manager = ResUtil.getResourceManager();
    return isAsync ? manager.getRawFileContent(path) : manager.getRawFileContentSync(path);
  }

  /**
   * 获取 resources/rawfile 目录下对应的 rawfile 文件内容,并转换为字符串(同步或异步)。
   *
   * @param path rawfile 文件路径。
   * @param isAsync 是否为异步操作,默认为 false。
   * @returns 返回文件内容(字符串)。
   */
  static getRawFileContentStr(path: string, isAsync = false): string | Promise<string> {
    const getContent = isAsync
      ? async (): Promise<string> => StrUtil.unit8ArrayToStr(await ResUtil.getRawFileContent(path, true))
      : (): string => StrUtil.unit8ArrayToStr(ResUtil.getRawFileContent(path, false));

    return getContent();
  }

  /**
   * 获取 resources/rawfile 目录下文件夹及文件列表(同步或异步)。
   *
   * @param path rawfile 文件夹路径。
   * @param isAsync 是否为异步操作,默认为 false。
   * @returns 返回文件列表。
   */
  static getRawFileList(path: string, isAsync = false): Array<string> | Promise<Array<string>> {
    const manager = ResUtil.getResourceManager();
    return isAsync ? manager.getRawFileList(path) : manager.getRawFileListSync(path);
  }

  /**
   * 获取 resources/rawfile 目录下对应 rawfile 文件所在 HAP 的 descriptor 信息(同步或异步)。
   *
   * @param path rawfile 文件路径。
   * @param isAsync 是否为异步操作,默认为 false。
   * @returns 返回 RawFileDescriptor。
   */
  static getRawFd(path: string, isAsync = false): resourceManager.RawFileDescriptor | Promise<resourceManager.RawFileDescriptor> {
    const manager = ResUtil.getResourceManager();
    return isAsync ? manager.getRawFd(path) : manager.getRawFdSync(path);
  }

  /**
   * 关闭 resources/rawfile 目录下 rawfile 文件所在 HAP 的 descriptor 信息(同步或异步)。
   *
   * @param path rawfile 文件路径。
   * @param isAsync 是否为异步操作,默认为 false。
   */
  static closeRawFd(path: string, isAsync = false): void | Promise<void> {
    const manager = ResUtil.getResourceManager();
    return isAsync ? manager.closeRawFd(path) : manager.closeRawFdSync(path);
  }

  /**
   * 获取设备的 Configuration(同步或异步)。
   *
   * @param isAsync 是否为异步操作,默认为 false。
   * @returns 返回设备的 Configuration。
   */
  static getConfiguration(isAsync = false): resourceManager.Configuration | Promise<resourceManager.Configuration> {
    const manager = ResUtil.getResourceManager();
    return isAsync ? manager.getConfiguration() : manager.getConfigurationSync();
  }

  /**
   * 获取设备的 DeviceCapability(同步或异步)。
   *
   * @param isAsync 是否为异步操作,默认为 false。
   * @returns 返回设备的 DeviceCapability。
   */
  static getDeviceCapability(isAsync = false): resourceManager.DeviceCapability | Promise<resourceManager.DeviceCapability> {
    const manager = ResUtil.getResourceManager();
    return isAsync ? manager.getDeviceCapability() : manager.getDeviceCapabilitySync();
  }

  /**
   * 应用运行时,加载指定的资源路径,实现资源覆盖。
   *
   * @param path 资源路径。
   */
  static addResource(path: string): void {
    ResUtil.getResourceManager().addResource(path);
  }

  /**
   * 用户运行时,移除指定的资源路径,还原被覆盖前的资源。
   *
   * @param path 资源路径。
   */
  static removeResource(path: string): void {
    ResUtil.getResourceManager().removeResource(path);
  }

  /**
   * 判断指定路径是否是 rawfile 下的目录。
   *
   * @param path rawfile 路径。
   * @returns true 表示是 rawfile 下的目录,false 表示不是。
   */
  static isRawDir(path: string): boolean {
    return ResUtil.getResourceManager().isRawDir(path);
  }
}
代码如下:
TypeScript 复制代码
import { AppUtil } from './AppUtil';
import { StrUtil } from './StrUtil';
import { resourceManager } from '@kit.LocalizationKit';

/**
 * 资源工具类。
 * 提供访问应用资源的能力,包括布尔值、数字、字符串等资源的获取。
 *
 * @author 鸿蒙布道师
 * @since 2025/04/08
 */
export class ResUtil {

  /**
   * 获取提供访问应用资源的能力。
   *
   * @returns 返回 ResourceManager 实例。
   */
  static getResourceManager(): resourceManager.ResourceManager {
    return AppUtil.getContext().resourceManager;
  }

  /**
   * 获取指定资源对应的布尔结果。
   *
   * @param resId 资源 ID 值或资源信息。
   * @returns 返回布尔值。
   */
  static getBoolean(resId: number | Resource): boolean {
    const manager = ResUtil.getResourceManager();
    return typeof resId === 'number' ? manager.getBoolean(resId) : manager.getBoolean(resId);
  }

  /**
   * 获取指定资源名称对应的布尔结果。
   *
   * @param resName 资源名称。
   * @returns 返回布尔值。
   */
  static getBooleanByName(resName: string): boolean {
    return ResUtil.getResourceManager().getBooleanByName(resName);
  }

  /**
   * 获取指定资源对应的整数或浮点数值。
   *
   * @param resId 资源 ID 值或资源信息。
   * @returns 返回数值。
   */
  static getNumber(resId: number | Resource): number {
    const manager = ResUtil.getResourceManager();
    return typeof resId === 'number' ? manager.getNumber(resId) : manager.getNumber(resId);
  }

  /**
   * 获取指定资源名称对应的整数或浮点数值。
   *
   * @param resName 资源名称。
   * @returns 返回数值。
   */
  static getNumberByName(resName: string): number {
    return ResUtil.getResourceManager().getNumberByName(resName);
  }

  /**
   * 获取指定资源对应的字符串。
   * 支持格式化参数:
   * - 格式化符号:%d、%f、%s、%%、%数字\$d、%数字\$f、%数字\$s;
   * - 说明:%%转义为%; %数字\$d表示使用第几个参数;
   * - 示例:%%d格式化后为%d字符串; %1\$d表示使用第一个参数。
   *
   * @param resId 资源 ID 值或资源信息。
   * @param args 格式化字符串资源参数(可选)。
   * @returns 返回格式化后的字符串。
   */
  static getStringSync(resId: number | Resource, ...args: Array<string | number>): string {
    const manager = ResUtil.getResourceManager();
    return typeof resId === 'number'
      ? manager.getStringSync(resId, ...args)
      : manager.getStringSync(resId, ...args);
  }

  /**
   * 异步获取指定资源对应的字符串。
   *
   * @param resId 资源 ID 值或资源信息。
   * @returns 返回 Promise,解析为字符串。
   */
  static async getStringValue(resId: number | Resource): Promise<string> {
    const manager = ResUtil.getResourceManager();
    return typeof resId === 'number'
      ? manager.getStringValue(resId)
      : manager.getStringValue(resId);
  }

  /**
   * 获取指定资源名称对应的字符串(同步)。
   * 支持格式化参数:
   * - 格式化符号:%d、%f、%s、%%、%数字\$d、%数字\$f、%数字\$s;
   * - 说明:%%转义为%; %数字\$d表示使用第几个参数;
   * - 示例:%%d格式化后为%d字符串; %1\$d表示使用第一个参数。
   *
   * @param resName 资源名称。
   * @param args 格式化字符串资源参数(可选)。
   * @returns 返回格式化后的字符串。
   */
  static getStringByNameSync(resName: string, ...args: Array<string | number>): string {
    const manager = ResUtil.getResourceManager();
    return args.length > 0 ? manager.getStringByNameSync(resName, ...args) : manager.getStringByNameSync(resName);
  }

  /**
   * 获取指定资源名称对应的字符串(异步)。
   *
   * @param resName 资源名称。
   * @returns 返回 Promise,解析为字符串。
   */
  static async getStringByName(resName: string): Promise<string> {
    return ResUtil.getResourceManager().getStringByName(resName);
  }

  /**
   * 获取指定资源对应的字符串数组(同步)。
   *
   * @param resId 资源 ID 值或资源信息。
   * @returns 返回字符串数组。
   */
  static getStringArrayValueSync(resId: number | Resource): Array<string> {
    const manager = ResUtil.getResourceManager();
    return typeof resId === 'number' ? manager.getStringArrayValueSync(resId) : manager.getStringArrayValueSync(resId);
  }

  /**
   * 获取指定资源对应的字符串数组(异步)。
   *
   * @param resId 资源 ID 值或资源信息。
   * @returns 返回 Promise,解析为字符串数组。
   */
  static async getStringArrayValue(resId: number | Resource): Promise<Array<string>> {
    const manager = ResUtil.getResourceManager();
    return typeof resId === 'number' ? manager.getStringArrayValue(resId) : manager.getStringArrayValue(resId);
  }

  /**
   * 获取指定资源名称对应的字符串数组(同步)。
   *
   * @param resName 资源名称。
   * @returns 返回字符串数组。
   */
  static getStringArrayByNameSync(resName: string): Array<string> {
    return ResUtil.getResourceManager().getStringArrayByNameSync(resName);
  }

  /**
   * 获取指定资源名称对应的字符串数组(异步)。
   *
   * @param resName 资源名称。
   * @returns 返回 Promise,解析为字符串数组。
   */
  static async getStringArrayByName(resName: string): Promise<Array<string>> {
    return ResUtil.getResourceManager().getStringArrayByName(resName);
  }

  /**
   * 根据指定数量获取单复数字符串(同步)。
   *
   * @param resId 资源 ID 值或资源信息。
   * @param num 数量值。
   * @returns 返回单复数字符串。
   */
  static getPluralStringValueSync(resId: number | Resource, num: number): string {
    const manager = ResUtil.getResourceManager();
    return typeof resId === 'number' ? manager.getPluralStringValueSync(resId, num) : manager.getPluralStringValueSync(resId, num);
  }

  /**
   * 根据指定数量获取单复数字符串(异步)。
   *
   * @param resId 资源 ID 值或资源信息。
   * @param num 数量值。
   * @returns 返回 Promise,解析为单复数字符串。
   */
  static async getPluralStringValue(resId: number | Resource, num: number): Promise<string> {
    const manager = ResUtil.getResourceManager();
    return typeof resId === 'number' ? manager.getPluralStringValue(resId, num) : manager.getPluralStringValue(resId, num);
  }

  /**
   * 根据指定数量获取资源名称对应的单复数字符串(同步)。
   *
   * @param resName 资源名称。
   * @param num 数量值。
   * @returns 返回单复数字符串。
   */
  static getPluralStringByNameSync(resName: string, num: number): string {
    return ResUtil.getResourceManager().getPluralStringByNameSync(resName, num);
  }

  /**
   * 根据指定数量获取资源名称对应的单复数字符串(异步)。
   *
   * @param resName 资源名称。
   * @param num 数量值。
   * @returns 返回 Promise,解析为单复数字符串。
   */
  static async getPluralStringByName(resName: string, num: number): Promise<string> {
    return ResUtil.getResourceManager().getPluralStringByName(resName, num);
  }

  /**
   * 获取指定资源对应的颜色值(十进制)(同步)。
   *
   * @param resId 资源 ID 值或资源信息。
   * @returns 返回颜色值(十进制)。
   */
  static getColorSync(resId: number | Resource): number {
    const manager = ResUtil.getResourceManager();
    return typeof resId === 'number' ? manager.getColorSync(resId) : manager.getColorSync(resId);
  }

  /**
   * 获取指定资源对应的颜色值(十进制)(异步)。
   *
   * @param resId 资源 ID 值或资源信息。
   * @returns 返回 Promise,解析为颜色值(十进制)。
   */
  static async getColor(resId: number | Resource): Promise<number> {
    const manager = ResUtil.getResourceManager();
    return typeof resId === 'number' ? manager.getColor(resId) : manager.getColor(resId);
  }

  /**
   * 获取指定资源名称对应的颜色值(十进制)(同步)。
   *
   * @param resName 资源名称。
   * @returns 返回颜色值(十进制)。
   */
  static getColorByNameSync(resName: string): number {
    return ResUtil.getResourceManager().getColorByNameSync(resName);
  }

  /**
   * 获取指定资源名称对应的颜色值(十进制)(异步)。
   *
   * @param resName 资源名称。
   * @returns 返回 Promise,解析为颜色值(十进制)。
   */
  static async getColorByName(resName: string): Promise<number> {
    return ResUtil.getResourceManager().getColorByName(resName);
  }

  /**
   * 获取指定资源对应的媒体文件内容(同步)。
   *
   * @param resId 资源 ID 值或资源信息。
   * @param density 屏幕密度(可选),0 或缺省表示默认屏幕密度。
   * @returns 返回媒体文件内容(Uint8Array)。
   */
  static getMediaContentSync(resId: number | Resource, density?: number): Uint8Array {
    const manager = ResUtil.getResourceManager();
    return density !== undefined
      ? (typeof resId === 'number' ? manager.getMediaContentSync(resId, density) : manager.getMediaContentSync(resId, density))
      : (typeof resId === 'number' ? manager.getMediaContentSync(resId) : manager.getMediaContentSync(resId));
  }

  /**
   * 获取指定资源对应的媒体文件内容(异步)。
   *
   * @param resId 资源 ID 值或资源信息。
   * @param density 屏幕密度(可选),0 或缺省表示默认屏幕密度。
   * @returns 返回 Promise,解析为媒体文件内容(Uint8Array)。
   */
  static async getMediaContent(resId: number | Resource, density?: number): Promise<Uint8Array> {
    const manager = ResUtil.getResourceManager();
    return density !== undefined
      ? (typeof resId === 'number' ? manager.getMediaContent(resId, density) : manager.getMediaContent(resId, density))
      : (typeof resId === 'number' ? manager.getMediaContent(resId) : manager.getMediaContent(resId));
  }


  /**
   * 获取指定资源名称对应的媒体文件内容(同步或异步)。
   *
   * @param resName 资源名称。
   * @param density 屏幕密度(可选),0 或缺省表示默认屏幕密度。
   * @param isAsync 是否为异步操作,默认为 false。
   * @returns 返回媒体文件内容(Uint8Array)。
   */
  static getMediaByName(resName: string, density?: number, isAsync = false): Uint8Array | Promise<Uint8Array> {
    const manager = ResUtil.getResourceManager();
    if (isAsync) {
      return density !== undefined
        ? manager.getMediaByName(resName, density)
        : manager.getMediaByName(resName);
    } else {
      return density !== undefined
        ? manager.getMediaByNameSync(resName, density)
        : manager.getMediaByNameSync(resName);
    }
  }

  /**
   * 获取指定资源 ID 对应的图片资源 Base64 编码(同步或异步)。
   *
   * @param resId 资源 ID 值或资源信息。
   * @param density 屏幕密度(可选),0 或缺省表示默认屏幕密度。
   * @param isAsync 是否为异步操作,默认为 false。
   * @returns 返回图片资源 Base64 编码。
   */
  static getMediaContentBase64(
    resId: number | Resource,
    density?: number,
    isAsync = false
  ): string | Promise<string> {
    const manager = ResUtil.getResourceManager();
    const callMethod = isAsync ? 'getMediaContentBase64' : 'getMediaContentBase64Sync';

    return density !== undefined
      ? typeof resId === 'number'
        ? manager[callMethod](resId, density)
        : manager[callMethod](resId, density)
      : typeof resId === 'number'
        ? manager[callMethod](resId)
        : manager[callMethod](resId);
  }

  /**
   * 获取指定资源名称对应的图片资源 Base64 编码(同步或异步)。
   *
   * @param resName 资源名称。
   * @param density 屏幕密度(可选),0 或缺省表示默认屏幕密度。
   * @param isAsync 是否为异步操作,默认为 false。
   * @returns 返回图片资源 Base64 编码。
   */
  static getMediaBase64ByName(
    resName: string,
    density?: number,
    isAsync = false
  ): string | Promise<string> {
    const manager = ResUtil.getResourceManager();
    return isAsync
      ? density !== undefined
        ? manager.getMediaBase64ByName(resName, density)
        : manager.getMediaBase64ByName(resName)
      : density !== undefined
        ? manager.getMediaBase64ByNameSync(resName, density)
        : manager.getMediaBase64ByNameSync(resName);
  }

  /**
   * 获取 resources/rawfile 目录下对应的 rawfile 文件内容(同步或异步)。
   *
   * @param path rawfile 文件路径。
   * @param isAsync 是否为异步操作,默认为 false。
   * @returns 返回文件内容(Uint8Array)。
   */
  static getRawFileContent(path: string, isAsync = false): Uint8Array | Promise<Uint8Array> {
    const manager = ResUtil.getResourceManager();
    return isAsync ? manager.getRawFileContent(path) : manager.getRawFileContentSync(path);
  }

  /**
   * 获取 resources/rawfile 目录下对应的 rawfile 文件内容,并转换为字符串(同步或异步)。
   *
   * @param path rawfile 文件路径。
   * @param isAsync 是否为异步操作,默认为 false。
   * @returns 返回文件内容(字符串)。
   */
  static getRawFileContentStr(path: string, isAsync = false): string | Promise<string> {
    const getContent = isAsync
      ? async (): Promise<string> => StrUtil.unit8ArrayToStr(await ResUtil.getRawFileContent(path, true))
      : (): string => StrUtil.unit8ArrayToStr(ResUtil.getRawFileContent(path, false));

    return getContent();
  }

  /**
   * 获取 resources/rawfile 目录下文件夹及文件列表(同步或异步)。
   *
   * @param path rawfile 文件夹路径。
   * @param isAsync 是否为异步操作,默认为 false。
   * @returns 返回文件列表。
   */
  static getRawFileList(path: string, isAsync = false): Array<string> | Promise<Array<string>> {
    const manager = ResUtil.getResourceManager();
    return isAsync ? manager.getRawFileList(path) : manager.getRawFileListSync(path);
  }

  /**
   * 获取 resources/rawfile 目录下对应 rawfile 文件所在 HAP 的 descriptor 信息(同步或异步)。
   *
   * @param path rawfile 文件路径。
   * @param isAsync 是否为异步操作,默认为 false。
   * @returns 返回 RawFileDescriptor。
   */
  static getRawFd(path: string, isAsync = false): resourceManager.RawFileDescriptor | Promise<resourceManager.RawFileDescriptor> {
    const manager = ResUtil.getResourceManager();
    return isAsync ? manager.getRawFd(path) : manager.getRawFdSync(path);
  }

  /**
   * 关闭 resources/rawfile 目录下 rawfile 文件所在 HAP 的 descriptor 信息(同步或异步)。
   *
   * @param path rawfile 文件路径。
   * @param isAsync 是否为异步操作,默认为 false。
   */
  static closeRawFd(path: string, isAsync = false): void | Promise<void> {
    const manager = ResUtil.getResourceManager();
    return isAsync ? manager.closeRawFd(path) : manager.closeRawFdSync(path);
  }

  /**
   * 获取设备的 Configuration(同步或异步)。
   *
   * @param isAsync 是否为异步操作,默认为 false。
   * @returns 返回设备的 Configuration。
   */
  static getConfiguration(isAsync = false): resourceManager.Configuration | Promise<resourceManager.Configuration> {
    const manager = ResUtil.getResourceManager();
    return isAsync ? manager.getConfiguration() : manager.getConfigurationSync();
  }

  /**
   * 获取设备的 DeviceCapability(同步或异步)。
   *
   * @param isAsync 是否为异步操作,默认为 false。
   * @returns 返回设备的 DeviceCapability。
   */
  static getDeviceCapability(isAsync = false): resourceManager.DeviceCapability | Promise<resourceManager.DeviceCapability> {
    const manager = ResUtil.getResourceManager();
    return isAsync ? manager.getDeviceCapability() : manager.getDeviceCapabilitySync();
  }

  /**
   * 应用运行时,加载指定的资源路径,实现资源覆盖。
   *
   * @param path 资源路径。
   */
  static addResource(path: string): void {
    ResUtil.getResourceManager().addResource(path);
  }

  /**
   * 用户运行时,移除指定的资源路径,还原被覆盖前的资源。
   *
   * @param path 资源路径。
   */
  static removeResource(path: string): void {
    ResUtil.getResourceManager().removeResource(path);
  }

  /**
   * 判断指定路径是否是 rawfile 下的目录。
   *
   * @param path rawfile 路径。
   * @returns true 表示是 rawfile 下的目录,false 表示不是。
   */
  static isRawDir(path: string): boolean {
    return ResUtil.getResourceManager().isRawDir(path);
  }
}
相关推荐
2501_9444480035 分钟前
Flutter for OpenHarmony衣橱管家App实战:支持我们功能实现
android·javascript·flutter
2601_949593657 小时前
基础入门 React Native 鸿蒙跨平台开发:模拟智能音响
react native·react.js·harmonyos
xiaoqi9227 小时前
React Native鸿蒙跨平台如何进行狗狗领养中心,实现基于唯一标识的事件透传方式是移动端列表开发的通用规范
javascript·react native·react.js·ecmascript·harmonyos
jin1233228 小时前
React Native鸿蒙跨平台剧本杀组队消息与快捷入口组件,包含消息列表展示、快捷入口管理、快捷操作触发和消息详情预览四大核心功能
javascript·react native·react.js·ecmascript·harmonyos
烬头88219 小时前
React Native鸿蒙跨平台实现二维码联系人APP(QRCodeContactApp)
javascript·react native·react.js·ecmascript·harmonyos
2601_9498333910 小时前
flutter_for_openharmony口腔护理app实战+预约管理实现
android·javascript·flutter
xiaoqi92212 小时前
React Native鸿蒙跨平台如何实现分类页面组件通过searchQuery状态变量管理搜索输入,实现了分类的实时过滤功能
javascript·react native·react.js·ecmascript·harmonyos
听麟12 小时前
HarmonyOS 6.0+ 智慧出行导航APP开发实战:离线地图与多设备位置协同落地
华为·wpf·harmonyos
qq_1777673712 小时前
React Native鸿蒙跨平台实现应用介绍页,实现了应用信息卡片展示、特色功能网格布局、权限/联系信息陈列、评分展示、模态框详情交互等通用场景
javascript·react native·react.js·ecmascript·交互·harmonyos
2603_9494621012 小时前
Flutter for OpenHarmony社团管理App实战:预算管理实现
android·javascript·flutter