Обнаружение темного режима в Kotlin: подробное руководство с примерами кода

Темный режим приобрел популярность в последние годы, предоставляя пользователям приятный внешний вид и снижая нагрузку на глаза. В этой статье мы рассмотрим различные методы обнаружения темного режима в Kotlin, а также приведем примеры кода, которые помогут вам реализовать их в ваших приложениях Android.

Метод 1: использование режима пользовательского интерфейса конфигурации

val currentNightMode = resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK
val isDarkMode = currentNightMode == Configuration.UI_MODE_NIGHT_YES

Метод 2: использование AppCompatDelegate

val currentNightMode = AppCompatDelegate.getDefaultNightMode()
val isDarkMode = currentNightMode == AppCompatDelegate.MODE_NIGHT_YES

Метод 3. Использование атрибутов темы

val themeId = context.themeResId
val typedArray = context.obtainStyledAttributes(themeId, intArrayOf(android.R.attr.windowBackground))
val isDarkMode = typedArray.getColor(0, Color.BLACK) == Color.BLACK
typedArray.recycle()

Метод 4. Использование режима экономии заряда батареи

val powerManager = context.getSystemService(Context.POWER_SERVICE) as PowerManager
val isDarkMode = powerManager.isPowerSaveMode

Метод 5: использование системных настроек

val contentResolver = context.contentResolver
val currentBrightnessMode = Settings.System.getInt(contentResolver, Settings.System.SCREEN_BRIGHTNESS_MODE)
val isDarkMode = currentBrightnessMode == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC

Метод 6: использование WebView

val webView = WebView(context)
val isDarkMode = webView.settings.theme == WebSettings.THEME_DARK

В этой статье мы рассмотрели различные методы обнаружения темного режима в Kotlin. Независимо от того, решите ли вы использовать режим пользовательского интерфейса конфигурации, AppCompatDelegate, атрибуты темы, режим экономии заряда батареи, системные настройки или WebView, теперь у вас есть инструменты для улучшения ваших приложений Android за счет поддержки темного режима. Поэкспериментируйте с этими методами и выберите тот, который лучше всего соответствует вашим потребностям.