HarmonyOS 鸿蒙Next 资源管理类-获取指定资源ID对应的颜色值

发布于 1周前 作者 bupafengyu 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 资源管理类-获取指定资源ID对应的颜色值

@ohos.resourceManager (资源管理) 中的 getColorSync 并使用同步方式返回。

使用的canvas组件画图的时候,fillStyle和strokeStyle不接受Resource类型,就可以使用resourceManager把Resource类型转为string类型

import resourceManager from '[@ohos](/user/ohos).resourceManager';
import { BusinessError } from '[@ohos](/user/ohos).base';

@Entry
@Component
struct ResourcePage {
  @State str: number = 0;

  aboutToAppear(): void {
    let resource: resourceManager.Resource = {
      bundleName: "com...",
      moduleName: "...",
      id: $r('app.color.start_orange_lv1').id
    };

    try {
      getContext(this).resourceManager.getColor(resource).then(value => {
        this.str = value;
      }).catch(error => {
        console.error("getColor promise error is " + error);
      });
    } catch (error) {
      let code = (error as BusinessError).code;
      let message = (error as BusinessError).message;
      console.error(`promise getColor failed, error code: ${code}, message: ${message}.`);
    }
  }

  build() {
    Text('文本').fontColor(`#${this.str.toString(16)}`) // 把十进制的str转为16进制,在前面加个#
  }
}

// 使用同步方式返回
// let resource: resourceManager.Resource = {
//   bundleName: "com...",
//   moduleName: "...",
//   id: $r('app.color.start_orange_lv1'.id
// };
// let testStr: number = getContext(this).resourceManager.getColorSync(resource)
//
// this.params.offContext2D.fillStyle = `#${testStr.toString(16)}`

更多关于HarmonyOS 鸿蒙Next 资源管理类-获取指定资源ID对应的颜色值的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

在HarmonyOS中,获取指定资源ID对应的颜色值可以通过ResourceManager类实现。首先,确保在resources目录下定义了颜色资源,例如在color.json文件中:

{
  "color": [
    {
      "name": "primary_color",
      "value": "#FF6200EE"
    }
  ]
}

在代码中,使用ResourceManager获取颜色值:

import resourceManager from '@ohos.resourceManager';

// 获取ResourceManager实例
let resMgr = resourceManager.getResourceManager();

// 获取颜色资源ID
let colorId = $r('app.color.primary_color').id;

// 获取颜色值
resMgr.getColor(colorId).then(color => {
  console.log('Color value:', color);
}).catch(error => {
  console.error('Failed to get color:', error);
});

getColor方法返回一个Promise,解析后得到颜色值。确保资源ID正确,并处理可能的异常。

更多关于HarmonyOS 鸿蒙Next 资源管理类-获取指定资源ID对应的颜色值的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS(鸿蒙)中,获取指定资源ID对应的颜色值可以通过ResourceManager类实现。首先,使用getResourceManager()方法获取ResourceManager实例,然后调用getColor()方法并传入资源ID即可获取颜色值。示例代码如下:

ResourceManager resourceManager = getResourceManager();
int color = resourceManager.getColor(ResourceTable.Color_my_color);

其中,ResourceTable.Color_my_color是资源ID,color即为获取的颜色值。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!