LICENCE 3 INFORMATIQUE
bassoler12@[Link] BASSOLE Romaric
+226 75 43 42 83 Doctorant à l’Université Norbert ZONGO
OBJECTIF DU COURS
• PRÉSENTER LES SYSTÈMES D’EXPLOITATION
MOBILES
• PRÉSENTER LES PLATEFORMES DE
DÉVELOPPEMENT MOBILES
• DÉVELOPPER ET DÉPLOYER DES APPLICATIONS
NATIVE ANDROID
REFERENCE
• L’art du développement Android par Mark L. Murphy
• Professional NFC application development for android by Vedat Coskun
• Hébuterne, S. (2018). Android Guide de développement d’applications Java pour
Smartphones et Tablettes. 4ème édition
• Nazim, B. (2017). Android 7, Les fondamentaux du développement d’applications
Java. Éditions ENI
• Frédéric, F. (2013). Créez des applications pour Android. Édition OpenClassRooms
GÉNÉRALITÉ
De nos jours, et après l’innovation de l’internet, les
nouveaux terminaux mobiles ( téléphones
intelligents, tablettes,..Etc) ont occupé une place
importante dans notre vie quotidien. Cet afflux
technologique change radicalement notre rapport à
l’informatique en affranchissant de l’utilisation d’un
micro-ordinateur Classique.
TERMINAUX MOBILES (1/2)
•Les assistants personnelles : Un assistant personnel ou un
PDA (Personal Digital Assistant) est un périphérique portable qui est
utiliser pour la gestion des informations personnelles
•Les téléphones intelligents : Un smartphone (téléphone
intelligent) est un téléphone mobile offrant des capacités très avancées
par rapport à un téléphone mobile simple
TERMINAUX MOBILES (2/2)
• Les tablettes: Une tablette est un intermédiaire entre l’ordinateur
portable et le téléphone intelligent. Il se présente sous la forme d’une
interface à écran tactile et qui possède généralement une application
logicielle utilisée pour exécuter un clavier virtuel.
• Les montres intelligents: Une montre intelligente ( smartwatch
), aussi appelée « montre connectée » est une montre bracelet
électronique qui intègre des fonctions allant au-delà du simple
affichage de l’heure et du chronométrage
APPLICATIONS MOBILES(1/8)
Définition:
« Une application mobile est un logiciel applicatif conçu
pour s’exécuter à partir du système d’exploitation d’un
dispositif mobile tel qu’un smartphone, une tablette ou
PDA. Les applications mobiles servent souvent à offrir
aux utilisateurs des fonctionnalités similaires à ceux du
PC » HÉBUTERNE, S. (2017)
APPLICATIONS MOBILES(2/8)
Une application mobile peut être soit installée directement sur l’appareil
dès sa construction en usine soit téléchargée depuis un magasin
d’applications dit « application store » telles que Google Play, l’App
Store ou encore le Windows Phone Store. Une partie des applications
disponibles sont gratuites tandis que d’autres sont payantes. Il existe
plusieurs systèmes d’exploitation mobile dont les plus répendu sont :
APPLICATIONS MOBILES(3/8)
❑iOS (Apple) utilisé sur iPhone et iPad.
❑Android (Google) qui anime un grand nombre de smartphones tels
que Samsung, HTC, LG, Motorola. . .
❑Blackberry OS.
❑Windows Phone (Microsoft)
❑Symbian (Nokia)
APPLICATIONS MOBILES(4/8)
La conception d’applications mobiles peut se faire
suivant trois stratégies de développement distinctes.
❑Application native
❑Application web
❑Application hybride
APPLICATIONS MOBILES(5/8)
❑Application native
Il s’agit d’application conçue pour une grande partie de
systèmes d’exploitation fiables par les smartphones en se
référant à un langage particulier à chacun d’eux. Ce mode
d’application est accessible seulement sur les plateformes
d’applications (appstore IOS, playstore pour android…)
APPLICATIONS MOBILES(6/8)
❑Application web
Contrairement à une application native, une application web est
une application mobile développée avec les outils de
développement web actuel : HTML5, CSS3 et JavaScript. C’est
une application qui une fois développée est accessible et
exécutable sur tous les smartphones via leur navigateur web.
APPLICATIONS MOBILES(7/8)
❑Application hybride
Une application hybride est une application qui
combine les deux types d’applications précédentes.
Elle sert essentiellement de faire une passerelle entre
le langage web et le natif
APPLICATIONS MOBILES(8/8)
LES SYSTÈMES
D’EXPLOITATION MOBILE
Un système d’exploitation mobile (SEm) joue le rôle
d’une passerelle entre les composants matériels d’un
terminal mobile et les composants logiciels qui
représentent les applications mobile.
Il est considéré comme une plateforme sur laquelle,
une application mobile va s’exécuter
LES SYSTÈMES EMBARQUÉS(1/8)
Définition:
Il est difficile de donner une définition précise pour le concept d’un
système embarqué, mais on peut citer quelques définitions qui vont
nous éclairer ce concept :
❑Un Système Embarqué : est une combinaison de matériels et
logiciels permettant de remplir une ou plusieurs fonctions
spécifiques avec des contraintes plus ou moins sévères tel que la
consommation, la température, la taille, les performances... etc
PATRICE, K. (2010)
LES SYSTÈMES EMBARQUÉS(2/8)
Définition:
❑Un Système Embarqué :est susceptible d’être utilisé dans un
environnement matériel de faibles performances (si l’on compare au
PC de bureau d’aujourd’hui). Si l’ajout de quelques Mo de mémoire
sur un PC de bureau n’a pas une grosse influence sur le budget
d’un utilisateur, le gain de quelques Mo sur un produit de grande
consommation (téléphone, équipement auto mobile) a une énorme
influence sur le coût final PIERRE, F. (2005)
LES SYSTÈMES EMBARQUÉS(3/8)
Caractéristiques d’un système embarqué
▪ FAIBLE COÛT
▪ FAIBLE CONSOMMATION
▪ FAIBLE ENCOMBREMENT ET FAIBLE POIDS
▪ FONCTIONNEMENT EN TEMPS RÉEL
▪ ENVIRONNEMENT: Un système embarqué doit être adapté à un ensemble de contraintes
environnementales
✓ La température.
✓ L’humidité.
✓ Les vibrations.
✓ Les chocs
LES SYSTÈMES EMBARQUÉS(3/8)
Architecture d’un système embarqué
L’architecture d’un système embarqué est similaire à l’architecture
d’un ordinateur simple. Elle est composée de trois couches
principales : La couche application et la couche du système
d’exploitation qui constituent la partie Software et la matériel qui
forme la partie hardware. La différence entre les deux architectures
réside dans les composants de chaque couche et particulièrement
dans la couche matériel
LES SYSTÈMES EMBARQUÉS(4/8)
Architecture d’un système embarqué
LES SYSTÈMES EMBARQUÉS(5/8)
Architecture d’un système embarqué
Cette dernière contient un ensemble des éléments
physiques qui cohabitent entre eux sur une faible
surface dans le but de traitement de données .
On peut classifier les composants matériels d’un
système embarqué comme suivant:
LES SYSTÈMES EMBARQUÉS(6/8)
Architecture d’un système embarqué
Équipements permanents : qui représentent l’unité centrale qui est
formée de
▪ CPU : microprocesseur(s) ou des microcontrôleurs.
▪ RAM : mémoire centrale.
Équipements supplémentaires : ces équipements ne sont pas
exhaustives et elles dépendent toujours de l’application dédiée.
▪ Mémoire de masse : le disque dur, la mémoire flash, l’utilisation de
ROM, le disque à distant,. . . ,etc.
LES SYSTÈMES EMBARQUÉS(7/8)
Architecture d’un système embarqué
▪ Entrées : les capteurs/convertisseurs, le clavier, télécommandes
(infrarouge, Bluetooth, radio...),. . . ,etc.
▪ Sorties : les écrans et afficheurs LCD, le système d’alarme ou
synthèse vocale. L’imprimante en tous genres comme papier,
étiquettes, photos,. . . ,etc.
▪ IHM (Interface Homme Machine) : c’est un dispositif qui sert à
communiquer entre l’humain et la machine (exemple : les
dispositifs «TouchScreen»)
LES SYSTÈMES EMBARQUÉS(8/8)
L’application du système embarqué
Les systèmes embarqués sont introduites dans divers domaines, à savoir
• Le transport : Automobile, Aéronautique (avionique), etc.
• L’astronautique : fusée, satellite artificiel, sonde spatiale, etc.
• Militaire : missile
• Télécommunication : Set-top box, téléphonie, routeur, pare-feu, serveur de temps, téléphone portable, etc.
• Électroménager : télévision, four à micro-ondes.
• L’impression : imprimante multifonctions, photocopieur, etc.
• L’informatique : disque dur, lecteur de disquette, etc.
• Le multimédia : console de jeux vidéo, assistant personnel
• Guichet automatique bancaire (GAB)
• Équipement médical
SYSTÈME D’EXPLOITATION MOBILE(1/5)
Définition
▪Un système d’exploitation mobile est un ensemble
de programmes responsable de la gestion des
opérations, du contrôle, de la coordination, de
l’utilisation du matériel et du partage des
ressources d’un dispositif entre divers programmes
tournant sur ce dispositif.
SYSTÈME D’EXPLOITATION MOBILE(2/5)
Définition
▪Un système d’exploitation mobile est une
plateforme logicielle sur laquelle les autres
programmes appelés « programmes d’applications
» peuvent s’exécuter sur des appareils mobiles tels
que les PDA (personnal digital assistant), les
téléphones cellulaires, smartphones,. . . ,etc.
SYSTÈME D’EXPLOITATION MOBILE(3/5)
Caractéristiques d’un système d’exploitation mobile
Un système d’exploitation mobile regroupe un ensemble des
fonctionnalités, dont :
• La gestion de la mémoire.
• La gestion des microprocesseurs et l’ordonnancement.
• La gestion de système de fichiers
• La gestion des I/O.
• La gestion de sécurité.
• La gestion de fonctionnalités multimédia.
SYSTÈME D’EXPLOITATION MOBILE(4/5)
Les systèmes d’exploitations mobile dans le marché
A l’échelle mondiale, le marché des SE mobile se réduit à quatre
grands acteurs : iOS (iPhone), Android (Google), KaiOS ( Mozilla)
et Windows (Microsoft). La figure présente le pourcentage de
l’utilisation de ces quatre SE mobile durant l’année 2022
SYSTÈME D’EXPLOITATION MOBILE(5/5)
ANDROID(1/16)
Définition
Android est un système d’exploitation mobile basé essentiellement
sur le noyau Linux et conçu par l’entreprise américaine Google. En
premier lieu, il était utilisé seulement par les smartphones et
tablettes tactiles, puis s’est diversifié dans les objets connectés et
ordinateurs comme les télévisions (Android TV), les voitures
(Android Auto) et les montres intelligentes,...,etc
ANDROID(2/16)
Les avantages d’Android
☺ Open source : Dans l’univers Android, chacun peut à tout moment
télécharger les sources et les modifier selon son goûts en utilisant des
bibliothèques open source puissantes, telles que par exemple OpenGL
pour la gestion d’images 2D et 3D et SQLite pour les bases de
données,...,etc.
☺ Gratuit : Android est gratuit ou presque pour les différents types de
consommateurs. Pour poster des applications sur le Play Store, il
coûtera presque 25 dollars (équivalent à 15000Fcfa). Il faut noter aussi
que 70 % du prix de gain pour chaque application revient au
développeur et 30 % a Google.
ANDROID(3/16)
Les avantages d’Android
☺ Facile à développer : Le développement sous l’univers d’Android est
très simple grâce aux différentes API mises à disposition qui facilitent
et accélèrent grandement le travail. Le point fort de ces APIs c’est
qu’ils sont très complètes et très faciles d’accès.
☺Facile à vendre : Une application dédiée au plateforme Play Store a
plus d’opportunités d’être téléchargée et diffusée grâce au nombre
croissant de visiteurs qui utilisent et profitent de cette plateforme
ANDROID(4/16)
Les avantages d’Android
☺Flexible : Le système est extrêmement portable, il
s’adapte à beaucoup de structures différentes. Android
est construit de manière à faciliter le développement et
la distribution en fonction des composants en présence
dans le terminal (si une application nécessite d’utiliser
le Bluetooth, seuls les terminaux équipés de Bluetooth
pourront la voir sur le Play Store).
ANDROID(5/16)
Architecture d’Android
Comme illustré dans la figure ci-dessous , l’architecture du système
Android s’appuie essentiellement sur quatre principaux niveaux qui sont
les suivants :
• Le noyau Linux
• Les librairies ( bibliothèques) et l’environnement d’exécution
• Le module de développement d’applications
• Les différentes applications
ANDROID(7/16)
Le noyau (Kernel)
Le système d’exploitation Android se base sur un noyau
Linux (Kernel), régulièrement mis à jour selon les
versions du système : si les anciennes versions
utilisaient la version 2.6.x du noyau Linux, les actuelles
dernières versions (Android 12L) sont basées sur la
version 5.11.8 de Linux. Le noyau est l’élément du
système d’exploitation qui représente la passerelle entre
la partie matérielle et la partie logicielle
ANDROID(8/16)
Le noyau (Kernel)
Cette première couche prend en charge la gestion des couches basses
(gestion des processus, de la mémoire, de la couche matérielle) ainsi que
les droits utilisateurs ( comme montré dans la figure ci-dessus, la couche
Kernel est la seule couche qui gère le matériel). Il faut noter que la
version du noyau utilisée avec Android est une version développée
spécialement pour l’environnement mobile, avec une gestion avancée de
la batterie et une gestion particulière de la mémoire.
ANDROID(9/16)
Les bibliothèques (librairies)
Les bibliothèques utilisées dans Android sont open sources ( écrites en
C et/ou C++ ). Elles offrent des services de qualité tels que la
bibliothèque d’affichage en 2D (SGL) et de 3D (OpenGL), la
bibliothèque de base de données (SQLite), la lecture et
l’enregistrement audio et vidéo (Media Framework), un moteur de
navigation Web (WebKit),...,etc
ANDROID(10/16)
L’environnement d’exécution ( Android
Runtime)
l’environnement d’exécution d’Android, qui est basé sur une
technologie Java et sur le concept de machine virtuelle, se trouve dans
le même niveau que l’ensemble des bibliothèques. Vue que les
contraintes matériels des dispositifs mobiles (peu de mémoire et la
vitesse du processeur), il était difficile d’utiliser une machine virtuelle
Java standard. Google a pris la décision de créer une nouvelle machine
virtuelle Dalvik, afin de mieux répondre à ces limitations.
ANDROID(11/16)
L’environnement d’exécution ( Android Runtime)
Les applications Java, développées pour Android, doivent être
compilées au format Dalvik exécutable (.dex) avec l’outil (dx). Cet
outil compile les (.java) en (.class) et ensuite il convertit ces (.class) en
(.dex).
ANDROID(12/16)
Le module de développement d’applications (
Application framework)
Les fonctionnalités fournis par les bibliothèques d’Android sont
ensuite utilisées par cette couche sous forme de bibliothèques Java.
Celles-ci offrent des composants réutilisables spécifiques à des
domaines particuliers qui permettent aux développeurs de créer des
applications riches. À ce niveau on distingue deux types de service
ANDROID(13/16)
Les services cœurs de la plateforme (Core Plateform Services) : Un service est
une application, qui s’exécute en arrière-plan et qui n’a aucune interaction avec
l’utilisateur ( voir le chapitre 03). Les services cœurs de la plateforme (Core
Plateform Services) apportent des services importants au fonctionnement de la
plateforme :
▪ Activity Manager : il prend en charge de la gestion du cycle de vie des
applications ainsi que le maintien de la pile de navigation qui permet d’aller d’une
application à une autre.
▪ Package Manager : il est utilisé, par l’Activity Manager, pour charger les
informations provenant des fichiers (.apk) (Android package file).
▪ Window Manager : il s’occupe de la gestion des fenêtres des applications (quelle
fenêtre doit être affchée devant une autre à l’écran).
ANDROID(14/16)
▪ Resource Manager : Il s’intéresse pour la gestion de tous ce qui n’est
pas du code, toutes les ressources (images, fichier audio, etc.).
▪ Content Provider : Il gère le partage de données entre applications.
▪ View System : Il fournit tous les composants graphiques : listes,
grilles, boutons,etc...
ANDROID(15/16)
Les services matériels (Hardware Services) : ce type de service fournit
un accès vers les API matérielles :
▪ Telephony Service : il permet d’accéder aux interfaces téléphoniques
(GSM, 3G, etc.).
▪ Location Service : il permet d’accéder au GPS.
▪ Bluetooth Service : il permet d’accéder à l’interface Bluetooth.
▪ Wi-Fi Service : il permet d’accéder à l’interface Wifi.
▪ USB Service : il permet d’accéder aux interfaces USB.
▪ Sensor Service : il permet d’accéder aux capteurs (capteur de luminosité,
de proximité,d’accélération,etc.)
ANDROID(16/16)
Les applications ( Applications and Widgets)
Il s’agit d’un ensemble d’applications que l’on peut trouver sur
Android. Ces applications peuvent être, soit téléchargées à partir du
magasin d’application officiel, soit installées par défaut telles que
l’application d’accueil (aussi appelée Launcher), le navigateur web, les
applications de SMS et téléphonie, etc.
L’ENVIRONNEMENT DE DÉVELOPPEMENT
SOUS ANDROID
Méthodes de développement
Afin de développer des applications sous Android, un ensemble
d’outils est nécessaire. Généralement il y a deux manières pour
développer une application Android :
➢Méthode classique : en utilisant un IDE (Eclipse) + JDK + SDK
➢Méthode moderne : en utilisant Android Studio
L’ENVIRONNEMENT DE DÉVELOPPEMENT
SOUS ANDROID
JDK (Java Developpment Kit)
Les applications développées sous Android sont essentiellement
écrites en langage Java qui est un langage de programmation orienté
objet et qui se caractérise par la portabilité ( signifie qu’une
application écrite en Java, s’exécutant sur Windows (par exemple),
pourra facilement tourner sur Mac ou GNU/Linux ).Cette particularité
( portabilité) vient du fait que l’exécution d’une n’importe quelle
application écrite en Java a besoin d’une machine virtuelle appelée
JVM. Pour avoir une JVM sur un ordinateur, il faut télécharger le JRE
qui contient, en plus de la JVM, des bibliothèques Java standards.
L’ENVIRONNEMENT DE DÉVELOPPEMENT
SOUS ANDROID
JDK (Java Developpment Kit)
La JVM ne lit pas directement le code Java. Elle lit un code compilé
(le byte code). Pour passer du code Java, que le développeur écrit, au
code compilé, lu par la JVM, des outils spéciaux sont nécessaires. Ces
outils sont inclus dans le JDK. De plus, le JDK contient le JRE (et
donc la machine virtuelle), ce qui est bien pratique. Pour résumer, on
dira que :
▪ Pour un simple utilisateur de Java : il doit avoir le JRE.
▪ Pour un développeur : il aura besoin des outils du JDK.
L’ENVIRONNEMENT DE DÉVELOPPEMENT
SOUS ANDROID
SDK (Software Development Kit) Android
Un SDK (un kit de développement logiciel), est un ensemble d’outils
que met à disposition un éditeur afin de permettre de développer des
applications pour un environnement précis. Le SDK Android permet,
donc, de développer des applications pour Android et uniquement pour
Android.
Au premier lancement du SDK, un écran semblable à la figure ci-
dessous
L’ENVIRONNEMENT DE DÉVELOPPEMENT
SOUS ANDROID
Eclipse
Eclipse IDE est un environnement de développement intégré libre,
extensible, universel et polyvalent, permettant potentiellement de créer des
projets de développement mettant en œuvre n’importe quel langage de
programmation. Eclipse IDE est principalement écrit en Java (à l’aide de la
bibliothèque graphique SWT d’IBM).
De plus, Eclipse est conçu pour pouvoir être complété avec des plugins
(extension) tel que ADT (Android Development Tools), la fonction
principale de ce plugin est de créer un pont entre Eclipse et le SDK
Android.
L’ENVIRONNEMENT DE DÉVELOPPEMENT
SOUS ANDROID
Andriod studio
Jusqu’au début de Mai 2013, pour développer des applications
Android, Google mettait en avant l’utilisation d’Eclipse couplé avec le
Plugin ADT (Android Development Tools). Cette première solution a
tout de même permis à Google de posséder le Store d’application le
plus riche. Le 15 mai, Google a montré la première version d’Android
Studio
L’ENVIRONNEMENT DE DÉVELOPPEMENT
SOUS ANDROID
Andriod studio
Android studio n’a pas été développé de zéro mais il est basé sur l’IDE
de JetBrains, IntelliJ IDEA. Cette société propose de nombreux IDE
pour différents langages (PHP Storm, RubyMine, ...) mais qui sont
tous payant. Dans sa dernière version, Android Studio offre toutes les
possibilités nécessaires pour développer une application Android
complète
L’ENVIRONNEMENT DE DÉVELOPPEMENT
SOUS ANDROID
Andriod studio
Android Studio permet principalement d’éditer les fichiers Java/Kotlin
et les fichiers de configuration XML d’une application Android. Il
propose entre autres des outils pour gérer le développement
d’applications multilingues et permet de visualiser rapidement la mise
en page des écrans sur des écrans de résolutions variées
simultanément. Il intègre par ailleurs un émulateur permettant de faire
tourner un système Android virtuel sur un ordinateur
L’ENVIRONNEMENT DE DÉVELOPPEMENT
SOUS ANDROID
Structure d’un projet android studio
Les projets de développement sous Android ont changé d’architecture
depuis le passage à Android Studio. La structure générale d’un projet
Android se compose de deux répertoires principaux :
▪ App
▪ Gradle Scripts
Dans la suite de ce cours, on va détailler chaque répertoire.
L’ENVIRONNEMENT DE DÉVELOPPEMENT
SOUS ANDROID
Le répertoire App
Tout comme bon nombre de technologies actuelles, les sources d’une
application Android possèdent une structure bien définie qui doit être
respectée. Ces arborescences permettent non seulement de rendre les
projets plus lisibles et organisés, mais aussi de simplifier le
développement. Lors de la création d’un nouveau projet, il existe trois
principaux répertoires constituant l’arborescence globale d’un projet
Android :
L’ENVIRONNEMENT DE DÉVELOPPEMENT
SOUS ANDROID
L’ENVIRONNEMENT DE DÉVELOPPEMENT
SOUS ANDROID
Le répertoire App
✓[Link] : c’est le premier fichier qui va être lu dans le démarrage d’Android.
Manifest est un fichier XML décrivant l’application et ses composants, tels que les activités, les
services, etc. Ce fichier permet de spécifier différentes options pour un projet Android, comme le
matériel nécessaire pour les faire fonctionner, certains paramètres de sécurité ou encore des
informations plus ou moins triviales telles que le nom de l’application ainsi que son icône . C’est une
étape indispensable pour le fonctionnement de l’application. Le Manifest est, en quelque sorte, la
carte d’identité de l’application, et permet aussi d’autoriser l’exécution des activités et autres actions
de l’application.
✓Java : c’est un répertoire contenant tous ce qui concerne le code source de l’application, que ce soit
avec le langage java ou bien le langage Kotlin.
✓Res : c’est un répertoire contenant toutes les ressources telles que les images, les vues de l’interface
graphique, etc. Cette partie sera détaillée dans la partie : Ressources
L’ENVIRONNEMENT DE DÉVELOPPEMENT
SOUS ANDROID
Gradle Scripts
Un projet Android Studio est un projet java basé sur Gradle. Gradle est un
outil qui permet l’automatisation des opérations de construction d’une
application java comme eMake (projets C++ sur Unix), Ant (projets Java
dans Eclipse).
De même que make se sert d’un fichier Makefile, Gradle se sert d’un
fichier nommé [Link] pour construire le projet. Au moment de la
compilation du projet, l’application finale est générée au format APK, dans
le répertoire bin de l’arborescence. C’est ce fichier qu’il faut ensuite
déployer sur les équipements, afin de pouvoir faire tourner l’application
LES COMPOSANTS
FONDAMENTAUX DES
APPLICATIONS MOBILES
Les composants de l’application représentent les objets constitutifs d’une
application Android. Chaque composant est chargé d’une mission bien
défini dans l’application Android et sert un objectif distinct par rapport aux
autres composants. La description de chaque composant et l’interaction
entre eux est déterminée dans le fichier de manifestation de l’application
[Link] (voir le chapitre précédant).
Les composants élémentaires qu’une application Android peut utiliser sont
les suivants :
• Activité
• Service
• Récepteur de diffusion
• Fournisseur de contenu
ACTIVITÉ
La plupart des applications Android ont des architectures similaires.
Penons par exemple, l’architecture de l’application PlayStore qui est
composée de plusieurs fenêtres, une fenêtre pour la recherche des
applications stockées dans PlayStore, une autre fenêtre, qui s’est
ouvert une fois on clique sur le résultat d’une recherche pour la
description de l’application sélectionnée. Au bout du compte, on peut
dire qu’une application est un assemblage de fenêtres entre lesquelles
il est possible de naviguer.
ACTIVITÉ
Ces différentes fenêtres sont appelées activités. Pour pouvoir
différencier une activité par rapport à une autre, il faut juste comparer
leurs interface graphique : si elles ont des interfaces différents, c’est
qu’il s’agit d’activités différentes. Il faut noter qu’une application ne
peut jamais afficher plus qu’une activité à la fois.
NB: Il est très important de signaler que ce n’est pas
la tâche de l’activité de créer les objets graphiques,
elle n’est que l’outil qui sert à faire le lien entre
l’interface graphique et la logique
programmatique.
ACTIVITÉ
une activité comporte des informations sur l’état actuel de
l’application : ces informations s’appellent le context. Ce context
représente un lien avec le système Android ainsi que les autres
activités de l’application
ACTIVITÉ
État d’une activité
Dans les systèmes d’exploitations et plus particulièrement dans
l’univers Android, il peut qu’à chaque instant, une application est
remplacée par une autre application, qui a une priorité supérieure. Si
une application exige assez de ressources système, alors elle bloquera
le système de fonctionner correctement et Android sera obligé de
l’arrêter. Par exemple : si un utilisateur reçoit un appel, il devient plus
important qu’il puisse y répondre que de faire en sorte qu’il puisse
écouter la chanson que l’application diffuse.
ACTIVITÉ
État d’une activité
Comme illustrée dans la figure ci-dessous, quand une application se
lance, elle se positionne tout en haut de ce qu’on appelle la pile
d’activités.
ACTIVITÉ
État d’une activité
L’activité qui se trouve toujours au-dessus de la pile est celle que
l’utilisateur interagit avec. Lorsqu’une nouvelle activité qui a une
priorité supérieure arrive, elle se place directement au sommet de la
pille et c’est elle qui va s’afficher à la place de l’application courante,
qui n’est plus qu’à la deuxième place. L’ancienne activité ne
réapparaîtra qu’à partir du moment où toutes les activités qui se
trouvent au-dessus d’elle seront arrêtées et sorties de la pile
ACTIVITÉ
État d’une activité
Une activité peut se présenter dans trois états qui se distinguent surtout
par leur visibilité :
• Active :
• Suspendue (paused)
• Arrêtée (stopped)
ACTIVITÉ
Cycle de vie d’une activité
Par défaut, une activité n’a pas de contrôle direct sur son propre état, il
s’agit plutôt d’un cycle rythmé par les interactions avec le système et
d’autres applications. Le cycle de vie d’une activité est assez complexe et
sa compréhension est essentielle dans le développement Android.
Lors du démarrage d’une activité, la première méthode qui est lancée est
appelée onCreate. Elle représente l’endroit privilégié pour initialiser les
vues et pour démarrer les tâches d’arrière-plan qui s’exécuteront pendant
toute la durée de vie de l’activité. Cette méthode prend en paramètre un
Bundle (pile) qui contient l’état précédent de l’activité.
ACTIVITÉ
Cycle de vie d’une activité
Cet appel est suivi par la méthode onStart afin d’indiquer le démarrage
effectif de l’application (pendant cet appelle, l’activité est visible). Cette
méthode peut aussi être appelée par la méthode onRestart.
Puis la méthode onResume est appelée dans le but d’exécuter tous les
traitements nécessaires au fonctionnement de l’activité (thread, processus,
traitement), initialiser des variables et les listeners. Ces traitements devront
être coupées lors de l’appel à la méthode onPause et relancés si besoin lors
d’un futur appel à la méthode onResume.
ACTIVITÉ
Cycle de vie d’une activité
Après l’exécution de ces trois méthodes, l’activité devient exploitable et
peut être en interaction avec les utilisateurs. Si une autre activité passe au
premier plan, l’activité en cours d’exécution passera en pause. Il faut noter
que juste avant l’appel à la méthode onPause, la méthode
onSaveInstanceState doit être appelée dans le but de sauvegarder les
informations importantes portées par l’activité. Ces informations pourront
être utilisées aux prochains démarrages de l’activité lors de l’appel à la
méthode onRestoreInstanceState ou de l’appel à onCreate.
ACTIVITÉ
Cycle de vie d’une activité
La méthode onPause permet d’arrêter tous les traitements réalisés
(traitement non nécessaire si l’activité n’est pas visible) par l’activité
(traitement, thread, processus). Si l’activité devient visible à nouveau,
cela correspondra à un appel à la méthode onResume. Le passage de
l’activité à l’état “stopper” correspond à un appel à la méthode onStop.
Dans cette méthode, il faut arrêter tous les traitements restants. Une
fois stoppée, l’activité peut :
ACTIVITÉ
Cycle de vie d’une activité
❖Soit être relancée : cela s’effectue par un appel à la méthode
onRestart suivi du cycle de vie normal de l’activité.
❖Soit être tuée : cela s’effectue par un appel à la méthode onDestroy,
dans laquelle vous devez arrêter tous les traitements restants, fermer
toutes les connexions à la base de données, tous les threads, tous les
fichiers ouverts, etc
ACTIVITÉ
LES SERVICES
Un service est un composant qui s’exécute en arrière-plan pour réaliser
des traitements sur une longue période du temps. À l’opposé de
l’activité, un service ne possède pas d’interface graphique, il s’exécute
uniquement en arrière-plan avec l’entrée de l’utilisateur. Par exemple,
un service peut jouer de la musique en arrière-plan lorsque l’utilisateur
se trouve dans une autre application, ou il peut récupérer des données
sur le réseau sans bloquer l’interaction de l’utilisateur avec une activité
LES SERVICES
Les types des services
Il existe deux types de services :
▪ les services locaux (started ou unbound service) : sont les services les plus
courants, où l’activité qui lance le service et le service en lui-même appartiennent
à la même application.
▪ Les services distants (bound service) : Il s’agit d’un service qui est lancé par un
composant qui appartient à une autre application. Dans ce cas, il existe toujours
une interface qui permet la communication entre le processus qui a appelé le
service et le processus dans lequel s’exécute le service. Cette communication
permet d’envoyer des requêtes ou récupérer des résultats.
LES SERVICES
Cycle de vie d’un service
Pratiquement, on a deux cycles différents :
• Un cycle de vie pour un service locale où le service est lancé depuis
l’application.
• Un cycle de vie pour un service distant où le service est lancé depuis
un processus différent.
LES SERVICES
Cycle de vie d’un service
Les services locaux
Le lancement d’un service local est fait à travers une activité en
utilisant la méthode startService(). C’est la méthode onCreate() qui
permet de créer un service dans le cas où il n’existait pas. Une fois le
service est crée, la méthode onStartCommand() est appelée pour
permettre le lancement de ce service
LES SERVICES
Cycle de vie d’un service
Les services locaux
Juste comme le cas d’activité, Un service poursuivra son fonctionnement
jusqu’à son arrêt, soit à travers la décision de l’utilisateur, soit à travers
l’Android qui décide de l’arrêter pour libérer la mémoire RAM. Les
services sont plus susceptibles d’être stoppés qu’une activité qui se trouve
au premier plan, mais plus favorisés que les autres processus qui ne sont
pas visibles. La priorité a néanmoins tendance à diminuer avec le temps :
plus un service est démarré depuis une longue période du temps, plus il est
susceptible d’être arrêté.
LES SERVICES
Cycle de vie d’un service
Les services locaux
Similairement aux activités où la méthode OnDestroy() permettant de tuer
une application, on peut aussi tuer un service en utilisant soit :
• La méthode stopSelf() : dans le cas où l’arrêt est fait depuis un service.
• la méthode stopService(Intent service) : dans le cas où l’arrêt est fait
depuis une activité ( il faut utiliser un service qui doit décrire le service à
stopper)
LES SERVICES
Cycle de vie d’un service
Les services distants
Pour utiliser un service distant, il faut prendre en considération d’avoir
une connexion persistante avec le service. Pour réaliser cette
connexion, on appel la méthode bindService en utilisant un paramètre
de type ServiceConnection qui représente une interface pour le
contrôle de l’exécution du service.
LES SERVICES
Cycle de vie d’un service
Les services distants
La méthode onBind() reçoit un service de connexion à travers la
méthode onServiceConnected() qui contient en paramètre un Ibinder
qui représente un pont entre le service et l’activité, mais au niveau du
service.
Pour qu’un client puisse se libérer d’un service, il est possible utiliser
la méthode onUnbind()
FOURNISSEUR DE CONTENU
(CONTENT PROVIDER)
Un fournisseur de contenu gère les données d’application partagée, Il
encapsule les données et offre des mécanismes pour définir la sécurité des
données. Un fournisseur de contenu représente une liaison qui fait
connecter les données dans un processus avec du code réalisé dans un autre
processus. Pour accéder aux données d’un fournisseur de contenu, l’objet
ContentResolver qui est utilisé et qui permet de faire la communication en
tant que Client avec le fournisseurs. Les tâches essentielles réalisées d’un
fournisseur sont les suivants :
• La réception des demandes de données pour les Clients.
• La réalisation des actions demandées.
FOURNISSEUR DE CONTENU
(CONTENT PROVIDER)
FOURNISSEUR DE CONTENU
(CONTENT PROVIDER)
Les tâches essentielles réalisées d’un fournisseur sont les suivants :
▪ La réception des demandes de données pour les Clients.
▪ La réalisation des actions demandées.
▪ L’envoi des résultats.
Les clients accèdent aux données stockées dans un fournisseur de contenu à travers
un résolveur de contenu qui :
➢Présente une interface de type base des données (méthodes tels que query, insert,
update, delete,..ect).
➢Fournit des services additionnels tels que la notification et la mise à jour des
données.
FOURNISSEUR DE CONTENU
(CONTENT PROVIDER)
Un fournisseur de contenu est implémenté comme une sous-
classe de la classe ContentProvider et doit implémenter un
ensemble standard d’API permettant à d’autres applications
d’effectuer des transactions .
RÉCEPTEUR DE DIffUSION
(BROADCAST RECEIVERS)
Un récepteur de diffusion permet de notifier un certain nombre
d’événements au niveau de système Android ( par exemple : une
notification annonçant que l’écran a été tourné, que la batterie est
faible,...,etc) ou bien au niveau de l’application ( par exemple : le
pourcentage de téléchargement d’une application) . Les récepteurs de
diffusion jouent généralement le rôle d’une passerelles vers d’autres
composants de l’application, principalement des activités et des
services. Ils sont implémentés sous la forme d’une sous-classe de la
classe BroadcastReceiver et chaque message est un diffuseur comme
objet Intent.
CONSTRUCTION DE
L’INTERFACE UTILISATEUR
Android est le système le plus utilisé au monde et par
conséquent il s’est installé sur plusieurs supports ayant des
volumes différents. Le défi qui se pose à ce niveau est comment
faire pour adapter les applications sous le système Android à ces
différents supports.
LES RESSOURCES
Les ressources sont des fichiers qui contiennent des informations qui sont :
• Stockées en dehors du code Java.
• Statiques (le contenu d’une ressource restera inchangé entre le début de
l’exécution de
l’application et la fin de l’exécution).
Avec la variété des terminaux sous lesquelles s’installe Android, il faut
vraiment trouver une solution qui va permettre à une application Android
de tourner sur la plupart des terminaux Les ressources sont les moyens
efficaces qui permettent d’adapter facilement une application Android à
toutes ces situations différentes
LES RESSOURCES
Les ressources sont des fichiers structurés d’une sorte
qu’Android ait la possibilité de choisir une ressource, parmi
d’autres, qui va être utilisée pour s’adapter au matériel sur lequel
s’exécute l’application. L’objectif est de faciliter l’exécution des
applications pour toutes les situations différentes. Le seule
moyen qui permet aux ressources d’être adaptées aux différentes
types de terminaux est l’utilisation du langage de description
XML
LES RESSOURCES
Définition
Le principe d’un langage de programmation (Java, C++, etc.) est de donner
des instructions au terminal pour qu’il puisse réaliser des calculs, et par la
suite, mettre en forme le résultat de ces calculs dans une interface
graphique. Contrairement aux langages de programmation, un langage de
balisage (XML) ne s’intéresse pas pour le calcul, mais il met l’accent sur la
façon de mettre en forme l’information pour faciliter la lecture et la
maîtrise de cette information ( si on arrive à déterminer l’architecture d’un
fichier, il sera très facile de retrouver l’emplacement des informations
contenues dans ce fichier et de pouvoir les exploiter)
LES RESSOURCES
La syntaxe d’XML
Similairement au format HTML, un fichier XML commence par une déclaration
signifiant l’utilisation d’un langage XML. La première ligne dans la figure ci-
dessous permet d’indiquer que :
• On utilise la version 1.0 de XML.
• On utilise l’encodage des caractères qui s’appelle utf-8 qui est une façon de
décrire les caractères que contiendra le fichier.
la balise représente la composante la plus basique dans un format XML. Elle débute
par le signe < et se termine par >. On peut avoir deux types de balises :
• Une balise ouvrante : par exemple <bibliotheque>.
LES RESSOURCES
La syntaxe d’XML
• Une balise fermante : Il faut noter que chaque balise ouvrante doit
être fermée. Il existe deux façon pour fermer une balise ouvrante
- Soit par une balise fermante (exemple </bibliotheque>), auquel cas
on peut avoir du texte ou d’autres balises entre la balise ouvrante et la
balise fermante.
- Soit on ferme la balise directement dans son corps :<bibliotheque />.
La seule différence est qu’on ne peut pas mettre de contenu entre deux
balises puisqu’il n’y en a qu’une.
LES RESSOURCES
LES RESSOURCES
La syntaxe d’XML
Ce type d’informations, qu’il soit fermé par une balise fermante
ou qu’il n’en n’ait pas besoin, s’appelle un nœud. On remarque
dans la figure ci-dessus, que l’on a un nœud appelé bibliothèque,
deux nœuds appelés livre, etc.
LES RESSOURCES
Les types des ressources
Puisque le système Android est un système qui s’est installé sur
différents terminaux, il était obligé d’adapter l’affichage d’une
application ( elle doit être affichée de la même manière sur un écran 7
pouces comme un écran 10 pouces ), ou faire en sorte que les textes
conviennent aux choix de la langue de l’utilisateur. C’est pour cette
raison qu’il faut organiser les différentes ressources selon des
répertoires, de façon à ce que Android aurait le choix d’utiliser tel
élément pour tel types de terminaux
LES RESSOURCES
Les types des ressources
Les ressources sont classifiées dans une hiérarchie particulière
de répertoires selon leurs types. Pour qu’Android puisse
retrouver facilement ces ressources, il faut que chaque type de
ressource soit associé à un répertoire particulier. Ces différents
répertoires sont rassemblés dans un répertoire globale nommé
res. Ce répertoire est structuré de la manière suivante :
LES RESSOURCES
Les types des ressources
▪ Dessin et image (res/drawable) : contient les ressources de type image ( les
images de type PNG, JPEG et GIF) ainsi que des fichier XML décrivant des
dessins ( ce qui donne des images vectorielles qui ne se dégradent pas quand on
les agrandit).
▪ Interface graphique (res/layout) : contient des fichiers XML qui représentent la
disposition des interfaces graphique ( vues).
▪ Icônes de lancement (res/mipmap) : contient les ressources de différentes densités
pour les icônes de lancement.
▪ Différentes variables (res/values) : contient diverses ressources tels que des
variables
LES RESSOURCES
Les types des ressources
standards, comme des chaînes de caractères, des dimensions, des
couleurs, etc.
▪ Données brutes (res/raw) : contient des données diverses au format
brut. Ces données ne sont pas des fichiers de ressources standards, on
pourrait y mettre de la musique ou des fichiers HTML par exemple.
▪ Menu (res/menu) : contient des fichiers XML pour pouvoir constituer
des menus.
LES RESSOURCES
Organisation des ressources
Le répertoire res contient les emplacements des ressources par défaut,
c’est-à dire qu’il s’agit des emplacements qui visent le matériel le plus
commun ( prenant un exemple que le matériel le plus utilité est «
Condor », alors les sous répertoires par défaut du répertoire res doivent
contenir tous les fichiers qui correspondent à ce type de matériel. Pour
ajouter d’autres ressources destinées à d’autres appareils, il faut créer
d’autres sous répertoires et préciser qu’elles sont destinées à ces types
d’appareils.
LES RESSOURCES
Organisation des ressources
En d’autres termes, en partant du nom du répertoire par défaut, il
est possible de créer d’autres répertoires qui permettent de
déterminer à quels types de matériels les ressources contenues
dans ce répertoire sont destinées. Les restrictions sont
représentées par des quantificateurs qui permettent de préciser
le matériel pour lequel les fichiers dans ce répertoire sont
destinés.
LES RESSOURCES
Organisation des ressources
Ces quantificateurs sont séparés par un tiret. Si Android n’arrive
pas à trouver l’emplacement dont le nom corresponde
exactement aux spécifications techniques du terminal, il
cherchera parmi les autres répertoires ayant la solution la plus
proche. Les principaux quantificateurs avec leurs priorités sont
les suivants :
LES RESSOURCES
LES RESSOURCES
Organisation des ressources
▪ Langue et région (priorité 2) : Ce quantificateur représente la langue du système.
Il faut au début indiquer une langue, ensuite, il y aura le choix d’ajouter une
région en utilisant le symbole « -r », voici quelques exemples :
- En pour l’anglais ;
- Fr pour le français ;
- Fr-rFR pour le français mais uniquement celui utilisé en France ;
- Fr-rCA pour le français mais uniquement celui utilisé au Québec ;
- ect
LES RESSOURCES
Organisation des ressources
▪ Taille de l’écran (priorité 3) : Il s’agit de la taille de la diagonale de
l’écran :
-Small pour les écrans de petite taille ;
- Normal pour les écrans standards ;
- Large pour les grands écrans (par exemple les tablettes tactiles) ;
- Xlarge pour les très grands écrans (par exemple téléviseurs).
▪ Orientation de l’écran (priorité 5) : Il existe deux valeurs :
LES RESSOURCES
Organisation des ressources
▪Orientation de l’écran (priorité 5) : Il existe deux valeurs :
- port : c’est le diminutif de portrait, quand le terminal est en
mode portrait ;
- land : c’est le diminutif de landscape, quand le terminal est en
mode paysage
LES RESSOURCES
Organisation des ressources
▪ Résolution de l’écran (priorité 8)
- ldpi : environ 120 dpi ;
- mdpi : environ 160 dpi ;
- hdpi : environ 240 dpi ;
- xhdpi : environ 320 dpi (disponible à partir de l’API 8 uniquement) ;
- nodpi : pour ne pas redimensionner les images matricielles (vous savez, JPEG,
PNG et GIF !).
▪ Version Android (priorité 14) : Il s’agit du niveau de l’API (v3, v5, v7, v13, etc.)
LES RESSOURCES
Organisation des ressources
Exemple: Si un utilisateur a un terminal avec une grande
résolution, Android cherchera dans le répertoire res/drawable-
hdpi !. Si il a un terminal avec une résolution moyenne, le
système cherchera dans le répertoire res/drawable-mdpi/. Si il a
un terminal avec une petite résolution, Android cherchera dans
le répertoire res/drawable-ldpi puisqu’il s’agit de la solution la
plus proche de la situation matérielle réelle.
LES RESSOURCES
Exemples et règles à suivre pour les quantificateurs
• res/drawable-small : pour avoir des images spécifiquement pour les petits écrans.
• res/drawable-large : pour avoir des images spécifiquement pour les grands écrans.
• res/layout-fr : pour avoir une mise en page spécifique destinée à tous ceux qui ont
un système en français.
• res/layout-fr-rFR : pour avoir une mise en page spécifique destinée à ceux qui ont
choisi la langue Français (France).
• res/values-fr-rFR-port : pour des données qui s’afficheront uniquement à ceux qui
ont choisi la langue Français (France) et dont le téléphone se trouve en orientation
portrait.
LES RESSOURCES
Exemples et règles à suivre pour les quantificateurs
• res/values-port-fr-rFR : n’est pas possible, c’est à ça que servent les
priorités : il faut impérativement mettre les quantificateurs par ordre
croissant de priorité (La priorité de la langue est 2, celle de
l’orientation est 5).
• res/layout-fr-rFR-en : n’est pas possible puisqu’on a deux
quantificateurs de même priorité et qu’il faut toujours respecter l’ordre
croissant des priorités. Il nous faudra créer un répertoire pour le
français et un répertoire pour l’anglais.
INTERFACE GRAPHIQUE
Grâce au langage XML, une application mobile peut s’adapter
facilement au volume de chaque écran. À titre exemple, si une
application est destinée à être utilisée dans les terminaux ayant des
petits écrans, les utilisateurs de tablettes ne pourront pas l’utiliser à
cause de l’illisibilité de l’application. Nous allons dans cette partie
mettre l’accent sur les composants fondamentaux (les vues et les
layouts) d’une interface graphique, la façon avec laquelle on peut
créer, récupérer et manipuler ces composants à partir du code Java.
INTERFACE GRAPHIQUE
L’utilisation du langage XML dans la partie interface doit être
séparée par rapport au code Java ( partie traitement). Toutes les
opérations concernant la création d’interface graphique en
utilisant XML pourront être faite à travers l’utilisation du code
Java, cependant le code sera plus complexe à maintenir. Il existe
essentiellement deux types d’éléments qui construisent une
interface graphique
INTERFACE GRAPHIQUE
L’utilisation du langage XML dans la partie interface doit être
séparée par rapport au code Java ( partie traitement). Toutes les
opérations concernant la création d’interface graphique en
utilisant XML pourront être faite à travers l’utilisation du code
Java, cependant le code sera plus complexe à maintenir. Il existe
essentiellement deux types d’éléments qui construisent une
interface graphique
INTERFACE GRAPHIQUE
✓Layout(View groupe) : des éléments qui mettent en forme un
contenu
✓Vue (view) : des éléments qui fournissent un contenu
INTERFACE GRAPHIQUE
Layout
Un layout (gabarit) est une vue particulière qui n’a pas l’objectif
d’offrir un contenu, mais qui peut contenir d’autres vues. Il s’intéresse
à l’organisation des vues (un bouton, un texte, une image, etc...) et
permet aussi de les positionner d’une manière cohérente. Les vues
contenues sont les enfants, la vue englobante est le parent. Une vue
qui ne peut pas englober d’autres est appelée un widget (composant).
Il existe plusieurs types de layout, dans ce cours ,on va présenter les
principaux layout qui sont les plus utilisés dans la construction d’une
interface graphique sous Android
INTERFACE GRAPHIQUE
INTERFACE GRAPHIQUE
LinearLayout
Ce type de Layout permet de mettre les vues les unes après les autres ( sur
une même ligne) selon une certaine orientation ( verticalement ou
horizontalement). L’attribut qui permet de préciser la façon dont les
éléments contenus ( les vues) seront alignés est appelé android :orientation.
Deux options sont disponibles :
• Vertical : permet d’orienter les vues sur une ligne verticale.
• Horizontal : permet d’orienter les vues sur une ligne horizontale.
Il existe aussi deux autres attributs qui fournissent une taille de largeur et
hauteur pour les vues contenues dans ce type de layout, les attributs sont :
INTERFACE GRAPHIQUE
LinearLayout
• android :layout_width : fournit une taille de largeur
• android :layout_height : fournit une taille de hauteur
Ces deux attributs peuvent prendre trois types de valeurs :
▪ wrap_content : la taille de layout dépend directement de la taille des composants qu’il contient. Pour
demander au Widget d’occuper une taille naturelle (la taille de son contenu pour le texte par
exemple). S’il est trop gros par rapport à la taille disponible. Android s’occupera par exemple de
couper le texte s’il n’y a plus de place.
▪ fill_parent : dans ce cas on demande au composant d’occuper tout l’espace disponible chez son
layout (après le placement des autres widgets).
▪ Une taille fixe : par exemple 50 px (pixels). Donc quel que soit la taille de l’écran, l’élément
occupera exactement 50 px
INTERFACE GRAPHIQUE
INTERFACE GRAPHIQUE
RelativeLayout
Il permet d’organiser les vues les unes par rapport aux autres. Elles peuvent
également être placées par rapport au RelativeLayout parent. Par exemple, on peut
centrer une vue dans le RelativeLayout à l’aide des attributs suivants :
• android :layout_centerInParent="true" : permet de placer une vue au centre d’un
RelativeLayout
• android :layout_centerHorizontal="true" : permet de centrer une vue, mais
uniquement sur l’axe horizontal.
• android :layout_centerVertical="true" : permet de centrer une vue, mais
uniquement sur l’axe vertical.
INTERFACE GRAPHIQUE
INTERFACE GRAPHIQUE
TableLayout
Le TableLayout défini un tableau (sans bordures), dans lequel on
peut rajouter des lignes (TableRow) qui contiendront les
composants (vues). La figure ci-dessous représente un exemple
d’utilisation de ce type de Layout
INTERFACE GRAPHIQUE
FrameLayout
Il permet d’afficher une seule vue. Il n’est destiné à afficher
qu’un élément, mais il est possible d’en mettre plusieurs dedans
puisqu’il s’agit d’un ViewGroup.
INTERFACE GRAPHIQUE
Les vues ( Widget)
Un widget est un élément basique qui permet à un utilisateur la
possibilité d’interagir directement avec une application. Chaque
widget se caractérise par un ensemble d’attributs XML et de
méthodes Java. Il existe plusieurs types de widgets, dans ce
cours , on va présenter les principales vues qui sont les plus
utilisées dans la construction d’une interface graphique sous
Android
INTERFACE GRAPHIQUE
INTERFACE GRAPHIQUE
Textview
Il permet d’afficher une chaîne de caractères que l’utilisateur ne peut
modifier. La figure ci-dessous présente un exemple d’un fichier
XML qui décrit une vue de type Textview. Le fichier contient la
syntaxe @string/textView qui implique l’utilisation d’une ressource
de type string. L’attribut android :textSize permet de préciser la taille
des caractères, et l’attribut android :textColor permet également de
préciser la couleur du texte. Cette notation avec un # permet de
décrire des couleurs à l’aide de nombres hexadécimaux.
INTERFACE GRAPHIQUE
INTERFACE GRAPHIQUE
EditText
L’utilisation de ce type de widget permet aux utilisateurs
d’interagir avec des textes ( ce sont des TextView éditables). Un
EditText hérite de TextView ce qui implique d’avoir les mêmes
attributs en XML et ils peuvent utiliser les mêmes méthodes
Java.
INTERFACE GRAPHIQUE
INTERFACE GRAPHIQUE
Button
Un simple bouton, même s’il s’agit en fait d’un TextView cliquable.
CheckBox
Une case qui peut être dans deux états : cochée ou pas. Dans la figure 4.14,
l’attribut android :checked="true" signifie que la case est cochée par défaut.
RadioButton /RadioGroup
Les RadioButton ont la même base que la CheckBox, à la différence que
l’utilisateur n’a la possibilité de cocher qu’une seule case à la fois. Il est
toujours conseillé de les regrouper dans un RadioGroup
INTERFACE GRAPHIQUE
Un RadioGroup est pratiquement un layout, mais il n’est utilisé
qu’avec des RadioButton. Son objectif est de faire en sorte qu’il
puisse n’y avoir qu’un seul RadioButton sélectionné dans tout le
groupe.
INTERFACE GRAPHIQUE
INTERFACE GRAPHIQUE
La gestion des événements sur les Widgets
Les différentes interactions ( entrer un texte, cliquer sur un bouton,
etc) qui permettent à un utilisateur de réagir directement avec une
interface graphique s’appelle des évènements. Pour qu’un utilisateur
puisse faire cela, il est obligé d’utiliser un objet de type listener qui
permettra de détecter et de traiter l’évènement. Un listener est une
interface qui oblige un utilisateur à redéfinir des méthodes de callback
et chaque méthode sera appelée au moment où se produira
l’évènement associé.
INTERFACE GRAPHIQUE
La gestion des événements sur les Widgets
Pour pouvoir associer un listener à une vue, il est recommandé d’utiliser
une des méthodes suivantes :
• Héritage : à travers une implémentation de l’interface au niveau de la
classe, auquel cas il faudra réécrire les méthodes de callback directement
dans la classe.
• Classe anonyme : en donnant directement une implémentation unique à
la vue.
• Attribut : cette méthode est utilisée dans le cas, où un utilisateur veut
réutiliser un listener sur plusieurs vues.
INTERFACE GRAPHIQUE
Identification et récupération des vues
Comme on a vu précédemment dans la partie « Ressource » où chaque ressource a
un identifiant, il est possible d’accéder à une ressource à partir de son identifiant à
l’aide de la syntaxe @X/Y :
• @ : signifie qu’on va parler d’un identifiant
• X : est la classe où se situe l’identifiant dans [Link]
• Y : est le nom de l’identifiant
Dans la figure ci-dessous, et plus particulièrement, dans la douzième ligne,
l’instruction signifie que le TextView va afficher le texte de la ressource qui se
trouve dans la classe String de [Link] et qui s’appelle hello_world.
INTERFACE GRAPHIQUE