Чӣ гуна нигоҳ доштани ва татбиқ кардани танзимоти мавзӯъ дар барномаи Android?
sobes.tech AI
Ҷавоб аз AI
Барои нигоҳ доштани ва татбиқ кардани танзимоти мавзӯъ дар барномаи Android метавонад чанд роҳ истифода шавад.
-
SharedPreferences: роҳи содда барои нигоҳ доштани миқдори ками маълумот, мисли шенасоии мавзӯи интихобшуда.// Ҳифз кардани мавзӯъ val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE) ?: return with (sharedPref.edit()) { putInt(getString(R.string.saved_theme_key), themeId) apply() } // Хондани мавзӯъ 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 // Татбиқи мавзӯъ дар Activity setTheme(savedThemeId) super.onCreate(savedInstanceState) -
DataStore: роҳи муосир ва асинхрон барои нигоҳ доштани маълумот, ки ҷараёнҳои маълумотро пешниҳод мекунад ва нигоҳдории боэътимодтар.// DataStore private val Context.dataStore: DataStore<Preferences> by preferencesDataStore(name = "settings") // Ҳифз кардани мавзӯъ suspend fun saveTheme(themeId: Int) { dataStore.edit { settings -> settings[intPreferencesKey("theme_id")] = themeId } } // Гирифтани мавзӯъ 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 }Татбиқи мавзӯъ дар Activity метавонад пас аз гирифтани арзиш аз
DataStore(масалан, бо истифода азcollectдар корутина) ва даъватиsetThemeсурат гирад. Мумкин аст, ки пас аз тағир додани мавзӯъ Activity навсозӣ шавад барои намоиши дуруст. -
Танзимоти системии мавзӯъ: Android инчунин дастгирии дарунсохт барои мавзӯъҳоро пешниҳод мекунад: равшан, торик ва дархостӣ (аз системӣ пайравӣ мекунад). Ин метавонад тавассути захираҳо амалӣ карда шавад.
- Эҷоди услубҳо барои мавзӯъҳои равшан ва торик (масалан,
res/values/themes.xmlваres/values-night/themes.xml). - Танзим кардани
AppCompatDelegate.setDefaultNightModeбарои татбиқи мавзӯъ ба программӣ ё танзим дар манифести activity тавассутиandroid:theme.
- Эҷоди услубҳо барои мавзӯъҳои равшан ва торик (масалан,
Татбиқи мавзӯъ одатан талаб мекунад, ки Activity дубора сохта шавад, то захираҳо дуруст бор карда шаванд. Барои ин, метавонед recreate()-ро истифода баред.