2015-06-24 3 views
0

Предположим, у меня есть ShapeDrawable в Android. Не растровое изображение. Я хотел бы заменить один цвет (цвет инсульта) в нем другим цветом динамически. Новый желаемый цвет не известен во время разработки и не может быть помещен в ресурс с возможностью рисования.Заменить одиночный (черный) цвет в ShapeDrawable другим цветом в Android

Например, перейти от изображения 1 (где черный цвет представляет цвет, который я хочу, чтобы заменить, и клетчатый фон фон не охватывается контуром формы):

picture 1

к изображению 2, где красный цвет, который я хочу:

picture 2

Я могу построить форму с помощью альфа-маски, если это необходимо - то есть белые или черные цвета прозрачный, если necessa ry, или, например, сделать зеленый контур. Белый цвет заливки должен оставаться белым в конечном результате.

Можно ли достичь этого со стандартными цветными фильтрами - ColorMatrixColorFilter или PorterDuffColorFilter? Если это так, мне сложно определить конкретный фильтр. Я предполагаю, что пользовательский ColorFilter невозможен.

ответ

2

В конкретном случае иметь черную рамку, которую вы хотите установить в произвольный цвет, а белый интерьер, вы можете использовать PorterDuff фильтр в режиме ADD. Так как он насыщает его, он не будет иметь никакого эффекта на белую область, а так как черный - это нулевое добавление, то цвет будет эффективно устанавливать все черные области в этот цвет.

например. чтобы установить его на красный:

drawable.setColorFilter(0x00ff0000, PorterDuff.Mode.ADD); 
+0

Да, это сделало это, спасибо. – Cozzamara

0

Этот учебник может быть полезен. В соответствии с этим вы можете заменить часть белого цвета изображения желаемым цветом.

Изменения цвета вытяжки значка программно http://takeoffandroid.com/uncategorized/changing-color-of-drawable-icon-programmatically/

 Смежные вопросы

  • Нет связанных вопросов^_^