Eu gostaria de usar uma cor de uma sequência hexa, como "#FFFF0000"
(digamos) alterar a cor do plano de fundo de um Layout.
Color.HSVToColor
parece um vencedor, mas leva a float[]
como parâmetro.
Estou perto da solução?
Eu gostaria de usar uma cor de uma sequência hexa, como "#FFFF0000"
(digamos) alterar a cor do plano de fundo de um Layout.
Color.HSVToColor
parece um vencedor, mas leva a float[]
como parâmetro.
Estou perto da solução?
Respostas:
Experimente o Color
método de classe:
public static int parseColor (String colorString)
Os formatos suportados são: #RRGGBB #AARRGGBB 'vermelho', 'azul', 'verde', 'preto', 'branco', 'cinza', 'ciano', 'magenta', 'amarelo', 'cinza claro', 'cinza escuro "
#000
valores?
if(colorString.length() == 4) { colorString = "#" + StringUtils.repeat(colorString.substring(1, 1), 1) + StringUtils.repeat(colorString.substring(2, 2), 1) + StringUtils.repeat(colorString.substring(3, 3), 1) }
, por favor me corrijam se eu estiver errado
if(colorString.length() == 4 && colorString[0] == '#')
Experimentar:
myLayout.setBackgroundColor(Color.parseColor("#636161"));
Essa pergunta surge para várias pesquisas relacionadas à cor hexadecimal, então adicionarei um resumo aqui.
As cores hexadecimais assumem a forma RRGGBB
ou AARRGGBB
(alfa, vermelho, verde, azul). Na minha experiência, ao usar um int
diretamente, você precisa usar o AARRGGBB
formulário completo . Se você tiver apenas o RRGGBB
formulário, basta prefixá-lo FF
para tornar o alfa (transparência) totalmente opaco. Aqui está como você o definiria no código. Usar 0x
no início significa que é hexadecimal e não a base 10.
int myColor = 0xFF3F51B5;
myView.setBackgroundColor(myColor);
Como outros observaram, você pode usar Color.parseString
assim
int myColor = Color.parseColor("#3F51B5");
myView.setBackgroundColor(myColor);
Observe que a String deve começar com a #
. Ambos RRGGBB
e AARRGGBB
formatos são suportados.
Você deve realmente obter suas cores do XML sempre que possível. Essa é a opção recomendada, pois facilita muito a alteração de cores no seu aplicativo. Se você definir muitas cores hexadecimais em todo o código, será muito difícil tentar alterá-las mais tarde.
O design do material Android possui paletas de cores com os valores hexadecimais já configurados.
Essas cores do tema são usadas em todo o aplicativo e têm a seguinte aparência:
colors.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>
Se você precisar de cores adicionais, uma boa prática a seguir é definir sua cor em duas etapas no xml. Primeiro, nomeie a cor do valor hexadecimal e, em seguida, nomeie um componente do seu aplicativo que deve obter uma determinada cor. Isso facilita o ajuste das cores posteriormente. Novamente, isso está em colors.xml .
<color name="orange">#fff3632b</color>
<color name="my_view_background_color">@color/orange</color>
Então, quando você quiser definir a cor no código, faça o seguinte:
int myColor = ContextCompat.getColor(context, R.color.my_view_background_color);
myView.setBackgroundColor(myColor);
A classe Color vem com um número de constantes de cores predefinidas. Você pode usá-lo assim.
int myColor = Color.BLUE;
myView.setBackgroundColor(myColor);
Outras cores são
Color.BLACK
Color.BLUE
Color.CYAN
Color.DKGRAY
Color.GRAY
Color.GREEN
Color.LTGRAY
Color.MAGENTA
Color.RED
Color.TRANSPARENT
Color.WHITE
Color.YELLOW
Converta essa string em uma int
cor que possa ser usada setBackgroundColor
esetTextColor
String string = "#FFFF0000";
int color = Integer.parseInt(string.replaceFirst("^#",""), 16);
O 16 significa que é hexadecimal e não o seu normal de 0 a 9. O resultado deve ser o mesmo que
int color = 0xFFFF0000;
#80000000
nesse caso, a versão int seria int color = 0x80000000;
. Se isso não funcionar, poste uma nova pergunta com mais detalhes para que mais pessoas do que eu percebam. Lembre- #80000000
se de uma cor preta translúcida.
Está
int color = Color.parseColor("colorstring");
Eu uso isso e funciona muito bem para mim para definir qualquer cor que eu quiser.
public static final int MY_COLOR = Color.rgb(255, 102, 153);
Defina as cores de 0 a 255 para cada vermelho, verde e azul e, em qualquer lugar que você quiser, basta colocar MY_COLOR em vez de Color.BLUE ou Color.RED ou qualquer outra cor estática oferecida pela classe Color.
Basta fazer uma pesquisa no Google por cartela de cores e você pode encontrar uma cartela com os códigos RGB corretos usando 0-255.
No Xamarin, use este
Control.SetBackgroundColor(global::Android.Graphics.Color.ParseColor("#F5F1F1"));
Arquivo XML salvo em 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 do aplicativo recupera o recurso de cores:
Resources res = getResources();
int color = res.getColor(R.color.opaque_red);
Este XML de layout aplica a cor a um atributo:
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="@color/translucent_red"
android:text="Hello"/>
Tente usar 0xFFF000 e passe isso para o método Color.HSVToColor.