Université Constantine 2
Dr. CHAOUCHE A.-C.
Faculté des nouvelles technologies
ahmed.chaouche@univ-constantine2.dz
– Cours 6 –
Chapitre 5 : Structure d’un projet Android (1/2)
Développement d’applications mobiles
2018/2019. Semestre 1
Université Constantine 2
Etudiants concernés
Faculté/Institut Département Niveau Spécialité
2018/2019. Semestre 1
Dr. CHAOUCHE A.-C.
Faculté des nouvelles technologies
ahmed.chaouche@univ-constantine2.dz
Développement d’applications mobiles
Licence 3 Technologies de l’information (TI)Nouvelles technologies IFA
Licence 3 Science de l’informatique (SCI)Nouvelles technologies IFA
– Cours 6 –
Chapitre 5 : Structure d’un projet Android (1/2)
Université Constantine 2 3
Prérequis
Maîtrise de Android Studio
Objectifs du cours
Savoir organiser un projet Android
Comprendre le cycle de vie d’une activité
Résumé
© Dr. Chaouche A.-C.
Université Constantine 2 4
Application Name : LearnApp
Compagny Domain : iam.sci
Package: sci.iam.learnapp
Project location : D:androidprojects
Création d’un nouveau projet
© Dr. Chaouche A.-C.
Université Constantine 2 5
Structure d’un projet
© Dr. Chaouche A.-C.
Fichiers java
Ressources organisées
(texte, …)
Manifest
Gradle
Université Constantine 2 6
Décrit les composants de l’application
Définit le point d’entrée potentiel de l’application (activity main)
Quatre types de composants
Activités (activities)
Services (services)
Fournisseurs de contenu (content providers)
Récepteurs de diffusion (broadcast receivers)
Décrit les permissions requises par l’application
Accès a l’Internet, lecture-écriture dans la liste de contacts,
Géo-localisation, . . .
Décrit les besoins matériels et logiciels de l’application
Appareil photo, bluetooth, ecran multi-touch, . . .
"AndroidManifest.xml" (1/2)
© Dr. Chaouche A.-C.
Université Constantine 2 7
Fichier XML obligatoire, à la racine du projet
<manifest> et <application> sont obligatoires
category.LAUNCHER : point d’entrée de l'application
"AndroidManifest.xml" (2/2)
© Dr. Chaouche A.-C.
/manifests/AndroidManifest.xml
<manifest>
<application>
<activity android:name=".LoginActivity"
android:label="@string/app_name">
<intentfilter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intentfilter>
</activity>
</application>
</manifest>
Université Constantine 2 8
Une activité = un écran graphique
définie dans ./java/
souvent c’est un cas d'utilisation UML
contrôle les éléments définis par du code Java
Hérite de
android.app.Activity ou
android.support.v7.app.AppCompatActivity;
Interface graphique (IHM)
associé à une vue (./res/layout/)
certains éléments (texte, dimension, couleur) sont définis dans ./res/values
Activité
© Dr. Chaouche A.-C.
Université Constantine 2 9
Activité
Cycle de vie (1/2)
© Dr. Chaouche A.-C.
Méthodes callback :
void onCreate(...)
void onStart()
void onRestart()
void onResume()
void onPause()
void onStop()
void onDestroy()
Le changement d’état d’une activité
provoque le déclenchement de la
méthode callback correspondante.
Université Constantine 2 10
Activité
Cycle de vie (2/2) – Explication
© Dr. Chaouche A.-C.
LearnApp
Cycle de vie de
Activity 1
Université Constantine 2 11
Activité
Cycle de vie (2/2) – Explication
© Dr. Chaouche A.-C.
1
2
3
4
This is Activity 1
Cycle de vie de
Activity 15
Université Constantine 2 12
Activité
Cycle de vie (2/2) – Explication
© Dr. Chaouche A.-C.
1
2
3
4
5
This is Activity 1
Cycle de vie de
Activity 1
Université Constantine 2 13
Activité
Cycle de vie (2/2) – Explication
© Dr. Chaouche A.-C.
2
3
1
This is Activity 1
Cycle de vie de
Activity 1
Université Constantine 2 14
Activité
Cycle de vie (2/2) – Explication
© Dr. Chaouche A.-C.
23
4
5
1
This is Activity 2
Cycle de vie de
Activity 1
Université Constantine 2 15
Activité
Cycle de vie (2/2) – Explication
© Dr. Chaouche A.-C.
1
2
3
This is Activity 1
Cycle de vie de
Activity 1
Université Constantine 2 16
Activité
Cycle de vie (2/2) – Explication
© Dr. Chaouche A.-C.
1
34
5
6
2
LearnApp
Cycle de vie de
Activity 1
Université Constantine 2 17
Activité
Cycle de vie (2/2) – Explication
© Dr. Chaouche A.-C.
1
2
3
4
5
7
8
9
10
6
This is Activity 1
Cycle de vie de
Activity 1
Université Constantine 2 18
This is Activity 1
Activité
Cycle de vie (2/2) – Explication
© Dr. Chaouche A.-C.
1
3
5
6
4
LearnApp
2
Cycle de vie de
Activity 1
Partage d’écran (supporté depuis Android 7.0)
Université Constantine 2 19
Pour chaque méthode callback, appeler la méthode sur super
Exemple : dans onCreate(), appel à super.onCreate()
Le Bundle mémorise l'état de l’activité lorsqu'elle passe en arrière-plan
Activité
Exemple
© Dr. Chaouche A.-C.
/java/LoginActivity.java
import android.app.Activity;
public class LoginActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
}
@Override
protected void onDestroy() {
super.onDestroy();
}
}
Université Constantine 2 20
setContentView(int layout) associe à l'activité un Layout référencé
par layout
Activité
Association d’un layout
© Dr. Chaouche A.-C.
/java/LoginActivity.java
public class LoginActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
...
}
...
}
Université Constantine 2 21
Types de ressources :
Layouts et menus
Icones et images
Valeurs (values) :
strings, attrs,
styles, colors,
dimens,
…
Ressources "./res/"
© Dr. Chaouche A.-C.
Interfaces
graphiques
Images
Valeurs
constantes
Icones
Université Constantine 2 22
Description
Déclarative (Fichiers XML dans le répertoire ./res/layout/)
Ou directement dans le code java
Widget
Composant élémentaire
Instance de la classe View
Sensible aux événements
Exemples : Button, EditText, TextView, CheckBox
Layout
Conteneur de vues
Instance de la classe ViewGroup
Exemples : LinearLayout, TableLayout,
RelativeLayout, FrameLayout,
ScrollView
Ressources : Layouts
© Dr. Chaouche A.-C.
Université Constantine 2 23
Ressources : Layouts
Types de ViewGroup (1/2)
© Dr. Chaouche A.-C.
LinearLayout RelativeLayout WebView
GridLayout FrameLayout AbsoluteLayout
Université Constantine 2 24
Ressources : Layouts
Types de ViewGroup (2/2)
© Dr. Chaouche A.-C.
DrawerLayout CoordinatorLayout SwipeRefreshLayout
SlidingPaneLayout TableLayout TabLayout-ViewPager
Université Constantine 2 25
Ressources : Layouts
Exemple d'un layout
© Dr. Chaouche A.-C.
/res/layout/activity_login.xml (Text)
<?xml version="1.0" encoding="utf8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/...
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Hello World!" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Constantine 2" />
</LinearLayout>
Université Constantine 2 26
Ressources : Layouts
Attributs de LinearLayout
© Dr. Chaouche A.-C.
orientation : vertical | horizontal
layout_width et layout_height :
Valeur constante : en dp ou px
wrap_content : place minimum
match_parent : taille du parent
gravity : top, bottom, left, right, center, …
padding et margin : en dp ou px
Université Constantine 2 27
Exploitation dans res (fichiers XML : layout, styles, …) : @string/app_name
Exploitation dans java (code source) : R.string.app_name
Accès à la ressource : getResources().getString(R.string.app_name);
Ressources : Strings (1/2)
© Dr. Chaouche A.-C.
/res/values/strings.xml
<?xml version="1.0" encoding="utf8"?>
<resources>
<string name="app_name"> LearnApp </string>
...
</resources>
Université Constantine 2 28
/java//res/
Ressources : Strings (2/2)
© Dr. Chaouche A.-C.
R.string.name
layout/
Values/
strings.xml
activity_login.xml
...
LoginActivity.java
...
@string/name
sci.iam.learnapp/
Université Constantine 2 29
Chaque élément défini dans le répertoire ./res/ impacte le fichier
R.java
référence les ressources par des constantes de type entier sur 32bits,
Exemple : 0x1A34F678
chemin : "appbuildgeneratedsourcerdebug[package]R.java"
généré automatiquement
caché par Android studio
à ne pas modifier
2 types de ressources via R.java
user-defined : (java) R.color.vert
(res) @color/vert
system-defined : (java) android.R.color.holo_green_dark
(res) @android:color/holo_green_dark
Le fichier "R.java"
© Dr. Chaouche A.-C.
Université Constantine 2 30
@+id permet d’ajouter un nouveau nom de ressource à la classe R
Identification d’une vue (1/2) – Layout
© Dr. Chaouche A.-C.
/res/layout/activity_login.xml (Text)
<?xml version="1.0" encoding="utf8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/app_name"
android:id="@+id/msgTV"/>
</LinearLayout>
Université Constantine 2 31
findViewById(int id) renvoie un objet View référencé par id
Identification d’une vue (2/2) – Activity
© Dr. Chaouche A.-C.
/java/LoginActivity.java
public class LoginActivity extends Activity {
TextView msgTextView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
...
msgTextView = (TextView) findViewById(R.id.msgTV);
msgTextView.setText("Hello World!");
}
}
Université Constantine 2 32
Ressources : Drawables
Attributs de ImageView
© Dr. Chaouche A.-C.
android:src : @drawable/my_image
android:scaleType :
Il faut copier l'image my_image.png dans "res/drawable"
Université Constantine 2 33
Créer une activité LoginActivity
Une ImageView pour afficher une icone
Un EditText pour introduire l’identifiant
Avec son TextView
Un EditText pour introduire le mot de passe
Avec son TextView
Un Button pour vérifier l’authentification
Vérifier si les champs sont valides
TP1a : Création d’une vue d’authentification
© Dr. Chaouche A.-C.
Université Constantine 2 34
Cycle de vie d’une activité :
https://openclassrooms.com/courses/creez-des-applications-pour-android/preambule-
quelques-concepts-avances#r-2032203
https://www.youtube.com/watch?v=UJN3AL4tiqw
Types de strings :
http://mathias-seguy.developpez.com/tutoriels/android/utiliser-ressources#LII-A
Echelles d’une image :
https://robots.thoughtbot.com/android-imageview-scaletype-a-visual-guide
Quelques liens utiles
© Dr. Chaouche A.-C.
Université Constantine 2 35
Android Developer, «The Activity Lifecycle,». Lien : https://developer.
android.com/guide/components/activities/activity-lifecycle.html.
Android Developer, «References - Android Plateform API 26 : Class View,». Lien :
https://developer.android.com/reference/android/view/View.html.
Android Developer, «References - Android Plateform API 26 : Class ViewGroup,».
Lien : https://developer.android.com/reference/android/ view/ViewGroup.html.
V. Tallapudi, «Android Layouts and Types of Android Layouts,» 2014.. Lien :
https://www.coderefer.com/android-layouts-types-android-layouts/.
Android Developer, «References - Android Plateform API 26 : R,». Lien :
https://developer.android.com/reference/android/R.html.
Android Developer, «References - Android Plateform API 26 : ImageView,». Lien :
developer.android.com/reference/android/widget/ImageView.html.
A. Hill, «Android ImageView ScaleType: A Visual Guide,» 25 Août 2016. Lien :
robots.thoughtbot.com/android-imageview-scaletype-a-visual-guide.
Références
© Dr. Chaouche A.-C.

Applications Android - cours 6 : Structure d’un projet Android

  • 1.
    Université Constantine 2 Dr.CHAOUCHE A.-C. Faculté des nouvelles technologies ahmed.chaouche@univ-constantine2.dz – Cours 6 – Chapitre 5 : Structure d’un projet Android (1/2) Développement d’applications mobiles 2018/2019. Semestre 1
  • 2.
    Université Constantine 2 Etudiantsconcernés Faculté/Institut Département Niveau Spécialité 2018/2019. Semestre 1 Dr. CHAOUCHE A.-C. Faculté des nouvelles technologies ahmed.chaouche@univ-constantine2.dz Développement d’applications mobiles Licence 3 Technologies de l’information (TI)Nouvelles technologies IFA Licence 3 Science de l’informatique (SCI)Nouvelles technologies IFA – Cours 6 – Chapitre 5 : Structure d’un projet Android (1/2)
  • 3.
    Université Constantine 23 Prérequis Maîtrise de Android Studio Objectifs du cours Savoir organiser un projet Android Comprendre le cycle de vie d’une activité Résumé © Dr. Chaouche A.-C.
  • 4.
    Université Constantine 24 Application Name : LearnApp Compagny Domain : iam.sci Package: sci.iam.learnapp Project location : D:androidprojects Création d’un nouveau projet © Dr. Chaouche A.-C.
  • 5.
    Université Constantine 25 Structure d’un projet © Dr. Chaouche A.-C. Fichiers java Ressources organisées (texte, …) Manifest Gradle
  • 6.
    Université Constantine 26 Décrit les composants de l’application Définit le point d’entrée potentiel de l’application (activity main) Quatre types de composants Activités (activities) Services (services) Fournisseurs de contenu (content providers) Récepteurs de diffusion (broadcast receivers) Décrit les permissions requises par l’application Accès a l’Internet, lecture-écriture dans la liste de contacts, Géo-localisation, . . . Décrit les besoins matériels et logiciels de l’application Appareil photo, bluetooth, ecran multi-touch, . . . "AndroidManifest.xml" (1/2) © Dr. Chaouche A.-C.
  • 7.
    Université Constantine 27 Fichier XML obligatoire, à la racine du projet <manifest> et <application> sont obligatoires category.LAUNCHER : point d’entrée de l'application "AndroidManifest.xml" (2/2) © Dr. Chaouche A.-C. /manifests/AndroidManifest.xml <manifest> <application> <activity android:name=".LoginActivity" android:label="@string/app_name"> <intentfilter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intentfilter> </activity> </application> </manifest>
  • 8.
    Université Constantine 28 Une activité = un écran graphique définie dans ./java/ souvent c’est un cas d'utilisation UML contrôle les éléments définis par du code Java Hérite de android.app.Activity ou android.support.v7.app.AppCompatActivity; Interface graphique (IHM) associé à une vue (./res/layout/) certains éléments (texte, dimension, couleur) sont définis dans ./res/values Activité © Dr. Chaouche A.-C.
  • 9.
    Université Constantine 29 Activité Cycle de vie (1/2) © Dr. Chaouche A.-C. Méthodes callback : void onCreate(...) void onStart() void onRestart() void onResume() void onPause() void onStop() void onDestroy() Le changement d’état d’une activité provoque le déclenchement de la méthode callback correspondante.
  • 10.
    Université Constantine 210 Activité Cycle de vie (2/2) – Explication © Dr. Chaouche A.-C. LearnApp Cycle de vie de Activity 1
  • 11.
    Université Constantine 211 Activité Cycle de vie (2/2) – Explication © Dr. Chaouche A.-C. 1 2 3 4 This is Activity 1 Cycle de vie de Activity 15
  • 12.
    Université Constantine 212 Activité Cycle de vie (2/2) – Explication © Dr. Chaouche A.-C. 1 2 3 4 5 This is Activity 1 Cycle de vie de Activity 1
  • 13.
    Université Constantine 213 Activité Cycle de vie (2/2) – Explication © Dr. Chaouche A.-C. 2 3 1 This is Activity 1 Cycle de vie de Activity 1
  • 14.
    Université Constantine 214 Activité Cycle de vie (2/2) – Explication © Dr. Chaouche A.-C. 23 4 5 1 This is Activity 2 Cycle de vie de Activity 1
  • 15.
    Université Constantine 215 Activité Cycle de vie (2/2) – Explication © Dr. Chaouche A.-C. 1 2 3 This is Activity 1 Cycle de vie de Activity 1
  • 16.
    Université Constantine 216 Activité Cycle de vie (2/2) – Explication © Dr. Chaouche A.-C. 1 34 5 6 2 LearnApp Cycle de vie de Activity 1
  • 17.
    Université Constantine 217 Activité Cycle de vie (2/2) – Explication © Dr. Chaouche A.-C. 1 2 3 4 5 7 8 9 10 6 This is Activity 1 Cycle de vie de Activity 1
  • 18.
    Université Constantine 218 This is Activity 1 Activité Cycle de vie (2/2) – Explication © Dr. Chaouche A.-C. 1 3 5 6 4 LearnApp 2 Cycle de vie de Activity 1 Partage d’écran (supporté depuis Android 7.0)
  • 19.
    Université Constantine 219 Pour chaque méthode callback, appeler la méthode sur super Exemple : dans onCreate(), appel à super.onCreate() Le Bundle mémorise l'état de l’activité lorsqu'elle passe en arrière-plan Activité Exemple © Dr. Chaouche A.-C. /java/LoginActivity.java import android.app.Activity; public class LoginActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ... } @Override protected void onDestroy() { super.onDestroy(); } }
  • 20.
    Université Constantine 220 setContentView(int layout) associe à l'activité un Layout référencé par layout Activité Association d’un layout © Dr. Chaouche A.-C. /java/LoginActivity.java public class LoginActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); ... } ... }
  • 21.
    Université Constantine 221 Types de ressources : Layouts et menus Icones et images Valeurs (values) : strings, attrs, styles, colors, dimens, … Ressources "./res/" © Dr. Chaouche A.-C. Interfaces graphiques Images Valeurs constantes Icones
  • 22.
    Université Constantine 222 Description Déclarative (Fichiers XML dans le répertoire ./res/layout/) Ou directement dans le code java Widget Composant élémentaire Instance de la classe View Sensible aux événements Exemples : Button, EditText, TextView, CheckBox Layout Conteneur de vues Instance de la classe ViewGroup Exemples : LinearLayout, TableLayout, RelativeLayout, FrameLayout, ScrollView Ressources : Layouts © Dr. Chaouche A.-C.
  • 23.
    Université Constantine 223 Ressources : Layouts Types de ViewGroup (1/2) © Dr. Chaouche A.-C. LinearLayout RelativeLayout WebView GridLayout FrameLayout AbsoluteLayout
  • 24.
    Université Constantine 224 Ressources : Layouts Types de ViewGroup (2/2) © Dr. Chaouche A.-C. DrawerLayout CoordinatorLayout SwipeRefreshLayout SlidingPaneLayout TableLayout TabLayout-ViewPager
  • 25.
    Université Constantine 225 Ressources : Layouts Exemple d'un layout © Dr. Chaouche A.-C. /res/layout/activity_login.xml (Text) <?xml version="1.0" encoding="utf8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/... android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Hello World!" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Constantine 2" /> </LinearLayout>
  • 26.
    Université Constantine 226 Ressources : Layouts Attributs de LinearLayout © Dr. Chaouche A.-C. orientation : vertical | horizontal layout_width et layout_height : Valeur constante : en dp ou px wrap_content : place minimum match_parent : taille du parent gravity : top, bottom, left, right, center, … padding et margin : en dp ou px
  • 27.
    Université Constantine 227 Exploitation dans res (fichiers XML : layout, styles, …) : @string/app_name Exploitation dans java (code source) : R.string.app_name Accès à la ressource : getResources().getString(R.string.app_name); Ressources : Strings (1/2) © Dr. Chaouche A.-C. /res/values/strings.xml <?xml version="1.0" encoding="utf8"?> <resources> <string name="app_name"> LearnApp </string> ... </resources>
  • 28.
    Université Constantine 228 /java//res/ Ressources : Strings (2/2) © Dr. Chaouche A.-C. R.string.name layout/ Values/ strings.xml activity_login.xml ... LoginActivity.java ... @string/name sci.iam.learnapp/
  • 29.
    Université Constantine 229 Chaque élément défini dans le répertoire ./res/ impacte le fichier R.java référence les ressources par des constantes de type entier sur 32bits, Exemple : 0x1A34F678 chemin : "appbuildgeneratedsourcerdebug[package]R.java" généré automatiquement caché par Android studio à ne pas modifier 2 types de ressources via R.java user-defined : (java) R.color.vert (res) @color/vert system-defined : (java) android.R.color.holo_green_dark (res) @android:color/holo_green_dark Le fichier "R.java" © Dr. Chaouche A.-C.
  • 30.
    Université Constantine 230 @+id permet d’ajouter un nouveau nom de ressource à la classe R Identification d’une vue (1/2) – Layout © Dr. Chaouche A.-C. /res/layout/activity_login.xml (Text) <?xml version="1.0" encoding="utf8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/app_name" android:id="@+id/msgTV"/> </LinearLayout>
  • 31.
    Université Constantine 231 findViewById(int id) renvoie un objet View référencé par id Identification d’une vue (2/2) – Activity © Dr. Chaouche A.-C. /java/LoginActivity.java public class LoginActivity extends Activity { TextView msgTextView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); ... msgTextView = (TextView) findViewById(R.id.msgTV); msgTextView.setText("Hello World!"); } }
  • 32.
    Université Constantine 232 Ressources : Drawables Attributs de ImageView © Dr. Chaouche A.-C. android:src : @drawable/my_image android:scaleType : Il faut copier l'image my_image.png dans "res/drawable"
  • 33.
    Université Constantine 233 Créer une activité LoginActivity Une ImageView pour afficher une icone Un EditText pour introduire l’identifiant Avec son TextView Un EditText pour introduire le mot de passe Avec son TextView Un Button pour vérifier l’authentification Vérifier si les champs sont valides TP1a : Création d’une vue d’authentification © Dr. Chaouche A.-C.
  • 34.
    Université Constantine 234 Cycle de vie d’une activité : https://openclassrooms.com/courses/creez-des-applications-pour-android/preambule- quelques-concepts-avances#r-2032203 https://www.youtube.com/watch?v=UJN3AL4tiqw Types de strings : http://mathias-seguy.developpez.com/tutoriels/android/utiliser-ressources#LII-A Echelles d’une image : https://robots.thoughtbot.com/android-imageview-scaletype-a-visual-guide Quelques liens utiles © Dr. Chaouche A.-C.
  • 35.
    Université Constantine 235 Android Developer, «The Activity Lifecycle,». Lien : https://developer. android.com/guide/components/activities/activity-lifecycle.html. Android Developer, «References - Android Plateform API 26 : Class View,». Lien : https://developer.android.com/reference/android/view/View.html. Android Developer, «References - Android Plateform API 26 : Class ViewGroup,». Lien : https://developer.android.com/reference/android/ view/ViewGroup.html. V. Tallapudi, «Android Layouts and Types of Android Layouts,» 2014.. Lien : https://www.coderefer.com/android-layouts-types-android-layouts/. Android Developer, «References - Android Plateform API 26 : R,». Lien : https://developer.android.com/reference/android/R.html. Android Developer, «References - Android Plateform API 26 : ImageView,». Lien : developer.android.com/reference/android/widget/ImageView.html. A. Hill, «Android ImageView ScaleType: A Visual Guide,» 25 Août 2016. Lien : robots.thoughtbot.com/android-imageview-scaletype-a-visual-guide. Références © Dr. Chaouche A.-C.