鸿蒙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);}
}
代码如下:
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);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/900819.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

css使用mix-blend-mode的值difference实现内容和父节点反色

1. 使用场景 往往开发过程中&#xff0c;经常遇到产品说你这个背景图和文字颜色太接近了&#xff0c;能不能适配下背景图&#xff0c;让用户能够看清具体内容是啥。 这么说吧&#xff0c;这种需求场景非常合理&#xff0c;因为你做开发就是要给用户一个交代&#xff0c;给他们…

el-input 中 select 方法使用报错:属性“select”在类型“HTMLElement”上不存在

要解决该错误&#xff0c;需明确指定元素类型为 HTMLInputElement&#xff0c;因为 select() 方法属于输入元素。 步骤解释&#xff1a; 类型断言&#xff1a;使用 as HTMLInputElement 将元素类型断言为输入元素。 可选链操作符&#xff1a;保持 ?. 避免元素为 null 时出错…

Mybatis Plus与SpringBoot的集成

Mybatis Plus与SpringBoot的集成 1.引入Maven 依赖2.配置application.yml文件3.创建实体类4.分页插件5.逻辑删除功能6.忽略特定字段7.自动填充 1.引入Maven 依赖 提前创建好一个SpringBoot项目&#xff0c;然后在项目中引入MyBatis Plus依赖 <dependency><groupId&g…

大数据学习(104)-clickhouse与hdfs

&#x1f34b;&#x1f34b;大数据学习&#x1f34b;&#x1f34b; &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4dd;支持一…

【简历全景认知2】电子化时代对简历形式的降维打击:从A4纸到ATS的生存游戏

一、当简历遇上数字洪流:传统形式的式微 在1990年代,一份排版精美的纸质简历还能让HR眼前一亮;但今天,超过75%的 Fortune 500 企业使用ATS(Applicant Tracking System)进行初筛,未优化的简历可能在5秒内就会沦为数字废土。这种变迁本质上符合「技术接纳生命周期」理论—…

esp32cam -> 服务器 | 手机 -> 服务器 直接服务器传输图片

服务器先下载python &#xff1a; 一、Python环境搭建&#xff08;CentOS/Ubuntu通用&#xff09; 一条一条执行 安装基础依赖 # CentOS sudo yum install gcc openssl-devel bzip2-devel libffi-devel zlib-devel # Ubuntu sudo apt update && sudo apt install b…

SeaTunnel系列之:Apache SeaTunnel编译和安装

Apache SeaTunnel编译 Prepare编译克隆源代码本地安装子项目从源代码构建 SeaTunnel构建子模块安装 JetBrains IDEA Scala 插件安装 JetBrains IDEA Lombok 插件代码风格运行简单示例不仅如此 安装下载 SeaTunnel 发布包下载连接器插件从源代码构建 SeaTunnel 运行 SeaTunnel 在…

JavaScript/React中,...(三个连续的点)被称为 扩展运算符(Spread Operator) 或 剩余运算符(Rest Operator)

const processOrder (order) > {const tax order.total * 0.1;const finalAmount order.total tax;return { ...order, tax, finalAmount }; }; 解释一下&#xff0c;特别&#xff1a;...?在JavaScript/React中&#xff0c;...&#xff08;三个连续的点&#xff09;被称…

FRP的proxies只是建立通道,相当于建立与服务器沟通的不同通道而不是直接将路由器与服务器云端沟通

没有更好的办法了吗&#xff0c;我看frpc.toml的里面可以设置两个proxies那我esp32的监听端口设置在frpc.toml里面它不也能跟云服务器建立联系吗&#xff0c;比如远程与本地端口都配置为5112那云服务器接收到的5112访问会以frp配置的本地端口5112转发到frp客户端的路由器&#…

#在docker中启动mysql之类的容器时,没有挂载的数据...在后期怎么把数据导出外部

如果要导出 Docker 容器内的 整个目录&#xff08;包含所有文件及子目录&#xff09;&#xff0c;可以使用以下几种方法&#xff1a; 方法 1&#xff1a;使用 docker cp 直接复制目录到宿主机 适用场景&#xff1a;容器正在运行或已停止&#xff08;但未删除&#xff09;。 命…

Java的JDK、JRE、JVM关系与作用

Java的JDK、JRE、JVM关系与作用 java中的JDK、JRE和JVM是三个核心组件&#xff0c;各自承担不同角色&#xff0c;且存在层级依赖关系 1. JVM&#xff08;Java Virtual Machine&#xff0c;Java虚拟机&#xff09; 是什么&#xff1a; JVM是虚拟的计算机&#xff0c;能够执行…

C++学习之套接字并发服务器

目录 1.昨天套接字服务器的弊端 2.如何通过多进程方式实现服务器并发 3.多进程服务器-1 4.多进程服务器-2 5.多进程版程序-回收子进程被信号中断的处理 6.多线程版TCP服务处理思路 7.多线程并发服务器编写 8.为什么不能把文件描述符地址传到子线程中 9.多线程程序测试 …

机器学习新范式:Kubernetes + Kubeflow,解锁模型训练与部署的高效密码

一、Kubernetes在机器学习模型训练与部署中的作用 Kubernetes作为一个强大的容器编排平台&#xff0c;为机器学习模型的训练与部署提供了以下核心支持&#xff1a; 分布式训练支持&#xff1a;Kubernetes能够自动化部署和管理PyTorch等机器学习框架的分布式训练任务。通过利用…

动态科技感html导航网站源码

源码介绍 动态科技感html导航网站源码&#xff0c;这个设计完美呈现了科幻电影中的未来科技界面效果&#xff0c;适合展示技术类项目或作为个人作品集的入口页面&#xff0c;自适应手机。 修改卡片中的链接指向你实际的HTML文件可以根据需要调整卡片内容、图标和颜色要添加更…

数字内容智能推荐优化策略

个性化推荐算法构建路径 构建高效数字内容体验的推荐系统&#xff0c;需以多源数据融合为基础框架。首先通过用户画像建模整合人口属性、行为轨迹及兴趣标签&#xff0c;结合协同过滤与深度学习算法建立内容关联矩阵。在此基础上&#xff0c;引入上下文感知机制&#xff0c;动…

# 深度学习中的优化算法详解

深度学习中的优化算法详解 优化算法是深度学习的核心组成部分&#xff0c;用于最小化损失函数以更新神经网络的参数。本文将详细介绍深度学习中常用的优化算法&#xff0c;包括其概念、数学公式、代码示例、实际案例以及图解&#xff0c;帮助读者全面理解优化算法的原理与应用…

汽车的四大工艺

文章目录 冲压工艺核心流程关键技术 焊接工艺核心流程 涂装工艺核心流程 总装工艺核心流程终检与测试静态检查动态检查四轮定位制动转鼓测试淋雨测试总结 简单总结下汽车的四大工艺&#xff08;从网上找了一张图&#xff0c;感觉挺全面的&#xff09;。 冲压工艺 将金属板材通过…

Perl 发送邮件

Perl 发送邮件 概述 Perl 是一种强大的编程语言&#xff0c;广泛应用于系统管理、网络编程和数据分析等领域。其中&#xff0c;使用 Perl 发送邮件是一项非常实用的技能。本文将详细介绍使用 Perl 发送邮件的方法&#xff0c;包括必要的配置、代码示例以及注意事项。 准备工…

关于柔性数组

以前确实没关注过这个问题&#xff0c;一直都是直接定义固定长度的数组&#xff0c;尽量减少指针的操作。 柔性数组主要是再结构体里面定义一个长度为0的数组&#xff0c;这里和定义一个指针式存在明显去别的。定义一个指针会占用内存&#xff0c;但是定义一个长度为0的数组不会…

NOIP2011提高组.玛雅游戏

目录 题目算法标签: 模拟, 搜索, d f s dfs dfs, 剪枝优化思路*详细注释版代码精简注释版代码 题目 185. 玛雅游戏 算法标签: 模拟, 搜索, d f s dfs dfs, 剪枝优化 思路 可行性剪枝 如果某个颜色的格子数量少于 3 3 3一定无解因为要求字典序最小, 因此当一个格子左边有…