Recibo valores de color hexadecimal de un servidor (en este formulario #xxxxxx
, ejemplo #000000
para negro)
¿Cómo convierto esto a un valor entero?
Intenté hacer Integer.valueOf("0x" + passedColor.substring(1, passedColor.length()))
para obtener un resultado aún más hextástico 0x000000
, pero esto no se interpreta como un int
aquí, ¿alguna otra sugerencia?
Recibo un error: 08-03 21:06:24.673: ERROR/AndroidRuntime(20231): java.lang.NumberFormatException: unable to parse '0x00C8FBFE' as integer
Estoy usando el SDK de Android para su setBackgroundColor(int color)
función, que toma, como habrás adivinado, un valor de color entero.
Esto es lo OPUESTO de esta pregunta: ¿Cómo convertir un número entero de color en una cadena hexadecimal en Android?
valueOf
método de dos argumentos , donde especifica la entrada de cadena (sin el #, por supuesto) y la base, que especifica la base.Integer.valueOf(passedColor.substring(1, passedColor.length()), 16)
¡Esto se puede hacer con cualquier base entera! download.oracle.com/javase/6/docs/api/java/lang/… , int)Respuestas:
La verdadera respuesta es usar:
Color.parseColor(myPassedColor)
en Android,myPassedColor
siendo elhex
valor como#000
o#000000
o#00000000
.Sin embargo, esta función no admite valores hexadecimales taquigráficos como
#000
.fuente
#000
. Ver documentación#ccc
. ¿Hay alguna otra manera?La respuesta es realmente simple, en Android, si desea convertir el color hexadecimal en int, solo use la clase de color de Android , el ejemplo se muestra a continuación
esto es para el color gris claro
Color.parseColor("#a8a8a8");
Eso es todo y obtendrás tu resultado.
fuente
Integer.parseInt(myString.replaceFirst("#", ""), 16)
fuente
parseInt
lo que fallará si lo encuentra en la entrada.parseColor()
. Estás muy en lo correcto.Tengo el mismo problema en el que encontré algún color en forma
#AAAAAA
y quiero convertirlo en una forma que Android pueda utilizar. Descubrí que puedes usarlo0xFFAAAAAA
para que Android pueda decir automáticamente el color. Note que el primeroFF
es reveladoralpha
. Espero eso ayudefuente
La respuesta real es la más simple y fácil ...
String white = "#ffffff"; int whiteInt = Color.parseColor(white);
fuente
Estaba enfrentando el mismo problema. De esta manera pude resolverlo. Como dijo CQM, usar Color.parseColor () es una buena solución a este problema.
Aquí está el código que usé:
this.Button_C.setTextColor(Color.parseColor(prefs.getString("color_prefs", String.valueOf(R.color.green))));
En este caso, mi objetivo era cambiar el color del texto del Botón (Button_C) cuando cambio la selección de color de mis Preferencias (color_prefs).
fuente
Sobre la base de CQM 's respuesta y en ovokerie-ogbeta ' s respuesta a otra pregunta se me ha ocurrido con esta solución:
if (colorAsString.length() == 4) { // #XXX colorAsString = colorAsString.replaceAll("#([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])", "#$1$1$2$2$3$3"); } int color = Color.parseColor(colorAsString);
fuente
Obtenga el código de color de preferencias compartidas en cadena, luego conviértalo a entero y agregue color de fondo de diseño:
sharedPreferences = getSharedPreferences(mypref, Context.MODE_PRIVATE); String sw=sharedPreferences.getString(name, ""); relativeLayout.setBackgroundColor(Color.parseColor(sw));
fuente
Prueba esto, crea dibujables en tu recurso ...
<shape xmlns:android="http://schemas.android.com/apk/res/android" > <solid android:color="@color/white"/> <size android:height="20dp" android:width="20dp"/> </shape>
luego usa ...
con color ... "#FFFFFF"
si el color es transparente use ... setAlpha
mView1.setAlpha(x);
con x float 0-1 Ej (0.9f)Buena suerte
fuente