0% ont trouvé ce document utile (0 vote)
154 vues94 pages

Android Course

Transféré par

Olfa Faidi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
154 vues94 pages

Android Course

Transféré par

Olfa Faidi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Android

Éléments de base
ISSAT Mateur
Chaker Ben Mahmoud
Mars 2023
Introduction
2

 Android est un système d’exploitation Open


Source basé sur un noyau Linux
 Il est conçu pour Smartphones, Tablettes,
téléviseurs, . . .
 Initialement développé par une startup du même

nom, rachetée par Google en 2005


 En 2008, le gPhone est lancé aux États-Unis

dans un partenariat entre Google et T-mobile


Introduction
3

 Android tire partie des particularités des Smartphones :


 interface homme machine adapté (tactile, widget)
 divers modes : vibreur, sonnerie, silencieux, alarme
 notifications (d'applications, d'emails, de SMS, d'appels en instance)
 de boussole, accéléromètre, GPS
 divers capteurs (gyroscope, gravité, accélération linéaire, baromètre)
 NFC (Near field communication) basé sur RFID (radio-frequency identification)
 téléphonie (GSM) et réseau EDGE, 3G, LTE (4G)
 En plus de ce qu'on peut avoir sur un ordinateur : navigateur, bibliothèques
graphiques 2D, 3D (Open GL), base de données (SQLite), applications de rendu
multimédia (audio, vidéo, image) de divers formats, réseau Bluetooth et Wi-Fi,
caméra,…
Stratégie et rentabilité d’Android
4

 Revenus basés sur la vente d’applications et l’intégration


de la publicité
 Stratégie de développement :
 Basée sur l’Open Source
 Un «store» de plusieurs milliers applications « Play Store »

 Des mises à jours régulières et faciles d’installation

 Un système ouvert pour facilité sa diffusion et son adaptation


sur différents matériels.
Stratégie et rentabilité d’Android
5
Historique (1/5)
6

Version
Version Nom de code Date de sortie %
API
4.1.x 9 juillet 2012 16 0,2 %
4.2.x Jelly Bean 13 novembre 2012 17 0,3 %
4.3 24 juillet 2013 18 0,1 %
4.4 KitKat 31 octobre 2013 19 1,4 %
5.0 3 novembre 2014 21 0,7 %
Lollipop
5.1 9 mars 2015 22 3,2 %
6.0 Marshmallow 8 octobre 2015 23 5,1 %
Historique (2/5)
7

Nom de Version
Version Date de sortie %
code API
7.0 22 août 2016 24 3,4 %
Nougat
7.1 4 octobre 2016 25 2,9 %
8.0 21 août 2017 26 4%
Oreo
8.1 6 décembre 2017 27 9,7 %
9 Pie 1er décembre 2018 28 18,2 %
10 Android 10 3 septembre 2019 29 26,5 %
11 Android 11 8 septembre 2020 30 24,3 %
Qu’est-ce qu’un programme Android ?
8

 Android offre un framework riche mais suffisamment rigide et étanche :


 Du XML pour les interfaces
 Les activités : briques de base d’une application présentant une vues pour les users
 Les services : il s'agit d'une activité tâche de fond sans vue associée
 Les fournisseurs de contenus : abstraction de données
 Les intentions (intents) : interagir avec le système

 Android permet d’accéder des fonctionnalités avancées de l’appareil :


 Stockage (base de données, support externe)
 Réseau (Wifi, Bluetooth, 2G, 3G, 4G, . . . )
 Multimédia (lecture audio, photo, caméra)
 GPS (géolocation des applications par différents moyens)
 Services de téléphonie (appels, SMS)
Architecture
9
10 Environnement de développement

Development Tools

Android Studio + SDK Android

avec
AVD : Android Virtual Device
Environnement de développement
11

L'environnement JAVA pour PC

 Le JDK (version 15 ou 17)


 [Link]

Le Bundle
 Android Studio
 [Link]
Environnement de développement
12

Téléchargement et installation de JDK


Environnement de développement
13

Téléchargement et installation de Android Studio


Le SDK d’Android
14

 l'Android SDK (Software Development Kit) amène des outils


 un environnement de développement
 une machine virtuelle Java adaptée : la Dalvik virtual machine
 un environnement debugueur DDMS (Dalvik Debug Monitor Service)
utilisant adb (Android Debug Bridge)
 un environnement de construction d'application Android aapt
(Android Asset Packaging Tool)
 des émulateurs de téléphones ou de tablettes AVD (Android Virtual
Device)
 et une énorme API
(voir à [Link]
Android Development Tools : AVD
15

 L’émulateur Android permet de simuler plusieurs


terminaux
 Informations nécessaires à la configuration d’un AVD :
 Une version cible du SDK
 Des informations sur le stockage (mémoire, carte SD)

 Résolution de l’appareil choisi


AVD Android studio
16
AVD Android studio
17
Terminal virtuel
18
Environnement sous Android Studio
19
Android Runtime : Compilation
20

 Deux passages :
 .JAVA vers .CLASS
 Concaténation des .CLASS en .DEX

 Une application c'est :


 Lebytecode DEX
 des ressources (images, sons...)

 Le tout regroupe dans un package .APK


21

Développement des
applications sous Android
Les composants d’une application Android
22

Composants applicatifs
 activités

Une activité correspond à un écran

graphique Une activité hérite de la classe

Activity

 L’activité décrit l’interface graphique ET


les interactions avec l’utilisateur
Une application est constituée de plusieurs
écrans ( plusieurs activités)
 Fragments

Fragment ou portion d’une interface

graphique Permet de rendre modulaire les

vues
Un fragment peut être réutilisé dans
plusieurs écrans (différentes ‘activity’)
Les composants d’une application Android
23
Composants applicatifs
 services

Processus d’arrière plan sans 'User Supervision batterie
 Cours de Bourse
Interface' Mise à jour des données et des
Lecteur MP3

activités Notifications

 fournisseurs de contenu
 Sources de données
partageables
Contact
Agenda Personnalisé

 widget
 composant graphique qui s’installe sur le bureau
Android
Calendrier
Meteo
Les composants d’une application Android
24

Éléments d’interaction
 Intent
 Diffusion de messages systèmes interapplications
 Les messages peuvent être explicites ou implicites (‘action
resolver’)

 Broadcast Receiver
 Récepteurs d’Intents
 Enregistrement d’un Receiver auprès d’une activité = écoute de certains
 Intents Principe du design pattern Observer
– Un émetteur: Observable -> signale l’évément
– Un récepteur : Observer -> en écoute de l’événement et + action
spécifique sur événement

 Notifications
 une notification signale une information à l’utilisateur sans interrompre
ses actions en cours
Création d’un projet
25
Création d’un projet
26
Structure d’un projet Android-Studio
27

 Manifest : décrit les propriétés


de l’application
 Code java : contient les fichiers
source
 res : contient les ressources
(images, descriptions
d’interfaces, valeurs)
 Organisé en sous dossiers par
types
 Scripts Gradle : Gestion des
projets
[Link]
28

 [Link]
 Décrit les composants de l’application
 Un point d’entrée potentiel dans l’application
 Une application peut lancer un composant différent (pas de 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, écran multitouche, . . .
[Link]
29

<manifest xmlns:android>
<application
android:allowBackup="true" android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules" android:icon="@mipmap/ic_launcher"
android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/[Link]"
tools:targetApi="31">

<activity android:name=".MainActivity" android:exported="true" >


<intent-filter>
<action android:name="[Link]" />
<category android:name="[Link]" />
</intent-filter>
<meta-data android:name="[Link].lib_name" android:value="" />
</activity>

</application>
</manifest>
[Link]
30

 Manifest : Nom du paquetage, Versions, SDK


 Application : Nom, Icône, Eléments constituant l’application (activités, services, …)
 Permissions : Accès aux capteurs, Accès au réseau, Accès à la téléphonie,…
 Instrumentation (pour les tests)
Les ressources
31

 Application embarquée tout doit être dans le fichier .apk téléchargé


 Le répertoire res contient toutes les ressources qui seront mises dans
le apk :
 drawable (images)
 layout (description en XML des interfaces)
 values (définitions en XML de constantes : chaînes, tableaux, valeurs
numériques …)
 mipmap (les icones de l’application)
 xml (fichiers XML utilisés directement par l’application)
Les ressources
32

 Les ressources de type valeur sont décrites dans des


fichiers XML ayant la forme suivante :
<?xml version="1.0 “ encoding= “utf-8 “?>
<resources>
<color name= "coulfond“>#AA7B03</color>
<integer name= “limite”>567</integer>
<integer-array name= “codes_postaux“>
<item>64100</item>
<item>33000</item>
</integer-array>
<string name= “mon_titre”>Un titre</string>
<string-array name= “planetes“>
<item>Mercure</item>
<item>Venus</item> Les noms (identificateurs)
</string-array>
servent a les désigner :
<bool name=“actif“>true</bool>
<dimen name “taille“>55px</dimen>
• Dans d’autres fichiers XML
</resources> • Dans le code
Les ressources: La classe R
33

 C’est une classe générée par Eclipse qui permet à l’application


d’accéder aux ressources
 Elle contient des classes internes dont les noms correspondent aux
types de ressources (id, drawable, layout …)
 Elle est constituée à partir des fichiers placés dans les sous
répertoires du répertoire res
 Une propriété est créée pour :
 Chaque image placé dans drawable
 Chaque identificateur défini dans des fichiers XML (objets d’interface,
constantes)
 Chaque fichier placé dans les répertoires xml , raw …
Utilisation des ressources
34

 Référencement d’une ressource dans un fichier xml. La forme


générale est : "@type/identificateur"
Par exemple : @string/machaine
Fait référence à une chaine contenue dans un fichier XML placé
dans le répertoire res/values et définie comme suit :
<resources>
<string name="machaine">Contenu de cette chaine</string>
</resources>

 Référencement d’une ressource dans le code. La forme générale


est : [Link]
Par exemple :
[Link] Fait référence à la même chaine
La classe Resources
35

 Permet l’accès aux ressources répertoriées dans R


 On obtient une instance de cette classe par getResources() de l’activité
 Principales méthodes de la classe Resources (le paramètre est un identifiant
défini dans R de la forme [Link]) :
 boolean getBoolean(int)
 int getInteger(int)
 int[] getArray(int)
 String getString(int)
 String[] getStringArray(int)
 int getColor(int)
 float getDimension(int)
 Drawable getDrawable(int)
 Exemple :
String titre = getResources().getString([Link].ma_chaine);
Accès aux ressources dans l’application
36

 Mise en place de l’interface principale


setContentView([Link].nom_du_fichier_xml);
 Accès direct à une valeur ou à une ressource :

String titre = getResources().getString([Link].texte_titre);

Drawable monImage =
getResources().getDrawable([Link].nom_de_l_image)
Les composants d’une application Android
37

 Une activité = un programme + une interface


 Un service = un programme sans interface
 Une application =
 Une activité principale
 Eventuellement une ou plusieurs activités secondaires

 Eventuellement un ou plusieurs services

 Eventuellement un ou plusieurs écouteurs d’intentions diffusées

 Eventuellement un ou plusieurs fournisseurs de contenu


Les activités
38

 Classe qui hérite de Activity ou d’une classe dérivée de Activity


(par exemple de MapActivity pour utiliser Google maps, ListActivity
ou TabActivity pour des interfaces particulières)
 On surcharge certaines méthodes qui sont appelées par Android
pour définir le comportement :
 onCreate lors de la création
 onDestroy lorsque l’activité se termine
 onStart lorsque l’activité démarre ou redémarre
 onPause lorsque l’activité n’est plus en premier plan
 onResume lorsque l’activité revient en premier plan
 onStop lorsque l’activité n’est plus visible
 onRestart lorsque l’activité redevient visible
Les activités
39
40 Les interfaces

Les Layouts
Qu'est-ce que Layout ?
41

 Une Layout Android est une classe qui permet


d'organiser la façon dont ses enfants apparaissent sur
l'écran.
 Tout ce qui est une View (ou hérite de View) peut être un
enfant d'une Layout.
 Toutes les Layouts héritent de ViewGroup (qui hérite
de View) afin que vous puissiez imbriquer les mises en
page.
 Vous pouvez également créer votre Layout personnalisée
en créant une classe qui hérite de ViewGroup.
Les types des Layouts
Les Layouts
43

 View est la classe de base des composants de


l'interface utilisateur tels que TextView, Button,
EditText, etc.
 Une ou plusieurs View peuvent être regroupées dans
un ViewGroup.
 Un ViewGroup fournit la mise en page Android dans
laquelle nous pouvons ordonner l'apparence et la
séquence des vues.
 Des exemples de ViewGroup sont LinearLayout,
FrameLayout, RelativeLayout, ConstraintLayout etc.
La classe View
44

Attributs principaux
 Orientation

Sens de placement des vues dans un conteneur

android:orientation = vertical | horizontal
 Taille
 Surface prise par la vue
 android:layout_width = ??px | fill_parent | wrap_content
 android:layout_height = ??px | fill_parent | wrap_content
 Gravité
 Alignement d'une vue dans son conteneur
 android:layout_gravity = left | center_horizontal | top | bottom | right
Types de Layout Android
45

 Android fournit les ViewGroups :


 LinearLayout : aligne tous les enfants dans une seule
direction, verticalement ou horizontalement
 RelativeLayout : qui affiche les vues enfants dans des
positions relatives
 AbsoluteLayout : permet de spécifier l'emplacement
exact des vues et widgets enfants
 TableLayout : est une vue qui regroupe ses vues
enfants en lignes et colonnes
 FrameLayout : est un espace réservé à l'écran qui est
utilisé pour afficher une seule vue
Types de Layout Android
46

 ListView : est un groupe de vues qui affiche une


liste d'éléments déroulants
 GridView : affiche les éléments dans une grille de
défilement bidimensionnelle. Les éléments de la
grille proviennent du ListAdapter associé à cette
vue
Attributs d’une Layout Android
47

 android:id : Il s'agit de l'ID qui identifie de manière unique la vue


 android:layout_width : C'est la largeur de la vue
 android:layout_height : C'est la hauteur de la vue
 android:layout_margin : Il s'agit de l'espace supplémentaire en dehors de la vue.
 android:layout_padding : Il s'agit de l'espace supplémentaire à l'intérieur de la vue
 android:layout_gravity : Cela spécifie comment les vues enfants sont positionnées
 android:layout_weight : Cela spécifie la quantité d'espace supplémentaire dans
la vue qui doit être allouée à la vue
 android:layout_x : Cela spécifie la coordonnée x de la vue
 android:layout_y : Cela spécifie la coordonnée y de la vue
LinearLayout
48

 LinearLayout est un ViewGroup qui organise


les View enfant dans une seule direction,
verticalement ou horizontalement.
RelativeLayout
49

 RelativeLayout est une mise en page dans


laquelle nous pouvons organiser les
vues/widgets en fonction de la position des
autres vues/widgets.
 Il est indépendant de la vue horizontale et
verticale et nous pouvons l’arranger selon sa
satisfaction.
RelativeLayout
50
LinearLayout vs RelativeLayout
51

DispositionLinéaire Disposition relative


Nous pouvons ajuster les vues et les widgets Nous pouvons ajuster les vues et les widgets
de manière linéaire, c’est-à-dire en fonction de sa satisfaction.
horizontalement et verticalement.
L’attribut layout_weight dans la disposition Divers attributs tels
linéaire est utilisé pour spécifier la taille que : layout_toRightOf, layout_toLeftOf,
égale ou spécifique du widget et de la vue layout_below, layout_alignParentTop,
particuliers à l’aide de l’attribut suivant. layout_top, layout_alignParentLeft,
android:layout_weight = ‘0’ layout_alignParentRight sont utilisés pour
Ici, le poids est spécifié à 0 afin de donner spécifier la position de chaque vue et
une taille ou un espace égal à chaque vue widget.
ou widget.
Il est utile lorsque nous organisons les vues C’est utile lorsque nous organisons les vues
de manière linéaire de manière relative.
ConstraintLayout
52

 Le ConstraintLayout permet de créer des vues


complexes avec une hiérarchie de vue plate (sans
créer de groupe de vue imbriqué), cela permet
d’améliorer considérablement les performances les
fichiers de vues que vous créez.
 Il permet aussi de positionner et de dimensionner
des widgets d’une manière flexible
 Il est similaire au RelativeLayout en ce sens ou les
widgets sont positionner par rapport aux widgets
frère ou par rapport au container parent.
TableLayout
53

 TableLayout organise les View qu'il contient


sous forme de tables.
 TableLayout contient un ou
plusieurs TableRow
 Chaque TableRow est une ligne dans le
tableau,
 Les View enfant peuvent être placées dans
une cellule ou dans une cellule fusionnée à
partir de cellules consécutives d'une ligne..
TableLayout
54
GridLayout
55

 GridLayout utilise une grille de lignes infiniment fines


pour séparer sa zone de dessin en: des lignes, des
colonnes.
 À l'aide des spécifications de ligne et de colonne, vous
pouvez spécifier comment les lignes et les colonnes
sont requises et comment les éléments doivent être
orientés.
 Pour ce faire, vous pouvez utiliser les paramètres de
disposition rowSpec et columnSpec.
GridLayout
56

<GridLayout android:rowCount="2" android:columnCount="2" >


<ImageView android:layout_height="90dp"
android:layout_width="130dp"
android:src="@drawable/image_1" />
<ImageView android:layout_height="90dp"
android:layout_width="130dp"
android:src="@drawable/image_2" />
<ImageView android:layout_height="90dp"
android:layout_width="130dp"
android:src="@drawable/image_3" />
<ImageView android:layout_height="90dp"
android:layout_width="130dp"
android:src="@drawable/image_4" />
</GridLayout>
Gérer les Boutons
57

<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button"
/>
Gérer le clic bouton
58

Button b1= findViewById([Link].button1);

[Link](new [Link]() {
@Override
public void onClick(View view) {

/** Votre code ici ***/

}
});
Evénements généraux
59

 Tous les éléments d’interface (conteneurs et widgets) possèdent


les méthodes suivantes :
Événements spécifiques
60


EditText et TextView
Les labels de texte : TextView
61

 En XML
<TextView
android:id="@+id/textview1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!" />

 Utilisation
TextView a = findViewById([Link].textview1);
[Link]("Salem");
Les labels de texte : TextView
 Des mises en formes pour les TextView
 android:textSize => taille du text
 android:textStyle => style du text

 android:textAlignment => alignement du text

 android:textColor => couleur du text


Les labels de texte : TextView
Exemple XML

android:layout_marginTop="100px"
android:layout_marginBottom="50px"
android:text="TextView"
android:textAlignment="center"
android:textColor="#AE2828"
android:textSize="34sp"
android:textStyle="bold"
EditText (XML)
64

<EditText
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:text="Name" />

 Quelques valeurs courantes de android:inputType:


• textPersonName, textUri, textEmailAddress, textPassword,
textVisiblePassword, number, phone, date, time, textMultiLine
EditText (JAVA)
65

 Comment récupérer ou modifier un editText

EditText e1 = findViewById ([Link].editText1);

// Set Text:
[Link]("New Text");

// Get Text
String text = [Link]().toString();
EditText (JAVA)
66

 Evènement lors de changement du text

EditText e1=findViewById([Link].e1);

[Link](new TextWatcher() {
@Override
public void afterTextChanged (CharSequence charSequence, int i, int i1, int i2) {

/** Votre code ici ***/

}
});
Les images
67

 En XML
<ImageView android:id="@+id/logoenig"
android:src="@drawable/enig"
android:layout_width="100px"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal" >
</ImageView>

 Par la programmation
ImageView image = new ImageView(this);
[Link]([Link]);
[Link](image);
Les Spinner (liste déroulante) (1/4)
68
Les Spinner (liste déroulante) (2/4)
69

1er Méthode : Remplissage Statique

Et dans le fichier [Link] :


Les Spinner (liste déroulante) (3/4)
70

2ème Méthode : Remplissage Dynamique


<Spinner
android:id="@+id/spinner1"
android:layout_width="wrap_content"
android:layout_height="wrap_content " />
 Code Java
String[] items={"GCR", "GEA", "GCP"};

Spinner spinner1 = findViewById([Link].spinner1);

ArrayAdapter<String> adpt=new
ArrayAdapter<String>(this,[Link].simple_spinner_item,items);

[Link]([Link].simple_spinner_dropdown_item);

[Link](adpt);
Les Spinner (liste déroulante) (4/4)
71

 Gestion des événements des Spinner


[Link](new [Link]() {

@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
spin=[Link](i).toString();
}

@Override
public void onNothingSelected(AdapterView<?> adapterView) {

});
Case à cocher : CheckBox (1/3)
72

<CheckBox
android:id="@+id/chkIos"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="IPhone" />

<CheckBox
android:id="@+id/chkAndroid"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Android"
android:checked="true" />

<CheckBox
android:id="@+id/chkWindows"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Windows Phone" />
Case à cocher : CheckBox (2/3)
73

CheckBox chkIos = findViewById([Link]);


CheckBox chkAndroid = findViewById([Link]);
CheckBox chkWindows = findViewById([Link]);

[Link](new [Link](){
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
if (isChecked) {
// Iphone sélectionné
}
else {
// Iphone non sélectionné
}
}
});
Case à cocher : CheckBox (3/3)

 Pour récupérer une liste des valeurs (String) des checkbox


sélectionnées :
List<CheckBox> list=new ArrayList<>();

[Link](findViewById([Link].checkBox1));
[Link](findViewById([Link].checkBox2));
[Link](findViewById([Link].checkBox3));

ArrayList<String> valeurs=new ArrayList<String>();


for (CheckBox c : list) {
if ([Link]()) {
[Link]([Link]().toString());
}
}
Bouton radio (1/3)
75

<RadioGroup
android:id="@+id/gr1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical">

<RadioButton android:id="@+id/r1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="CGR" />

<RadioButton android:id="@+id/r2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="GEA" />

</RadioGroup>
Bouton radio (2/3)

RadioGroup g1=findViewById([Link].gr1);

int idradio = [Link]();

String s="";
if(idradio ==[Link].r1){
s="GCR111";
} else if(idradio ==[Link].r2){
s="GCR222";
}
Bouton radio (3/3)
77

RadioGroup aa = findViewById([Link].gr1);

[Link](new [Link]() {

@Override
public void onCheckedChanged(RadioGroup radioGroup,int i) {
if (i == [Link].r1) {
[Link](getApplicationContext(), "choice: GCR",
Toast.LENGTH_SHORT).show();
} else if (i == [Link].r2) {
[Link](getApplicationContext(), "choice: GEA",
Toast.LENGTH_SHORT).show();

}
}
});
Les Toasts
78

[Link](getApplicationContext(), “texte” , Toast.LENGTH_LONG).show();


Les menus (1/5)
79

 Ajouter le dossier menu aux ressources


Les menus (2/5)
80

 Sélectionner le type menu


Les menus (3/5)
81

 On crée maintenant le fichier [Link]


Les menus (4/5)
82

 Exemple d’un fichier [Link]


<menu xmlns:android="[Link]
<item
android:id="@+id/deps"
android:title="Listes des Dépatements"/>
<item
android:id="@+id/etds"
android:title="Listes des Etudiants "/>
<item
android:id="@+id/mats"
android:title="Listes des Matières"/>
<item
android:id="@+id/exit"
android:title="exit"/>
</menu>
Les menus (5/5)
83

 Integer le menu dans l’application (MainActivity)


public boolean onCreateOptionsMenu(Menu menu)
{
getMenuInflater().inflate([Link].menu1, menu);
return true;
}

public boolean onOptionsItemSelected(MenuItem item)


{
switch ([Link]()) {
case [Link]:
Intent int1= new Intent(getApplicationContext(), [Link]);
startActivity(int1);
return true;
case [Link]:
finish();
return (true);
}
return ([Link](item));
}
Les menus (5)
84
Boite de dialogue (1/2)
85

[Link] build = new [Link]([Link]);

[Link]("ENIG");
[Link]("Voulez vous continuer ? ");

[Link](false);
[Link]("Oui",null);

AlertDialog dialog = [Link]();


[Link]();
Boite de dialogue (2/2)
86

 Avec un traitement (Si oui ou non)


[Link] build = new [Link]([Link]);

[Link]("ENIG");
[Link]("Voulez vous continuer ? ");

[Link]("Oui", new [Link]() {


public void onClick(DialogInterface dialog, int id) {
// User clicked OK button
}
});
[Link]("Non", new [Link]() {
public void onClick(DialogInterface dialog, int id) {
// User cancelled the dialog
}
});
AlertDialog dialog = [Link]();
[Link]();
Communication entres les activités (1/2)
87

Intent it1 = new Intent (getApplicationContext(), [Link]);


startActivity (it1);
Communication entres les activités (1/4)
88

 Envoi des valeurs d’une activité à une autre activité


Button bok = findViewById ([Link].envoie1);
bok. setOnClickListener (new [Link]() {
@Override
public void onClick(View v) {
Intent it1 = new Intent (getApplicationContext(), actv_cible.class);
[Link]("dept", "GCR");
[Link]("niv", "1ere");
startActivity(it1);
}
});
Communication entres les activités (2/4)
89

 Récupération des valeurs dans l’activité cible

Bundle bundle = getIntent().getExtras();


String a1= [Link]("dept");
String a2= [Link]("niv");
Communication entres les activités (3/4)

 Pour envoyer une liste d'éléments dans un intent sous Android, vous
pouvez utiliser la méthode putStringArrayListExtra(String name,
ArrayList<String> value) de l'objet Intent.
 Cette méthode permet d'ajouter une liste de chaînes de
caractères à l'intent sous le nom donné en argument.
 Exemple :
ArrayList<String> valeurs = new ArrayList<String>();
Intent it1 = new Intent (getApplicationContext(), [Link]);
[Link]("niv", valeurs);
startActivity(it1);

 Et pour récupérer la liste :


ArrayList<String> names = getIntent().getStringArrayListExtra("niv");
Communication entres les activités (4/4)

 Vous avez d'autres possibilités pour passer une liste d'objets


entre activités telles que :

 utiliser la méthode putParcelableArrayListExtra(String


name, ArrayList<T> value) pour envoyer une liste d'objets
implémentant l'interface Parcelable,

 utiliser la méthode putSerializableExtra(String name,


Serializable value) pour envoyer une liste d'objets
implémentant l'interface Serializable

 utiliser GSON pour convertir votre liste en chaine de


caractère JSON, et la passer avec putExtra
ListView (1/2)

 Remplir un ListView avec une liste des données


// on crée un vecteur des données à afficher
Vector<String> liste_data= new Vector<String>();
liste_data.add("Produit1"); liste_data.add("Produit 2"); liste_data.add("Produit 2");

// on remplit la ListView avec la data chargée


ListView lv = findViewById([Link].liste1);

ArrayAdapter<String> adapter = new ArrayAdapter<String>


(this,[Link].simple_list_item_1, [Link].text1, liste_data);

[Link](adapter);
ListView (2/2)

 Faire un traitement sur un élément sectionné de la liste


ListView lv = findViewById([Link].liste1);

[Link](new [Link]() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
//On récupère l’item dans un String
String item = (String) [Link]().getItem(i);

/*
Ici votre traitement sur l’élément sectionné
*/
}
});
Eléments de base – Android

Vous aimerez peut-être aussi