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

TA貢獻1804條經驗 獲得超2個贊
實際上,android顏色只是十進制數,因此,如果您將它們轉換為十六進制字符串,則可以達到十六進制顏色,但作為ARGB。
hexARGBColor = color.toString(16);
添加回答
舉報