Работал ли с настройкой темы

Ответ

Да, работал. На Android можно настраивать тему через styles.xml и themes.xml.

Пример:

<!-- styles.xml -->
<style name="AppTheme" parent="Theme.Material3.DayNight">
    <item name="colorPrimary">@color/purple_500</item>
    <item name="colorOnPrimary">@color/white</item>
</style>

Нюансы:

  • Day/Night темы – можно использовать Theme.Material3.DayNight и переопределять цвета в res/values-night.
  • Динамические цвета (Android 12+) – Material You (Theme.Material3.DynamicColors).
  • Кастомные атрибуты – для сложных тем можно создавать свои атрибуты в attrs.xml.

Применение в манифесте:

<application android:theme="@style/AppTheme" ... />

Для программного изменения темы (например, переключение светлой/тёмной):

AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)

Ответ 18+ 🔞

Блин, ну вот же, работал же! На Андроиде темы настраиваются через эти ваши styles.xml и themes.xml. Всё просто, как три копейки.

Смотри, пример:

<!-- styles.xml -->
<style name="AppTheme" parent="Theme.Material3.DayNight">
    <item name="colorPrimary">@color/purple_500</item>
    <item name="colorOnPrimary">@color/white</item>
</style>

Но есть нюансы, ёпта:

  • День и ночь – можно взять Theme.Material3.DayNight и в папке res/values-night под тем же самым именем перебить цвета для тёмной темы. Удобно, блядь.
  • Динамические цвета (для Андроида 12 и выше) – это когда система сама цвета из обоев вытягивает. Material You называется, Theme.Material3.DynamicColors. Красиво, но не везде работает.
  • Свои атрибуты – если совсем припёрло и стандартного не хватает, можно в attrs.xml свои костыли наколотить. Для особо хитрожопых случаев.

Чтобы тему применить, в манифесте пишешь:

<application android:theme="@style/AppTheme" ... />

А если надо программно сменить, например, юзер тёмную тему захотел:

AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)

Вот и вся магия. Главное — не запутаться в этих папках values и values-night, а то сам от себя охуеешь, когда светлая тема в ночи светит, как прожектор.