Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将argb数组传递给int或long_Java_Android_Colors_Integer_Hex - Fatal编程技术网

Java 将argb数组传递给int或long

Java 将argb数组传递给int或long,java,android,colors,integer,hex,Java,Android,Colors,Integer,Hex,我有一个方法,可以给我一个数组,其中包含我需要绘制到画布渐变中的颜色的ARGB部分。但据我所知,这个渐变只接受代表颜色的十六进制数。所以我根据我在这里找到的信息做了一个函数 这就是功能: public static long getIntegerHexFromARGB(int a, int r, int g, int b){ String hex = String.format("#%02x%02x%02x%02x", a, r, g, b); return Long.parse

我有一个方法,可以给我一个数组,其中包含我需要绘制到画布渐变中的颜色的ARGB部分。但据我所知,这个渐变只接受代表颜色的十六进制数。所以我根据我在这里找到的信息做了一个函数

这就是功能:

public static long getIntegerHexFromARGB(int a, int r, int g, int b){
    String hex = String.format("#%02x%02x%02x%02x", a, r, g, b);
    return Long.parseLong(hex,16);
}
我这样称呼它:

long rgba_outter_circle = FormulaHelpers.getIntegerHexFromARGB(argbCircleColor[0], argbCircleColor[1], argbCircleColor[2], argbCircleColor[3]);
我的问题是,这段代码位于我正在做的自定义视图中,用于将其包含在布局中,Android Studio布局编辑器声称:

java.lang.NumberFormatException: For input string: "#64FF0000"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Long.parseLong(Long.java:430)
at java.lang.Long.valueOf(Long.java:513)
at math.FormulaHelpers.getIntegerHexFromARGB(FormulaHelpers.java:41)
at framework.joystickController.JoystickButtonView.onMeasure(JoystickButtonView.java:177)
at android.view.View.measure(View.java:17430)
... and much more
它声称的这条线是FormulaHelpers:41,即:

return Long.parseLong(hex,16);
有人能看出我做错了什么吗?我到处都找不到问题
对不起,我的英语是

正确的十六进制数在Java中以“0x”开头,而不是以“#”开头。您的号码应为“0x64FF0000”,格式应为“0x%02x%02x%02x%02x%02x”。也可以使用以下公式创建int:

int color = (a<<24) | (r<<16) | (g<<8) | b

Java中正确的十六进制数以“0x”开头,而不是以“#”开头。您的号码应为“0x64FF0000”,格式应为“0x%02x%02x%02x%02x%02x”。也可以使用以下公式创建int:

int color = (a<<24) | (r<<16) | (g<<8) | b

如果您希望它可以解析为长格式,请从十六进制字符串中删除#:IE

String hex = String.format("%02x%02x%02x%02x", a, r, g, b);

如果您希望它可以解析为长格式,请从十六进制字符串中删除#:IE

String hex = String.format("%02x%02x%02x%02x", a, r, g, b);

看起来您想从
颜色
使用此方法:

public static int parseColor (String colorString)
我想它会完全满足你的要求


它将使用您现在使用的格式处理字符串,但也会使用颜色名称。

看起来您希望从
color
使用此方法:

public static int parseColor (String colorString)
我想它会完全满足你的要求


它将使用您现在使用的格式处理字符串,但也会使用颜色名称。

颜色是一个int,而不是一个long。
color.argb(A,r,g,b)
返回一个int(正确的颜色)。如何使用rgba_outter_circle
?从公式中删除“#”用法:
返回Integer.parseInt(hex.replaceFirst(“#”),16)谢谢你的帮助!颜色是一个整数,而不是一个长的。
color.argb(A,r,g,b)
返回一个整数(顺便说一句,正确的颜色)。如何使用rgba_outter_circle
?从公式中删除“#”用法:
返回Integer.parseInt(hex.replaceFirst(“#”),16)谢谢你的帮助!