Como obter uma cor a partir de hexadecimal Color String
305
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.HSVToColorparece um vencedor, mas leva a float[]como parâmetro.
se você estiver usando o xamarin .. o código é Android.Graphics.Color.ParseColor ("# 636161") com "P" para Upper
Igor Monteiro
38
Essa pergunta surge para várias pesquisas relacionadas à cor hexadecimal, então adicionarei um resumo aqui.
Cor de int
As cores hexadecimais assumem a forma RRGGBBou AARRGGBB(alfa, vermelho, verde, azul). Na minha experiência, ao usar um intdiretamente, você precisa usar o AARRGGBBformulário completo . Se você tiver apenas o RRGGBBformulário, basta prefixá-lo FFpara tornar o alfa (transparência) totalmente opaco. Aqui está como você o definiria no código. Usar 0xno início significa que é hexadecimal e não a base 10.
int myColor =0xFF3F51B5;
myView.setBackgroundColor(myColor);
Cor da corda
Como outros observaram, você pode usar Color.parseStringassim
int myColor =Color.parseColor("#3F51B5");
myView.setBackgroundColor(myColor);
Observe que a String deve começar com a #. Ambos RRGGBBe AARRGGBBformatos são suportados.
Cor do XML
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.
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 .
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);
Cores predefinidas para Android
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
Notas
Uma maneira rápida de encontrar cores hexagonais é abrir a caixa de diálogo do seletor de cores no Gimp (ou em algum outro software de edição de fotos).
como posso converter String color = "80000000"; para int color =?
Ashish Sahu 24/05
Eu acho que a versão da string deve estar #80000000nesse 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- #80000000se de uma cor preta translúcida.
Bryan Field
Eu sei que int seria int color = 0x80000000, mas meu problema é como convertê-lo ... Mas agora vou resolver meu problema com int color = parseColor ("#" + "80000000"); ... obrigado pela resposta.
Ashish Sahu
Eu recebi uma exceção usando o seu código: java.lang.NumberFormatException: Int inválido: "FFFF0000"
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.
int red = colorString.charAt(1)=='0'?0:255;int blue = colorString.charAt(2)=='0'?0:255;int green = colorString.charAt(3)=='0'?0:255;Color.rgb(red, green,blue);
Respostas:
Experimente o
Color
método de classe:Da documentação do Android :
fonte
#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 erradoif(colorString.length() == 4 && colorString[0] == '#')
Experimentar:
fonte
Essa pergunta surge para várias pesquisas relacionadas à cor hexadecimal, então adicionarei um resumo aqui.
Cor de int
As cores hexadecimais assumem a forma
RRGGBB
ouAARRGGBB
(alfa, vermelho, verde, azul). Na minha experiência, ao usar umint
diretamente, você precisa usar oAARRGGBB
formulário completo . Se você tiver apenas oRRGGBB
formulário, basta prefixá-loFF
para tornar o alfa (transparência) totalmente opaco. Aqui está como você o definiria no código. Usar0x
no início significa que é hexadecimal e não a base 10.Cor da corda
Como outros observaram, você pode usar
Color.parseString
assimObserve que a String deve começar com a
#
. AmbosRRGGBB
eAARRGGBB
formatos são suportados.Cor do XML
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
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 .
Então, quando você quiser definir a cor no código, faça o seguinte:
Cores predefinidas para Android
A classe Color vem com um número de constantes de cores predefinidas. Você pode usá-lo assim.
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
Notas
fonte
Converta essa string em uma
int
cor que possa ser usadasetBackgroundColor
esetTextColor
O 16 significa que é hexadecimal e não o seu normal de 0 a 9. O resultado deve ser o mesmo que
fonte
#80000000
nesse caso, a versão int seriaint 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á
fonte
Tente o seguinte:
fonte
Eu uso isso e funciona muito bem para mim para definir qualquer cor que eu quiser.
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.
fonte
No Xamarin, use este
fonte
Arquivo XML salvo em res / values / colors.xml:
Este código do aplicativo recupera o recurso de cores:
Este XML de layout aplica a cor a um atributo:
fonte
Tente usar 0xFFF000 e passe isso para o método Color.HSVToColor.
fonte
Se você define uma cor no seu XML e deseja usá-lo para alterar a cor do plano de fundo ou algo que esta API é a que você está procurando:
Na minha amostra, usei-o para o TestView
fonte
Para código Hex abreviado
fonte