android - paleta - Cómo obtener un color de la cadena de color hexadecimal
tabla de colores (11)
Me gustaría usar un color de una cadena hexa como "#FFFF0000"
para (por ejemplo) cambiar el color de fondo de un diseño. Color.HSVToColor
parece un ganador pero toma un float[]
como parámetro.
¿Estoy en absoluto cerca de la solución?
Archivo XML guardado en res / values / colors.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="opaque_red">#f00</color>
<color name="translucent_red">#80ff0000</color>
</resources>
Este código de aplicación recupera el recurso de color:
Resources res = getResources();
int color = res.getColor(R.color.opaque_red);
Este diseño XML aplica el color a un atributo:
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="@color/translucent_red"
android:text="Hello"/>
Convierta esa cadena en un color int
que se puede usar en setBackgroundColor
y setTextColor
String string = "#FFFF0000";
int color = Integer.parseInt(string.replaceFirst("^#",""), 16);
El 16 significa que es hexadecimal y no su 0-9 regular. El resultado debe ser el mismo que
int color = 0xFFFF0000;
En Xamarin usa esto
Control.SetBackgroundColor(global::Android.Graphics.Color.ParseColor("#F5F1F1"));
En su lugar, intente usar 0xFFF000 y páselo al método Color.HSVToColor.
Esta pregunta surge para una serie de búsquedas relacionadas con el color hexadecimal, por lo que agregaré un resumen aquí.
Color de int
Los colores hexagonales toman la forma RRGGBB
o AARRGGBB
(alfa, rojo, verde, azul). En mi experiencia, cuando usa un int
directamente, necesita usar el formulario AARRGGBB
completo. Si solo tiene el formulario RRGGBB
entonces RRGGBB
prefijo FF
para hacer que el alfa (transparencia) sea completamente opaco. Así es como lo pondrías en código. Usar 0x
al principio significa que es hexadecimal y no base 10.
int myColor = 0xFF3F51B5;
myView.setBackgroundColor(myColor);
Color de la cadena
Como otros lo han señalado, puede usar Color.parseString
como tal
int myColor = Color.parseColor("#3F51B5");
myView.setBackgroundColor(myColor);
Tenga en cuenta que la cadena debe comenzar con un #
. Ambos formatos RRGGBB
y AARRGGBB
son compatibles.
Color de XML
Deberías obtener tus colores de XML siempre que sea posible. Esta es la opción recomendada porque hace que sea mucho más fácil realizar cambios de color en su aplicación. Si establece muchos colores hexadecimales a lo largo de su código, es un gran problema tratar de cambiarlos más tarde.
El diseño de material de Android tiene paladares de color con los valores hexadecimales ya configurados.
Estos colores temáticos se utilizan en toda la aplicación y se ven así:
colores.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="primary">#3F51B5</color>
<color name="primary_dark">#303F9F</color>
<color name="primary_light">#C5CAE9</color>
<color name="accent">#FF4081</color>
<color name="primary_text">#212121</color>
<color name="secondary_text">#757575</color>
<color name="icons">#FFFFFF</color>
<color name="divider">#BDBDBD</color>
</resources>
Si necesita colores adicionales, una buena práctica a seguir es definir su color en dos pasos en xml. Nombre el color del valor hexadecimal y luego nombre un componente de su aplicación que debería obtener un color determinado. Esto facilita el ajuste de los colores más tarde. Una vez más, esto está en colors.xml .
<color name="orange">#fff3632b</color>
<color name="my_view_background_color">@color/orange</color>
Luego, cuando desee establecer el color en el código, haga lo siguiente:
int myColor = ContextCompat.getColor(context, R.color.my_view_background_color);
myView.setBackgroundColor(myColor);
Android colores predefinidos
La clase Color viene con una serie de constantes de color predefinidas. Puedes usarlo así.
int myColor = Color.BLUE;
myView.setBackgroundColor(myColor);
Otros colores son
-
Color.BLACK
-
Color.BLUE
-
Color.CYAN
-
Color.DKGRAY
-
Color.GRAY
-
Color.GREEN
-
Color.LTGRAY
-
Color.MAGENTA
-
Color.RED
-
Color.TRANSPARENT
-
Color.WHITE
-
Color.YELLOW
Notas
- Una forma rápida de encontrar colores hexadecimales es abrir el cuadro de diálogo de selección de color en Gimp (o algún otro software de edición de fotos).
- Niveles de opacidad estándar en el diseño de materiales.
Prueba esto:
vi.setBackgroundColor(Color.parseColor("#FFFF0000"));
Pruebe el método de clase de Color
:
public static int parseColor (String colorString)
De la documentación de Android :
Los formatos admitidos son: #RRGGBB #AARRGGBB ''rojo'', ''azul'', ''verde'', ''negro'', ''blanco'', ''gris'', ''cian'', ''magenta'', ''amarillo'', ''lightgray'', ''darkgray ''
Si define un color en su XML y desea usarlo para cambiar el color de fondo o algo así, esta API es la que está buscando:
((TextView) view).setBackgroundResource(R.drawable.your_color_here);
En mi muestra lo usé para TestView
Sus
int color = Color.parseColor("colorstring");
Tratar:
myLayout.setBackgroundColor(Color.parseColor("#636161"));
Utilizo esto y me funciona muy bien para configurar cualquier color que desee.
public static final int MY_COLOR = Color.rgb(255, 102, 153);
Establezca los colores con 0-255 para cada rojo, verde y azul, luego, en cualquier lugar que desee usar ese color, simplemente coloque MY_COLOR en lugar de Color.BLUE o Color.RED o cualquiera de los otros colores estáticos que ofrece la clase Color.
Simplemente haga una búsqueda en Google para la tabla de colores y puede encontrar una tabla con los códigos RGB correctos usando 0-255.