L’art du développement Android

L’art du développement Android

Affichage de messages surgissant

Une activité (ou toute autre partie d’une application Android) a parfois besoin de s’exprimer

Toutes les interactions avec les utilisateurs ne seront pas soignées, bien propres et contenues dans des activités composées de vues. Les erreurs surgissent ; les tâches en arrièreplan peuvent mettre plus de temps que prévu pour se terminer ; parfois, les événements, comme les messages entrants, sont asynchrones. Dans ce type de situation, vous pouvez avoir besoin de communiquer avec l’utilisateur en vous affranchissant des limites de l’interface classique. Ce n’est évidemment pas nouveau : les messages d’erreur présentés dans des boîtes de dialogue existent depuis très longtemps. Cependant, il existe également des indicateurs plus subtils, allant des icônes apparaissant dans une barre des tâches (Windows) à des icônes animées dans un « dock » (Mac OS X), en passant par un téléphone qui vibre. Android dispose de plusieurs moyens d’alerter les utilisateurs par d’autres systèmes que ceux des activités classiques. Les notifications, par exemple, sont intimement liées aux Intents et aux services et seront donc présentées au Chapitre 32. Nous étudierons ici deux méthodes permettant de faire surgir des messages : les toasts et les alertes.

Les toasts

Un toast est un message transitoire, ce qui signifie qu’il s’affiche et disparaît de lui-même, sans intervention de l’utilisateur. En outre, il ne modifie pas le focus de l’activité courante : si l’utilisateur est en train d’écrire le prochain traité fondamental sur l’art de la programmation, ses frappes au clavier ne seront donc pas capturées par le message. Un toast étant transitoire, vous n’avez aucun moyen de savoir si l’utilisateur l’a remarqué. Vous ne recevrez aucun accusé de réception de sa part et le message ne restera pas affiché suffisamment longtemps pour ennuyer l’utilisateur. Un Toast est donc essentiellement conçu pour diffuser des messages d’avertissement – pour annoncer qu’une longue tâche en arrière-plan s’est terminée, que la batterie est presque vide, etc. La création d’un toast est assez simple. La classe Toast fournit une méthode statique makeText() qui prend un objet String (ou un identifiant d’une ressource textuelle) en paramètre et qui renvoie une instance de Toast. Les autres paramètres de cette méthode sont l’activité (ou tout autre contexte) et une durée valant LENGTH_SHORT ou LENGTH_LONG pour exprimer la durée relative pendant laquelle le message restera visible. Si vous préférez créer votre Toast à partir d’une View au lieu d’une simple chaîne ennuyeuse, il suffit de créer l’instance via le constructeur (qui attend un Context) puis d’appeler setView() pour lui indiquer la vue à utiliser et setDuration() pour fixer sa durée. Lorsque le toast est configuré, il suffit d’appeler sa méthode show() pour qu’il s’affiche. Les alertes Si vous préférez utiliser le style plus classique des boîtes de dialogue, choisissez plutôt AlertDialog. Comme toute boîte de dialogue modale, un AlertDialog s’ouvre, prend le focus et reste affiché tant que l’utilisateur ne le ferme pas. Ce type d’affichage convient donc bien aux erreurs critiques, aux messages de validation qui ne peuvent pas être affichés correctement dans l’interface de base de l’activité ou à toute autre information dont vous voulez vous assurer la lecture immédiate par l’utilisateur. Pour créer un AlertDialog, le moyen le plus simple consiste à utiliser la classe Builder, qui offre un ensemble de méthodes permettant de configurer un AlertDialog. Chacune de ces méthodes renvoie le Builder afin de faciliter le chaînage des appels. À la fin, il suffit d’appeler la méthode show() de l’objet Builder pour afficher la boîte de dialogue. Voici les méthodes de configuration de Builder les plus utilisées : ● setMessage() permet de définir le « corps » de la boîte de dialogue à partir d’un simple message de texte. Son paramètre est un objet String ou un identifiant d’une ressource textuelle. Affichage de messages surgissant  ● setTitle() et setIcon() permettent de configurer le texte et/ou l’icône qui apparaîtra dans la barre de titre de la boîte de dialogue. ● setPositiveButton(), setNeutralButton() et setNegativeButton() permettent d’indiquer les boutons qui apparaîtront en bas de la boîte de dialogue, leur emplacement latéral (respectivement, à gauche, au centre ou à droite), leur texte et le code qui sera appelé lorsqu’on clique sur un bouton (en plus de refermer la boîte de dialogue). Si vous devez faire d’autres configurations que celles proposées par Builder, appelez la méthode create() à la place de show() : vous obtiendrez ainsi une instance d’AlertDialog partiellement construite que vous pourrez configurer avant d’appeler l’une des méthodes show() de l’objet AlertDialog lui-même. Après l’appel de show(), la boîte de dialogue s’affiche et attend une saisie de l’utilisateur. Mise en œuvre Voici le fichier de description XML du projet Messages/Message : Et voici son code Java : public class MessageDemo extends Activity implements View.OnClickListener { Button alert; Button toast; @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); Livre Android.book  setContentView(R.layout.main); alert=(Button)findViewById(R.id.alert); alert.setOnClickListener(this); toast=(Button)findViewById(R.id.toast); toast.setOnClickListener(this); } public void onClick(View view) { if (view==alert) { new AlertDialog.Builder(this) .setTitle(« MessageDemo ») .setMessage(« Oups ! ») .setNeutralButton(« Fermeture », new DialogInterface.OnClickListener() { public void onClick(DialogInterface dlg, int sumthin) { // On ne fait rien – la boîte se fermera elle–même } }) .show(); } else { Toast .makeText(this, «  », Toast.LENGTH_SHORT) .show(); } } } Ce layout est tout ce qu’il y a de plus classique – il comprend simplement deux boutons pour déclencher l’alerte et le toast. Lorsque nous cliquons sur le bouton « Déclencher une alerte », nous créons un Builder (avec new Builder(this)) pour configurer le titre (setTitle(« MessageDemo »)), le message (setMessage(« Oups !! ») et le bouton central (setNeutralButton(« Fermeture », new OnClickListener() …) avant d’afficher la boîte de dialogue. Quand on clique sur ce bouton, la méthode de rappel OnClickListener() ne fait rien : le seul fait qu’on ait appuyé sur le bouton provoque la fermeture de la boîte de dialogue. Toutefois, vous pourriez mettre à jour des informations de votre activité en fonction de l’action de l’utilisateur, notamment s’il peut choisir entre plusieurs boutons. Le résultat est une boîte de dialogue classique, comme celle de la Figure 14.1. Lorsque l’on clique sur le bouton « Lever un toast », la classe Toast crée un toast textuel (avec makeText(this, «  », LENGTH_SHORT)), puis l’affiche avec show(). Le résultat est un message de courte durée qui n’interrompt pas l’activité (voir Figure 14.2).

Formation et coursTélécharger le document complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *