Как преобразовать целое число цвета в шестнадцатеричную строку в Android?

197

У меня есть целое число, которое было сгенерировано из android.graphics.Color

Целое число имеет значение -16776961

Как мне преобразовать это значение в шестнадцатеричную строку в формате #RRGGBB

Проще говоря: я хотел бы вывести # 0000FF из -16776961

Примечание: я не хочу, чтобы вывод содержал альфа, и я также попробовал этот пример без какого-либо успеха

Босах Чуде
источник
Что вы пытаетесь установить в шестнадцатеричном цвете? Я думаю, что здесь есть другой ответ
Бланделл
@Blundell Я экспортирую цвет во внешнее приложение. Цвет должен быть в этом формате #RRGGBB
Bosah Chude
Так что не так с developer.android.com/reference/android/content/res/… ? Вам нужно будет вставить URL или прокрутку, чтобы получить getColor (int)
Blundell
Получаю сырые целые числа. Значения не взяты из виджета о ресурсах
Bosah Chude

Ответы:

472

Маска гарантирует, что вы получите только RRGGBB, а% 06X дает вам гекс с нулевым отступом (всегда 6 символов в длину):

String hexColor = String.format("#%06X", (0xFFFFFF & intColor));
мистифицировать
источник
3
Это сработало отлично, спасибо! Проще и точнее, чем пытаться использовать подстроку в Integer.toHexString ().
Том
7
Я только что понял, что есть метод Color.parseColor (String hex), который делает именно то, что я прошу.
Марсель Бро
4
int colorInt = 0xff000000 | Integer.parseInt (hexString, 16);
Джош
5
Не используйте этот ответ, если ваш цвет использует альфа. Вы потеряете это.
Саймон
5
@Simon, чтобы сделать эту альфа-готовую, просто удалите маску и измените 6 на 8. Обратите внимание, что OP попросил отклонить альфа.
TWiStErRob