L'équipe de conception de matériaux de Google définit clairement les paramètres de votre application Android:
Les paramètres de l'application permettent aux utilisateurs d'indiquer leurs préférences quant au comportement d'une application..
Google indique également que vos utilisateurs doivent accéder aux paramètres de l'application depuis le menu de navigation latérale ou le menu de la barre d'outils, avec un élément intitulé Réglages.
L'inclusion de paramètres dans votre application donne à vos utilisateurs le pouvoir de contrôler certaines des fonctionnalités de votre application. Cela rend vos utilisateurs heureux au lieu d'être en colère, car ils contrôlent désormais le comportement de l'application..
Il est fortement recommandé de donner accès aux paramètres de l'application. Cela offrira une meilleure expérience utilisateur à vos utilisateurs, ce qui mènera à une meilleure révision sur le magasin Google Play, ce qui donnera ensuite lieu à un nombre plus élevé de téléchargements d'applications (ce qui augmentera les revenus)..
Je suppose que vous devez avoir interagi avec les paramètres d'une application sur votre appareil, par exemple en sélectionnant une sonnerie par défaut ou en contrôlant votre confidentialité sur l'application. Presque toutes les applications les plus populaires que vous avez téléchargées ou que vous allez télécharger sur le Google Play Store incluent un écran de paramètres vous permettant de contrôler le comportement de l'application..
L'application Google Chrome pour Android est un exemple d'application populaire dotée d'un écran de paramètres. Dans l'écran des paramètres de cette application, les utilisateurs peuvent choisir le moteur de recherche par défaut, modifier le comportement des notifications, contrôler la confidentialité des utilisateurs, etc. Vous pouvez le constater vous-même en téléchargeant l'application Chrome à partir du magasin Google Play (si vous ne l'avez pas déjà votre appareil). La capture d'écran suivante provient de l'application Chrome et affiche l'écran de configuration de l'application..
Dans cet article, vous apprendrez à créer un écran de paramètres d'application et à lire les valeurs sélectionnées par l'utilisateur à partir des paramètres de l'application. Pour un bonus supplémentaire, vous apprendrez également à utiliser la fonctionnalité des modèles d'Android Studio pour amorcer rapidement votre projet avec un écran de paramètres..
Vous trouverez un exemple de projet (en Kotlin) pour ce tutoriel sur notre dépôt GitHub afin que vous puissiez suivre facilement.
Pour pouvoir suivre ce tutoriel, vous aurez besoin de:
Préférences partagées
)Lancez Android Studio et créez un nouveau projet (vous pouvez le nommer ParamètresScreenDemo
) avec une activité vide appelée ParamètresActivité
. Assurez-vous également de vérifier le Inclure le support Kotlin case à cocher.
Fragment de Préférence
Pour prendre en charge l’API de niveau 11 (Honeycomb) et supérieur, nous pouvons utiliser le Fragment de Préférence
. Cette classe est simplement un Fragment
qui montre une hiérarchie de Préférence
objets sous forme de listes.
import android.os.Bundle import android.preference.PreferenceFragment import android.support.v7.app.AppCompatActivity, classe SettingsActivity: AppCompatActivity () (annule l’amusement de la création (android.R.id.content) == null) fragmentManager.beginTransaction () .add (android.R.id.content, SettingsFragment ()). commit () classe SettingsFragment: PreferenceFragment () annule le plaisir (savedInstanceState: Bundle?) super.onCreate (savedInstanceState) addPreferencesFromResource (R.xml.preferences)
Dans le code ci-dessus, nous avons créé une classe imbriquée ParamètresFragment
à l'intérieur ParamètresActivité
(parce que le RèglementFragment
la classe est si petite). Notez que notre classe ParamètresFragment
étend la Fragment de Préférence
superclasse et a une méthode addPrerenceFromResource
à l'intérieur onCreate ()
. Dans cette méthode, nous lui avons donné un identifiant de ressource R.xml.preference
de la préférence XML à lancer-lorsque le Fragment
est chargé. Enfin, nous hébergeons le fragment de l’activité en utilisant simplement le FragmentTransaction
l'ajouter à l'interface utilisateur onCreate ()
de ParamètresActivité
.
Créez un fichier XML et nommez-le preferences.xml. Enregistrer ce fichier dans le res / xml répertoire dans votre projet d'application. Notez que vous pouvez donner à ce fichier n’importe quel nom, mais il est vivement recommandé de conserver le nom conventionnel "préférences". En outre, vous ne devriez généralement avoir qu'un seul fichier de ce type dans un projet d'application..
Le nœud racine de notre les préférences.xml le fichier doit être un
élément. À l'intérieur de cet élément racine, nous avons maintenant notre individu Préférence
. Voici les attributs communs associés à un Préférence
:
Android: clé
: cet attribut est utilisé pour obtenir la valeur dans le Préférences partagées
objet.Android: titre
: définit le titre de la Préférence
. Ceci est le texte en gras.Android: résumé
: définit le résumé pour le Préférence
(ce n'est pas obligatoire). Ceci est le texte fané sous le titre.android: defaultValue
: définit la valeur par défaut pour le Préférence
. Nous allons passer en revue chacun Préférence
nous avons défini ci-dessus sous peu. Notez que vous pouvez également ajouter ou personnaliser un Préférence
via l'éditeur de préférences d'Android Studio, similaire à l'éditeur de ressources de mise en page que vous connaissez déjà. Vous pouvez choisir d'ajouter ou de modifier votre fichier XML de préférence directement en mode "Texte" ou d'utiliser l'interface utilisateur par glisser-déposer en mode "Conception"..
Comme vous pouvez le voir, dans cet éditeur, vous pouvez glisser et déposer Préférence
dans la section de la palette (sur le côté gauche). Une fois déposé, vous devez le sélectionner et modifier ses attributs dans le volet des attributs (à droite) de l'éditeur. Notez que par défaut, nous avons quelques attributs à modifier. Pour afficher ou modifier tous les attributs associés à un élément sélectionné Préférence
, assurez-vous de cliquer sur le Afficher tous les attributs lien en bas du volet des attributs. Ceci est très similaire à l'éditeur de mise en page que vous connaissez déjà.
Maintenant, passons en revue chacun des Préférence
entités que nous avons.
UNE CheckBoxPreference
est simplement un CheckBox
widget qui est inclus dans l'écran de préférence. Ce Préférence
renvoie la valeur "true" si cochée ou "false" sinon. En d'autres termes, il retourne un booléen en fonction de l'état du widget.
Autres attributs que vous pouvez ajouter à un CheckBoxPreference
sont:
Android: summaryOff
: définit le résumé pour le Préférence
dans un écran de préférences quand il est décoché.android: summaryOn
: définit le résumé pour le Préférence
dans un écran de préférences quand il est coché.android: disableDependentsState
: État (vrai pour activé ou faux pour désactivé) qui provoque la désactivation des personnes à charge. Peut être une valeur booléenne, telle que "true" ou "false".SwitchPreference
effectue une fonctionnalité similaire à la CheckBoxPreference
. Il fournit une option à bascule à deux états ("activé" ou "désactivé"). Cela utilise un Commutateur
widget qui permet à l'utilisateur de glisser à gauche ("off") et à droite ("on"). Ce Préférence
comprend également les attributs décrits pour la CheckBoxPreference
au dessus de. De plus, il possède les attributs suivants:
android: switchTextOff
: définit le texte utilisé sur le commutateur lui-même lorsqu'il est à l'état "off". android: switchTextOn
: définit le texte utilisé sur le commutateur lui-même lorsqu'il est à l'état "on". Ce Préférence
, Lorsque vous cliquez dessus, une boîte de dialogue permettant à l'utilisateur de saisir un texte de saisie s'affiche. Il utilise le Éditer le texte
widget-y compris tous les attributs de ce widget que vous connaissez déjà.
Notez que la valeur stockée dans le Préférences partagées
est une ficelle.
Ce genre de Préférence
affiche une liste d'entrées dans une boîte de dialogue lorsque vous appuyez dessus. Ici, vous pouvez spécifier une paire de ressources de tableau de chaînes dans votre XML de préférence. Cette ressource de tableau de chaînes contient simplement une collection de chaînes. Cette ressource est située à res / values / arrays.xml
.
- 15 minutes
- 30 minutes
- 1 heure
- 3 heures
- 6 heures
- Jamais
- 15
- 30
- 60
- 180
- 360
- -1
Voici notre échantillon ListPreference
en utilisant cette ressource.
Nous définissons les entrées et les valeurs d’entrée à l’aide des touches Android: entrées
et android: entryValues
attributs respectivement.
Android: entrées
: le tableau lisible par l'homme à présenter sous forme de liste.android: entryValues
: le tableau pour trouver la valeur à sauvegarder pour une préférence quand une entrée à partir d'entrées est sélectionnée.Par exemple, si nous utilisons le nombre de minutes dans chaque durée comme valeurs d'entrée, lorsque l'utilisateur sélectionne une durée (par exemple 30 minutes), la valeur entière correspondante sera stockée dans Préférences partagées
(par exemple 30).
Celui-ci est similaire à ListPreference
mais au lieu d'avoir des boutons radio, nous avons des cases à cocher. En d'autres termes, l'utilisateur peut sélectionner plusieurs éléments dans la boîte de dialogue. Notez que le résultat est stocké dans un “jeu de chaînes” dans Préférences partagées
. Ceci peut être récupéré en utilisant getStringSet ()
.
Lorsqu'un SonneriePréférence
est sélectionné, une boîte de dialogue contenant la liste des sonneries disponibles sur le périphérique ou l'émulateur s'affiche.
android: showDefault
: si le Sonnerie par défaut l'option sera affichée.android: showSilent
: si un Silencieux Cette option apparaîtra dans la liste. L'utilisateur peut sélectionner cette option s'il ne souhaite jouer aucune sonnerie.. Notez que la valeur stockée dans le Préférences partagées
pour cette préférence est une chaîne spéciale. Cette chaîne spéciale est un URI qui pointe vers un Fournisseur de contenu
.
Cela devient un problème lorsque vous avez une longue liste de préférences ou de paramètres, car les utilisateurs peuvent avoir des difficultés à les analyser ou à les comprendre. Pour résoudre ce problème, nous pouvons regrouper nos préférences. Jetez un coup d'œil à la capture d'écran de l'application Chrome que je vous ai montrée au début, remarquez qu'elle regroupait les préférences en deux catégories: Les bases et Avancée. Il est ainsi plus facile pour l’utilisateur de comprendre les préférences et de ne pas faire paraître la liste trop lourde..
Voyons maintenant à quel point il est simple d'accomplir cette tâche.
… …
Nous entourons simplement les préférences que nous voulons regrouper dans un
tag et donner à chaque groupe un titre en utilisant le Android: titre
attribut.
Notez qu'il est possible d'ouvrir une activité en cliquant simplement sur un élément de préférence dans l'écran des paramètres. Cela peut être utile lorsque vous souhaitez ouvrir une page Web. Voici le code pour le faire:
Ici, nous avons ajouté un
élément à l'intérieur du
élément.
Android: action
: définit l'action pour l'intention (cela ressemble à l'appel setAction ()
sur un objet d'intention). android: targetClass
: définit la partie classe du nom du composant (identique à l'appel setComponent ()
sur un objet d'intention).Android: targetPackage
: Définit la partie package du nom du composant.Android: données
: Définit les données à assigner (identique à l'appelant setData ()
sur un objet d'intention). Pour ouvrir une page Web, par exemple, vous pouvez utiliser les éléments suivants:
Voyons maintenant comment mettre à jour le résumé des préférences avec la valeur sélectionnée par l'utilisateur.
class SettingsActivity: AppCompatActivity () //… class SettingsFragment: PreferenceFragment () override fun onCreate (savedInstanceState: Bundle?) super.onCreate (savedInstanceState) addPreferencesFromResource (R.xml.preferences) bindPreferenceSummaryToValue (findPreference ("text")) bindPreferenceSummaryToValue (findPreference ("list")) //…
Dans cette classe, nous avons créé une méthode d'assistance appelée bindPreferenceSummaryToValue ()
, qui se trouve dans notre objet compagnon, pour mettre à jour le texte du résumé des préférences avec la valeur sélectionnée par l'utilisateur. Nous avons passé un Préférence
objet comme argument. le findPreference ()
retournera un Préférence
en utilisant le Préférence
la clé de.
class SettingsActivity: AppCompatActivity () //… objet associé / ** * Un écouteur de modification de valeur de préférence qui met à jour le résumé * de la préférence pour refléter sa nouvelle valeur. * / private val sBindPreferenceSummaryToValueListener = Preference.OnPreferenceChangeListener préférence, valeur -> val stringValue = valeur.toString () si (préférence est ListPreference) // Pour les préférences de liste, recherchez la valeur d'affichage correcte dans // les 'entrées' de préférence. liste. val listPreference = préférence val index = listPreference.findIndexOfValue (stringValue) // Définit le résumé pour refléter la nouvelle valeur. preference.setSummary (if (index> = 0) listPreference.entries [index] sinon null) else if (préférence est RingtonePreference) // Pour les préférences de sonnerie, recherchez la valeur d'affichage correcte // à l'aide de RingtoneManager. if (TextUtils.isEmpty (stringValue)) // Les valeurs vides correspondent à 'silent' (pas de sonnerie). preference.setSummary ("Silent") else val ringtone = RingtoneManager.getRingtone (preference.getContext (), Uri.parse (stringValue)) if (ringtone == null) // Efface le résumé en cas d'erreur de recherche. . preference.setSummary (null) else // Définissez le résumé pour refléter le nouvel affichage de sonnerie // nom. val name = ringtone.getTitle (preference.getContext ()) preference.setSummary (name) else // Pour toutes les autres préférences, définissez le récapitulatif sur la // représentation sous forme de chaîne simple. preference.summary = stringValue true private fun bindPreferenceSummaryToValue (préférence: Préférences) // Définit l'écouteur pour qu'il surveille les changements de valeur. preference.onPreferenceChangeListener = sBindPreferenceSummaryToValueListener // Déclenche l'écouteur immédiatement avec la // valeur actuelle de la préférence. sBindPreferenceSummaryToValueListener.onPreferenceChange (préférence, PreferenceManager .getDefaultSharedPreferences (préférence.context) .getString (préférence.key, ""))
Nous avons une variable sBindPreferenceSummaryToValueListener
c'est un exemple de Preference.OnPreferenceChangeListener
. Il s'agit simplement d'un auditeur de changement de préférence qui nous aidera à mettre à jour le résumé des préférences en fonction de la valeur sélectionnée par l'utilisateur. Nous vérifions les cas particuliers, comme lorsque la préférence sélectionnée est une SonneriePréférence
ou un ListPreference
. Pour ces types de préférences, nous effectuons des manipulations spéciales pour obtenir la chaîne de résumé. Si la préférence n’est ni (comme un EditTextPreference
), nous venons de définir le résumé sur la valeur de chaîne de la préférence.
À l'intérieur de bindPreferenceSummaryToValue ()
, nous définissons l'auditeur de changement de préférence en appelant onPreferenceChangeListener
(en Java, c'est setOnPreferenceChangeListener
à la place) sur le Préférence
objet.
Maintenant, relancez le projet pour voir comment tout cela fonctionne!
Pour commencer à obtenir des valeurs de préférence pour l’écran des paramètres, nous appelons getDefaultSharedPreference ()
qui est à l'intérieur du PreferenceManager
la classe en passant un Le contexte
objet des préférences dont les valeurs sont recherchées. Notez que nous obtenons les valeurs de la valeur par défaut Préférences partagées
pour notre application.
val prefs = PreferenceManager.getDefaultSharedPreferences (this) prefs.getBoolean ("case à cocher", false) .toString () prefs.getString ("sonnerie", "") prefs.getString (" text "," ") prefs.getString (" list "," ")
Vous appelez la méthode getter correspondante pour le type pour lequel nous voulons extraire la valeur dans Préférences partagées
. Vous lui passez la clé comme premier argument et la valeur par défaut est le deuxième argument.
Maintenant que vous connaissez les API impliquées pour créer un écran de paramètres à partir de zéro dans Android, je vais vous montrer un raccourci qui le rendra plus rapide la prochaine fois. Vous pouvez choisir d'utiliser un modèle au lieu de coder un écran de paramètres à partir de zéro..
Android Studio fournit des modèles de code conformes aux meilleures pratiques de conception et de développement d'Android. Ces modèles de code existants (disponibles en Java et Kotlin) peuvent vous aider à démarrer rapidement votre projet. Un tel modèle peut être utilisé pour créer un écran de paramètres.
Pour utiliser cette fonctionnalité pratique dans un nouveau projet, lancez d'abord Android Studio..
Entrez le nom de l'application et cliquez sur le bouton Suivant bouton. Vous pouvez laisser les valeurs par défaut telles qu’elles sont dans Périphériques Android cibles dialogue.
Clique le Suivant bouton à nouveau.
dans le Ajouter une activité sur mobile dialogue, faites défiler et sélectionnez Activité Paramètres. Clique le Suivant bouton après ça.
Dans la dernière boîte de dialogue, vous pouvez renommer le nom de l'activité, le nom de la mise en page ou le titre si vous le souhaitez. Enfin, cliquez sur le terminer bouton pour accepter toutes les configurations.
Android Studio nous a maintenant aidés à créer un projet avec une activité de paramétrage. Vraiment cool! Il est fortement conseillé d'explorer le code généré.
Vous pouvez également utiliser des modèles pour un projet Android Studio déjà existant. Il suffit d'aller à Fichier> Nouveau> Activité> Activité Paramètres.
Notez que les modèles fournis avec Android Studio conviennent à la mise en page simple et à la création d'applications de base, mais si vous souhaitez vraiment lancer votre application, vous pouvez envisager certains des modèles disponibles sur Envato Market..
Ils permettent aux développeurs expérimentés de gagner beaucoup de temps en les aidant à réduire le coût de la création d'application à partir de zéro et en concentrant leurs talents sur les éléments uniques et personnalisés de la création d'une nouvelle application.
Dans ce didacticiel, vous avez appris à créer des paramètres d'application dans Android à partir de zéro. Nous avons également exploré comment utiliser facilement et rapidement les modèles Android Studio pour créer des paramètres d'application..
Je vous recommande vivement de consulter les directives officielles relatives à la conception de matériel pour en savoir plus sur la manière de concevoir et d'utiliser correctement les paramètres dans Android. Consultez également le guide officiel des API pour en savoir plus sur les autres API permettant de créer une activité de paramètres..
Pour en savoir plus sur le codage pour Android, consultez certains de nos autres cours et tutoriels ici sur Envato Tuts.+!