Подтвердить что ты не робот

Создайте новый цвет.

Я пытаюсь преобразовать шестнадцатеричное значение в int, чтобы я мог создать новый цвет. Я не уверен, что это возможно, но в соответствии с документацией это должно быть. Он просто просит

общедоступный ColorDrawable (цвет int)

Добавлен в API-уровень 1 Создает новый ColorDrawable с указанным цвет.

Параметры цвет Цвет рисунка.

Итак, мой код не работает, потому что я получаю ошибку Invalid int: "FF6666". Любые идеи?

int decode = Integer.decode("FF6666");
ColorDrawable colorDrawable = new ColorDrawable(decode);
4b9b3361

Ответ 1

Поскольку вы говорите об hex, вам нужно начинать с 0x и не забывайте непрозрачность.

Итак, в основном: 0xFFFF6666

ColorDrawable cd = new ColorDrawable(0xFFFF6666);

Вы также можете создать новый файл colors.xml в /res и определить цвета, например:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="mycolor">#FF6666</color>
</resources>

и просто получите цвет, определенный в R.color.mycolor

getResources().getColor(R.color.mycolor)

Ответ 2

Это должно быть так...

ColorDrawable cd = new ColorDrawable(0xffff6666);

Примечание. Я использовал 8 шестнадцатеричных цифр, а не 6 шестнадцатеричных цифр. которые добавить к прозрачности

Ответ 3

Для использования с ContextCompat и повторного использования цвета вы можете сделать что-то вроде этого:

ColorDrawable colorDrawable = new ColorDrawable(ContextCompat.getColor(this, R.color.white));

Ответ 4

Я думаю, вы должны использовать:

public static int parseColor (String colorString)

Добавлен в уровень API 1 Разбор строки цвета и возврат соответствующий цвет-int. Если строка не может быть проанализирована, Исключение исключения IllegalArgumentException. Поддерживаемые форматы: #RRGGBB #AARRGGBB красный, синий, зеленый, черный, белый, серый, голубой, пурпурный, желтый, светлый, темно-серый, серый, светлый, темный, аква, фушия, лайм, бордовый, темно-синий, оливковый, фиолетовый, серебристый, чирок

Ответ 5

Следуя приведенным выше советам, давайте резюме этого вопроса:

  • ColorDrawable colorDrawable = новый ColorDrawable ( Color.parseColor ( "# ce9b2c" ));

  • ColorDrawable colorDrawable = новый ColorDrawable (0xFFCE9B2C); Обратите внимание, что есть 8 шестнадцатеричных цифр, а не 6 шестнадцатеричных цифр, которые не работают. Случай все

  • ColorDrawable colorDrawable = новый ColorDrawable (ContextCompat.getColor(mContext, R.color.default_color));

Выбор до вас!