Kuidas salvestada ja rakendada teema seadeid Android rakenduses?
sobes.tech AI
Vastus AI-lt
Selleks, et Android rakenduses salvestada jaotise seadeid jaotise kasutamise ja rakendamise, saab kasutada mitmeid lähenemisviise.
-
SharedPreferences: Lihtne viis väikese andmekogumi, näiteks valitud teema identifikaatori, salvestamiseks.// Teema salvestamine val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE) ?: return with (sharedPref.edit()) { putInt(getString(R.string.saved_theme_key), themeId) apply() } // Teema lugemine 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 // Teema rakendamine Activitys setTheme(savedThemeId) super.onCreate(savedInstanceState) -
DataStore: Kaasaegsem ja asünkroonne viis andmete salvestamiseks, mis pakub andmevooge ja usaldusväärsemat salvestust.// DataStore private val Context.dataStore: DataStore<Preferences> by preferencesDataStore(name = "settings") // Teema salvestamine suspend fun saveTheme(themeId: Int) { dataStore.edit { settings -> settings[intPreferencesKey("theme_id")] = themeId } } // Teema saamine 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 }Teema rakendamine Activitys võib toimuda pärast väärtuse saamist
DataStore-st (näiteks kasutadescollectkorutinas) jasetThemeväljakutset. Pärast teema muutmist võib olla vajalik Activity uuesti loomine, et ressursid õigesti laaditakse. -
Süsteemi seaded teema jaoks: Android pakub ka sisseehitatud tugi teemadele: hele, tume ja vaikimisi (järgib süsteemi seadeid). Seda saab rakendada ressursside kaudu.
- Loo stiile hele- ja tummale teemale (
res/values/themes.xmljares/values-night/themes.xml). - Seadista
AppCompatDelegate.setDefaultNightModeprogrammiliselt või konfiguratsiooni manifestisandroid:themekaudu.
- Loo stiile hele- ja tummale teemale (
Teema rakendamine nõuab sageli Activity uuesti loomist, et ressursid õigesti laaditakse. Selleks saab kasutada recreate().