2010-02-26 19 views
18

this article sugiere que puede utilizar Color c = Color.decode("FF0096"); sin embargo, esto es comprensible lanza una excepcióncadenas hexagonales de estilo CSS y Color.decode

Caused by: java.lang.NumberFormatException: For input string: "FF0096" 
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48) 
    at java.lang.Integer.parseInt(Integer.java:449) 
    at java.lang.Integer.valueOf(Integer.java:528) 
    at java.lang.Integer.decode(Integer.java:958) 
    at java.awt.Color.decode(Color.java:707) 

¿Cuál es la mejor manera de convertir una cadena en el formato de "# FF0096" o "FF0096 "en un color java awt?

Respuesta

38
Color c = Color.decode("0xFF0096"); 

o

Color c = Color.decode("#FF0096"); 

o

Color c = new Color(0xFF0096); 
+0

Gracias amable señor. – Boldbayar

8

El método Color.decode tiros la NumberFormatException si la cadena especificada no se puede interpretar como un decimal, octal, o entero hexadecimal

El cadena "FF0096" wi thout el prefijo de 0 o 0x se interpretará como una representación de base 10 que no funciona.

+0

te equivocas al decir que FF0096 con el prefijo 0x no funciona. – pstanton

+0

@pstanton: Gracias por señalar ... fue un error tipográfico. Lo he corregido – codaddict

+0

* 0 * prefijo significa octal y es muy poco probable que a alguien le gustaría para decodificar colores – bestsss

1

Estaba buscando una forma similar de hacer esto en Android. Por alguna razón, no pude encontrar Color.decode(), así que busqué una alternativa. Si desea utilizar una cadena hexadecimal para representar un color en Android, puede hacer lo siguiente:

String hexColor = "#142b44"; 
View row = findViewById(R.id.row); 
int color = Color.parseColor(hexColor); 
row0.setBackgroundColor(color); 

Más contenido en Color#parseColor

Cuestiones relacionadas