Android uygulamasında tema ayarlarını nasıl kaydedip uygularız?
sobes.tech yapay zeka
AI'dan gelen yanıt
Bir Android uygulamasında tema ayarlarını kaydetmek ve uygulamak için birkaç yaklaşım kullanılabilir.
-
SharedPreferences: Seçilen tema kimliğini gibi küçük veri miktarlarını kaydetmek için basit bir yöntem.// Temayı kaydet val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE) ?: return with (sharedPref.edit()) { putInt(getString(R.string.saved_theme_key), themeId) apply() } // Temayı oku 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'de temayı uygula setTheme(savedThemeId) super.onCreate(savedInstanceState) -
DataStore: Daha modern ve asenkron bir yöntem olup, veri akışları ve daha güvenilir depolama sağlar.// DataStore private val Context.dataStore: DataStore<Preferences> by preferencesDataStore(name = "settings") // Temayı kaydet suspend fun saveTheme(themeId: Int) { dataStore.edit { settings -> settings[intPreferencesKey("theme_id")] = themeId } } // Temayı al 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 }Tema uygulaması Activity'de,
DataStore'dan alınan değeri (örneğin,collectkullanılarak coroutine içinde) aldıktan sonra vesetThemeçağrısı yapıldıktan sonra gerçekleşebilir. Temayı değiştirdikten sonra Resource'ların doğru yüklenmesi için Activity'nin yeniden oluşturulması gerekebilir. -
Sistem tema ayarları: Android, ayrıca yerleşik tema desteği sağlar: açık, koyu ve varsayılan (sistem ayarlarını takip eder). Bu, kaynaklar aracılığıyla uygulanabilir.
- Açık ve koyu tema için stiller oluşturun (
res/values/themes.xmlveres/values-night/themes.xml). AppCompatDelegate.setDefaultNightModekullanarak temayı programatik olarak uygulayın veyaandroid:themeile manifestte ayarlayın.
- Açık ve koyu tema için stiller oluşturun (
Bir temanın uygulanması genellikle Resource'ların doğru yüklenmesi için Activity'nin yeniden oluşturulmasını gerektirir. Bunu recreate() kullanarak yapabilirsiniz.