Android ColorFilter Mode
#разработка
На прошлой неделе столкнулся с задачей динамического создания кнопок разных цветов из кастомного drawable.
Задача достаточно простая: нужно было создать кнопку, а дальше сделать
Однако, в моем случае, у каждой кнопки была обводка. То есть, в drawable задана
ColorFilter используется для нескольких целей. Например, им можно поменять Canvas, если вы создаете с нуля свою View. Или же для изменения цвета и рендеринга ImageView и Drawable, что используется в большинстве случаев.
Также эта возможность позволяет уменьшить количество используемых в приложении иконок. Например, вам нужно использовать одну и ту же иконку, но разных цветов. Теперь можно заменить цвет в иконке при помощи фильтра, а не добавлять в приложение отдельную иконку.
Подробнее о том, как работают фильтры можно найти в этой статье. В моем случае помог Mode
#разработка
На прошлой неделе столкнулся с задачей динамического создания кнопок разных цветов из кастомного drawable.
Задача достаточно простая: нужно было создать кнопку, а дальше сделать
setBackgroundResource()
и выбрать необходимый файл. Дальше задать необходимый цвет при помощи метода setColorFilter
. Однако, в моем случае, у каждой кнопки была обводка. То есть, в drawable задана
<stroke>
, а после применения фильтра она пропадала. Пришлось задаться вопросом и подробнее изучить тему Mode для ColorFilter. ColorFilter используется для нескольких целей. Например, им можно поменять Canvas, если вы создаете с нуля свою View. Или же для изменения цвета и рендеринга ImageView и Drawable, что используется в большинстве случаев.
Также эта возможность позволяет уменьшить количество используемых в приложении иконок. Например, вам нужно использовать одну и ту же иконку, но разных цветов. Теперь можно заменить цвет в иконке при помощи фильтра, а не добавлять в приложение отдельную иконку.
Подробнее о том, как работают фильтры можно найти в этой статье. В моем случае помог Mode
MULTIPLY
, который не затронул обводку у кнопки.