Vous êtes sur la page 1sur 24

10/10/2023

Institut Supérieur des Etudes Technologiques de Béja

DÉVELOPPEMENT MOBILE
Enseignante: Mme. Haïfa Chorfi

CHAPITRE 2 : CONCEPTS DE BASE


Niveau : DSI3

32 Mme. HAIFA CHORFI

32

Introduction
 Une application Android est un assemblage de composants liés grâce à un
fichier de configuration.
 Quels sont ces composants?
 Comment le fichier de configuration de l’application les décrit?
 Comment tous les composants interagissent entre eux?

33 Mme. HAIFA CHORFI

33

Mme Haifa Chorfi 1


10/10/2023

Fichier de configuration
 Dans chaque application Android, se trouve un fichier XML : le
fichier de configuration de l’application « Manifest ».
 C’est un fichier indispensable à chaque application qui décrit
entre autres :
 Le point d’entrée de votre application (quel code doit être
exécuté au démarrage de l’application)
 Quels composants constituent ce programme
 Les permissions nécessaires à l’exécution du programme
(accès à Internet, accès à l’appareil photo...).

34 Mme. HAIFA CHORFI

34

35 Mme. HAIFA CHORFI

35

Mme Haifa Chorfi 2


10/10/2023

Manifest de l'application
 Chaque application Android
nécessite un fichier de
configuration :
Manifest.xml.
 Ce fichier est placé dans le
répertoire de base du projet,
à sa racine.
 Il décrit le contexte de
l’application, les composants
de l’application et les
permissions.

36 Mme. HAIFA CHORFI

36

Structure du fichier manifest


Les permissions (la connexion
réseau, la localisation de
l’appareil, les droits d’écriture sur
la carte mémoire...) qui seront
déclarées ici seront un prérequis
pour l’application.
Un manifeste contient un seul et unique noeud
application qui en revanche contient des noeuds
concernant la définition d’activités, de services…

Déclare une activité présentée à


l’utilisateur.

Point d’entrée de l’application

37 Mme. HAIFA CHORFI

37

Mme Haifa Chorfi 3


10/10/2023

Composants d’une application

Composants applicatifs Eléments d’interaction

Activités Objets Intent

Services Récepteurs d’intentions

Fournisseurs de contenus Notifications

Gadgets / Widgets

38 Mme. HAIFA CHORFI

38

Composants applicatifs - Activité


 L’activité (Activity) représente le bloc de base d’une
application. Elle correspond à la partie présentation de
l’application et fonctionne par le biais de vues qui affichent des
interfaces graphiques et répondent aux actions utilisateur.
 Exemple :
 Une activité pour afficher une image avec un titre
 Une activité pour choisir un contact
 Une activité pour écrire un message

39 Mme. HAIFA CHORFI

39

Mme Haifa Chorfi 4


10/10/2023

Composants applicatifs - Service


 Le service est un composant qui fonctionne en tâche de fond,
de manière invisible. Il ne possède pas d’interface. Ses
principales utilisations sont la mise à jour de sources de données
ainsi que d’activités visibles et le déclenchement de
notifications.
 Exemple :
 Lecture de musique
 Collecte de données affichables dans une activité
 Suivi GPS
 Vérification de mise à jour

40 Mme. HAIFA CHORFI

40

Composants applicatifs - fournisseur de contenu

 Le fournisseur de contenu (Content Provider) permet de


gérer et de partager des informations. Un même fournisseur
permet d’accéder à des données au sein d’une application et
entre applications.

41 Mme. HAIFA CHORFI

41

Mme Haifa Chorfi 5


10/10/2023

Composants applicatifs - Gadget


 Le gadget (Widget) est un composant graphique qui s’installe
sur le bureau Android.
 Exemple :
 Le calendrier qui affiche de l’information
 Le lecteur audio qui permet de contrôler la lecture de fichiers

42 Mme. HAIFA CHORFI

42

Composants d’interaction

 Ces éléments permettent l’interaction entre les


différents composants du système, entre les applications
installées sur l’appareil ou avec l’utilisateur.

43 Mme. HAIFA CHORFI

43

Mme Haifa Chorfi 6


10/10/2023

Composants d’interaction - Intention

 L’objet Intent (intentions): Une intention est un message


système qu’on peut qualifier d’évènement.
 Il est émis par le terminal pour prévenir les applications de la
survenue d’évènements (cas des évènements systèmes :
Insertion d’une carte SD, Réception d’un SMS) ou par tout
autre application (cas des évènements applicatifs : Le logiciel X
démarre, L’utilisateur arrive à Paris).

44 Mme. HAIFA CHORFI

44

Composants d’interaction - Récepteur d’Intents

 Récepteur d’Intents : il permet à une application d’être à


l’écoute des autres afin de répondre aux objets Intent qui lui
sont destinés et qui sont envoyés par d’autres composants
applicatifs.

45 Mme. HAIFA CHORFI

45

Mme Haifa Chorfi 7


10/10/2023

Composants d’interaction - Notification

 Notification : permet de notifier l'utilisateur de la survenue


d'événements.

46 Mme. HAIFA CHORFI

46

Ressources
 Les ressources telles que
les images, les dispositions
de l’interface graphique,
etc. nécessaires à
l’application.

47 Mme. HAIFA CHORFI

47

Mme Haifa Chorfi 8


10/10/2023

Ressources
 Les ressources sont des fichiers externes qui sont utilisés par le
code et liés à votre application au moment de sa construction.
 Le répertoire res contient toutes les ressources :
 drawable (images)
 layout (description en XML des interfaces)
 values (définitions en XML de constantes : chaînes, tableaux,
valeurs numériques …)
 anim (description en XML d’animations)
 menus (description en XML de menus pour l’application)
 xml (fichiers XML utilisés directement par l’application)
 raw (tous les autres types de ressources : sons, vidéos, …)
48 Mme. HAIFA CHORFI

48

Ressources

 Toutes ces ressources sont placées, converties ou non, dans un


fichier de type APK qui constituera le programme distribuable
de votre application.
 De plus, Android crée une classe nommée R qui sera utilisée
pour se référer aux ressources dans le code.

49 Mme. HAIFA CHORFI

49

Mme Haifa Chorfi 9


10/10/2023

Ressources - Utilisation des ressources

 Les ressources que vous créez ou qu’Android propose peuvent


être utilisées directement dans votre application ou être
référencées dans d’autres ressources.

 Les ressources sont accessibles et utilisées depuis le code grâce à


la classe statique R. Cette classe est automatiquement générée en
fonction des ressources présentes dans votre projet au moment
de la compilation et de la construction de l’application.

50 Mme. HAIFA CHORFI

50

Ressources - Utilisation des ressources


 Exemple de classe R générée automatiquement
package com.eyrolles.android.exemples;
public final class R {
public static final class string {
public static final int bienvenue=0x7f040000;
public static final int texte_bouton_quitter=0x7f040001;};
public static final class layout {
public static final int ecran_de_demarrage=0x7f030001; };
public static final class drawable {
public static final int image_android=0x7f020000;};
};
51 Mme. HAIFA CHORFI

51

Mme Haifa Chorfi 10


10/10/2023

Ressources - Utilisation des ressources


 Pour utiliser une ressource, il suffit donc de connaître son type
et son identifiant. La syntaxe est alors la suivante :
R.type_de_ressource.nom_ressource
 Exemple :
R.string.email
R.color.bleu_transparent
R.drawable.image_accueil
R.dimen.taille_text
setContentView(R.layout.ecran_de_demarrage);
// Fixe la mise en page d’une activité

52 Mme. HAIFA CHORFI

52

Ressources - Utilisation des ressources


 Si vous voulez manipuler des instances :
1. Il faut les extraire de la table grâce aux méthodes de la
classe Ressources : Resources res = getResources();
2. Ensuite, on peut utiliser les méthodes qui, avec un
identifiant donné, renvoient une instance du type
demandé avec la valeur extraite de la table, telles que
o boolean getBoolean(int)
o int getInteger(int)
o int[] getArray(int)
o String[] getStringArray(int)
o int getColor(int)
o float getDimention(int)
53 Mme.oHAIFA
Drawable
CHORFI getDrawable(int)

53

Mme Haifa Chorfi 11


10/10/2023

Ressources - Utilisation des ressources


 Exemple:
Resources res = getResources();

//Récupération du message à partir du fichier de ressources


strings.xml
String message = res.getString(R.string.bienvenue);

//Remplissage du tableau à partir du fichier arrays.xml


String T[] =res.getStringArray(R.array.couleurs);

54 Mme. HAIFA CHORFI

54

Ressources - Création des ressources


Valeurs Simples

 Il est possible de déclarer des chaînes de caractères, des


dimensions, des couleurs, des tableaux (de chaînes de caractères
ou d’entiers) comme valeurs simples.
 Par convention on sépare les ressources en regroupant les
mêmes types dans un fichier au nom explicite.
 Exemple :
 res/values/strings.xml pour regrouper toutes les chaînes
de caractères.
 res/values/array.xml pour définir des tableaux.

55 Mme. HAIFA CHORFI

55

Mme Haifa Chorfi 12


10/10/2023

Ressources - Création des ressources


Valeurs Simples
1. Chaînes de caractères et texte formaté
 Les chaînes de caractères avec un format optionnel peuvent être utilisées
comme ressources.
 Leur syntaxe est la suivante :
<string name=nom_chaine>valeur_de_la_chaine</string>.
 Exemple :
<resources>
<string name="app_name">TP1</string>
<string name="menu_principal">Menu Principal</string>
</resources>

56 Mme. HAIFA CHORFI

56

Ressources - Création des ressources


Valeurs Simples
1. Chaînes de caractères et texte formaté
 Utilisation des chaînes de caractères :
• Java : R.string.le_nom
• XML : @[package:]string/un_nom

 Possibilité d’utiliser les balises HTML <b>, <i> et <u>


<string name= "ex1"> Un texte <b>mis en gras</b></string>

 Cas particulier des guillemets ou apostrophes


<string name= "ex2"> Voici l\’application de ce conseil</string>

57 Mme. HAIFA CHORFI

57

Mme Haifa Chorfi 13


10/10/2023

Ressources - Création des ressources


Valeurs Simples
2. Tableaux
 Il faut utiliser la balise array.
 Exemple :
<array name="tableau_entiers">
<item>1765</item>
<item>3</item>
</array>
 La balise array n’exige pas que les éléments soient de même type : le
tableau peut être hétérogène.

58 Mme. HAIFA CHORFI

58

Ressources - Création des ressources


Valeurs Simples
2. Tableaux
 Un tableau de chaine de caractères est une ressource simple qui est
référencée en utilisant la valeur fournie dans l’attribut name (et pas le nom
du fichier XML).
 Exemple :
<resources>
<string-array name="planets_array">
<item>Mercury</item>
<item>Venus</item>
<item>Mars</item>
</string-array>
</resources>
59 Mme. HAIFA CHORFI

59

Mme Haifa Chorfi 14


10/10/2023

Ressources - Création des ressources


Valeurs Simples
3. Couleurs
 Une couleur définit une valeur RVB (rouge, vert et bleu) et une
transparence. Cette couleur peut être utilisée à de multiples endroits
comme pour définir la couleur d’un texte. Il existe différents formats dont
la syntaxe globale est la suivante :
<color name=nom_couleur>valeur_de_la_couleur</color>
 Les différents formats d’une couleur sont les suivants :
• #RGB (Rouge-Vert-Bleu/valeur hexadécimale sur 1 caractère [0,16])
• #ARGB (Alpha (transparence)-Rouge-Vert-Bleu)
• #RRGGBB (Rouge-Vert-Bleu/valeur hexadécimale sur 2 caractères [0,255])
• #AARRGGBB

60 Mme. HAIFA CHORFI

60

Ressources - Création des ressources


Valeurs Simples
3. Couleurs
 Exemple :
<resources>
<color name="bleu_transparent">#50ff00FF</color>
</resources>

 Utilisation des couleurs (exemple avec la déclaration de la couleur


bleu_transparent) :
• Java : R.color.bleu_transparent
• XML : @[package:]color/bleu_transparent

61 Mme. HAIFA CHORFI

61

Mme Haifa Chorfi 15


10/10/2023

Ressources - Création des ressources


Valeurs Simples
4. Unité de mesure
 Les dimensions sont la plupart du temps référencées dans les styles et
les mises en page.
 Une dimension est spécifiée par un nombre suivi d’une unité de
mesure.
 Les unités prises en charge par Android: px (pixels), in (pouces), mm
(millimètres), pt (point), dp (independant-density pixel), sp (scale
independant pixel)
 Exemple:
<resources>
<dimen name="largeur_bouton">100px</dimen>
<dimen name="taille_texte">5sp</dimen>
</resources>
62 Mme. HAIFA CHORFI

62

Ressources - Création des ressources


Images
 Android prend en charge les fichiers bitmap sous différents
formats avec une préférence bien affirmée dans la
documentation pour le format PNG. Il est cependant possible
d’utiliser le format JPEG ou le format GIF (qui est déconseillé
par la documentation).
 Utilisation des images de type bitmap :
• Java : R.drawable.fichier_bitmap
• XML : @[package:]drawable/fichier_bitmap

63 Mme. HAIFA CHORFI

63

Mme Haifa Chorfi 16


10/10/2023

Ressources - Création des ressources


Autres ressources
 Les menus : les menus de l’application peuvent être définis comme
ressources XML.
 La mise en page (layouts ou encore gabarits) : les mises en pages définies
dans les fichiers de ressources XML permettent de découper la couche
présentation en évitant de construire la mise en page d’une interface
graphique dans le code.
Exemple :
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width=“match_parent"
android:layout_height=“match_parent" >
……
</LinearLayout>

64 Mme. HAIFA CHORFI

64

 Remarque :
Il est possible de définir différents types de ressources dans un même fichier
 Exemple :
<?xml version="1.0" encoding="utf-8"?> _
<resources> _
<string name="nom_application">Suivi des SMS</string>
<color name="couleur_des_boutons">#FFAABBCC</color>
<array name="tableau_entiers">
<item>1765</item>
<item>3</item>
</array>
<dimen name="taille_texte">5sp</dimen>
</resources>
65 Mme. HAIFA CHORFI

65

Mme Haifa Chorfi 17


10/10/2023

Exercice
L’interface suivante contient un widget de sélection
permettant d’afficher une liste de pays.

1. Quel est le type de ressource qui permet


de stocker les noms des pays ?
2. Quel est le nom du fichier de ressources?
3. Ajouter les noms de pays à ce fichier.
4. En se basant sur la classe R, récupérer la
liste de pays dans une structure de
données.

66 Mme. HAIFA CHORFI

66

Exercice
L’interface suivante contient un widget de sélection
permettant d’afficher une liste de pays.
5. On suppose que chaque pays est présenté
par une image (exemple: australie.png).
a. Dans quel répertoire sont stockées ces
images?
b. Modifier le fichier de ressources
correspondant pour pourvoir référencer ces
ressources images.

67 Mme. HAIFA CHORFI

67

Mme Haifa Chorfi 18


10/10/2023

Solutions
1. Ressource de type « Valeurs simples ».
2. Arrays.xml
3. Ajout de la balise array « liste_pays »

68 Mme. HAIFA CHORFI

68

Solutions
4. TabPays = getResources().getArray(R.array.liste_pays);
5. Le répertoire Drawable contient 5 fichiers images
(angleterre.png, australie.png, etc.).
a. Répertoire Drawable.
b. Les ressources images sont référencées dans le fichier
arrays.xml.

69 Mme. HAIFA CHORFI

69

Mme Haifa Chorfi 19


10/10/2023

Activité

 Une activité peut être assimilée à un écran qu’une application


propose à son utilisateur.
 Pour chaque écran de votre application, vous devrez donc créer
une activité.
 La transition entre deux écrans correspond au lancement d’une
activité ou au retour sur une activité placée en arrière-plan.
.

70 Mme. HAIFA CHORFI

70

Activité

 Une activité est composée de deux volets :


 la logique de l’activité et la gestion du cycle de vie de
l’activité qui sont implémentés en Java dans une classe
héritant de AppCompatActivity
 l’interface graphique, qui pourra être définie soit dans le
code de l’activité soit de façon plus générale dans un fichier
XML placé dans les ressources de l’application.

71 Mme. HAIFA CHORFI

71

Mme Haifa Chorfi 20


10/10/2023

Activité

 Syntaxe minimal pour créer une première activité :


import android.app.Activity;
import android.os.Bundle;
public class ActiviteSimple extends AppCompatActivity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}

72 Mme. HAIFA CHORFI

72

Cycle de vie d’une activité

 Les applications Android ont un fonctionnement particulier :


elles réagissent à des changements d’états imposés par le
système (démarrage, pause, reprise, arrêt...).
 Les états principaux d’une activité sont les suivants :
 Active (running) : Quand l’activité est au premier plan et
reçoit les actions utilisateur.
 Suspendue (Paused) : Quand elle est toujours visible mais n’a
pas le focus (autre activité transparente par-dessus ou activité
ne prenant pas tout l’écran).
 Arrêtée (Stopped) : Quand elle n’est plus visible.

73 Mme. HAIFA CHORFI

73

Mme Haifa Chorfi 21


10/10/2023

Cycle de vie d’une application

74 Mme. HAIFA CHORFI

74

Cycle de vie d’une activité

 onCreate() : Appelée lorsque l’activité est créée. Permet de restaurer


l’état de l’interface utilisateur grâce au paramètre savedInstanceState.
 onDestroy() : Appelée lorsque que l’activité a fini son cycle de vie. C’est
ici qu’on place le code de libération de mémoire, fermeture de fichiers et
autres opérations de "nettoyage".
 onStart() : Appelée lorsque l’activité démarre. Permet d’initialiser les
contrôles.
 onStop() : Appelée lorsque l’activité passe en arrière plan. Libérez les
écouteurs, arrêtez les threads, votre activité peut disparaître de la
mémoire.
 onRestart() : Appelée lorsque l’activité sort de son état de veille.

75 Mme. HAIFA CHORFI

75

Mme Haifa Chorfi 22


10/10/2023

Cycle de vie d’une activité

 onPause() : Appelée lorsque que l’activité est suspendue. Stoppez les


actions qui consomment des ressources. L’activité va passer en arrière-
plan.
 onResume() : Appelée après le démarrage ou une pause. Relancez les
opérations arrêtées (threads). Mettez à jour l’application et vérifiez vos
écouteurs.
 onSaveInstanceState() : Appelée lorsque l’activité termine son cycle
visible. Sauvez les données importantes.
 onRestoreInstanceState() : Appelée après onCreate. Les données sont
rechargées et l’interface utilisateur est *restaurée dans le bon état.

76 Mme. HAIFA CHORFI

76

Cycle de vie d’une application

77 Mme. HAIFA CHORFI

77

Mme Haifa Chorfi 23


10/10/2023

Cycle de vie d’une activité

 Le cycle de vie d’une activité fait appel aux méthodes relatives à chaque
étape de sa vie.
 Il informe ainsi le développeur sur la suite des événements et le travail
qu’il doit accomplir.

78 Mme. HAIFA CHORFI

78

Mme Haifa Chorfi 24

Vous aimerez peut-être aussi