Я думаю, что вам нужен переключатель оттенков. Если это так, используйте ColorFilterGenerator
, предложенный в Понимание использования ColorMatrix и ColorMatrixColorFilter для изменения оттенка Drawable вам просто нужно сделать:
view.getBackground().setColorFilter(ColorFilterGenerator.adjustHue(180));
Результат выглядит так (оттенок повернут на 180 градусов):
![введите здесь описание изображения](https://i.stack.imgur.com/MZWOg.png)
Примечание. Все заслуги в этом ответе должны принадлежать @Richard Lalancette за его потрясающий ответ на вопрос, на который я дал ссылку.
Обновление из комментариев:
Поскольку вам нужно указать целевой цвет, вы можете рассчитать исходное и целевое значения HSV и использовать ColorFilterGenerator
для изменения оттенка. Например:
// Your source color (The RGB color from your original image is 255,85,78)
float[] hsvSource = new float[3];
Color.RGBToHSV(255, 85, 78, hsvSource);
// The color whose hue you want to achieve (green for example)
float[] hsvTarget = new float[3];
Color.RGBToHSV(0, 200, 18, hsvTarget);
view.getBackground().setColorFilter(ColorFilterGenerator.adjustHue(hsvTarget[0] - hsvSource[0]));
Обратите внимание, что этот подход учитывает только значения оттенков цветов, чтобы изменить их.
Обновление из комментариев:
Замечательный ответ @Jared Rummler (Понимание использования ColorMatrix и ColorMatrixColorFilter для изменения оттенка Drawable) принимает ваш drawable в качестве параметра, поэтому вам не нужно указывать исходный цвет:
view.getBackground().setColorFilter(ColorFilterGenerator.from(view.getBackground()).to(Color.GREEN));
person
antonio
schedule
07.06.2016
ColorFilter
? Используете ли выFloatingActionButton
из библиотеки поддержки Android или любой подобной библиотеки? - person TR4Android   schedule 04.06.2016