为了账号安全,请及时绑定邮箱和手机立即绑定

将安卓颜色转换为十六进制或RGB

将安卓颜色转换为十六进制或RGB

收到一只叮咚 2022-08-18 16:31:46
我有一组像,,我想在网页中用作RGB或十六进制颜色的数字。429493309942837446144293898800我以前从未见过这种类型的颜色格式,但是谷歌搜索将我带到这个页面,该页面将这些数字标识为Android,我想要的是拥有自己的JavaScript函数,可以将这些驼峰转换为安全的十六进制或RGB颜色以在网页中使用。android.graphics.Color
查看完整描述

2 回答

?
繁花如伊

TA贡献2012条经验 获得超12个赞

android.graphics.Colors 采用十六进制(Alpha-Red-Green-Blue)格式,转换为小数。AARRGGBB


例如,是十六进制的,因此它变为 或 。4294933099FFFF7A6Brgba(255, 122, 107, 1)#FF7A6BFF


如果要使用语法,则可以使用以下除法方法,以避免将数字转换为十六进制:rgba()


function androidToRgba(color){

  const colorArray = []

  for(let i=0; i<4; i++){

    colorArray.push(color % 256)

    color>>>=8

  }

  const alpha = colorArray.pop() / 255

  return `rgba(${colorArray.reverse()},${alpha})`

}


console.log(androidToRgba(4294933099))

console.log(androidToRgba(4283744614))

console.log(androidToRgba(4293898800))


或者,如果要使用新的颜色语法,或者忽略 alpha 并使用标准十六进制 (),则可以改用以下内容:#RRGGBBAA#RRGGBB


function androidToHex(color){

  const [, alpha, ...colorArray] = ('00000000' + color.toString(16)).slice(-8).match(/([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})/i)

  return `#${colorArray.join('')}${alpha}`

}


console.log(androidToHex(4294933099))

console.log(androidToHex(4283744614))

console.log(androidToHex(4293898800))


尽管上述两种解决方案都有效,但我强烈建议使用前者,因为语法比 更好的支持,并且第一个函数的速度也快了大约9倍。rgba()#RRGGBBAA


查看完整回答
反对 回复 2022-08-18
?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

实际上,android颜色只是十进制数,因此,如果您将它们转换为十六进制字符串,则可以达到十六进制颜色,但作为ARGB。

hexARGBColor = color.toString(16);


查看完整回答
反对 回复 2022-08-18
  • 2 回答
  • 0 关注
  • 426 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信