Создание нового цвета для рисования
Я пытаюсь преобразовать шестнадцатеричное значение в int, чтобы создать новый цвет для рисования. Я не уверен, что это возможно, но согласно документации, это должно быть. Он явно просит
public ColorDrawable (int color)
добавлено в API уровня 1 создает новый ColorDrawable с указанным
цвет.
параметрыцвета цвет для рисования.
Итак, мой код не работает, потому что я получаю недопустимую ошибку int: "FF6666". Есть идеи?
int decode = Integer.decode("FF6666");
ColorDrawable colorDrawable = new ColorDrawable(decode);
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 красный, синий, зеленый, черный, белый, серый, голубой, пурпурный, желтый, светло-серый, темно-серый, серый, светло-серый, темно-серый, Аква, фушия, лайм, бордовый, темно-синий, оливковый, фиолетовый, серебристый, бирюзовый
следуя приведенному выше совету, чтобы быть резюме этого вопроса:
ColorDrawable colorDrawable = новый ColorDrawable(цвета.parseColor("#ce9b2c"));`
ColorDrawable colorDrawable = новый ColorDrawable(0xFFCE9B2C); Примечание 8 шестнадцатеричных цифр, а не 6 шестнадцатеричных цифр,которые не работают. Дело все
colorDrawable ColorDrawable = новый ColorDrawable (ContextCompat.getColor (mContext,R. color.default_color));
выбор за вами!
Comments