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

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

HarmonyOS
2024-12-26 13:49:25
浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
fox280

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

示例:

@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%')
  }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.

如需通过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颜色的字符串
  • 1.
  • 2.
  • 3.
  • 4.
分享
微博
QQ
微信
回复
2024-12-26 16:48:26
相关问题
如何获取对象真实类型
1193浏览 • 1回复 待解决
HarmonyOS无法获取蓝牙设备真实MAC
1866浏览 • 1回复 待解决
HarmonyOS 如何拿到真实mac地址
788浏览 • 1回复 待解决
HarmonyOS 如何获取TextInput输入
800浏览 • 1回复 待解决
HarmonyOS 如何获取组件padding
681浏览 • 1回复 待解决
HarmonyOS ResourceColor 转16进制 string
1045浏览 • 1回复 待解决
HarmonyOS如何获取inputTextX,Y
935浏览 • 1回复 待解决
如何生成一个十六进制颜色
1141浏览 • 1回复 待解决
如何获取图片颜色平均值
1707浏览 • 1回复 待解决
如何获取preference中缓存
956浏览 • 1回复 待解决
如何动态根据资源名获取资源id
9557浏览 • 1回复 已解决