HarmonyOS 如何根据ResourceColor获取真实的RGB颜色值?

按钮设置渐变背景色后,就没有默认的点击效果了。目前希望可以根据ResourceColor,获取到真实颜色值,然后自己进行颜色转换,生成一个变深或者变浅的值,设置press时候的点击效果颜色。

阅读 801
1 个回答

可以通过一下示例方式修改背景颜色。

示例:

@Entry
@Component
struct Index {
  @State backColor: Color = Color.White;
  @State flag: Boolean = false;
  @State colors: [string|number, number][] = [[0xff0000, 0.0], [0x0000ff, 0.3], [0xffff00, 0.5]];
  build() {
    Row() {
      Column() {
        Button()
          .backgroundColor(this.backColor)
          .radialGradient({center: [50,50], radius: 60, repeating: true, colors:this.colors})
          .onClick(()=>{
            this.flag=!this.flag;
            this.backColor = this.flag ? Color.White:Color.Blue;
            this.colors = this.flag ? [[0xff0000, 0.0], [0x0000ff, 0.3], [0xffff00, 0.5]] : [[0x0000ff, 0.0], [0xff0000, 0.3], [0xffff00, 0.5]]
          })
      }
      .width('100%')
    }
    .height('100%')
  }
}

如需通过Resource获取颜色,例如获取路径app.color.xxx,可通过以下示例实现:

let colorNumber = this.context.resourceManager.getColorSync($r('app.color.xxx').id) // 获取对应颜色的十进制结果
const hex = colorNumber.toString(16)
const paddedHex = hex.padStart(6, '0')
let colorStr = `#${paddedHex}` //需要获取的Resource颜色的字符串
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进