Android ilovasida mavzu sozlamalarini qanday saqlash va foydalanish mumkin?
sobes.tech AI
AIdan javob
Samara samarali yondashuv tanlangan mavzuni saqlash uchun SharedPreferences dan foydalanishni va uni qo'llash uchun AppCompatDelegate.setDefaultNightMode() ni ishlatishni o'z ichiga oladi.
-
Mavzuni saqlash: Tanlangan mavzu identifikatorini (masalan, "light", "dark", "system") saqlash uchun
SharedPreferencesdan foydalaning.// SharedPreferences ni oling val sharedPrefs = getSharedPreferences("AppTheme", Context.MODE_PRIVATE) // Tahrirchini oling val editor = sharedPrefs.edit() // themeId bilan mavzuni qo'llang editor.putString("current_theme", themeId) // O'zgarishlarni saqlang editor.apply() -
Dastlabki boshlanishda mavzuni qo'llash: Asosiy
ActivityyokiApplicationsinfida, saqlangan qiymatniSharedPreferencesdan o'qing va mavzuni qo'llang.// Saqlangan mavzu qiymatini o'qing val themeId = getSharedPreferences("AppTheme", Context.MODE_PRIVATE) .getString("current_theme", "system") // Standart 'system' // Mavzuni qo'llash when (themeId) { "light" -> AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO) "dark" -> AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES) "system" -> AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM) else -> AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM) } -
Foydalanuvchi tomonidan mavzuni o'zgartirish: Foydalanuvchi uchun interfeys (masalan, sozlamalarda
RadioButton) taqdim eting, bu yerda foydalanuvchi mavzuni tanlashi mumkin. Tanlanganda, yangi identifikatorniSharedPreferencesga saqlang va darholAppCompatDelegate.setDefaultNightMode()ni chaqirib, mavzuni qo'llang va agar kerak bo'lsa,Activityni qayta ishga tushiring, to'g'ri qo'llash uchun.// Faraz qilaylik, foydalanuvchi qorong'u mavzuni tanladi val sharedPrefs = getSharedPreferences("AppTheme", Context.MODE_PRIVATE) val editor = sharedPrefs.edit() editor.putString("current_theme", "dark") editor.apply() // Mavzuni darhol qo'llash AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES) // Yoki to'liq mavzuni qo'llash uchun recreate() ni ishlating // recreate()
recreate() yordamida Activity ni qayta ishga tushirish, hozirgi Activity dagi barcha View lar yangi mavzuga to'g'ri chizilishi uchun zarur bo'lishi mumkin.
-
styles.xmlda mavzularni aniqlash: Yoritilgan va qorong'u mavzular uchun uslublarnires/values/styles.xmlvares/values-night/styles.xmlda aniqlang vaTheme.AppCompattemalaridan meros oling.<!-- res/values/styles.xml --> <style name="AppTheme.Light" parent="Theme.AppCompat.Light"> <!-- Yoritilgan mavzu uchun uslublar aniqlanishi --> </style> <!-- res/values-night/styles.xml --> <style name="AppTheme.Dark" parent="Theme.AppCompat"> <!-- Qorong'u mavzu uchun uslublar aniqlanishi --> </style>
AndroidManifest.xml da, ilovaning asosiy mavzusini ko'rsating:
```xml
<!-- AndroidManifest.xml -->
<application
android:theme="@style/AppTheme.Light"
...>
<!-- ... Activities -->
</application>
```
-
Mavzular o'zgarishini kuzatish: Sistemada (masalan, jadval bo'yicha yoki telefon sozlamalari orqali qo'lda) mavzu o'zgarganda,
onConfigurationChanged()daConfiguration.uiModeni ishlatib, javob berish mumkin, ammoAppCompatDelegateodatda bu holatni avtomatik ravishda boshqaradi,MODE_NIGHT_FOLLOW_SYSTEMni ishlatishda.@Override override fun onConfigurationChanged(newConfig: Configuration) { super.onConfigurationChanged(newConfig) // Yangi mavzuni tekshirish mumkin, agar kerak bo'lsa // val currentNightMode = newConfig.uiMode and Configuration.UI_MODE_NIGHT_MASK // ... }
AppCompatDelegate dan foydalanish, Androidda mavzularni qo'llab-quvvatlash uchun tavsiya etilgan yondashuv bo'lib, u orqaga moslikni ta'minlaydi va turli xil kutubxona komponentlari bilan to'g'ri ishlashni ta'minlaydi.