2011-08-03 12 views
16

Esto podría ser una pregunta estúpida pero me sorprende que la clase Paint no tenga el método setColor(Color c). Quiero hacer lo siguiente:Android: conversión de Color a Int

public void setColor(Color color) { 
/* ... */ 
Paint p = new Paint(); 
p.setColor(color); // set color takes only int as a paramter :(
/* ... */ 
} 

Así que de ninguna manera fácil de convertir a Colorint?

+3

android.graphics.Color es una colección de método estático. No se supone que debe ser inicializado. ¿Cómo te las arreglaste para hacer esto? –

+0

tiene usted razón, gracias, por favor publíquelo de nuevo como respuesta :) – Caner

Respuesta

39

Cualquier color de análisis en int dos forma más sencilla aquí:

1) Obtener Sistema de color

int redColorValue = Color.RED; 

2) Cualquier código de color hexadecimal como un argumento de cadena

int greenColorValue = Color.parseColor("#00ff00") 

debe recordar en el código de Color clase debe ser android.graphics...!

1

R.color.black o algún color son obviamente enteros. Necesita un valor RGB. Usted puede dar su propia como #FF123454 que representa diversos colores primarios

2

Todos los métodos y variables en color son estático. No puedes instanciar un objeto Color.

Official Color Docs

La clase color define métodos para crear y convertir enteros de color.

Los colores se representan como paquetes, formados por 4 bytes: alfa, rojo, verde, azul.

Los valores no están multiplicados, es decir, cualquier transparencia se almacena únicamente en el componente alfa y no en los componentes de color.

Los componentes se almacenan de la siguiente manera (alpha < < 24) | (rojo < < 16) | (verde < < 8) | azul.

Cada componente oscila entre 0..255 con 0, lo que significa que no hay contribución para ese componente, y 255 significa contribución del 100%.

lo tanto opaco negro sería 0xFF000000 (100% opaco, pero no hay contribuciones de rojo, verde o azul), y opaco-blanco sería 0xFFFFFFFF

0

La pintura DOES ha establecido la función de color.

/** 
* Set the paint's color. Note that the color is an int containing alpha 
* as well as r,g,b. This 32bit value is not premultiplied, meaning that 
* its alpha can be any value, regardless of the values of r,g,b. 
* See the Color class for more details. 
* 
* @param color The new color (including alpha) to set in the paint. 
*/ 
public native void setColor(@ColorInt int color); 

Como desarrollador de Android, puse color de la pintura como esta ...

paint.setColor(getResources().getColor(R.color.xxx)); 

que definen el valor del color en algo color.xml como ...

<color name="xxx">#008fd2</color> 

Por cierto, si quieres el valor RGB hexadecimal del valor de color específico, entonces usted puede visitar el sitio Web de esta manera: http://www.rapidtables.com/web/color/RGB_Color.htm

espero que esto ayude! ¡Disfruta la codificación!