Vous êtes sur la page 1sur 54

Institut Supérieur d'Informatique de Mahdia

Support du cours

DÉVELOPPEMENT
D’APPLICATIONS MOBILES
Naziha Nouri
nourinaziha@yahoo.fr
LCS-GLSI 3 Informatique A.U 2023-2024
2
PLAN
• Construction d’une IHM
• Les gabarits (Layout en anglais))
• Les contrôles Android

3
Construction d’une IHM

• L’IHM se construit par la mise en place des


composants graphiques les uns à l'intérieur des
autres

• Les composants graphiques sont des classes.


• Ex: la classe des boutons, la classe des cases à cocher,
etc.

4
Construction d’une IHM

• Un composant graphique particulier sera une


instance particulière d'une classe.
• Ex: bouton "Quitter" et le bouton ''Sauvegarder"
d'une IHM seront deux instances de la classe des
boutons
• Un composant graphique a 3 parties : MVC
• les représentations des données : le modèle (model)
• L'affichage de dessin : la vue (view)
• Décrit les actions de l'utilisateur sur ce composant :
le controleur
5
Construction d’une IHM

• Modèle-vue-contrôleur ou MVC

6
Construction d’une IHM

• Les objets qui composent les interfaces héritent des


classes View et ViewGroup ;
• Une vue se dessine et permet les interactions avec
l’utilisateur (boutton, textView…)
• Un groupe de vues contient d’autres vues (les
gabarits conteneurs des vues)
– organise l’affichage des vues qu’il contient
– est une vue.

7
Construction d’une IHM

• Android fournit une collection de vues et de


groupes de vues qui offrent :
– les principales entrées (textes, champs de texte,
listes, etc.) ;
– différents modèles d’organisation (linéaire, etc.).
• Une classe est associée à chaque type de vue ou
groupe de vue.

8
Construction d’une IHM

• Android view class

9
Construction d’une IHM

Différents types des gabarits Différents types des vues

10
Construction d’une IHM

• Dans l'activité ,On peut tout coder en Java


• Mais pour l'IHM, en général, on utilise plutôt les
fichiers XML
• Par exemple, pour créer une nouvelle application
Android
– Ouvrir le fichier activity_main.xml (dans
res/layout/activity_main.xml)

11
Construction d’une IHM

• Et on peut construire l'IHM en glisser déposer à


partir d’une palette graphique.
• L’IHM est alors générée en XML

12
Construction d’une IHM

• On peut changer les propriétés d’une composantes


Exemple :
• layout:width largeur
• layout:height hauteur
Valeurs:
– match_parent garde la taille du composant mère
(parent)
– wrap_content : prend seulement la taille qui lui
faut ou…

13
Construction d’une IHM

• Pour positionner une propriété (= valeur d'attribut =


données = ...) d'un composant graphique
• En XML: à l'aide d'une valeur d'attribut de sa balise
XML
• Par appel d'une méthode appropriée en java:
• Donc il y a une correspondance entre les noms
d'attribut d'une balise XML et une méthode
• Ex: Android:background pour l’arriere plan
Android:alpha pour la transparence d’une vue (0:
transparnt ou 1: opaque)
14
Construction d’une IHM

• Le composant est manipulé par cet identifiant dans


le programme Java à l'aide de la méthode
findViewById(R.id.nomIdentifiant);
• La valeur nomIdentifiant est celle qui apparaît dans
le fichier activity_main.xml après @+id/
• Pour cet exemple l’appelle de composante sera
findViewById(R.id.button1);

15
Construction d’une IHM

• Exemple de code xml d’une IHM

16
Les gabarits

• Des ViewGroup particuliers sont prédéfinis : ce sont


les gabarits (layout en anglais) qui proposent une
prédisposition des objets graphiques :
• Les principaux Layout Android sont : (voir page 10)
• LinearLayout (le modèle de boîte),
• RelativeLayout (un modèle à base de règles),
• TableLayout (le modèle de grille),
• ScrollView, un récipient conçu pour aider à la mise
en oeuvre des conteneurs de défilement.

17
Les gabarits

• Autres (ListView, GridView, WebView, MapView, ...)


• Les déclarations se créent principalement en XML,
afin d’évite le passage par les instanciations Java.

18
Les gabarits

• Les attributs des layouts permettent de spécifier des


attributs supplémentaires. Les plus importants sont :
• android:layout_width et android:layout_heigh
• ="match_parent" (voir page 13)
• ="wrap_content"
• android:orientation : définit l'orientation d'empilement ;
• android:gravity : définit l'alignement des éléments.

19
Les gabarits

20
Les gabarits

• L’interface graphique définie en XML sera aussi générée en


tant qu’une ressource dans la classe statique R.
• Le nom du fichier XML, par exemple accueil.xml permet de
retrouver le layout dans le code Java a travers de
R.layout.accueil.

21
Les gabarits

 Le layout reste modifiable au travers du code. Donc, il est


nécessaire d’attribuer un id dans la définition XML du
gabarit (android:id="@+id/accueilid").
 Un layout peut contenir des éléments graphiques, ou
d'autres layouts.
 Les interfaces peuvent aussi inclure d'autres interfaces,
 On peut accéder à un layout par son id et agir dessus à
travers du code Java :

22
Les gabarits: linear layout

 LinearLayout est l'outil de modélisation la plus courante.


 Il propose une «boîte»

 Les composants d'un LinearLayout sont rangés les uns à la


suite des autres horizontalement ou verticalement

23
Les gabarits: linear layout

 LinearLayout est l'outil de modélisation la plus courante.


 Principales propriétés d'un LinearLayout :
• l'orientation
• le mode de remplissage (fill model)
 L'orientation indique si le LinearLayout présente ces
contenus
• sur une ligne (horizontalement)
• sur une colonne (verticalement)
 La propriété d'orientation dans le fichier XML est l'attribut
android:orientation
 L'orientation peut être modifiée à l'éxécution par la méthode
setOrientation() lancée sur le LinearLayout 24
Les gabarits: linearlayout

 Tous les composants à l'intérieur d'un LinearLayout doivent


fournir les attributs dimensionnels android:
• layout_width
• android: layout_height
 pour résoudre la question de l'espace vide.
 Les valeurs utilisées pour définir la hauteur et la largeur sont
les suivants:
 wrap_content :Remplir son espace naturel
 word-wrap : Si trop grand
 match_parent : remplir tout l'espace disponible

25
Les gabarits: linear layout

 LinearLayout possède une fonctionnalité clé


 Le poids: l'attribut weight permet d’autoriser la taille
dynamique pour les composants dans une vue en fonction
de l'espace disponible.
 android: layout_weight=(1, 2, 3, ...)
 Un poids de 0 (valeur par défaut ) indique que la vue ne doit
pas être développée
 Dans l'image de mise en page, vous pouvez remarquer que le
bouton avec le poids 2 obtient plus de taille par rapport à
l'autre

26
Les gabarits: linear layout

 Vous pouvez remarquer


bouton avec le poids 2
obtient plus de taille
par rapport à l'autre

27
Les gabarits: linear layout

 La proprieté gravity est employé comment un contrôle


s'aligne sur l'écran.
 Par défaut, les composants sont de gauche et
alignée en haut.
 Vous pouvez utiliser la propriété XML
android: layout_gravity = "..."
. pour définir d'autres modalités possibles:
• gauche (left) ,
• centre (center) ,
• droite (right) ,
• haut (top) ,
• bas (bottom), etc
28
Les gabarits: linear layout

Spécifie la manière de placer le contenu


d'un objet, à la fois sur les axes : x
(abcisses) –y (ordonnées) , à l'intérieur
de l'objet lui-même.
Gravity=centrer le contenu du
composant (comme ici pour les textes)
Layout-gravity=
centrer le composant lui-même dans
son conteneur (layout)

29
Les gabarits: linear layout

 La proprieté Padding: l’ajustement d'espace entre les limites


de la "cellule" composant et le contenu du composant réels.
 android:padding ou en appelant setPadding () lors de
l'exécution de Java
: augmenter l’espace interne entre les bords du composant
et de son contenu
Exemple: android:padding="30dp"
 La proprieté layout_margin spécifie la marge externe
 android:layout_margin : widgets sont serrés les uns à côté
des autres.

30
LES GABARITS: RELATIVELAYOUT
 Un RelativeLayout est un conteneur qui permet de placer ses
contenus les uns par rapport aux autres
 Les Views contenues dans le RelativeLayout indiquent leur
positionnement à l'aide de leurs attributs (fichier XML)
 Les Views indiquent leur position par rapport à la vue
parente ou leurs Views soeurs (via id)
 Les valeurs des attributs sont soit des boolean, soit l'id d'une
autre View

31
LES GABARITS: RELATIVELAYOUT
 Les attributs des Views dans un RelativeLayout
 android:layout_alignParentTop : si true, le haut de la View
est calé sur le haut de la vue parente
 android:layout_centerVertical : si true, la View est centrée
verticalement à l'intérieur de la vue parente
 android:layout_below : le haut de la vue est en dessous de la
View indiquée (par son l'id)
 android:layout_toRightOf : le coté gauche de la vue est à
droite de la View indiquée (par son l'id)

32
LES GABARITS: RELATIVELAYOUT

33
LES GABARITS: TABLELAYOUT

 Le TableLayout organise les widgets (groupes de vues) en


lignes et en colonnes comme balise HTML
 Les lignes sont déclarées par l'élément <TableRow> en
mettant widgets comme des fils à l'intérieur du TableLayout
globale.
 Le nombre de colonnes est déterminé par Android

34
LES GABARITS: TABLELAYOUT

 Si vous avez trois lignes: une avec deux widgets, une avec
trois widgets, et une autre avec quatre widgets, il y aura au
moins quatre colonnes.

 un seul widget peut prendre jusqu'à plus d'une colonne en


incluant : la propriété androïd :layout_span, indiquant le
nombre de colonnes des travées widget

35
LES GABARITS: TABLELAYOUT

 Ordinairement, les widgets sont mis dans la première


colonne de chaque ligne disponible.
 Dans l'exemple ci-dessous, l'étiquette ("URL") irait dans la
première colonne (colonne 0, les colonnes sont comptées à
partir de 0), et le EditText irait dans un ensemble s'étend sur
trois colonnes (colonnes 1 à 3).

36
LES GABARITS: TABLELAYOUT

37
LES GABARITS: TABLELAYOUT

 Par défaut, chaque colonne sera dimensionnée en fonction de la


"naturelle" de la plus grande widget dans cette colonne.
 Si votre contenu est moins large que l'espace disponible, vous
pouvez utiliser la propriété TableLayout:
android:stretchColumns=“…”
 Sa valeur doit être un nombre unique de colonne (0-based) ou une
liste séparée par des virgules des numéros de colonne. Ces
colonnes seront étirés de manière occuper tout l'espace encore
disponible sur la ligne.
 Exemple : nous étirons les colonnes 2, 3, et 4 pour remplir le reste
de la ligne.

38
LES GABARITS: TABLELAYOUT

 Exemple : nous étirons les colonnes 2, 3, et 4 pour remplir le reste de la


ligne.
<TableLayout
xmlns:android="http://schemas.android.com/apk/res/an
droid"
android:id="@+id/myTableLayout"
android:layout_width=« match_parent"
android:layout_height=« match_parent"
android:background="#ff0033cc"
android:stretchColumns="2,3,4"
android:orientation="vertical" >
<TableRow>

39
LES GABARITS: SCROLLVIEW LAYOUT

 Lorsque nous avons plus de données que ce qui peut être sur
un seul écran, vous pouvez utiliser la ScrollViewcontrol.
 Il offre un accès glissement de défilement ou pour les
données. De cette façon, l'utilisateur ne peut voir qu'une
partie de votre mise en page en une seule fois, mais le reste
est disponible via le défilement.

40
LES GABARITS: SCROLLVIEW LAYOUT

 Défiler les 10 boutons: dans le sens vertical

 dans le sens horizontal

41
LES GABARITS: SCROLLVIEW LAYOUT

 Exemple: défiler les 10 boutons dans le sens vertical

42
LES GABARITS: LISTVIEW

 ListView est un view group, affiche des éléments (éléments)


selon une liste et peut être déplacé verticalement. Listview
est une vue importante et est largement utilisé dans les
applications Android.
 Un ListView est fait à partir d'un groupe de ListItem.
ListItem est une ligne (row) individuelle dans listview où les
données seront affichées. Toutes les données dans listview
sont affichées uniquement via listItem. Considérez Listview
comme groupe défilable de ListItems.
 Un ListItem est une pièce de
l'interface qui peut être créée
par un nombre de View.

43
LES GABARITS: LISTVIEW

 Divider : Il s'agit d'un dessin ou d'une couleur à dessiner


entre différents éléments de la liste
 dividerHeight :Ceci spécifie la hauteur du séparateur entre
les éléments de la liste. Cela peut être en dp (pixel de
densité), sp (pixel indépendant de l'échelle) ou px (pixel).
 listSelector: vous devez personnaliser les effets, tels que
modifier la couleur d'arrière-plan de ListItem lorsque le
curseur se déplace dessus ou modifier la couleur d'arrière-
plan lorsqu'il est sélectionné.

44
LES GABARITS: LISTVIEW

Couleur rouge
Épaisseur

Couleur vert

45
LES GABARITS: LISTVIEW

 Android Adapter (L'adaptateur) est un pont entre des View


(par exemple comme ListView) et les données sous-jacentes
pour ce View. Un Adapter gère des données et adapte les
données dans les lignes individuelles (ListItem) du view.
Vous pouvez lier des Adapter avec Android ListView via la
méthode setAdapter.

46
LES GABARITS: LISTVIEW

 AdapterView : Il existe plusieurs View ont eu besoin


d'Android Adapter en vue de gérer des données affichées,
ces View sont les sous-classes de la classe AdapterView

47
LES GABARITS: LISTVIEW

 Dans Android, les adaptateurs couramment utilisés sont :


1- Array Adapter
2- Base Adapter
1- ArrayAdapter a utilisé à afficher le ListView avec des ListItem
simple, ListItem peut être fabriqué à partir seulement un
TextView, CheckedTextView, EditText,...
Vous pouvez lier des Adapter avec Android ListView via la
méthode setAdapter

48
LES GABARITS: LISTVIEW

2- BaseAdapter
 est une classe de base commune d'une implémentation
générale d'un adaptateur qui peut être utilisée dans
ListView, GridView, Spinner, etc.
 Pour avoir une liste personnalisée dans un ListView ou de
grilles personnalisées dans un GridView, vous créez votre
propre adaptateur et y étendez l'adaptateur de base.
ListView GridView

49
LES GABARITS: LISTVIEW

2- BaseAdapter
 est une classe de base commune d'une implémentation
générale d'un adaptateur qui peut être utilisée dans
ListView, GridView, Spinner, etc.
 Pour avoir une liste personnalisée dans un ListView ou de
grilles personnalisées dans un GridView, vous créez votre
propre adaptateur et y étendez l'adaptateur de base.
 L'adaptateur de base peut être étendu pour créer un
adaptateur personnalisé permettant d'afficher un élément
de liste personnalisé.
 Remarque importante : ArrayAdapter est également une
implémentation de BaseAdapter

50
LES GABARITS: LISTVIEW

Créer une nouvelle classe


CustomAdapter.java

51
LES CONTRÔLES ANDROID

 Ce sont les composants graphiques que voient l'utilisateur, avec


lesquels il agit sur (contrôle) l'interface graphique
 Appelés dans certains domaines, les contrôles
 En Android ce sont (par exemple) :
• Les zones de texte non éditable (~ Label AWT(Abstract
Window Toolkit)) ou éditable (~ TextComponent AWT) :
TextView
• Les boutons (~ Button AWT) : Button
• Les zones de texte éditables (~ TextField et TextArea de
AWT) : EditText
• Les cases à cocher (~ Checkbox AWT) : CheckBox et les
boutons radio RadioButton à regrouper dans un ensemble

52
LES CONTRÔLES ANDROID

 Toutes ces classes sont dans le package android.widget


et dérivent de android.view.View
 Arborescence des principaux contrôles Android
– Les classes de composants non
conteneurs (contrôles) sont rangées
dans l'arbre d'héritage :

53
LES CONTRÔLES ANDROID

 Peut servir de zone de texte non éditable (~ Label AWT) et dans ce


cas, sert souvent pour présenter les widgets qui suivent
 Propriétés importantes :
 android:text : le texte du TextView
 android:typeface : le type de police utilisée (monospace, ...)
 android:textStyle : le style (italic pour l'italique,
bold_italic pour gras et italique, ...)
 android:textColor pour la couleur d'affichage du texte.
 Les valeurs sont en hexadécimal en unité RGB (par exemple
#FF0000 pour le rouge)

54

Vous aimerez peut-être aussi