Задать вопрос
mitaichik
@mitaichik

Как вычислить тона цветов?

Друзья, вроде бы простенькая задачка, но решения не могу найти.

Есть цвет (обычный цвет, описан в res/colors.xml). Нужно вычислить цвет чуть светлее, на пару тонов, и чуть темнее, на пару тонов.
Есть ли в Android какие-то методы для этого, без подключения сторонних библиотек?
Уверен что есть, но чет найти не могу.
Может кто знает?
  • Вопрос задан
  • 212 просмотров
Подписаться 2 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Android-разработчик
    12 месяцев
    Далее
  • Skillbox
    Разработчик игр на Unreal Engine 4 с нуля до Middle
    12 месяцев
    Далее
  • Нетология
    Android-разработчик с нуля
    14 месяцев
    Далее
Решения вопроса 1
mitaichik
@mitaichik Автор вопроса
Друзья, в общем, поигрался я с разными способами.

Умножать составляющие RGB на коэфициент - визуально более менее рабочий способ.
Но когда одна из составляющих в результате такого умножения дает результат более 255 - меняется весь цвет.
Как-то ограничивать я не пробовал, можно было попробовать ограничивать максимум 255, но я не стал.

Следующий способ : HSV / HLS с помощью вот этой либы https://github.com/tobiasschuerg/android-color-lib
Если изначальный цвет - более менее темный - то дает неплохой результат (я эксперементировал с primaryColor)
Но если светлый (тот же primaryColor но в темной теме) - то труба - результурующая платра будет очень не очень.

В итоге - самый рабочий способ, который мне понравился более всего - это уже имеющийся в Material класс TonalPalette из пакета com.google.android.material.color.utilities. Выдает отличную палитру, не надо писать что-то самому, и не надо сторонних либ.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Для начала формализуйте, что такое "на тон темнее/светлее" в формулах.
Потом переведите цвет в HSV-модель, сдвиньте куда хотите и переведите обратно в нужную вам модель.
Ответ написан
NeiroNx
@NeiroNx
Программист
Математика. Что такое тон - это комбинация R,G и B компонент - это числа от 0 до 255, как сделать светлее или темнее, но сохранить тон? - надо сохранить отношение между компонентами. То-есть не прибавить число а умножить на 0.9 все три компоненты - снизить яркость на 10% либо умножить на 1.1 чтобы увеличить яркость на 10%.
Ответ написан
@sapeg
Вроде есть инструмент - пипетка. Тыкаешь на пиксель - тебе выдаётся его цвет.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы