如何将十六进制颜色转换为浮点数0-1?

e-i*_*128 1 parsing android colors

我需要将十六进制字符串值处理为浮动颜色。

真实颜色是(RGBA格式)

{ 0.63671875f, 0.76953125f, 0.22265625f, 1.0f }
Run Code Online (Sandbox Code Playgroud)

为绿色,0 相当于 00,1 相当于 FF。但需要将颜色转换为 0-255 小数,以计算 0 到 255 之间的百分比并设置浮点值。

如何通过示例转换#AABBCCFF为浮点数组?

当 parsecolor 我有整数值时:

Color.parseColor("#AABBCCFF");
Run Code Online (Sandbox Code Playgroud)

但是如何将整数转换为浮点数中的每种颜色呢?红绿蓝和阿尔帕

e-i*_*128 5

我找到了解决方案:

private float[] getFloatArrayFromARGB(String argb){
    int color_base = Color.parseColor(argb);
    int red = Color.red(color_base);
    int green = Color.green(color_base);
    int blue = Color.blue(color_base);
    int alpha = Color.alpha(color_base);

    return new float[]{
            (red / 255f),
            (green / 255f),
            (blue / 255f),
            (alpha / 255f)
    };
}
Run Code Online (Sandbox Code Playgroud)

使用:

String argb = "#FFFF0000";
float[] color = this.getFloatArrayFromARGB(argb);
GLES20.glUniform4fv(mColorHandle, 1, color, 0);
Run Code Online (Sandbox Code Playgroud)

:D 现在使用 ARGB 格式通过 OpenGL 绘制 3D 对象