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колдонуу аркылуу программалык түрдө теманы колдонуу же манифесттеandroid:themeаркылуу орнотуу.
- Жарык жана караңгы темалар үчүн стильдер түзүү (мисалы,
Теманы колдонуу көбүнесе Activity кайра түзүүнү талап кылат, ресурстар туура жүктөлүшү үчүн. Бул үчүн recreate() колдонсо болот.