Я работаю над приложением для Android, и у меня есть чертеж, который я загружаю из исходного изображения. На этом изображении я хотел бы преобразовать все белые пиксели в другой цвет, скажем синий, и затем кэшировать результирующий объект Drawable, чтобы я мог использовать его позже.
Например, скажем, у меня есть PNG-файл размером 20x20 с белым кружком посередине, и все, что находится вне круга, прозрачно. Какой лучший способ превратить этот белый круг в синий и сохранить результаты в кеше? Изменится ли ответ, если я захочу использовать исходное изображение для создания нескольких новых Drawables (скажем, синего, красного, зеленого, оранжевого и т. Д.)?
Я предполагаю, что я хочу использовать ColorMatrix в некотором роде, но я не уверен, как.
android
android-drawable
Мэтт МакМинн
источник
источник
/sillyandroid/src/main/java/me/angrybyte/sillyandroid/extras/Coloring.java
Ответы:
Я думаю, что вы можете просто использовать
Drawable.setColorFilter( 0xffff0000, Mode.MULTIPLY )
. Это установит белые пиксели на красный, но я не думаю, что это повлияет на прозрачные пиксели.Смотрите Drawable # setColorFilter
источник
Drawable.mutate().setColorFilter( 0xffff0000, Mode.MULTIPLY)
больше информации: curious-creature.org/2009/05/02/drawable-mutationssetColorFilter
каждый раз, когда используем значки, а не селекторы с разными оттенками цвета. Тем не менее, это гораздо лучшее решение, чем непосредственное редактирование png и наличие дополнительных статических ресурсов.SRC_IN
:myImage.getDrawable().mutate().setColorFilter(getResources().getColor(R.color.icon_grey), PorterDuff.Mode.SRC_IN);
Попробуйте этот код:
источник
Я знаю, что этот вопрос задавался задолго до Lollipop, но я хотел бы добавить хороший способ сделать это на Android 5. +. Вы делаете отрисовываемый XML-файл, который ссылается на исходный, и задаете для него оттенок:
источник
Новая поддержка v4 возвращает оттенок к API 4.
ты можешь сделать это так
источник
Если у вас есть сплошной цвет для рисования и вы хотите изменить его на другой сплошной цвет, вы можете использовать a
ColorMatrixColorFilter
. Прозрачность сохраняется.источник
int iColor = ContextCompat.getColor(context, R.color.primary);
.Я также использую
ImageView
для значков (вListView
или экран настроек). Но я думаю, что есть гораздо более простой способ сделать это.использование
tint
чтобы изменить цвет наложения на выбранный значок.В xml,
работает нормально, так как это происходит из
AppCompat
источник
Вы должны сделать это для всех API:
источник
ColorFilter filter = new LightingColorFilter(Color.BLACK, Color.LTGRAY);
изменится с черного на серый в чертеже.Я смог сделать это с помощью следующего кода, который взят из упражнения (макет очень простой, просто содержит ImageView и здесь не публикуется).
источник
Вы можете решить эту проблему, используя совместимые библиотеки поддержки Android. :)
источник
mutate()
требуется, чтобы вызов мог изменить оттенок объекта рисования, не изменяя все ассоциации объектов рисования с этим идентификатором ресурса.В своей деятельности вы можете подкрасить ресурсы изображений PNG одним цветом:
Теперь, когда вы используете R.drawable. * Он должен быть окрашен в желаемый оттенок. Если вам нужны дополнительные цвета, вы можете использовать .mutate () для рисования.
источник
Благодаря @sabadow
источник
Если вы установили свой Drawable в ImageView, вы можете сделать это с 1 вкладышем:
источник
Проверьте этот пример кода " ColorMatrixSample.java "
Соответствующий API доступен здесь :
источник
Это работает со всем с фоном:
Textview, кнопка ...
источник
Этот фрагмент кода работал для меня:
источник
Есть так много решений, но никто не предложил, если XML- файл цветового ресурса уже имеет цвет, тогда мы можем выбрать непосредственно оттуда также, как показано ниже:
источник
Краткий пример изменения цвета рисования в соответствии с
isWorking
полем.Моя форма xml:
Мой способ изменить:
Пример использования:
источник
в XML /res/values/color.xml
Java-код
источник
Слишком поздно, но в случае, если это кому-то нужно:
источник
Это работает для некоторых простых элементов. Я использовал его на простой однотонной прямоугольной форме со скругленными углами, и мне нужно было изменить этот цвет с помощью различных макетов.
Попробуй это
источник
Это очень очень просто, когда вы используете библиотеку, чтобы сделать это для вас. Попробуй это библиотеку
Вы можете позвонить так:
источник