SlideShare une entreprise Scribd logo
1  sur  15
Télécharger pour lire hors ligne
Institut National des Sciences Appliquées et de Technologie Tunisie
Développement Android
2015-2016
TP1- ÉLEMENTS GRAPHIQUES ET
INTENTS
Dr. Lilia SFAXI
Objectifs du TP : Création et manipulation d’éléments graphiques de base dans
Android, et familiarisation avec la notion d’intent, implicite et explicite.
TP1 : Éléments Graphiques
Page 2
I. View et ViewGroup
I.1 Le Composant View
La classe View représente la classe de base pour la création d’une interface graphique en Android.
C’est la classe mère de tous les widgets (éléments graphiques), utilisés pour créer des
composants graphiques interactifs (boutons, champs texte, champs de saisie…).
Une vue occupe un espace rectangulaire sur l’écran, responsable de la gestion des évènements
initiés par l’utilisateur.
Une sous-classe ViewGroup est définie par Android, représentant la classe de base pour tous les
layouts (dispositions), qui sont des conteneurs invisibles qui rassemblent plusieurs View ou
ViewGroup, et définissent leur emplacement dans l’écran (détaillés dans la section I.2 Les Layouts ).
I.2 Les Layouts
Chaque élément d’une interface graphique est soit un objet View, soit ViewGroup. Les dispositions
de ces éléments dans l’écran sont précisées principalement par des Layouts.
Un Layout est un ViewGroup qui regroupe un ensemble de widgets ou d’autres layouts, permettant
ainsi de définir leur disposition sur l’écran de la fenêtre principale. Parmi les layouts existants, on
cite le FrameLayout, LinearLayout, RelativeLayout…
II. Exercice 1 : Composants Graphiques de Base
II.1 Objectif
Durée estimée de l’exercice : au plus 1h
L’objectif de cette première partie est de réaliser une application simple de conversion de monnaie,
ayant une interface semblable à ce qui suit (veiller à respecter les tailles et emplacements des
éléments graphiques):
TP1 : Éléments Graphiques
Page 3
Activité 1. Commencer par créer l’interface graphique, identique à la figure qui précède. Lancer l’émulateur, et
vérifier que le rendu correspond à ce qui est demandé.
Dans ce qui suit, nous allons montrer les étapes à suivre pour définir le comportement de cette interface.
II.2 Comportement du bouton
Soit le bouton défini dans le fichier main.xml, dont l’identifiant est b_convert. Pour
manipuler ce bouton, trois méthodes principales sont en général utilisées:
II.2.1 Méthode 1 : Surcharge du Listener du bouton
En Java, un Listener (écouteur) est un objet permettant au programmeur de réagir suite aux
actions de l’utilisateur (clic de souris, touche du clavier, etc.). Dans notre cas, nous avons besoin
d’un écouteur pour le clic sur le bouton, appelé onClickListener. Listener est une interface, qui
fournit des méthodes qui doivent être implémentées par le programmeur. Par exemple, le
onClickListener contient une méthode onClick, qu’on doit implémenter pour définir le comportement
de notre bouton.
1. Créer un attribut dans votre activité de type Button :
private Button bConvert;
TP1 : Éléments Graphiques
Page 4
2. Dans la méthode onCreate(), initialiser l’attribut bAfficher en lui associant le bouton créé
dans le main.xml :
this.bConvert = (Button) this.findViewById(R.id.b_convert) ;
3. Utiliser le code suivant pour définir le comportement du bouton bConvert (de préférence à
l’intérieur de la méthode onCreate).
this.bConvert.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//comportement de votre bouton
}
});
II.2.2 Méthode 2 : Définition d’une méthode propre au bouton
Il existe une manière moins encombrante de définir le comportement du bouton, mais qui ne peut
pas s’appliquer à tous les évènements, seulement au clic.
• Dans l’élément XML du bouton, ajouter l’attribut :
android:onClick="convert"
Cet attribut indique qu’il existe une méthode dans le code de l’activité, appelée convert, qui définit
le comportement du bouton au clic.
• Dans le code de l’activité, ajouter la méthode suivante :
public void convert(View v){
// comportement du bouton
}
La méthode convert ainsi définie a une signature particulière : elle doit obligatoirement être
publique, retourner void et prendre comme paramètre un objet de type android.view.View (vous
remarquerez que cette méthode a la même signature que la méthode onClick, surchargée dans la
première méthode). Il faut noter également que la vue v passée en paramètre, correspond à l’objet
cliqué.
TP1 : Éléments Graphiques
Page 5
Remarque : Si vous utilisez cette solution, il est inutile de définir une variable de type Button en
Java, et de l’associer au bouton défini dans le fichier XML.
II.2.3 Méthode 3 : Implémentation de l’interface OnClickListener
Il est possible d’utiliser l’héritage pour surcharger la méthode onClick, sans passer par l’appel à la
méthode setOnClickListener. Il suffit de suivre les étapes suivantes :
1. Votre activity doit implémenter l’interface OnClickListener. Ceci est réalisé en
transformant la signature de votre classe activité comme suit, par exemple :
public class MoneyConverter extends Activity implements OnClickListener {…}
2. Créer l’attribut bConvert de type Button et l’associer à l’élément XML b_convert, comme
dans la méthode 1.
3. Définir l’activité courante comme étant l’écouteur du clic sur le bouton bConvert :
bConvert.setOnClickListener(this);
4. Ajouter la méthode onClick dans votre activité, comme suit :
public void onClick(View v) {
if (v.getId()==R.id.b_convert){
//Comportement du bouton b_convert
}
}
Attention, cette méthode sera commune à tous les éléments cliquables, il faut donc distinguer le
comportement selon l‘identifiant de l‘élément cliqué.
Cette méthode peut s’avérer utile dans le cas où on voudrait par exemple regrouper les
implémentations de tous les boutons de l’interface dans la même méthode, ou si plusieurs boutons
partagaient une partie de leur comportement.
II.3 Comportement d’un EditText
Un EditText est un objet graphique qui permet à l’utilisateur de saisir une chaîne de caractères,
utilisable par l’application.
TP1 : Éléments Graphiques
Page 6
De même que pour le bouton (ainsi que tous les éléments graphiques que nous désirons utiliser
dans notre application), nous devons définir et initialiser un objet Java associé au champs
EditText :
1. Créer un attribut dans votre activité de type EditText:
private EditText eEntry;
2. Dans la méthode onCreate(), initialiser l’attribut eEntree en lui associant le champs de
saisie créé dans le main.xml :
this.eEntry = (EditText) this.findViewById(R.id.e_entry) ;
3. Définir son comportement. Pour un champs de saisie, les principales fonctionnalités sont :
• La lecture du contenu : pour cela on utilise la méthode :
String s = eEntry.getText().toString();
• La modification du contenu :
eEntry.setText("Nouveau texte");
II.4 Comportement d’un TextView
Un TextView est un objet graphique qui permet d’afficher une chaîne de caractères non-éditable
par l’utilisateur.
Le TextView peut être utilisé par l’application exactement de la même manière qu’un EditText.
II.5 Comportement d’un Bouton Radio
Un bouton radio est un bouton à deux états qui peut être soit coché (checked) ou décoché
(unchecked). Les boutons radios sont en général utilisés dans un groupe RadioGroup. Au sein d’un
même groupe, un seul bouton radio peut être coché.
Pour gérer l’état d’un bouton radio, il faut suivre les étapes suivantes :
1. Créer un attribut de type RadioButton dans votre activité (par exemple rDinarEuro).
2. L’associer au bouton radio approprié de votre interface en utilisant la méthode findViewById.
3. Pour tester l’état de votre bouton radio, appeler la méthode isChecked(). Par exemple :
if (rDinarEuro.isChecked() ){
TP1 : Éléments Graphiques
Page 7
//traitement
}
4. Pour mettre à jour l’état du bouton radio, utiliser la méthode setChecked(boolean etat). Par
exemple, si on veut cocher l’élément radio1 et décocher radio2, on peut faire comme suit :
radio1.setChecked(true);
radio2.setChecked(false);
Remarques :
1. Pour utiliser les boutons radios, il est inutile de définir des variables en Java pour le
RadioGroup.
2. Dans l’exemple précédent (4), si radio1 et radio2 se trouvent dans un RadioGroup, il est
inutile de changer leurs deux états : le changement de l’état de l’un va automatiquement
changer l’autre, puisqu’un seul peut être coché à la fois.
Activité 2. Définir maintenant le comportement des différents composants de votre interface en utilisant la méthode
de votre choix. Actuellement (2 février 2016), 1 € = 2.2216 TND (hélas !)
III. Exercice 2 : Intents
III.1 Objectif
Durée estimée de l’exercice : au plus 1h
L’objectif de cette deuxième partie est de modifier l’application de la première partie pour obtenir le
résultat suivant :
TP1 : Éléments Graphiques
Page 8
III.2 Intents : Définition
Une application Android peut contenir plusieurs activités. Une activité utilise la méthode
setContentView pour s’associer avec une interface graphique. À la base, les activités sont
indépendantes les unes des autres, cependant, elles peuvent collaborer pour échanger des
données et des actions.
Typiquement, l’une des activités est désignée comme étant la première à être présentée à
l’utilisateur quand l’application est lancée : on l’appelle l’activité de démarrage. Toutes les activités
interagissent en mode asynchrone.
Le passage d’une activité à une autre est réalisé en demandant à l’activité en cours d’exécuter un
Intent.
TP1 : Éléments Graphiques
Page 9
Un intent est un message qui peut être utilisé pour demander une action à partir d’un composant
de l’application. Il permet invoquer des Activités, des Broadcast Receivers ou des Services. Les
différentes méthodes utilisées pour appeler ces composantes sont les suivantes :
• startActivity(intent) : lance une activité
• sendBroadcast(intent) : envoie un intent à tous les composants Broadcast Receivers
intéressés
• startService(intent) ou bindService(intent, …) : communiquent avec un service en arrière plan.
Un intent comporte des informations que le système Android utilise
• Nom du composant à démarrer
• Action à réaliser : ACTION-VIEW, ACTION_SEND…
• Donnée : URI référençant la donnée sur laquelle l’action va agir
• Catégorie : Information supplémentaire sur le type de composants qui va gérer l’intent, par
exemple : CATEGORY-BROWSABLE, CATEGORY-LAUNCHER…
• Extras : Paires clef-valeur qui comportent des informations additionnelles pour réaliser l’action
demandée
• Drapeaux (Flags) : Définissent la classe qui fonctionne comme métadonnée pour cet intent, ils
peuvent indiquer comment lancer une activité et comment la traiter une fois lancée.
Il existe principalement deux types d’Intents : Intents explicites et intents implicites.
III.3 Intents Explicites
Les intents explicites spécifient le composant à démarrer par nom (nom complet de la classe). Ils
permettent de démarrer un composant de votre propre application, car le nom de sa classe est
connu. Par exemple: démarrer une autre activité en réponse à l’action d’un utilisateur.
Les principaux arguments d’un Intent explicite sont :
TP1 : Éléments Graphiques
Page 10
• Le contexte déclenchant l’Intent (en général this, si on le lance à partir de l’activité de
départ, ou bien <Activity_class_name>.this)
• La classe destination (en général <Activity_class_name>.class)
Il est typiquement appelé comme suit:
Intent myActivityIntent = new Intent (StartClass.this, EndClass.class) ;
startActivity (myActivityIntent) ;
Les données partagées entre les deux activités peuvent être envoyées sous forme d’Extras. Un
extra est un élément sous forme de clef/valeur, que l’activité principale envoie à l’activité
destination. Il est créé comme suit :
myActivityIntent.putExtra("clef","valeur");
Attention, tous les extras doivent être associés à l’intent avant de déclencher ce dernier dans le
startActivity, bien sûr.
Il est également possible de démarrer une activité avec un résultat, en établissant un lien
bidirectionnel entre deux activités. Pour recevoir un résultat à partir d’une autre activité, appeler
startActivityForResult au lieu de StartActivity.
L’activité de destination doit bien sûr être conçue pour renvoyer un résultat une fois l’opération
réalisée, et ce sous forme d’Intent. L’activité principale le recevra et le traitera dans la méthode
prédéfinie onActivityResult.
Voici un exemple d’un intent avec résultat :
TP1 : Éléments Graphiques
Page 11
Activité 1 :
Activité 2 :
Le résultat obtenu par cet bout de code est le suivant :
TP1 : Éléments Graphiques
Page 12
Activité 3. Commencer par créer l’interface graphique de la deuxième activité. Implémenter ensuite le code du
bouton back, qui permet de revenir à l’activité principale en affichant le résultat trouvé dans un toast.
III.4 Intents Implicites
Les intents implicites ne nomment pas un composant spécifique, mais déclarent une action à
réaliser. Ils permettent à un composant d’une application d’appeler un autre composant, même s’il
se trouve dans une autre application.
Exemple : montrer à l’utilisateur un emplacement sur une Map.
Les principaux arguments d’un Intent implicite sont :
• Action : l’action à réaliser, peut être prédéfinie (ACTION_VIEW, ACTION_EDIT, ACTION_MAIN…) ou
créée par l’utilisateur.
• Donnée : Les données principales sur lesquelles on va agir, tel que le numéro de téléphone à
appeler.
Il est typiquement appelé comme suit:
Intent myActivityIntent = new Intent (<action>, <donnee>) ;
startActivity (myActivityIntent) ;
Un intent implicite se comporte comme suit:
1. Activité A crée un Intent avec une action et le passe en paramètre à startActivity
2. Le système Android cherchent toutes les applications pour trouver un Intent Filter qui
correspond à cet Intent
3. Quand une correspondance est trouvée, le système démarrent l’activité (Activity B) en
invoquant sa méthode onCreate et en lui passant l’intent
TP1 : Éléments Graphiques
Page 13
Les intents implicites utilisent la notion de Intent Filter pour trouver l’activité destination à
déclencher. Un Intent Filter est une expression dans le fichier Manifest d’une application qui
spécifie le type d’intents que le composant veut recevoir. Il permet aux autres activités de lancer
directement votre activité en utilisant un certain Intent.
Si vous ne déclarez pas d’Intent Filters à votre activité, elle ne pourra être déclenchée que par un
Intent Explicite. Il est néanmoins recommandé de ne pas déclarer d’Intent Filters pour les services,
car cela peut causer des problèmes de sécurité.
Voici un exemple d’Intent Filter :
Voici un exemple d’actions communément utilisées :
Attention, la plupart des actions nécessitent des permissions à ajouter dans le fichier manifest, par
exemple, pour autoriser votre activité à déclencher un appel, il faut ajouter la ligne :
<uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>
Action' Donnée' Description'
ACTION_DIAL' tel:123( Affiche( le( numéroteur( téléphonique( avec( le( numéro(
(123)(rempli(
ACTION_VIEW' http://www.google.com( Affiche(la(page(Google(dans(un(navigateur.(
ACTION_EDIT' content://contacts/people/2( Edite( les( informations( sur( la( personne( dont(
l’identifiant(est(2((de(votre(carnet(d’adresse)(
ACTION_VIEW' content://contacts/people/2( Utilisé( pour( démarrer( une( activité( qui( affiche( les(
données(du(contact(numéro(2(
ACTION_VIEW' content://contacts/people( Affiche( la( liste( des( contacts,( que( l’utilisateur( peut(
parcourir.( La( sélection( d’un( contact( permet( de(
visualiser(ses(détails(dans(un(nouvel(Intent.(
(
TP1 : Éléments Graphiques
Page 14
Exemple d’un Intent implicite qui permet d’envoyer un message texte :
La méthode resolveActivity permet d’éviter que l’application crashe si l’activité appelée n’existe pas.
C’est une sorte de gestion d’exception.
Le résultat obtenu sera alors comme suit :
Activité 4. Implémenter ensuite le code du bouton call, qui permet de déclencher automatiquement un appel sur un
numéro prédéfini.
TP1 : Éléments Graphiques
Page 15
IV. Homework
Votre premier travail consistera en la découverte du Material Design, le célèbre langage visuel défini
par Google. Commencer par consulter sa documentation officielle :
https://www.google.com/design/spec/material-design/introduction.html
Lire attentivement les différentes recommandations et bonnes pratiques dictées par Google pour la
conception d’interfaces graphiques. Appliquer ensuite ce patron sur l’application que nous venons
de créer, en l’agrémentant des options et fonctionnalités de votre choix. Veillez à choisir des
couleurs qui reflètent votre personnalité (et par pitié, évitez la combinaison rose/bleu standard…)

Contenu connexe

Tendances

TD1-UML-correction
TD1-UML-correctionTD1-UML-correction
TD1-UML-correctionLilia Sfaxi
 
BigData_TP1: Initiation à Hadoop et Map-Reduce
BigData_TP1: Initiation à Hadoop et Map-ReduceBigData_TP1: Initiation à Hadoop et Map-Reduce
BigData_TP1: Initiation à Hadoop et Map-ReduceLilia Sfaxi
 
diagramme de séquence UML
diagramme de séquence UMLdiagramme de séquence UML
diagramme de séquence UMLAmir Souissi
 
Architectures 3-tiers (Web)
Architectures 3-tiers (Web)Architectures 3-tiers (Web)
Architectures 3-tiers (Web)Heithem Abbes
 
Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...
Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...
Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...MOHAMMED MOURADI
 
eServices-Tp1: Web Services
eServices-Tp1: Web ServiceseServices-Tp1: Web Services
eServices-Tp1: Web ServicesLilia Sfaxi
 
Manuel des TP : Atelier Web 2
Manuel des TP : Atelier Web 2Manuel des TP : Atelier Web 2
Manuel des TP : Atelier Web 2Faycel Chaoua
 
TD2 - UML - Correction
TD2 - UML - CorrectionTD2 - UML - Correction
TD2 - UML - CorrectionLilia Sfaxi
 
Intégration des données avec Talend ETL
Intégration des données avec Talend ETLIntégration des données avec Talend ETL
Intégration des données avec Talend ETLLilia Sfaxi
 
diagramme des cas d'utilisation
diagramme des cas d'utilisationdiagramme des cas d'utilisation
diagramme des cas d'utilisationAmir Souissi
 
BigData_Chp2: Hadoop & Map-Reduce
BigData_Chp2: Hadoop & Map-ReduceBigData_Chp2: Hadoop & Map-Reduce
BigData_Chp2: Hadoop & Map-ReduceLilia Sfaxi
 
Rapport pfe Conceptionet Developpement d'une Application web et Mobile
Rapport pfe Conceptionet Developpement d'une Application web et  Mobile Rapport pfe Conceptionet Developpement d'une Application web et  Mobile
Rapport pfe Conceptionet Developpement d'une Application web et Mobile Raoua Bennasr
 
Architectures n-tiers
Architectures n-tiersArchitectures n-tiers
Architectures n-tiersHeithem Abbes
 
BigData_TP4 : Cassandra
BigData_TP4 : CassandraBigData_TP4 : Cassandra
BigData_TP4 : CassandraLilia Sfaxi
 
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2Sofien Benrhouma
 
Architecture réparties et les services web
Architecture réparties et les services webArchitecture réparties et les services web
Architecture réparties et les services webCHOUAIB EL HACHIMI
 
Rapport j2ee: Gestion d’un compte bancaire En utilisant les EJB 3.0
Rapport j2ee: Gestion d’un compte bancaire En utilisant les EJB 3.0Rapport j2ee: Gestion d’un compte bancaire En utilisant les EJB 3.0
Rapport j2ee: Gestion d’un compte bancaire En utilisant les EJB 3.0Ayoub Rouzi
 

Tendances (20)

TD1-UML-correction
TD1-UML-correctionTD1-UML-correction
TD1-UML-correction
 
BigData_TP1: Initiation à Hadoop et Map-Reduce
BigData_TP1: Initiation à Hadoop et Map-ReduceBigData_TP1: Initiation à Hadoop et Map-Reduce
BigData_TP1: Initiation à Hadoop et Map-Reduce
 
diagramme de séquence UML
diagramme de séquence UMLdiagramme de séquence UML
diagramme de séquence UML
 
Architectures 3-tiers (Web)
Architectures 3-tiers (Web)Architectures 3-tiers (Web)
Architectures 3-tiers (Web)
 
Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...
Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...
Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...
 
eServices-Tp1: Web Services
eServices-Tp1: Web ServiceseServices-Tp1: Web Services
eServices-Tp1: Web Services
 
Manuel des TP : Atelier Web 2
Manuel des TP : Atelier Web 2Manuel des TP : Atelier Web 2
Manuel des TP : Atelier Web 2
 
TD2 - UML - Correction
TD2 - UML - CorrectionTD2 - UML - Correction
TD2 - UML - Correction
 
Intégration des données avec Talend ETL
Intégration des données avec Talend ETLIntégration des données avec Talend ETL
Intégration des données avec Talend ETL
 
Gestion comptes bancaires Spring boot
Gestion comptes bancaires Spring bootGestion comptes bancaires Spring boot
Gestion comptes bancaires Spring boot
 
diagramme des cas d'utilisation
diagramme des cas d'utilisationdiagramme des cas d'utilisation
diagramme des cas d'utilisation
 
BigData_Chp2: Hadoop & Map-Reduce
BigData_Chp2: Hadoop & Map-ReduceBigData_Chp2: Hadoop & Map-Reduce
BigData_Chp2: Hadoop & Map-Reduce
 
TD4-UML
TD4-UMLTD4-UML
TD4-UML
 
Support de cours Spring M.youssfi
Support de cours Spring  M.youssfiSupport de cours Spring  M.youssfi
Support de cours Spring M.youssfi
 
Rapport pfe Conceptionet Developpement d'une Application web et Mobile
Rapport pfe Conceptionet Developpement d'une Application web et  Mobile Rapport pfe Conceptionet Developpement d'une Application web et  Mobile
Rapport pfe Conceptionet Developpement d'une Application web et Mobile
 
Architectures n-tiers
Architectures n-tiersArchitectures n-tiers
Architectures n-tiers
 
BigData_TP4 : Cassandra
BigData_TP4 : CassandraBigData_TP4 : Cassandra
BigData_TP4 : Cassandra
 
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
 
Architecture réparties et les services web
Architecture réparties et les services webArchitecture réparties et les services web
Architecture réparties et les services web
 
Rapport j2ee: Gestion d’un compte bancaire En utilisant les EJB 3.0
Rapport j2ee: Gestion d’un compte bancaire En utilisant les EJB 3.0Rapport j2ee: Gestion d’un compte bancaire En utilisant les EJB 3.0
Rapport j2ee: Gestion d’un compte bancaire En utilisant les EJB 3.0
 

En vedette

P2 éléments graphiques android
P2 éléments graphiques androidP2 éléments graphiques android
P2 éléments graphiques androidLilia Sfaxi
 
P3 listes et elements graphiques avancés
P3 listes et elements graphiques avancésP3 listes et elements graphiques avancés
P3 listes et elements graphiques avancésLilia Sfaxi
 
P6 composants avancés
P6 composants avancésP6 composants avancés
P6 composants avancésLilia Sfaxi
 
P1 introduction à android
P1 introduction à androidP1 introduction à android
P1 introduction à androidLilia Sfaxi
 
Android-Tp5 : web services
Android-Tp5 : web servicesAndroid-Tp5 : web services
Android-Tp5 : web servicesLilia Sfaxi
 

En vedette (7)

P5 stockage
P5 stockageP5 stockage
P5 stockage
 
P2 éléments graphiques android
P2 éléments graphiques androidP2 éléments graphiques android
P2 éléments graphiques android
 
P3 listes et elements graphiques avancés
P3 listes et elements graphiques avancésP3 listes et elements graphiques avancés
P3 listes et elements graphiques avancés
 
P6 composants avancés
P6 composants avancésP6 composants avancés
P6 composants avancés
 
P1 introduction à android
P1 introduction à androidP1 introduction à android
P1 introduction à android
 
P4 intents
P4 intentsP4 intents
P4 intents
 
Android-Tp5 : web services
Android-Tp5 : web servicesAndroid-Tp5 : web services
Android-Tp5 : web services
 

Similaire à Android-Tp1: éléments graphiques de base et intents

Formation iPhone ENSI by (Orange Tunisie)
Formation iPhone ENSI by (Orange Tunisie)Formation iPhone ENSI by (Orange Tunisie)
Formation iPhone ENSI by (Orange Tunisie)Farouk Mezghich
 
Les vues (views) sous android
Les vues (views) sous androidLes vues (views) sous android
Les vues (views) sous androidHoussem Lahiani
 
Composants Android
Composants AndroidComposants Android
Composants AndroidLilia Sfaxi
 
Android - Tp1 - installation et démarrage
Android - Tp1 -   installation et démarrageAndroid - Tp1 -   installation et démarrage
Android - Tp1 - installation et démarrageLilia Sfaxi
 
Cycle de vie d'activité Android et les composant d'Android
Cycle de vie d'activité Android et les composant d'AndroidCycle de vie d'activité Android et les composant d'Android
Cycle de vie d'activité Android et les composant d'AndroidHoussem Lahiani
 
Cycle de vie d'activité Android et les composant d'Android
Cycle de vie d'activité Android et les composant d'AndroidCycle de vie d'activité Android et les composant d'Android
Cycle de vie d'activité Android et les composant d'AndroidHoussem Lahiani
 
Mise en place de l'ActionBarCompat dans vos projets Android.
Mise en place de l'ActionBarCompat dans vos projets Android.Mise en place de l'ActionBarCompat dans vos projets Android.
Mise en place de l'ActionBarCompat dans vos projets Android.Mathias Seguy
 
06 visual basic .net - exercice sur les collections
06 visual basic .net - exercice sur les collections06 visual basic .net - exercice sur les collections
06 visual basic .net - exercice sur les collectionsHamza SAID
 
Les intents sous Android
Les intents sous Android Les intents sous Android
Les intents sous Android Houssem Lahiani
 
Traitement d'image sous Matlab
Traitement d'image sous Matlab  Traitement d'image sous Matlab
Traitement d'image sous Matlab Hajer Dahech
 
TP1 Atelier C++/ GL2 INSAT / Tunisie
TP1 Atelier C++/ GL2 INSAT / TunisieTP1 Atelier C++/ GL2 INSAT / Tunisie
TP1 Atelier C++/ GL2 INSAT / TunisieMariem ZAOUALI
 
Création d’applications et découverte d’Android
Création d’applications et découverte d’AndroidCréation d’applications et découverte d’Android
Création d’applications et découverte d’AndroidENSAM Casablanca
 

Similaire à Android-Tp1: éléments graphiques de base et intents (20)

Les Widgets
Les WidgetsLes Widgets
Les Widgets
 
TP_1.pdf
TP_1.pdfTP_1.pdf
TP_1.pdf
 
Formation iPhone ENSI by (Orange Tunisie)
Formation iPhone ENSI by (Orange Tunisie)Formation iPhone ENSI by (Orange Tunisie)
Formation iPhone ENSI by (Orange Tunisie)
 
5.ateliers avancés
5.ateliers avancés5.ateliers avancés
5.ateliers avancés
 
Chapitre 5 android
Chapitre 5 androidChapitre 5 android
Chapitre 5 android
 
Les vues (views) sous android
Les vues (views) sous androidLes vues (views) sous android
Les vues (views) sous android
 
Composants Android
Composants AndroidComposants Android
Composants Android
 
Android - Tp1 - installation et démarrage
Android - Tp1 -   installation et démarrageAndroid - Tp1 -   installation et démarrage
Android - Tp1 - installation et démarrage
 
Opencourrier
OpencourrierOpencourrier
Opencourrier
 
Cycle de vie d'activité Android et les composant d'Android
Cycle de vie d'activité Android et les composant d'AndroidCycle de vie d'activité Android et les composant d'Android
Cycle de vie d'activité Android et les composant d'Android
 
Cycle de vie d'activité Android et les composant d'Android
Cycle de vie d'activité Android et les composant d'AndroidCycle de vie d'activité Android et les composant d'Android
Cycle de vie d'activité Android et les composant d'Android
 
Poo
PooPoo
Poo
 
Mise en place de l'ActionBarCompat dans vos projets Android.
Mise en place de l'ActionBarCompat dans vos projets Android.Mise en place de l'ActionBarCompat dans vos projets Android.
Mise en place de l'ActionBarCompat dans vos projets Android.
 
06 visual basic .net - exercice sur les collections
06 visual basic .net - exercice sur les collections06 visual basic .net - exercice sur les collections
06 visual basic .net - exercice sur les collections
 
Les intents sous Android
Les intents sous Android Les intents sous Android
Les intents sous Android
 
My droid
My droidMy droid
My droid
 
Swing
SwingSwing
Swing
 
Traitement d'image sous Matlab
Traitement d'image sous Matlab  Traitement d'image sous Matlab
Traitement d'image sous Matlab
 
TP1 Atelier C++/ GL2 INSAT / Tunisie
TP1 Atelier C++/ GL2 INSAT / TunisieTP1 Atelier C++/ GL2 INSAT / Tunisie
TP1 Atelier C++/ GL2 INSAT / Tunisie
 
Création d’applications et découverte d’Android
Création d’applications et découverte d’AndroidCréation d’applications et découverte d’Android
Création d’applications et découverte d’Android
 

Plus de Lilia Sfaxi

chp1-Intro à l'urbanisation des SI.pdf
chp1-Intro à l'urbanisation des SI.pdfchp1-Intro à l'urbanisation des SI.pdf
chp1-Intro à l'urbanisation des SI.pdfLilia Sfaxi
 
Plan d'études_INSAT_2022_2023.pdf
Plan d'études_INSAT_2022_2023.pdfPlan d'études_INSAT_2022_2023.pdf
Plan d'études_INSAT_2022_2023.pdfLilia Sfaxi
 
Lab1-DB-Cassandra
Lab1-DB-CassandraLab1-DB-Cassandra
Lab1-DB-CassandraLilia Sfaxi
 
TP1-UML-Correction
TP1-UML-CorrectionTP1-UML-Correction
TP1-UML-CorrectionLilia Sfaxi
 
TP0-UML-Correction
TP0-UML-CorrectionTP0-UML-Correction
TP0-UML-CorrectionLilia Sfaxi
 
TD4-UML-Correction
TD4-UML-CorrectionTD4-UML-Correction
TD4-UML-CorrectionLilia Sfaxi
 
TD3-UML-Séquences
TD3-UML-SéquencesTD3-UML-Séquences
TD3-UML-SéquencesLilia Sfaxi
 
TD3-UML-Correction
TD3-UML-CorrectionTD3-UML-Correction
TD3-UML-CorrectionLilia Sfaxi
 
Android - Tp2 - Elements graphiques
Android - Tp2 - Elements graphiques Android - Tp2 - Elements graphiques
Android - Tp2 - Elements graphiques Lilia Sfaxi
 
Android - Tp3 - intents
Android - Tp3 -  intentsAndroid - Tp3 -  intents
Android - Tp3 - intentsLilia Sfaxi
 
Android - TPBonus - web services
Android - TPBonus - web servicesAndroid - TPBonus - web services
Android - TPBonus - web servicesLilia Sfaxi
 
Android - Tp4 - graphiques avancés
Android - Tp4 - graphiques avancésAndroid - Tp4 - graphiques avancés
Android - Tp4 - graphiques avancésLilia Sfaxi
 
Android - Tp 5 - stockage de données
Android - Tp 5 -  stockage de donnéesAndroid - Tp 5 -  stockage de données
Android - Tp 5 - stockage de donnéesLilia Sfaxi
 

Plus de Lilia Sfaxi (20)

chp1-Intro à l'urbanisation des SI.pdf
chp1-Intro à l'urbanisation des SI.pdfchp1-Intro à l'urbanisation des SI.pdf
chp1-Intro à l'urbanisation des SI.pdf
 
Plan d'études_INSAT_2022_2023.pdf
Plan d'études_INSAT_2022_2023.pdfPlan d'études_INSAT_2022_2023.pdf
Plan d'études_INSAT_2022_2023.pdf
 
Lab3-DB_Neo4j
Lab3-DB_Neo4jLab3-DB_Neo4j
Lab3-DB_Neo4j
 
Lab2-DB-Mongodb
Lab2-DB-MongodbLab2-DB-Mongodb
Lab2-DB-Mongodb
 
Lab1-DB-Cassandra
Lab1-DB-CassandraLab1-DB-Cassandra
Lab1-DB-Cassandra
 
TP1-UML-Correction
TP1-UML-CorrectionTP1-UML-Correction
TP1-UML-Correction
 
TP0-UML-Correction
TP0-UML-CorrectionTP0-UML-Correction
TP0-UML-Correction
 
TD4-UML-Correction
TD4-UML-CorrectionTD4-UML-Correction
TD4-UML-Correction
 
TD3-UML-Séquences
TD3-UML-SéquencesTD3-UML-Séquences
TD3-UML-Séquences
 
TD3-UML-Correction
TD3-UML-CorrectionTD3-UML-Correction
TD3-UML-Correction
 
TD1 - UML - DCU
TD1 - UML - DCUTD1 - UML - DCU
TD1 - UML - DCU
 
Android - Tp2 - Elements graphiques
Android - Tp2 - Elements graphiques Android - Tp2 - Elements graphiques
Android - Tp2 - Elements graphiques
 
Android - Tp3 - intents
Android - Tp3 -  intentsAndroid - Tp3 -  intents
Android - Tp3 - intents
 
Android - TPBonus - web services
Android - TPBonus - web servicesAndroid - TPBonus - web services
Android - TPBonus - web services
 
Android - Tp4 - graphiques avancés
Android - Tp4 - graphiques avancésAndroid - Tp4 - graphiques avancés
Android - Tp4 - graphiques avancés
 
Android - Tp 5 - stockage de données
Android - Tp 5 -  stockage de donnéesAndroid - Tp 5 -  stockage de données
Android - Tp 5 - stockage de données
 
Lab3-Android
Lab3-AndroidLab3-Android
Lab3-Android
 
Lab 5-Android
Lab 5-AndroidLab 5-Android
Lab 5-Android
 
Lab4 - android
Lab4 - androidLab4 - android
Lab4 - android
 
Lab2-android
Lab2-androidLab2-android
Lab2-android
 

Android-Tp1: éléments graphiques de base et intents

  • 1. Institut National des Sciences Appliquées et de Technologie Tunisie Développement Android 2015-2016 TP1- ÉLEMENTS GRAPHIQUES ET INTENTS Dr. Lilia SFAXI Objectifs du TP : Création et manipulation d’éléments graphiques de base dans Android, et familiarisation avec la notion d’intent, implicite et explicite.
  • 2. TP1 : Éléments Graphiques Page 2 I. View et ViewGroup I.1 Le Composant View La classe View représente la classe de base pour la création d’une interface graphique en Android. C’est la classe mère de tous les widgets (éléments graphiques), utilisés pour créer des composants graphiques interactifs (boutons, champs texte, champs de saisie…). Une vue occupe un espace rectangulaire sur l’écran, responsable de la gestion des évènements initiés par l’utilisateur. Une sous-classe ViewGroup est définie par Android, représentant la classe de base pour tous les layouts (dispositions), qui sont des conteneurs invisibles qui rassemblent plusieurs View ou ViewGroup, et définissent leur emplacement dans l’écran (détaillés dans la section I.2 Les Layouts ). I.2 Les Layouts Chaque élément d’une interface graphique est soit un objet View, soit ViewGroup. Les dispositions de ces éléments dans l’écran sont précisées principalement par des Layouts. Un Layout est un ViewGroup qui regroupe un ensemble de widgets ou d’autres layouts, permettant ainsi de définir leur disposition sur l’écran de la fenêtre principale. Parmi les layouts existants, on cite le FrameLayout, LinearLayout, RelativeLayout… II. Exercice 1 : Composants Graphiques de Base II.1 Objectif Durée estimée de l’exercice : au plus 1h L’objectif de cette première partie est de réaliser une application simple de conversion de monnaie, ayant une interface semblable à ce qui suit (veiller à respecter les tailles et emplacements des éléments graphiques):
  • 3. TP1 : Éléments Graphiques Page 3 Activité 1. Commencer par créer l’interface graphique, identique à la figure qui précède. Lancer l’émulateur, et vérifier que le rendu correspond à ce qui est demandé. Dans ce qui suit, nous allons montrer les étapes à suivre pour définir le comportement de cette interface. II.2 Comportement du bouton Soit le bouton défini dans le fichier main.xml, dont l’identifiant est b_convert. Pour manipuler ce bouton, trois méthodes principales sont en général utilisées: II.2.1 Méthode 1 : Surcharge du Listener du bouton En Java, un Listener (écouteur) est un objet permettant au programmeur de réagir suite aux actions de l’utilisateur (clic de souris, touche du clavier, etc.). Dans notre cas, nous avons besoin d’un écouteur pour le clic sur le bouton, appelé onClickListener. Listener est une interface, qui fournit des méthodes qui doivent être implémentées par le programmeur. Par exemple, le onClickListener contient une méthode onClick, qu’on doit implémenter pour définir le comportement de notre bouton. 1. Créer un attribut dans votre activité de type Button : private Button bConvert;
  • 4. TP1 : Éléments Graphiques Page 4 2. Dans la méthode onCreate(), initialiser l’attribut bAfficher en lui associant le bouton créé dans le main.xml : this.bConvert = (Button) this.findViewById(R.id.b_convert) ; 3. Utiliser le code suivant pour définir le comportement du bouton bConvert (de préférence à l’intérieur de la méthode onCreate). this.bConvert.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //comportement de votre bouton } }); II.2.2 Méthode 2 : Définition d’une méthode propre au bouton Il existe une manière moins encombrante de définir le comportement du bouton, mais qui ne peut pas s’appliquer à tous les évènements, seulement au clic. • Dans l’élément XML du bouton, ajouter l’attribut : android:onClick="convert" Cet attribut indique qu’il existe une méthode dans le code de l’activité, appelée convert, qui définit le comportement du bouton au clic. • Dans le code de l’activité, ajouter la méthode suivante : public void convert(View v){ // comportement du bouton } La méthode convert ainsi définie a une signature particulière : elle doit obligatoirement être publique, retourner void et prendre comme paramètre un objet de type android.view.View (vous remarquerez que cette méthode a la même signature que la méthode onClick, surchargée dans la première méthode). Il faut noter également que la vue v passée en paramètre, correspond à l’objet cliqué.
  • 5. TP1 : Éléments Graphiques Page 5 Remarque : Si vous utilisez cette solution, il est inutile de définir une variable de type Button en Java, et de l’associer au bouton défini dans le fichier XML. II.2.3 Méthode 3 : Implémentation de l’interface OnClickListener Il est possible d’utiliser l’héritage pour surcharger la méthode onClick, sans passer par l’appel à la méthode setOnClickListener. Il suffit de suivre les étapes suivantes : 1. Votre activity doit implémenter l’interface OnClickListener. Ceci est réalisé en transformant la signature de votre classe activité comme suit, par exemple : public class MoneyConverter extends Activity implements OnClickListener {…} 2. Créer l’attribut bConvert de type Button et l’associer à l’élément XML b_convert, comme dans la méthode 1. 3. Définir l’activité courante comme étant l’écouteur du clic sur le bouton bConvert : bConvert.setOnClickListener(this); 4. Ajouter la méthode onClick dans votre activité, comme suit : public void onClick(View v) { if (v.getId()==R.id.b_convert){ //Comportement du bouton b_convert } } Attention, cette méthode sera commune à tous les éléments cliquables, il faut donc distinguer le comportement selon l‘identifiant de l‘élément cliqué. Cette méthode peut s’avérer utile dans le cas où on voudrait par exemple regrouper les implémentations de tous les boutons de l’interface dans la même méthode, ou si plusieurs boutons partagaient une partie de leur comportement. II.3 Comportement d’un EditText Un EditText est un objet graphique qui permet à l’utilisateur de saisir une chaîne de caractères, utilisable par l’application.
  • 6. TP1 : Éléments Graphiques Page 6 De même que pour le bouton (ainsi que tous les éléments graphiques que nous désirons utiliser dans notre application), nous devons définir et initialiser un objet Java associé au champs EditText : 1. Créer un attribut dans votre activité de type EditText: private EditText eEntry; 2. Dans la méthode onCreate(), initialiser l’attribut eEntree en lui associant le champs de saisie créé dans le main.xml : this.eEntry = (EditText) this.findViewById(R.id.e_entry) ; 3. Définir son comportement. Pour un champs de saisie, les principales fonctionnalités sont : • La lecture du contenu : pour cela on utilise la méthode : String s = eEntry.getText().toString(); • La modification du contenu : eEntry.setText("Nouveau texte"); II.4 Comportement d’un TextView Un TextView est un objet graphique qui permet d’afficher une chaîne de caractères non-éditable par l’utilisateur. Le TextView peut être utilisé par l’application exactement de la même manière qu’un EditText. II.5 Comportement d’un Bouton Radio Un bouton radio est un bouton à deux états qui peut être soit coché (checked) ou décoché (unchecked). Les boutons radios sont en général utilisés dans un groupe RadioGroup. Au sein d’un même groupe, un seul bouton radio peut être coché. Pour gérer l’état d’un bouton radio, il faut suivre les étapes suivantes : 1. Créer un attribut de type RadioButton dans votre activité (par exemple rDinarEuro). 2. L’associer au bouton radio approprié de votre interface en utilisant la méthode findViewById. 3. Pour tester l’état de votre bouton radio, appeler la méthode isChecked(). Par exemple : if (rDinarEuro.isChecked() ){
  • 7. TP1 : Éléments Graphiques Page 7 //traitement } 4. Pour mettre à jour l’état du bouton radio, utiliser la méthode setChecked(boolean etat). Par exemple, si on veut cocher l’élément radio1 et décocher radio2, on peut faire comme suit : radio1.setChecked(true); radio2.setChecked(false); Remarques : 1. Pour utiliser les boutons radios, il est inutile de définir des variables en Java pour le RadioGroup. 2. Dans l’exemple précédent (4), si radio1 et radio2 se trouvent dans un RadioGroup, il est inutile de changer leurs deux états : le changement de l’état de l’un va automatiquement changer l’autre, puisqu’un seul peut être coché à la fois. Activité 2. Définir maintenant le comportement des différents composants de votre interface en utilisant la méthode de votre choix. Actuellement (2 février 2016), 1 € = 2.2216 TND (hélas !) III. Exercice 2 : Intents III.1 Objectif Durée estimée de l’exercice : au plus 1h L’objectif de cette deuxième partie est de modifier l’application de la première partie pour obtenir le résultat suivant :
  • 8. TP1 : Éléments Graphiques Page 8 III.2 Intents : Définition Une application Android peut contenir plusieurs activités. Une activité utilise la méthode setContentView pour s’associer avec une interface graphique. À la base, les activités sont indépendantes les unes des autres, cependant, elles peuvent collaborer pour échanger des données et des actions. Typiquement, l’une des activités est désignée comme étant la première à être présentée à l’utilisateur quand l’application est lancée : on l’appelle l’activité de démarrage. Toutes les activités interagissent en mode asynchrone. Le passage d’une activité à une autre est réalisé en demandant à l’activité en cours d’exécuter un Intent.
  • 9. TP1 : Éléments Graphiques Page 9 Un intent est un message qui peut être utilisé pour demander une action à partir d’un composant de l’application. Il permet invoquer des Activités, des Broadcast Receivers ou des Services. Les différentes méthodes utilisées pour appeler ces composantes sont les suivantes : • startActivity(intent) : lance une activité • sendBroadcast(intent) : envoie un intent à tous les composants Broadcast Receivers intéressés • startService(intent) ou bindService(intent, …) : communiquent avec un service en arrière plan. Un intent comporte des informations que le système Android utilise • Nom du composant à démarrer • Action à réaliser : ACTION-VIEW, ACTION_SEND… • Donnée : URI référençant la donnée sur laquelle l’action va agir • Catégorie : Information supplémentaire sur le type de composants qui va gérer l’intent, par exemple : CATEGORY-BROWSABLE, CATEGORY-LAUNCHER… • Extras : Paires clef-valeur qui comportent des informations additionnelles pour réaliser l’action demandée • Drapeaux (Flags) : Définissent la classe qui fonctionne comme métadonnée pour cet intent, ils peuvent indiquer comment lancer une activité et comment la traiter une fois lancée. Il existe principalement deux types d’Intents : Intents explicites et intents implicites. III.3 Intents Explicites Les intents explicites spécifient le composant à démarrer par nom (nom complet de la classe). Ils permettent de démarrer un composant de votre propre application, car le nom de sa classe est connu. Par exemple: démarrer une autre activité en réponse à l’action d’un utilisateur. Les principaux arguments d’un Intent explicite sont :
  • 10. TP1 : Éléments Graphiques Page 10 • Le contexte déclenchant l’Intent (en général this, si on le lance à partir de l’activité de départ, ou bien <Activity_class_name>.this) • La classe destination (en général <Activity_class_name>.class) Il est typiquement appelé comme suit: Intent myActivityIntent = new Intent (StartClass.this, EndClass.class) ; startActivity (myActivityIntent) ; Les données partagées entre les deux activités peuvent être envoyées sous forme d’Extras. Un extra est un élément sous forme de clef/valeur, que l’activité principale envoie à l’activité destination. Il est créé comme suit : myActivityIntent.putExtra("clef","valeur"); Attention, tous les extras doivent être associés à l’intent avant de déclencher ce dernier dans le startActivity, bien sûr. Il est également possible de démarrer une activité avec un résultat, en établissant un lien bidirectionnel entre deux activités. Pour recevoir un résultat à partir d’une autre activité, appeler startActivityForResult au lieu de StartActivity. L’activité de destination doit bien sûr être conçue pour renvoyer un résultat une fois l’opération réalisée, et ce sous forme d’Intent. L’activité principale le recevra et le traitera dans la méthode prédéfinie onActivityResult. Voici un exemple d’un intent avec résultat :
  • 11. TP1 : Éléments Graphiques Page 11 Activité 1 : Activité 2 : Le résultat obtenu par cet bout de code est le suivant :
  • 12. TP1 : Éléments Graphiques Page 12 Activité 3. Commencer par créer l’interface graphique de la deuxième activité. Implémenter ensuite le code du bouton back, qui permet de revenir à l’activité principale en affichant le résultat trouvé dans un toast. III.4 Intents Implicites Les intents implicites ne nomment pas un composant spécifique, mais déclarent une action à réaliser. Ils permettent à un composant d’une application d’appeler un autre composant, même s’il se trouve dans une autre application. Exemple : montrer à l’utilisateur un emplacement sur une Map. Les principaux arguments d’un Intent implicite sont : • Action : l’action à réaliser, peut être prédéfinie (ACTION_VIEW, ACTION_EDIT, ACTION_MAIN…) ou créée par l’utilisateur. • Donnée : Les données principales sur lesquelles on va agir, tel que le numéro de téléphone à appeler. Il est typiquement appelé comme suit: Intent myActivityIntent = new Intent (<action>, <donnee>) ; startActivity (myActivityIntent) ; Un intent implicite se comporte comme suit: 1. Activité A crée un Intent avec une action et le passe en paramètre à startActivity 2. Le système Android cherchent toutes les applications pour trouver un Intent Filter qui correspond à cet Intent 3. Quand une correspondance est trouvée, le système démarrent l’activité (Activity B) en invoquant sa méthode onCreate et en lui passant l’intent
  • 13. TP1 : Éléments Graphiques Page 13 Les intents implicites utilisent la notion de Intent Filter pour trouver l’activité destination à déclencher. Un Intent Filter est une expression dans le fichier Manifest d’une application qui spécifie le type d’intents que le composant veut recevoir. Il permet aux autres activités de lancer directement votre activité en utilisant un certain Intent. Si vous ne déclarez pas d’Intent Filters à votre activité, elle ne pourra être déclenchée que par un Intent Explicite. Il est néanmoins recommandé de ne pas déclarer d’Intent Filters pour les services, car cela peut causer des problèmes de sécurité. Voici un exemple d’Intent Filter : Voici un exemple d’actions communément utilisées : Attention, la plupart des actions nécessitent des permissions à ajouter dans le fichier manifest, par exemple, pour autoriser votre activité à déclencher un appel, il faut ajouter la ligne : <uses-permission android:name="android.permission.CALL_PHONE"></uses-permission> Action' Donnée' Description' ACTION_DIAL' tel:123( Affiche( le( numéroteur( téléphonique( avec( le( numéro( (123)(rempli( ACTION_VIEW' http://www.google.com( Affiche(la(page(Google(dans(un(navigateur.( ACTION_EDIT' content://contacts/people/2( Edite( les( informations( sur( la( personne( dont( l’identifiant(est(2((de(votre(carnet(d’adresse)( ACTION_VIEW' content://contacts/people/2( Utilisé( pour( démarrer( une( activité( qui( affiche( les( données(du(contact(numéro(2( ACTION_VIEW' content://contacts/people( Affiche( la( liste( des( contacts,( que( l’utilisateur( peut( parcourir.( La( sélection( d’un( contact( permet( de( visualiser(ses(détails(dans(un(nouvel(Intent.( (
  • 14. TP1 : Éléments Graphiques Page 14 Exemple d’un Intent implicite qui permet d’envoyer un message texte : La méthode resolveActivity permet d’éviter que l’application crashe si l’activité appelée n’existe pas. C’est une sorte de gestion d’exception. Le résultat obtenu sera alors comme suit : Activité 4. Implémenter ensuite le code du bouton call, qui permet de déclencher automatiquement un appel sur un numéro prédéfini.
  • 15. TP1 : Éléments Graphiques Page 15 IV. Homework Votre premier travail consistera en la découverte du Material Design, le célèbre langage visuel défini par Google. Commencer par consulter sa documentation officielle : https://www.google.com/design/spec/material-design/introduction.html Lire attentivement les différentes recommandations et bonnes pratiques dictées par Google pour la conception d’interfaces graphiques. Appliquer ensuite ce patron sur l’application que nous venons de créer, en l’agrémentant des options et fonctionnalités de votre choix. Veillez à choisir des couleurs qui reflètent votre personnalité (et par pitié, évitez la combinaison rose/bleu standard…)