Sobes.tech
Middle

Ինչպես պահպանել և կիրառել թեմայի կարգավորումները Android հավելվածում?

sobes.tech AI

Պատասխան AI-ից

Անհրաժեշտ է պահպանել և կիրառել թեմայի կարգավորումները Android հավելվածում՝ օգտագործելով մի քանի մոտեցումներ:

  1. 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)
    
  2. 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- ի վերականգնում՝ թեմայի փոփոխությունից հետո՝ ճիշտ ցուցադրման համար:

  3. Համակարգային թեմայի կարգավորումներ: Android-ը նաև ներքին աջակցություն է տրամադրում թեմաների՝ լուսավոր, մութ և ըստ նախընտրության (հետևում է համակարգի կարգավորումներին): Դա կարելի է իրականացնել ռեսուրսների միջոցով:

    • Ստեղծել ոճեր լուսավոր և մութ թեմաների համար (res/values/themes.xml և res/values-night/themes.xml):
    • Կարգավորել AppCompatDelegate.setDefaultNightMode-ը ծրագրային կերպով կամ android:theme-ով activity-ի մանիֆեստում:

Թեմայի կիրառումը հաճախ պահանջում է Activity- ի վերականգնում՝ ռեսուրսները ճիշտ բեռնելու համար։ Դրա համար կարելի է օգտագործել recreate()-ը։