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 තුළ තේමාව අදාළ කිරීම DataStore වෙතින් අගයක් ලබා ගැනීම (උදාහරණයක් ලෙස, collect භාවිතා කර coroutine එකක) සහ setTheme කැඳවීමෙන් සිදු විය හැකිය. තේමාව වෙනස් කිරීමෙන් පසු Activity නැවත නිර්මාණය කළ යුතු විය හැකිය, නිවැරදි ලෙස පෙන්වීම සඳහා.

  3. සැකසුම් පද්ධති තේමාවන්: Android තවමත් තේමාවන් සඳහා අභ්‍යන්තර සහාය සපයයි: ආලෝක, අඳුරු සහ පෙරනිමි (සැකසුම් පද්ධති අනුගමනය කරයි). මෙය සම්පත් මාර්ගයෙන් ක්‍රියාවට නැංවිය හැකිය.

    • ආලෝක සහ අඳුරු තේමාවන් සඳහා ශෛලීන් නිර්මාණය කිරීම (res/values/themes.xml සහ res/values-night/themes.xml).
    • AppCompatDelegate.setDefaultNightMode භාවිතා කරමින් වැඩසටහනක් ලෙස තේමාව අදාළ කිරීම හෝ android:theme මාර්ගගතව activity මනිෆෙස්ට් එකේ සැකසීම.

තේමාව අදාළ කිරීම බොහෝවිට Activity නැවත නිර්මාණය කිරීමට අවශ්‍ය වේ, සම්පත් නිවැරදිව බරවීමට. මෙයට recreate() භාවිතා කළ හැකිය.