Друзья, вроде бы простенькая задачка, но решения не могу найти.
Есть цвет (обычный цвет, описан в res/colors.xml). Нужно вычислить цвет чуть светлее, на пару тонов, и чуть темнее, на пару тонов.
Есть ли в Android какие-то методы для этого, без подключения сторонних библиотек?
Уверен что есть, но чет найти не могу.
Может кто знает?
Для правильного вопроса надо знать половину ответа
Для начала формализуйте, что такое "на тон темнее/светлее" в формулах.
Потом переведите цвет в HSV-модель, сдвиньте куда хотите и переведите обратно в нужную вам модель.
mitaichik, Ну, скажем, это красный rgb(255, 0, 0). Что должно получиться после добавления? rgb(280, 25, 25) быть не может. А если надо сделать темнее? rgb(230, -25, -25) тоже нельзя.
Математика. Что такое тон - это комбинация R,G и B компонент - это числа от 0 до 255, как сделать светлее или темнее, но сохранить тон? - надо сохранить отношение между компонентами. То-есть не прибавить число а умножить на 0.9 все три компоненты - снизить яркость на 10% либо умножить на 1.1 чтобы увеличить яркость на 10%.
Еще у каждого цвета в координатах RGB разный вклад в яркость. Поэтому, вы все равно изобретете преобразование RGB - HSV - RGB (ну, или другую систему координат, где удобно крутить вполне линейный компонент S для вашей задачи).