Я получаю шестнадцатеричные значения цвета с сервера (в этой форме #xxxxxx
, например, #000000
для черного)
Как мне преобразовать это в целое число?
Я пытался сделать, Integer.valueOf("0x" + passedColor.substring(1, passedColor.length()))
чтобы получить еще более хекстастический 0x000000
результат, но это не интерпретируется как int
здесь, какие-либо другие предложения?
Я получаю сообщение об ошибке: 08-03 21:06:24.673: ERROR/AndroidRuntime(20231): java.lang.NumberFormatException: unable to parse '0x00C8FBFE' as integer
Я использую Android SDK для их setBackgroundColor(int color)
функции, которая принимает, как вы уже догадались, целочисленное значение цвета.
Это ПРОТИВОПОЛОЖЕНИЕ этого вопроса: как преобразовать целое число цвета в шестнадцатеричную строку в Android?
valueOf
, в котором вы указываете строковый ввод (без #, конечно) и систему счисления, определяющую базу.Integer.valueOf(passedColor.substring(1, passedColor.length()), 16)
Это можно сделать с любой целочисленной базой! download.oracle.com/javase/6/docs/api/java/lang/… , int)Ответы:
Настоящий ответ - использовать:
Color.parseColor(myPassedColor)
в AndroidmyPassedColor
-hex
значение, подобное#000
или#000000
или#00000000
.Однако эта функция не поддерживает сокращенные шестнадцатеричные значения, такие как
#000
.источник
#000
. См. Документацию#ccc
. Есть ли другой способ?Ответ действительно прост, ребята, в Android, если вы хотите преобразовать шестнадцатеричный цвет в int, просто используйте класс Android Color , пример, показанный ниже
это для светло-серого цвета
Color.parseColor("#a8a8a8");
Вот и все, и вы получите свой результат.
источник
Integer.parseInt(myString.replaceFirst("#", ""), 16)
источник
parseInt
не удастся, если найдет его на входе.parseColor()
. Вы очень правы.У меня та же проблема, что я нашел цвет в форме,
#AAAAAA
и я хочу преобразовать его в форму, которую мог бы использовать Android. Я обнаружил, что вы можете просто использовать,0xFFAAAAAA
чтобы Android мог автоматически определять цвет. Обратите внимание, что первоеFF
говорит оalpha
ценности. Надеюсь, это поможетисточник
Настоящий ответ - это самый простой и легкий ....
String white = "#ffffff"; int whiteInt = Color.parseColor(white);
источник
Я столкнулся с той же проблемой. Таким образом я смог ее решить. Как сказал CQM, использование Color.parseColor () - хорошее решение этой проблемы.
Вот код, который я использовал:
this.Button_C.setTextColor(Color.parseColor(prefs.getString("color_prefs", String.valueOf(R.color.green))));
В этом случае моей целью было изменить цвет текста кнопки (Button_C), когда я изменяю выбор цвета в моих настройках (color_prefs).
источник
На основе CQM «s ответ и на ovokerie-ogbeta » s ответ на другой вопрос , я пришел к этому решению:
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);
источник
Получить цветовой код общих настроек в строке, затем преобразовать в целое число и добавить цвет фона макета:
sharedPreferences = getSharedPreferences(mypref, Context.MODE_PRIVATE); String sw=sharedPreferences.getString(name, ""); relativeLayout.setBackgroundColor(Color.parseColor(sw));
источник
Попробуйте это, создайте рисование в своем ресурсе ...
<shape xmlns:android="http://schemas.android.com/apk/res/android" > <solid android:color="@color/white"/> <size android:height="20dp" android:width="20dp"/> </shape>
затем используйте ...
с цветом ... "#FFFFFF"
если цвет прозрачный, используйте ... setAlpha
mView1.setAlpha(x);
с плавающей точкой x 0-1 Ej (0.9f)Удачи
источник