Как преобразовать целое число цвета в шестнадцатеричную строку в Android?
У меня есть целое число, которое было создано из android.graphics.Color
Целое число имеет значение -16776961
Как преобразовать это значение в шестнадцатеричную строку с форматом #RRGGBB
- Gradle - Что такое ненулевое значение выхода и как его исправить?
- Получить контекст приложения из classа non activity singleton
- HttpPost работает в Java-проекте, а не в Android
- Gson - конвертировать из Json в типизированный ArrayList
- Как открыть веб-браузер по умолчанию с помощью java
Проще говоря: я хотел бы выводить # 0000FF из -16776961
Примечание. Я не хочу, чтобы на выходе содержалась альфа-версия, и я тоже не пробовал этот пример без каких-либо успехов
- Замена fragmentа другим fragmentом внутри группы действий
- Есть ли метод, который вычисляет факториал в Java?
- Как разархивировать файлы программно в Android?
- Используйте мое собственное приложение для Android / apk в качестве запуска / Замена главного экрана
- Что такое хорошая библиотека для анализа математических выражений в java?
- Внутренний class может получить доступ, но не обновлять значения - AsyncTask
- Запретить отображение клавиатуры при запуске
- Время ожидания экрана Android
Маска гарантирует, что вы получите только RRGGBB, а% 06X дает нулевое шестнадцатеричное (всегда 6 символов):
String hexColor = String.format("#%06X", (0xFFFFFF & intColor));
Попробуйте Integer.toHexString ()
Источник: В Java, как мне преобразовать массив байтов в строку шестнадцатеричных цифр, сохраняя ведущие нули?
Я верю, что нашел ответ. Этот код преобразует целое число в шестую строку и удаляет альфу.
Integer intColor = -16895234; String hexColor = "#" + Integer.toHexString(intColor).substring(2);
Примечание. Используйте этот код только в том случае, если вы уверены, что удаление альфы не повлияет ни на что.
Вот что я сделал
int color=//your color Integer.toHexString(color).toUpperCase();//upercase with alpha Integer.toHexString(color).toUpperCase().substring(2);// uppercase without alpha
Спасибо, ребята, вы ответили так.
С помощью этого метода Integer.toHexString вы можете иметь исключение Неизвестного цвета для некоторых цветов при использовании Color.parseColor.
И с помощью этого метода String.format («#% 06X», (0xFFFFFF и intColor)) , вы потеряете значение альфа.
Поэтому я рекомендую этот метод:
public static String ColorToHex(int color) { int alpha = android.graphics.Color.alpha(color); int blue = android.graphics.Color.blue(color); int green = android.graphics.Color.green(color); int red = android.graphics.Color.red(color); String alphaHex = To00Hex(alpha); String blueHex = To00Hex(blue); String greenHex = To00Hex(green); String redHex = To00Hex(red); // hexBinary value: aabbggrr StringBuilder str = new StringBuilder("#"); str.append(alphaHex); str.append(blueHex); str.append(greenHex); str.append(redHex ); return str.toString(); } private static String To00Hex(int value) { String hex = "00".concat(Integer.toHexString(value)); return hex.substring(hex.length()-2, hex.length()); }
Целочисленное значение цвета ARGB для шестнадцатеричной строки:
String hex = Integer.toHexString(color); // example for green color FF00FF00
Шестнадцатеричная строка с целым значением цвета ARGB:
int color = (Integer.parseInt( hex.substring( 0,2 ), 16) << 24) + Integer.parseInt( hex.substring( 2 ), 16);
String int2string = Integer.toHexString(INTEGERColor); //to ARGB String HtmlColor = "#"+ int2string.substring(int2string.length() - 6, int2string.length()); // a stupid way to append your color