Android ilovasida mavzu sozlamalarini qanday saqlash va qo'llash mumkin?
sobes.tech AI
AIdan javob
Android ilovalarida mavzuni saqlash va qoʻllash uchun bir nechta yondashuvlar mavjud.
-
SharedPreferences: Tanlangan mavzuni identifikatori kabi kichik ma'lumotlarni saqlash uchun oddiy usul.// Mavzuni saqlash val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE) ?: return with (sharedPref.edit()) { putInt(getString(R.string.saved_theme_key), themeId) apply() } // Mavzuni oʻqish val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE) val defaultValue = resources.getInteger(R.integer.default_theme_id) val savedThemeId = sharedPref?.getInt(getString(R.string.saved_theme_key), defaultValue) ?: defaultValue // Activityda mavzuni qoʻllash setTheme(savedThemeId) super.onCreate(savedInstanceState) -
DataStore: Zamonaviy va asenkron usul boʻlib, maʼlumotlarni saqlash uchun oqimlar va ishonchliroq saqlashni taklif qiladi.// DataStore private val Context.dataStore: DataStore<Preferences> by preferencesDataStore(name = "settings") // Mavzuni saqlash suspend fun saveTheme(themeId: Int) { dataStore.edit { settings -> settings[intPreferencesKey("theme_id")] = themeId } } // Mavzuni olish val themeFlow: Flow<Int> = dataStore.data .catch { exception -> if (exception is IOException) { emit(emptyPreferences()) } else { throw exception } } .map { preferences -> preferences[intPreferencesKey("theme_id")] ?: R.style.Theme_App }Mavzuni Activityda qoʻllash,
DataStoredan qiymat olgandan soʻng (masalan,collectyordamida coroutine ichida) vasetThemechaqirilgandan soʻng amalga oshirilishi mumkin. Mavzuni oʻzgartirgandan soʻng, resurslar toʻgʻri yuklanishi uchun Activityni qayta yaratish zarur boʻlishi mumkin. -
Tizim sozlamalari uchun mavzu: Android shuningdek, mavzular uchun oʻz ichiga olgan qoʻllab-quvvatlashni taqdim etadi: yorqin, qorongʻu va standart (tizim sozlamalariga amal qiladi). Bu resurslar orqali amalga oshirilishi mumkin.
- Yorqin va qorongʻu mavzular uchun uslublar yaratish (masalan,
res/values/themes.xmlvares/values-night/themes.xml). AppCompatDelegate.setDefaultNightModeni dasturiy ravishda yoki manifestdaandroid:themeorqali mavzuni qoʻllash uchun sozlash.
- Yorqin va qorongʻu mavzular uchun uslublar yaratish (masalan,
Mavzuni qoʻllash koʻpincha resurslar toʻgʻri yuklanishi uchun Activityni qayta yaratishni talab qiladi. Buning uchun recreate() dan foydalanish mumkin.