Ինչպես պահպանել և կիրառել թեմայի կարգավորումները 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-ում կարող է կատարվել տվյալների ստացումից հետո (օրինակ՝
collect-ի օգտագործմամբ կուրտինում) ևsetTheme-ի կանչով։ Կարող է անհրաժեշտ լինել Activity- ի վերականգնում՝ թեմայի փոփոխությունից հետո՝ ճիշտ ցուցադրման համար: -
Համակարգային թեմայի կարգավորումներ: Android-ը նաև ներքին աջակցություն է տրամադրում թեմաների՝ լուսավոր, մութ և ըստ նախընտրության (հետևում է համակարգի կարգավորումներին): Դա կարելի է իրականացնել ռեսուրսների միջոցով:
- Ստեղծել ոճեր լուսավոր և մութ թեմաների համար (
res/values/themes.xmlևres/values-night/themes.xml): - Կարգավորել
AppCompatDelegate.setDefaultNightMode-ը ծրագրային կերպով կամandroid:theme-ով activity-ի մանիֆեստում:
- Ստեղծել ոճեր լուսավոր և մութ թեմաների համար (
Թեմայի կիրառումը հաճախ պահանջում է Activity- ի վերականգնում՝ ռեսուրսները ճիշտ բեռնելու համար։ Դրա համար կարելի է օգտագործել recreate()-ը։