Estou recebendo valores de cores hexadecimais de um servidor (neste formato, por #xxxxxx
exemplo, #000000
para preto)
Como faço para converter isso em um valor inteiro?
Tentei fazer Integer.valueOf("0x" + passedColor.substring(1, passedColor.length()))
para obter um 0x000000
resultado ainda mais hexastático , mas isso não é interpretado como um int
aqui, alguma outra sugestão?
Recebo um erro: 08-03 21:06:24.673: ERROR/AndroidRuntime(20231): java.lang.NumberFormatException: unable to parse '0x00C8FBFE' as integer
Estou usando o Android SDK para sua setBackgroundColor(int color)
função, que leva - como você deve ter adivinhado - um valor de cor inteiro.
Este é o OPOSTO desta questão: Como converter um inteiro colorido em uma string hexadecimal no Android?
valueOf
método de dois argumentos , onde especifica a entrada da string (sem o #, é claro) e a raiz, que especifica a base.Integer.valueOf(passedColor.substring(1, passedColor.length()), 16)
Isso pode ser feito com qualquer base inteira! download.oracle.com/javase/6/docs/api/java/lang/… , int)Respostas:
A verdadeira resposta é usar:
Color.parseColor(myPassedColor)
no Android,myPassedColor
sendo ohex
valor como#000
ou#000000
ou#00000000
.No entanto, essa função não oferece suporte a valores hexadecimais abreviados , como
#000
.fonte
#000
. Ver documentação#ccc
. Existe alguma outra maneira?A resposta é muito simples, pessoal, no Android se você quiser converter hex color em int, basta usar a classe android Color , exemplo mostrado abaixo
isto é para cor cinza claro
Color.parseColor("#a8a8a8");
É isso e você obterá seu resultado.
fonte
Integer.parseInt(myString.replaceFirst("#", ""), 16)
fonte
parseInt
, falhará se for encontrado na entrada.parseColor()
. Você está muito correto.Eu tenho o mesmo problema que encontrei na forma de alguma cor
#AAAAAA
e quero convertê-la em uma forma que o Android possa usar. Descobri que você pode usar apenas0xFFAAAAAA
para que o Android possa dizer automaticamente a cor. Observe que o primeiroFF
é revelador dealpha
valor. Espero que ajudefonte
A verdadeira resposta é a mais simples e fácil ....
String white = "#ffffff"; int whiteInt = Color.parseColor(white);
fonte
Eu estava enfrentando o mesmo problema. Assim consegui resolver. Como o CQM disse, usar Color.parseColor () é uma boa solução para esse problema.
Aqui está o código que usei:
this.Button_C.setTextColor(Color.parseColor(prefs.getString("color_prefs", String.valueOf(R.color.green))));
Nesse caso, meu objetivo era alterar a cor do texto do Botão (Button_C) quando eu alterasse a seleção de cor em minhas Preferências (color_prefs).
fonte
Baseado no CQM de resposta e sobre ovokerie-ogbeta 's resposta a outra pergunta que eu vim acima com esta solução:
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);
fonte
Obtenha o código de cores das preferências compartilhadas na string e, em seguida, converta para inteiro e adicione a cor do plano de fundo do layout:
sharedPreferences = getSharedPreferences(mypref, Context.MODE_PRIVATE); String sw=sharedPreferences.getString(name, ""); relativeLayout.setBackgroundColor(Color.parseColor(sw));
fonte
Experimente isso, crie um drawable em seu recurso ...
<shape xmlns:android="http://schemas.android.com/apk/res/android" > <solid android:color="@color/white"/> <size android:height="20dp" android:width="20dp"/> </shape>
então use ...
com cor ... "#FFFFFF"
se a cor for transparente, use ... setAlpha
mView1.setAlpha(x);
com x float 0-1 Ej (0.9f)Boa sorte
fonte