Advertisement
  1. Code
  2. Android SDK

So codieren Sie einen Einstellungsbildschirm in einer Android-App

by
Read Time:14 minsLanguages:

German (Deutsch) translation by Tatsiana Bochkareva (you can also view the original English article)

Final product imageFinal product imageFinal product image
What You'll Be Creating

Das Materialdesign-Team von Google gibt eine klare Definition der Einstellungen in Ihrer Android-App:

App-Einstellungen ermöglichen es Benutzern, Präferenzen für das Verhalten einer App anzugeben.

Sie bei Google geben auch an, dass Ihre Benutzer entweder über die seitliche Navigation oder das Symbolleistenmenü zu den App-Einstellungen navigieren sollten – mit einem Element mit der Bezeichnung Einstellungen.

Durch das Einfügen von Einstellungen in Ihre App können Ihre Benutzer einige der Funktionen Ihrer App steuern. Das macht Ihre Benutzer glücklich statt wütend – denn sie haben jetzt die Kontrolle darüber, wie sich die App verhält.

Es wird dringend empfohlen, den Zugriff auf die App-Einstellungen zu gewähren. Dies bietet Ihren Nutzern eine bessere Benutzererfahrung, was zu einer besseren Bewertung im Google Play Store führt, was schließlich zu einer höheren Anzahl von App-Downloads führt (was den Umsatz steigert).

Ich gehe davon aus, dass Sie mit den Einstellungen einer App auf Ihrem Gerät interagiert haben, beispielsweise indem Sie einen Standardklingelton ausgewählt oder Ihre Privatsphäre in der App kontrolliert haben. Fast alle der beliebtesten Apps, die Sie im Google Play Store heruntergeladen haben oder herunterladen werden, enthalten einen Einstellungsbildschirm, mit dem Sie das Verhalten der Anwendung steuern können.

Ein Beispiel für eine beliebte App mit einem Einstellungsbildschirm ist die Chrome Android App von Google. Im Einstellungsbildschirm dieser App können Benutzer die Standardsuchmaschine auswählen, das Benachrichtigungsverhalten ändern, die Privatsphäre der Benutzer steuern usw. Sie können dies selbst sehen, indem Sie die Chrome-App aus dem Google Play Store herunterladen (falls Sie sie noch nicht auf Ihrem Gerät haben). Der folgende Screenshot stammt aus der Chrome-App und zeigt den Einstellungsbildschirm der App an.

Screenshot of Chrome app settings screen Screenshot of Chrome app settings screen Screenshot of Chrome app settings screen

In diesem Beitrag erfahren Sie, wie Sie einen App-Einstellungsbildschirm von Grund auf neu erstellen und die Werte lesen, die der Benutzer aus den App-Einstellungen ausgewählt hat. Als zusätzlichen Bonus erfahren Sie auch, wie Sie die Android Studio-Vorlagenfunktion verwenden, um Ihr Projekt mit einem Einstellungsbildschirm schnell zu booten.

Ein Beispielprojekt (in Kotlin) für dieses Tutorial finden Sie in unserem GitHub-Repository, damit Sie es leicht verfolgen können.

Voraussetzungen

Um diesem Tutorial folgen zu können, benötigen Sie:

  • Ein grundlegendes Verständnis einiger Android-APIs (wie SharedPreferences)
  • Android Studio 3.0 oder höher
  • Kotlin-Plugin 1.1.51 oder höher

1. Erstellen Sie ein Android Studio-Projekt

Starten Sie Android Studio und erstellen Sie ein neues Projekt (Sie können es SettingsScreenDemo nennen) mit einer leeren Aktivität namens SettingsActivity. Stellen Sie sicher, dass Sie auch das Kontrollkästchen Kotlin-Unterstützung einschließen aktivieren.

Android Studio create project screenAndroid Studio create project screenAndroid Studio create project screen

2. Erstellen eines PreferenceFragment

Um API Level 11 (Honeycomb) und höher zu unterstützen, können wir das PreferenceFragment verwenden. Diese Klasse ist einfach ein Fragment, das eine Hierarchie von Preference-Objekten als Listen anzeigt.

Im obigen Code haben wir eine verschachtelte Klasse SettingsFragment in SettingsActivity erstellt (da die SetttingsFragment-Klasse so klein ist). Beachten Sie, dass unsere Klasse SettingsFragment die Superklasse PreferenceFragment erweitert und eine Methode addPrerenceFromResource innerhalb von onCreate() hat. In dieser Methode haben wir ihr die Ressourcen-ID R.xml.preference der XML-Präferenz zum Starten gegeben – wenn das Fragment geladen wird. Schließlich hosten wir das Fragment für die Aktivität, indem wir einfach die FragmentTransaction verwenden, um es der Benutzeroberfläche hinzuzufügen – innerhalb von onCreate() von SettingsActivity.

3. Unsere Präferenzen erstellen

Erstellen Sie eine XML-Datei und nennen Sie sie preferences.xml. Speichern Sie diese Datei im Verzeichnis res/xml in Ihrem App-Projekt. Beachten Sie, dass Sie dieser Datei einen beliebigen Namen geben können, es wird jedoch dringend empfohlen, bei den herkömmlichen Namen "Einstellungen" zu bleiben. Außerdem sollten Sie in einem App-Projekt normalerweise nur eine solche Datei haben.

Der Root-Knoten für unsere Datei preferences.xml sollte ein <PreferenceScreen>-Element sein. Innerhalb dieses Wurzelelements haben wir jetzt unsere individuelle Preference. Hier sind die allgemeinen Attribute, die einer Preference zugeordnet sind:

  • android:key: Dieses Attribut wird verwendet, um den Wert im SharedPreferences-Objekt zu erhalten.
  • android:title: Legt den Titel für die Preference fest. Dies ist der fett gedruckte Text.
  • android:summary: legt die Zusammenfassung für die Preference fest (dies ist nicht erforderlich). Dies ist der verblasste Text unter dem Titel.
  • android:defaultValue: legt den Standardwert für die Preference fest.

Wir werden jede der oben definierten Preference in Kürze durchgehen. Beachten Sie, dass Sie eine Einstellung auch über den Preference von Android Studio hinzufügen oder anpassen können – ähnlich dem Layout-Ressourcen-Editor, mit dem Sie bereits vertraut sind. Sie können Ihre bevorzugte XML-Datei entweder direkt im "Text"-Modus hinzufügen/bearbeiten oder die Drag-and-Drop-Benutzeroberfläche im "Design"-Modus verwenden.

Android Studio preference editorAndroid Studio preference editorAndroid Studio preference editor

Wie Sie sehen, können Sie in diesem Editor jede Preference in den Palettenbereich (auf der linken Seite) ziehen und ablegen. Nach dem Ablegen sollten Sie es auswählen und seine Attribute im Attributbereich (auf der rechten Seite) des Editors ändern. Beachten Sie, dass wir standardmäßig einige Attribute zum Ändern erhalten. Um alle Attribute anzuzeigen oder zu ändern, die einer ausgewählten Preference zugeordnet sind, stellen Sie sicher, dass Sie unten im Attributbereich auf den Link Alle Attribute anzeigen klicken. Dies ist dem Layout-Editor, den Sie bereits kennen, sehr ähnlich.

Lassen Sie uns nun jede der Preference-Entitäten durchgehen, die wir haben.

Kontrollkästchen-Präferenz

Eine CheckBoxPreference ist einfach ein CheckBox-Widget, das im Einstellungsbildschirm enthalten ist. Diese Preference gibt den Wert "true" zurück, wenn sie aktiviert ist, oder "false" andernfalls. Mit anderen Worten, es gibt abhängig vom Status des Widgets einen booleschen Wert zurück.

CheckBoxPreferense CheckBoxPreferense CheckBoxPreferense

Andere Attribute, die Sie zu einer CheckBoxPreference hinzufügen können, sind:

  • android:summaryOff: legt die Zusammenfassung für die Preference in einem Einstellungsbildschirm fest, wenn sie nicht markiert ist.
  • android:summaryOn: legt die Zusammenfassung für die Preference in einem Einstellungsbildschirm fest, wenn sie aktiviert ist.
  • android:disableDependentsState: Der Zustand (true für on oder false für off), der bewirkt, dass abhängige Personen deaktiviert werden. Kann ein boolescher Wert sein, z. B. "true" oder "false".

Schalterpräferenz

SwitchPreference führt ähnliche Funktionen wie CheckBoxPreference aus. Es bietet eine umschaltbare Option mit zwei Zuständen ("ein" oder "aus"). Dies verwendet ein Switch-Widget, mit dem der Benutzer nach links ("aus") und nach rechts ("ein") gleiten kann. Diese Preference enthält auch die oben für die CheckBoxPreference beschriebenen Attribute. Darüber hinaus hat es die folgenden Attribute:

  • android:switchTextOff: Setzt den Text, der auf dem Schalter selbst verwendet wird, wenn er sich im "Aus"-Zustand befindet.
  • android:switchTextOn: Setzt den Text, der auf dem Schalter selbst verwendet wird, wenn er sich im "on"-Zustand befindet.
SwitchPreferenceSwitchPreferenceSwitchPreference

EditText-Präferenz

Wenn diese Preference angeklickt wird, wird ein Dialogfeld angezeigt, in dem der Benutzer einen Eingabetext eingeben kann. Es verwendet das EditText-Widget – einschließlich aller Attribute dieses Widgets, mit denen Sie bereits vertraut sind.

Beachten Sie, dass der in den SharedPreferences gespeicherte Wert eine Zeichenfolge ist.

EditTextPreference EditTextPreference EditTextPreference

Listenpräferenz

Diese Art von Preference zeigt beim Antippen eine Liste von Einträgen in einem Dialogfeld an. Hier können Sie ein Paar von String-Array-Ressourcen in Ihrem bevorzugten XML angeben. Diese String-Array-Ressource enthält einfach eine Sammlung von Strings. Diese Ressource befindet sich unter res/values/arrays.xml.

Hier ist unser Beispiel für ListPreference, das diese Ressource verwendet.

Wir legen die Einträge und Eintragswerte mit den Attributen android:entries bzw. android:entryValues ​​fest.

  • android:entries: das für Menschen lesbare Array, das als Liste dargestellt werden soll.
  • android:entryValues: das Array, um den Wert zu finden, der für eine Voreinstellung gespeichert werden soll, wenn ein Eintrag aus Einträgen ausgewählt wird.
ListPreference dialog when clickedListPreference dialog when clickedListPreference dialog when clicked

Wenn wir beispielsweise die Anzahl der Minuten in jeder Dauer als Eingabewerte verwenden, wenn der Benutzer eine Zeitdauer auswählt (z. B. 30 Minuten), wird der entsprechende ganzzahlige Wert in SharedPreferences (z. B. 30) gespeichert.

MultiSelect-Listen-Präferenz

Dieser ähnelt ListPreference, hat jedoch keine Optionsfelder, sondern Kontrollkästchen. Mit anderen Worten, der Benutzer kann mehrere Elemente im Dialog auswählen. Beachten Sie, dass das Ergebnis in einem „String-Set“ in den SharedPreferences gespeichert wird. Dies kann mit getStringSet() abgerufen werden.

Klingelton-Präferenz

Wenn eine RingtonePreference angetippt wird, wird ein Dialogfeld mit der Liste der verfügbaren Klingeltöne auf dem Gerät oder Emulator angezeigt.

  • android:showDefault: Ob die Option Standardklingelton angezeigt wird.
  • android:showSilent: Ob eine Silent-Option in der Liste angezeigt wird. Der Benutzer kann diese Option auswählen, wenn er keinen Klingelton abspielen möchte.
RingtonePreference RingtonePreference RingtonePreference

Beachten Sie, dass der in den SharedPreferences gespeicherte Wert für diese Einstellung eine spezielle Zeichenfolge ist. Dieser spezielle String ist ein URI, der auf einen ContentProvider zeigt.

4. Erstellen von Einstellungsgruppen

Es wird zu einem Problem, wenn Sie eine lange Liste von Einstellungen oder Einstellungen haben, da Benutzer möglicherweise Probleme haben, diese zu scannen oder zu verstehen. Um dieses Problem zu lösen, können wir unsere Präferenzen gruppieren. Sehen Sie sich noch einmal den Screenshot der Chrome-App an, die ich Ihnen am Anfang gezeigt habe. Beachten Sie, dass die Einstellungen in zwei Kategorien unterteilt sind: Grundlagen und Erweitert. Dies erleichtert es dem Benutzer, die Präferenzen zu verstehen und die Liste nicht zu überladen erscheinen zu lassen.

Schauen wir uns nun an, wie einfach es ist, diese Aufgabe auszuführen.

Wir umgeben einfach die Einstellungen, die wir gruppieren möchten, in einem <PreferenceCategory>-Tag und geben jeder Gruppe einen Titel mit dem android:title-Attribut.

Preferences grouped with PreferenceCategoryPreferences grouped with PreferenceCategoryPreferences grouped with PreferenceCategory

5. Eine Absicht starten

Beachten Sie, dass es möglich ist, eine Aktivität zu öffnen, indem Sie einfach auf ein Einstellungselement im Einstellungsbildschirm klicken. Dies kann praktisch sein, wenn Sie eine Webseite öffnen möchten. Hier ist der Code, um das zu tun:

Hier haben wir ein <intent>-Element innerhalb des <Preference>-Elements hinzugefügt.

  • android:action: legt die Aktion für den Intent fest (dies ähnelt dem Aufrufen von setAction() für ein Intent-Objekt).
  • android:targetClass: legt den Klassenteil des Komponentennamens fest (wie der Aufruf von setComponent() für ein Intent-Objekt).
  • android:targetPackage: legt den Paketteil des Komponentennamens fest.
  • android:data: legt die zuzuweisenden Daten fest (wie der Aufruf von setData() für ein Intent-Objekt).

Um beispielsweise eine Webseite zu öffnen, können Sie Folgendes verwenden:

6. Bindung der Präferenzübersicht an den ausgewählten Wert

Sehen wir uns nun an, wie Sie die Einstellungszusammenfassung mit dem vom Benutzer ausgewählten Wert aktualisieren.

In dieser Klasse haben wir eine Hilfsmethode namens bindPreferenceSummaryToValue() erstellt, die sich in unserem Begleitobjekt befindet, um den Zusammenfassungstext der Einstellungen mit dem vom Benutzer ausgewählten Wert zu aktualisieren. Wir haben ihm ein Preference-Objekt als Argument übergeben. findPreference() gibt eine Preference zurück, die den Schlüssel der Preference verwendet.

Wir haben eine Variable sBindPreferenceSummaryToValueListener, die eine Instanz von Preference.OnPreferenceChangeListener ist. Dies ist einfach ein Einstellungsänderungs-Listener, der uns hilft, die Einstellungszusammenfassung auf den vom Benutzer ausgewählten Wert zu aktualisieren. Wir prüfen auf Sonderfälle, z. B. wenn die ausgewählte Einstellung eine RingtonePreference oder eine ListPreference ist. Für diese Einstellungstypen führen wir eine spezielle Behandlung durch, um die Zusammenfassungszeichenfolge zu erhalten. Wenn die Einstellung keines ist (wie eine EditTextPreference), setzen wir einfach die Zusammenfassung auf den Zeichenfolgenwert der Einstellung.

Innerhalb von bindPreferenceSummaryToValue() setzen wir den Einstellungsänderungs-Listener, indem wir onPreferenceChangeListener (in Java stattdessen setOnPreferenceChangeListener) für das Preference-Objekt aufrufen.

Führen Sie nun das Projekt erneut aus, um zu sehen, wie alles funktioniert!

Settings screen showing changed summary in response to selectionSettings screen showing changed summary in response to selectionSettings screen showing changed summary in response to selection

7. Abrufen von Präferenzwerten

Um mit dem Abrufen von Präferenzwerten für den Einstellungsbildschirm zu beginnen, rufen wir getDefaultSharedPreference() auf, das sich in der PreferenceManager-Klasse befindet, und übergeben ihr ein Context-Objekt der Präferenzen, deren Werte gesucht werden. Beachten Sie, dass wir die Werte aus den standardmäßigen SharedPreferences für unsere Anwendung abrufen.

Sie rufen die entsprechende Getter-Methode für den Typ auf, von dem wir den Wert in SharedPreferences abrufen möchten. Sie übergeben ihm den Schlüssel als erstes Argument und der Standardwert ist das zweite Argument.

8. Bonus: Verwenden von Android Studio-Vorlagen

Nachdem Sie nun die erforderlichen APIs kennengelernt haben, um einen Einstellungsbildschirm in Android von Grund auf neu zu erstellen, zeige ich Ihnen eine Verknüpfung, die es beim nächsten Mal schneller macht. Sie können eine Vorlage verwenden, anstatt einen Einstellungsbildschirm von Grund auf neu zu programmieren.

Android Studio bietet Codevorlagen, die den Best Practices für Android-Design und -Entwicklung entsprechen. Diese vorhandenen Codevorlagen (verfügbar in Java und Kotlin) können Ihnen helfen, Ihr Projekt schnell zu starten. Eine solche Vorlage kann verwendet werden, um einen Einstellungsbildschirm zu erstellen.

Um diese praktische Funktion für ein neues Projekt zu verwenden, starten Sie zuerst Android Studio.

Android Studios Create Android Project dialogAndroid Studios Create Android Project dialogAndroid Studios Create Android Project dialog

Geben Sie den Anwendungsnamen ein und klicken Sie auf die Schaltfläche Weiter. Sie können die Standardeinstellungen im Dialogfeld Android-Zielgeräte unverändert belassen.

Klicken Sie erneut auf die Schaltfläche Weiter.

Android studios Add an Activity to Mobile dialogAndroid studios Add an Activity to Mobile dialogAndroid studios Add an Activity to Mobile dialog

Scrollen Sie im Dialogfeld Aktivität zu Mobile hinzufügen nach unten und wählen Sie Einstellungen Aktivität. Klicken Sie danach auf die Schaltfläche Weiter.

Android Studios Configure Activity dialogAndroid Studios Configure Activity dialogAndroid Studios Configure Activity dialog

Im letzten Dialog können Sie den Aktivitätsnamen, den Layoutnamen oder den Titel nach Belieben umbenennen. Klicken Sie abschließend auf die Schaltfläche Fertig stellen, um alle Konfigurationen zu akzeptieren.

Android Studio hat uns jetzt geholfen, ein Projekt mit einer Einstellungsaktivität zu erstellen. Wirklich cool! Es wird dringend empfohlen, den generierten Code zu erkunden.

Sie können auch Vorlagen für ein bereits vorhandenes Android Studio-Projekt verwenden. Gehen Sie einfach zu Datei > Neu > Aktivität > Einstellungen Aktivität.

Navigation flow to creating a new settings activity in Android StudioNavigation flow to creating a new settings activity in Android StudioNavigation flow to creating a new settings activity in Android Studio

Beachten Sie, dass die in Android Studio enthaltenen Vorlagen gut für einfache Layouts und die Erstellung einfacher Apps geeignet sind. Wenn Sie jedoch Ihre App wirklich in Schwung bringen möchten, sollten Sie einige der App-Vorlagen in Betracht ziehen, die von Envato Market erhältlich sind.

Sie sind eine enorme Zeitersparnis für erfahrene Entwickler, da sie ihnen helfen, den Aufwand für die Erstellung einer App von Grund auf zu überwinden und ihre Talente stattdessen auf die einzigartigen und angepassten Teile der Erstellung einer neuen App zu konzentrieren

Abschluss

In diesem Tutorial haben Sie gelernt, wie Sie App-Einstellungen in Android von Grund auf neu erstellen. Wir haben auch untersucht, wie Sie die Android Studio-Vorlagen einfach und schnell zum Erstellen von App-Einstellungen verwenden können.

Ich empfehle dringend, die offiziellen Materialdesign-Richtlinien für Einstellungen zu lesen, um mehr darüber zu erfahren, wie Sie Einstellungen in Android richtig entwerfen und verwenden. Sehen Sie sich auch den offiziellen API-Leitfaden an, um mehr über andere APIs zum Erstellen einer Einstellungsaktivität zu erfahren.

Um mehr über das Programmieren für Android zu erfahren, sehen Sie sich einige unserer anderen Kurse und Tutorials hier auf Envato Tuts+ an!

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.