Какие знаешь способы поддержки многотемности в приложении

«Какие знаешь способы поддержки многотемности в приложении» — вопрос из категории UI и Views, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Android есть несколько способов поддержки тем:

  1. DayNight Theme – автоматическое переключение между светлой и темной темой в зависимости от системных настроек:
<style name="AppTheme" parent="Theme.AppCompat.DayNight">
  1. Ручной выбор темы через AppCompatDelegate:
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)
  1. Кастомные атрибуты тем в res/values/attrs.xml:
<attr name="customColor" format="color|reference" />
  1. Раздельные ресурсы через квалификаторы:
res/values-night/colors.xml
res/values/colors.xml
  1. Dynamic Colors (Android 12+) – использование системной палитры:
<style name="Theme.MyApp" parent="Theme.Material3.DynamicColors.DayNight">

Важно очищать кеш активити при смене темы:

recreate()