Ayarlar Android Jetpack'in bir parçasıdır.
Ayarlar, kullanıcıların bir uygulamanın işlevselliğini ve davranışını değiştirmesine olanak tanır. Ayarlar şunları yapabilir: uygulamanın verileri daha geniş kapsamlı olabilir; örneğin, içeriği değiştirmek, çok önemli bir parçasıdır.
Kullanıcı tarafından yapılandırılabilen ayarları uygulamanıza entegre etmek için AndroidX'i kullanın Tercih kitaplığı. Bu kitaplık, kullanıcı arayüzünü yönetir ve Böylece kullanıcının erişebileceği ayarları yalnızca özel yapılandıramazsınız. Kitaplıkta sunulan Materyal Tasarım temasıyla, cihazlar ve işletim sistemi sürümleri arasında tutarlı bir kullanıcı deneyimi sağlar.
Başlayın
Preference
, binanın en temel yapısıdır.
bloğunu seçin. Ayarlar ekranında Preference
hiyerarşi. Bu hiyerarşiyi bir XML kaynağı olarak tanımlayabilir veya
bilgi edinin.
Aşağıdaki bölümlerde, AndroidX Tercih kitaplığı.
Başlamadan önce build.gradle
sayfanıza Tercih kitaplığı bağımlılığını ekleyin
dosya:
Eski
dependencies { implementation "androidx.preference:preference-ktx:1.2.0" }
Kotlin
dependencies { implementation("androidx.preference:preference-ktx:1.2.0") }
Gradle Sync'ten sonra görevin XML bölümüne geçebilirsiniz.
Hiyerarşi oluşturma
Projenizde res/xml
klasörüne gidin, bir preferences.xml
dosyası oluşturun,
ve şu kodu ekleyin:
<PreferenceScreen xmlns:app="http://schemas.android.com/apk/res-auto"> <SwitchPreferenceCompat app:key="notifications" app:title="Enable message notifications"/> <Preference app:key="feedback" app:title="Send feedback" app:summary="Report technical issues or suggest new features"/> </PreferenceScreen>
Bu hiyerarşi iki Preference
nesne içerir: bir
SwitchPreferenceCompat
Kullanıcıların bir ayarı açıp kapatmalarına olanak tanıyan vePreference
widget'ını tıklayın.
Bir hiyerarşi oluştururken her Preference
benzersiz bir anahtara sahip olmalıdır.
Hiyerarşiyi şişirme
Bir hiyerarşiyi XML özelliğinden şişirmek için bir
PreferenceFragmentCompat
geçersiz kılma
onCreatePreferences()
,
ve aşağıdaki örnekte gösterildiği gibi, şişirilecek XML kaynağını sağlayın:
Kotlin
class MySettingsFragment : PreferenceFragmentCompat() { override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { setPreferencesFromResource(R.xml.preferences, rootKey) } }
Java
public class MySettingsFragment extends PreferenceFragmentCompat { @Override public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { setPreferencesFromResource(R.xml.preferences, rootKey); } }
Ardından bu Fragment
öğesini diğer herhangi bir öğede yaptığınız gibi Activity
cihazınıza ekleyebilirsiniz
Fragment
:
Kotlin
class MySettingsActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) supportFragmentManager .beginTransaction() .replace(R.id.settings_container, MySettingsFragment()) .commit() } }
Java
public class MySettingsActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getSupportFragmentManager() .beginTransaction() .replace(R.id.settings_container, new MySettingsFragment()) .commit(); } }
Sonuç aşağıdaki resimde gösterilmektedir:
Tercihleri izleyin
Bir tercih değiştiğinde bir etkinliği almak için bir işleyiciyi şunları sağlar:
Kotlin
findPreference<SwitchPreferenceCompat>("notifications") ?.setOnPreferenceChangeListener { _, newValue -> Log.d("Preferences", "Notifications enabled: $newValue") true // Return true if the event is handled. } findPreference<Preference>("feedback") ?.setOnPreferenceClickListener { Log.d("Preferences", "Feedback was clicked") true // Return true if the click is handled. }
Java
SwitchPreferenceCompat notificationsPref = findPreference("notifications"); if (notificationsPref != null) { notificationsPref.setOnPreferenceChangeListener((preference, newValue) -> { Log.d("Preferences", String.format("Notifications enabled: %s", newValue)); return true; // Return true if the event is handled. }); } Preference feedbackPref = findPreference("feedback"); if (feedbackPref != null) { feedbackPref.setOnPreferenceClickListener((preference) -> { Log.d("Preferences", "Feedback was clicked"); return true; // Return true if the event is handled. }); }
Geçerli tercih değerini oku
PreferenceFragmentCompat
, tasarrufla ilgili makinelerin çoğunu gizler ve
okumayı öğreteceğim. Ancak her şey
SharedPreferences
ve bu değerleri normalde olduğu gibi okuyabilirsiniz
SharedPreferences
:
Kotlin
val preferences = PreferenceManager.getDefaultSharedPreferences(this).all preferences.forEach { Log.d("Preferences", "${it.key} -> ${it.value}") }
Java
var preferences = PreferenceManager.getDefaultSharedPreferences(context).getAll(); preferences.forEach((key, value) ->{ Log.d("Preferences", String.format("%s -> %s", key, value)); });
Önceki snippet, izleme etiketi için varsayılan SharedPreferences
uygulama, depolanan tüm değerlere erişir, bunların üzerinde döngüler gerçekleştirir ve bunları
Logcat.