2 回答
![?](http://img1.sycdn.imooc.com/5333a0350001692e02200220-100-100.jpg)
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
![?](http://img1.sycdn.imooc.com/5458478b0001f01502200220-100-100.jpg)
TA贡献1804条经验 获得超2个赞
实际上,android颜色只是十进制数,因此,如果您将它们转换为十六进制字符串,则可以达到十六进制颜色,但作为ARGB。
hexARGBColor = color.toString(16);
添加回答
举报