Создание нового цвета для рисования



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




public ColorDrawable (int color)



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



параметрыцвета цвет для рисования.




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



int decode = Integer.decode("FF6666");
ColorDrawable colorDrawable = new ColorDrawable(decode);
376   5  

5 ответов:

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

так что в основном: 0xFFFF6666

ColorDrawable cd = new ColorDrawable(0xFFFF6666);

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

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

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

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

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

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

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

ColorDrawable cd = new ColorDrawable(0xffff6666);

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

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

public static int parseColor (String colorString)

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

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

  1. ColorDrawable colorDrawable = новый ColorDrawable(цвета.parseColor("#ce9b2c"));`

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

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

выбор за вами!

Comments

    Ничего не найдено.