Преобразовать шестнадцатеричное значение цвета (#ffffff) в целочисленное значение - PullRequest
73 голосов
/ 04 августа 2011

Я получаю шестнадцатеричные значения цвета с сервера (в этой форме #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?

Ответы [ 8 ]

163 голосов
/ 26 января 2013

Реальный ответ заключается в использовании:

Color.parseColor(myPassedColor) в Android, myPassedColor является значением hex, например #000 или #000000 или #00000000.

Однако эта функция не поддерживает сокращенные шестнадцатеричные значения , такие как #000.

13 голосов
/ 04 августа 2011
Integer.parseInt(myString.replaceFirst("#", ""), 16) 
12 голосов
/ 16 июня 2017

Ответ очень прост, ребята, в Android, если вы хотите преобразовать шестнадцатеричный цвет в int, просто используйте класс Android Color , пример показан ниже

это для светло-серого цвета

Color.parseColor("#a8a8a8");

Вот и все, и вы получите свой результат.

6 голосов
/ 26 июля 2012

У меня та же проблема, что я нашел какой-то цвет в форме #AAAAAA, и я хочу преобразовать его в форму, которую может использовать android.Я обнаружил, что вы можете просто использовать 0xFFAAAAAA, чтобы андроид мог автоматически определить цвет.Обратите внимание, что первое FF сообщает alpha значение.Надеюсь, это поможет

2 голосов
/ 14 декабря 2016

Реальный ответ - это самый простой и легкий ....

String white = "#ffffff";
int whiteInt = Color.parseColor(white);
2 голосов
/ 17 апреля 2014

Я столкнулся с той же проблемой. Таким образом, я смог решить это. Как сказал CQM, использование Color.parseColor () является хорошим решением этой проблемы.

Вот код, который я использовал:

this.Button_C.setTextColor(Color.parseColor(prefs.getString("color_prefs", String.valueOf(R.color.green))));

В этом случае моя цель состояла в том, чтобы изменить цвет текста кнопки (Button_C), когда я изменяю выбор цвета из моих предпочтений (color_prefs).

0 голосов
/ 28 февраля 2019

На основе CQM ответа и ovokerie-ogbeta * ответа на другой вопрос Я пришелэто решение:

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);
0 голосов
/ 28 января 2017

Попробуйте, создайте в своем ресурсе drawable ...

<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <solid android:color="@color/white"/>
    <size android:height="20dp"
        android:width="20dp"/>
</shape>

, затем используйте ...

 Drawable mDrawable = getActivity().getResources().getDrawable(R.drawable.bg_rectangle_multicolor);
mDrawable.setColorFilter(Color.parseColor(color), PorterDuff.Mode.SRC_IN);
mView1.setBackground(mDrawable);

с цветом ... "#FFFFFF"

если цвет прозрачный, используйте ... setAlpha

mView1.setAlpha(x); с x float 0-1 Ej (0.9f)

Удачи

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...