2011-09-15 46 views
13

Tengo un código de color decimal (p. Ej .: 4898901). Lo estoy convirtiendo en un equivalente hexadecimal de eso como 4ac055. ¿Cómo obtener el valor del componente rojo, verde y azul del código de color hexadecimal?Cómo obtener el valor RGB del código de color hexadecimal en java

+0

que necesita para obtener 3 int de una cadena? O 3 cuerdas de una cadena? –

+0

quiero 3 valores enteros de rojo, verde y azul de mi código de color hexa decimales. – androidGuy

Respuesta

63

Suponiendo que esta es una cadena:

// edited to support big numbers bigger than 0x80000000 
int color = (int)Long.parseLong(myColorString, 16); 
int r = (color >> 16) & 0xFF; 
int g = (color >> 8) & 0xFF; 
int b = (color >> 0) & 0xFF; 
+0

Utilicé este código en mi aplicación y cuando lo ejecuto en Android 2.3 obtengo excaption for myColorString: "no se puede analizar '4282291905' como entero". ¿Podrías decir por qué? – NrNazifi

+0

@ProSoft - el código anterior no le quedará bien, ya que el número 4282291905 desborda los límites enteros. Puede usar Long en su lugar (arreglaré la respuesta) – MByD

+0

@ProSoft - no hay problema, espero que funcionó – MByD

1

Cuando se tiene la hex-code : 4ac055. Las dos primeras letras son del color rojo. Los siguientes dos son verdes y las dos últimas letras son para el color azul. Entonces, cuando tienes el código hexadecimal del color rojo, debes convertirlo a dez. En estos ejemplos donde red 4a = 74. Green c0 = 192 y blue = 85 ..

tratar de hacer una función que dividir el hexcode y luego devolver el código de rgb

7

probar esto,

colorStr e.g. "#FFFFFF" 

public static Color hex2Rgb(String colorStr) { 
    return new Color(
      Integer.valueOf(colorStr.substring(1, 3), 16), 
      Integer.valueOf(colorStr.substring(3, 5), 16), 
      Integer.valueOf(colorStr.substring(5, 7), 16)); 
} 

Para poder utilizar la clase de color que usted tiene que utilizar como color java-rt-jar-stubs-1.5.0.jar clase es de java.awt.Color

5

Si usted tiene una cadena de esta manera es mucho más agradable:

Color color = Color.decode("0xFF0000"); 
int red = color.getRed(); 
int blue = color.getBlue(); 
int green = color.getGreen(); 

Si tiene un número, hágalo de esta manera:

Color color = new Color(0xFF0000); 

Entonces, por supuesto, para obtener los colores que acaba de hacer:

float red = color.getRed(); 
float green = color.getGreen(); 
float blue = color.getBlue(); 
+1

No puedo encontrar esta clase en 'Android' -' android.graphics.Color' no contiene tales métodos. – PPartisan

+0

Ha pasado un tiempo desde que jugué con este código. Creo que esto estaba usando la clase estándar Java Color. http://docs.oracle.com/javase/7/docs/api/java/awt/Color.html – Zammbi

0
String hex1 = "#FF00FF00"; //BLUE with Alpha value = #AARRGGBB 

int a = Integer.valueOf(hex1.substring(1, 3), 16); 
int r = Integer.valueOf(hex1.substring(3, 5), 16); 
int g = Integer.valueOf(hex1.substring(5, 7), 16); 
int b = Integer.parseInt(hex1.substring(7, 9), 16); 

Toast.makeText(getApplicationContext(), "ARGB: " + a + " , " + r + " , "+ g + " , "+ b , Toast.LENGTH_SHORT).show(); 

String hex1 = "#FF0000"; //RED with NO Alpha = #RRGGBB 

int r = Integer.valueOf(hex1.substring(1, 3), 16); 
int g = Integer.valueOf(hex1.substring(3, 5), 16); 
int b = Integer.parseInt(hex1.substring(5, 7), 16); 

Toast.makeText(getApplicationContext(), "RGB: " + r + " , "+ g + " , "+ b , Toast.LENGTH_SHORT).show(); 
Cuestiones relacionadas