Допустим я написал приложение, дал свои цвета кнопкам, тексту и др компонентам. Потом делаю PreferencesActivity и туда добавляю "изменить тему" и выбор - light(default), dark, deepdark, green и т.д в этом духе. То, если юзер выбирает тему, то как сделать это? Применить к каждому компоненту свой цвет? Если брать тему, то это же набор уже готовых вещей, а у меня цвета свои кастомные(эта кнопка такого цвета, эта кнопка другого, а при смене темы они должны обе поменять свой цвета на другие). Неужели для каждого компонента прописывать свой цвет потом исходя из настроек? Надеюсь вы меня поняли)
Это будет большой проблемой если Ваши цвета указанны вручную (xml-файле разметки).
Именно для таких целей и используется файл res/values/color.xml. Вы прописываете все цвета в нем, а после меняете их как указал Александр Варакосов
Необязательно указывать каждому элементу свой цвет. Можно поэкспериментировать и делать смеси цветов, и при изменении цвета менять только основной и все оттенки будут сохраняться если будут наложены под полупрозрачные маски.