Android:颜色代码

Android:颜色代码,android,color-picker,color-codes,Android,Color Picker,Color Codes,我正在使用AmbilWarna中的库实现颜色选择器,并启用alpha 示例代码如下所示: 返回颜色代码时 亮绿色,中间透明:颜色代码=1980104448 亮黄色,中间透明:颜色代码=1912340224 没有透明度的鲜红色:颜色代码=-65536(负片?) 无透明度的白色:颜色代码=-1 100%透明度的白色:颜色代码=16777215 问题: 我想使用这些返回的颜色代码来设置按钮的背景色。如何解释这些颜色代码?为什么有些是消极的?是否需要转换为RGB代码?所有值均为十进制 100%透明度

我正在使用AmbilWarna中的库实现颜色选择器,并启用alpha

示例代码如下所示:

返回颜色代码时

  • 亮绿色,中间透明:颜色代码=1980104448
  • 亮黄色,中间透明:颜色代码=1912340224
  • 没有透明度的鲜红色:颜色代码=-65536(负片?)
  • 无透明度的白色:颜色代码=-1
  • 100%透明度的白色:颜色代码=16777215
问题:
我想使用这些返回的颜色代码来设置按钮的背景色。如何解释这些颜色代码?为什么有些是消极的?是否需要转换为RGB代码?

所有值均为十进制

100%透明度的白色:颜色代码=16777215

16777215(10)=FFFFFF(16)

您不需要转换,可以直接设置

myView.setBackgroundColor(值)

如果您有十六进制值ex“#FFFFFF”,则必须将其设置为

myView.setBackgroundColor(Color.parseColor(#FFFFFF”)

Color.parseColor(#FFFFFF”),inturn返回
int

下面的方法是从android.graphics.Color.java

/**
 * Parse the color string, and return the corresponding color-int.
 * If the string cannot be parsed, throws an IllegalArgumentException
 * exception. Supported formats are:
 * #RRGGBB
 * #AARRGGBB
 * 'red', 'blue', 'green', 'black', 'white', 'gray', 'cyan', 'magenta',
 * 'yellow', 'lightgray', 'darkgray', 'grey', 'lightgrey', 'darkgrey',
 * 'aqua', 'fuschia', 'lime', 'maroon', 'navy', 'olive', 'purple',
 * 'silver', 'teal'
 */
public static int parseColor(String colorString) {
    if (colorString.charAt(0) == '#') {
        // Use a long to avoid rollovers on #ffXXXXXX
        long color = Long.parseLong(colorString.substring(1), 16);
        if (colorString.length() == 7) {
            // Set the alpha value
            color |= 0x00000000ff000000;
        } else if (colorString.length() != 9) {
            throw new IllegalArgumentException("Unknown color");
        }
        return (int)color;
    } else {
        Integer color = sColorNameMap.get(colorString.toLowerCase(Locale.ROOT));
        if (color != null) {
            return color;
        }
    }
    throw new IllegalArgumentException("Unknown color");
}

在解析颜色之前是否需要从十进制转换为十六进制?否,您可以使用该整数设置背景色。@pearmak否;基本数字本质上既不是十进制也不是十六进制;当然,它们是以二进制存储的。只是当用十六进制描述时,它们更容易阅读,因为每对十六进制数字一个字节代表颜色的特定部分。例如,具有中等透明度的亮绿色是1980104448。以十六进制表示,即0x7605FF00-0x76透明、0x05红色、0xFF绿色、0x00蓝色。我们使用十六进制表示法,因为根据颜色值的存储方式,它很容易读取。只要看一下,你就能看到它主要是绿色的。你可以直接使用这些值来设置背景颜色。