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

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

HarmonyOS
18h前
浏览
收藏 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%')
  }
}

如需通过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颜色的字符串
分享
微博
QQ
微信
回复
15h前
相关问题
如何获取对象真实类型
501浏览 • 1回复 待解决
HarmonyOS无法获取蓝牙设备真实MAC
764浏览 • 1回复 待解决
HarmonyOS 如何获取TextInput输入
42浏览 • 1回复 待解决
HarmonyOS 如何获取组件padding
62浏览 • 1回复 待解决
HarmonyOS ResourceColor 转16进制 string
76浏览 • 1回复 待解决
HarmonyOS如何获取inputTextX,Y
524浏览 • 1回复 待解决
如何获取preference中缓存
443浏览 • 1回复 待解决
如何生成一个十六进制颜色
451浏览 • 1回复 待解决
如何获取图片颜色平均值
1152浏览 • 1回复 待解决
如何动态根据资源名获取资源id
8663浏览 • 1回复 已解决
如何获取应用签名证书hash
1863浏览 • 1回复 待解决
HarmonyOS 如何获取系统当前亮度
10浏览 • 1回复 待解决