Ce Support de cours Spring contient :
- Architecture JEE (Over view)
- Spring Overview
- Spring IOC
- Spring MVC
- Spring Integration (RMI, JaxWS, JaxRS, JMS, JMX,...)
- Spring Security
Bon apprentissage à tous
Séminaire sur Machines, Deep Learning For Web Mobile and Embedded Application with DL4J and TFJS :
Les vidéos de ce séminaire sont publiée sur les adresses suivantes :
- https://www.youtube.com/watch?v=uGSa4NigFKs
- https://www.youtube.com/watch?v=2yRAu78slgc
- https://www.youtube.com/watch?v=1ThjK3xLWII
- https://www.youtube.com/watch?v=N7LCa6aiqFs
Ce séminaire a été animé à l’ENSET de Mohammedia, dans le cadre du Projet Européen H2020 CybSPEED (Cyber Physical Systems for Pedagogical Rehabilitation in Special Education) dans lequel notre laboratoire de recherche SSDIA (Signaux, Systèmes Distribués et Intelligence Artificielle) est partenaire aux cotés des pays partenaires (France, Espagne, Grèce, Bulgarie, Japan et Chillie). Un projet Multi-disciplinaire autour de l'Intelligence Artificielle, visant à créer un robot destiné à assister les personnes à besoins spécifiques, en particulier les personnes atteintes par la maladie de l’autisme. Ce séminaire traite deux thématiques principales Lattice Computing animé par le professeur Vassillis Kaburlasos, EMaTTech, KAVALA, GRECE et Outils de mise en oeuvre de Machines et Deep Learning pour les applications Web Mobiles et embarquées, animé par moi même. Ce séminaire a un caractère de formation, de sensibilisation et de maîtrise des outils de développement des algorithmes de l'IA pour un public hétérogène Multi-disciplinaire (Informatique, Génie Electrique, Génie Mécanique, Ingénierie Pédagogique, Biologie, Chimie, etc..) constitué principalement des doctorants de notre Labo SSDIA, d'autres Labo affiliés au CeDOC de la FST de Mohammedia ainsi que des enseignants chercheurs de l'ENSET, de EMaTTech Kavala, Grèce et d'autres enseignants chercheurs venant de d'autres centres comme CRMF de Marrakech.
Ce séminaire vise particulièrement à expliquer quelques concepts liés à l’intelligence artificielle. Principalement Machines et Deep Learning et comment mettre en œuvre les Frameworks de machines et deep lerning dans des applications Web, Mobile et embarquées en utilisant Principalement Deeplearning4J pour les applications Java coté backend ou coté FrontEnd Desktop, Web ou Mobiles Android, et TensorFlowJS pour les applications Java Scripts coté Browser Web et Coté Applications Mobiles Hybrides ou NodeJS coté Backend.
Cette série de vidéo aborde les éléments suivants :
• Concepes généraux de l’Intelligence Artificielle, L’IA Distribuée et Systèmes Multi Agents
• Concepts fondamentaux de Machines et Deep Learning
• Réseaux de neurones artificiels : MLP, CNN
• Période d’incertitude des réseaux de neurones
• Catalyseur de l’Intelligence Artificielle
o Architectures Parallèles GPU (CUDA, OpenCL)
o Systèmes Distribués
o Application Mobile et IOT
o Algorithmes de MDL
o Framework de MDL
• Machines et Deep Learning avec TensorFlowJS : Architecture
o Architecture et Mise en oeuvre
• Machines et Deep Learning avec le Framework DL4J
o Architecture et Mise en oeuvre
Ce Support explique quelques concepts de base de NodeJS et montre comment mettre en oeuvre la technologie NodeJS pour développer la partie Backend d'une application.
Les vidéos des démonstrations sont publiées sur les adresse suivantes :
- https://www.youtube.com/watch?v=-X_C1tS5-9Y
- https://www.youtube.com/watch?v=rE-xRH28m0s
- https://www.youtube.com/watch?v=tnxjkTvWoKA
Cette série explique les éléments suivants :
- Architecture Web
- Modèles Multi-Threads avec les entrées sorties bloquantes
- Modèles Single Thread avec les entrées sortie non bloquantes
-Technologie Node JS
- Comment créer une simple application Node JS avec java Script
- Architecture du Framwork Express
- Comment créer une application NodeJS avec Type Script
- Comment écrire des tests unitaires avec Jest
- Quelques concepts sur MongoDb
- Comment Créer une API Rest avec NodeJS, Express et MongoDb
- Comment tester l'API Rest
- Comment Créer la partie FrontEnd avec Angular.
Même si la qualité audio n'est pas bonne, ses vidéos peuvent aider ceux qui débutent dans NodeJS en attendant d'autres vidéos avec plus qualité audio et de contenu.
Bonne lecture
Découvrez le framework web Spring Boot qui a la cote !
Apprenez comment son système d'auto-configuration fonctionne.
Live coding et exemple de migration vers Spring Boot sont de la partie.
Un support de cours complet sur l'architecture JEE et l'industrialisation du génie logiciel. Ce support contient les parties suivantes :
- Tendances du génie logiciel
- Architecture JEE
- Services de l'infrastructure JEE (jdbc, jndi, rmi,servlet, jsp, jstl, jsf,EJB, JaxWS, JaxRS, JMS, JMX, ....)
- Maven : Outil d'industrialisation du génie logiciel
- Junit : Test Unitaires
- Hibernate
- Spring IOC et Spring MVC
- Struts 2
Bon apprentissage à tous
Maven
Ce support de cours contient les concepts fondamentaux de la sécurité des applications Web Statless avec Json Web Token. Des applications de mise en oeuvre de JWT et Spring Security pour les applications basées sur les Micro-services sont publiées ma chaîne vidéo Youtube :
https://www.youtube.com/user/mohamedYoussfi
Le code source des applications est publié sur mon compte GitHUB:
https://github.com/mohamedYoussfi/
Bon apprentissage
Pour accéder aux fichiers nécessaires pour faire ce TP, visitez: https://drive.google.com/folderview?id=0Bz7DokLRQvx7M2JWZEt1VHdwSE0&usp=sharing
Pour plus de contenu, Visitez http://liliasfaxi.wix.com/liliasfaxi !
Objectif général : Prendre en main Express js, le mini-framework de Node js le plus utilisé
objectifs spécifiques :
Installer Node js et Express js
Créer une application Express js
Router les requêtes
Recevoir des données à partir de l’URL d’une requête
Recevoir des données à partir du corps d’une requête
Traiter des fichiers uploadés
Utiliser un moteur de template
Utiliser une base de données
Utiliser des middlewares
Présentation d'un cours en JAVA/J2EE
Création et manipulations des objets en Java
** Connexion JDBC à la base de données
** Modèle en couches
** FrameworkHibernate
** Framewoek Spring MVC
Ce Support de cours Spring contient :
- Architecture JEE (Over view)
- Spring Overview
- Spring IOC
- Spring MVC
- Spring Integration (RMI, JaxWS, JaxRS, JMS, JMX,...)
- Spring Security
Bon apprentissage à tous
Séminaire sur Machines, Deep Learning For Web Mobile and Embedded Application with DL4J and TFJS :
Les vidéos de ce séminaire sont publiée sur les adresses suivantes :
- https://www.youtube.com/watch?v=uGSa4NigFKs
- https://www.youtube.com/watch?v=2yRAu78slgc
- https://www.youtube.com/watch?v=1ThjK3xLWII
- https://www.youtube.com/watch?v=N7LCa6aiqFs
Ce séminaire a été animé à l’ENSET de Mohammedia, dans le cadre du Projet Européen H2020 CybSPEED (Cyber Physical Systems for Pedagogical Rehabilitation in Special Education) dans lequel notre laboratoire de recherche SSDIA (Signaux, Systèmes Distribués et Intelligence Artificielle) est partenaire aux cotés des pays partenaires (France, Espagne, Grèce, Bulgarie, Japan et Chillie). Un projet Multi-disciplinaire autour de l'Intelligence Artificielle, visant à créer un robot destiné à assister les personnes à besoins spécifiques, en particulier les personnes atteintes par la maladie de l’autisme. Ce séminaire traite deux thématiques principales Lattice Computing animé par le professeur Vassillis Kaburlasos, EMaTTech, KAVALA, GRECE et Outils de mise en oeuvre de Machines et Deep Learning pour les applications Web Mobiles et embarquées, animé par moi même. Ce séminaire a un caractère de formation, de sensibilisation et de maîtrise des outils de développement des algorithmes de l'IA pour un public hétérogène Multi-disciplinaire (Informatique, Génie Electrique, Génie Mécanique, Ingénierie Pédagogique, Biologie, Chimie, etc..) constitué principalement des doctorants de notre Labo SSDIA, d'autres Labo affiliés au CeDOC de la FST de Mohammedia ainsi que des enseignants chercheurs de l'ENSET, de EMaTTech Kavala, Grèce et d'autres enseignants chercheurs venant de d'autres centres comme CRMF de Marrakech.
Ce séminaire vise particulièrement à expliquer quelques concepts liés à l’intelligence artificielle. Principalement Machines et Deep Learning et comment mettre en œuvre les Frameworks de machines et deep lerning dans des applications Web, Mobile et embarquées en utilisant Principalement Deeplearning4J pour les applications Java coté backend ou coté FrontEnd Desktop, Web ou Mobiles Android, et TensorFlowJS pour les applications Java Scripts coté Browser Web et Coté Applications Mobiles Hybrides ou NodeJS coté Backend.
Cette série de vidéo aborde les éléments suivants :
• Concepes généraux de l’Intelligence Artificielle, L’IA Distribuée et Systèmes Multi Agents
• Concepts fondamentaux de Machines et Deep Learning
• Réseaux de neurones artificiels : MLP, CNN
• Période d’incertitude des réseaux de neurones
• Catalyseur de l’Intelligence Artificielle
o Architectures Parallèles GPU (CUDA, OpenCL)
o Systèmes Distribués
o Application Mobile et IOT
o Algorithmes de MDL
o Framework de MDL
• Machines et Deep Learning avec TensorFlowJS : Architecture
o Architecture et Mise en oeuvre
• Machines et Deep Learning avec le Framework DL4J
o Architecture et Mise en oeuvre
Ce Support explique quelques concepts de base de NodeJS et montre comment mettre en oeuvre la technologie NodeJS pour développer la partie Backend d'une application.
Les vidéos des démonstrations sont publiées sur les adresse suivantes :
- https://www.youtube.com/watch?v=-X_C1tS5-9Y
- https://www.youtube.com/watch?v=rE-xRH28m0s
- https://www.youtube.com/watch?v=tnxjkTvWoKA
Cette série explique les éléments suivants :
- Architecture Web
- Modèles Multi-Threads avec les entrées sorties bloquantes
- Modèles Single Thread avec les entrées sortie non bloquantes
-Technologie Node JS
- Comment créer une simple application Node JS avec java Script
- Architecture du Framwork Express
- Comment créer une application NodeJS avec Type Script
- Comment écrire des tests unitaires avec Jest
- Quelques concepts sur MongoDb
- Comment Créer une API Rest avec NodeJS, Express et MongoDb
- Comment tester l'API Rest
- Comment Créer la partie FrontEnd avec Angular.
Même si la qualité audio n'est pas bonne, ses vidéos peuvent aider ceux qui débutent dans NodeJS en attendant d'autres vidéos avec plus qualité audio et de contenu.
Bonne lecture
Découvrez le framework web Spring Boot qui a la cote !
Apprenez comment son système d'auto-configuration fonctionne.
Live coding et exemple de migration vers Spring Boot sont de la partie.
Un support de cours complet sur l'architecture JEE et l'industrialisation du génie logiciel. Ce support contient les parties suivantes :
- Tendances du génie logiciel
- Architecture JEE
- Services de l'infrastructure JEE (jdbc, jndi, rmi,servlet, jsp, jstl, jsf,EJB, JaxWS, JaxRS, JMS, JMX, ....)
- Maven : Outil d'industrialisation du génie logiciel
- Junit : Test Unitaires
- Hibernate
- Spring IOC et Spring MVC
- Struts 2
Bon apprentissage à tous
Maven
Ce support de cours contient les concepts fondamentaux de la sécurité des applications Web Statless avec Json Web Token. Des applications de mise en oeuvre de JWT et Spring Security pour les applications basées sur les Micro-services sont publiées ma chaîne vidéo Youtube :
https://www.youtube.com/user/mohamedYoussfi
Le code source des applications est publié sur mon compte GitHUB:
https://github.com/mohamedYoussfi/
Bon apprentissage
Pour accéder aux fichiers nécessaires pour faire ce TP, visitez: https://drive.google.com/folderview?id=0Bz7DokLRQvx7M2JWZEt1VHdwSE0&usp=sharing
Pour plus de contenu, Visitez http://liliasfaxi.wix.com/liliasfaxi !
Objectif général : Prendre en main Express js, le mini-framework de Node js le plus utilisé
objectifs spécifiques :
Installer Node js et Express js
Créer une application Express js
Router les requêtes
Recevoir des données à partir de l’URL d’une requête
Recevoir des données à partir du corps d’une requête
Traiter des fichiers uploadés
Utiliser un moteur de template
Utiliser une base de données
Utiliser des middlewares
Présentation d'un cours en JAVA/J2EE
Création et manipulations des objets en Java
** Connexion JDBC à la base de données
** Modèle en couches
** FrameworkHibernate
** Framewoek Spring MVC
Distribuer Framework LabVIEW Personnalise par Luc DesruelleLuc Desruelle
Distribuer son Framework de projet, modèle de projet personnalisé, avec le gestionnaire de projet LabVIEW - version distribution personnalisée.
Sur un nouveau projet, afin de ne pas repartir d'une feuille blanche, les développeurs utilisent leur Framework de projet, qui correspond à leur structure de programme personnalisée.
Depuis la version LabVIEW 2012 un gestionnaire de projet permet d'ajouter ses modèles et de les distribuer facilement.
1. Éléments Graphiques Avancés
Interface graphique de base, éléments de sélection…
Formation Mobile
27 Aout au 1 Septembre 2015
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 1
3. Layout Dynamique
• Si le contenu du Layout est dynamique, ou non pré-déterminé, utiliser
un layout qui hérite de la classe AdapterView
• Permet de remplir le layout avec des vues à l’exécution
• Utilisation d’un Adapter dans cette sous-classe pour relier les données
au layout
• Permet d’extraire les données d’une source (tableau ou requête de base de
données)
• Convertit chaque entrée en une vue
• Ajoute la vue au layout
• Il existe plusieurs types d’adaptateurs..
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 3
Adaptateurs
4. ArrayAdapter
• Utiliser quand la source de données retourne un tableau
• D’abord créer l’adaptateur: prend trois paramètres :
• Contexte: instance de l’activité où il évolue
• Layout avec un textView pour chaque chaîne du tableau: par ex: ressource
prédéfinie: android.R.layout.simple_list_item_1
• Tableau ou liste : éléments à insérer
• Associer ensuite l’adaptateur à la liste (élément graphique de type
ListView)
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 4
Adaptateurs
6. ArrayAdapter
• Associer un comportement au clic sur un élément de la liste:
• Créer une classe anonyme dans laquelle définir le comportement au clic de
l’élément de la liste
• Définir cette classe comme Item Click Listener de votre liste
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 6
Adaptateurs
8. Liste Déroulante
• Appelées aussi Spinner
• Offre la même fonctionnalité qu’une Liste, mais en prenant moins
d’espace
• Remplacer l’élément prédéfini android.R.layout.simple_list_item_1 par
android.R.layout.simple_spinner_item par exemple.
• Associer un layout à utiliser quand la liste de choix apparaît avec
setDropDownViewResource
• Pour spécifier le comportement à la sélection d’un élément dans la liste
déroulante, implémenter les méthodes onItemSelected et
onNothingSelected de la classe OnItemSelectedListener
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 8
Adaptateurs
10. AutoCompleteTextView
• Utilise des données prédéfinies pour auto-compléter la chaîne entrée
par l’utilisateur par des suggestions
• Les suggestions sont présentées dans une liste de sélections, comme
pour le Spinner
• Sous classe de EditText:
• On peut la paramétrer de la même manière
• Contient un attribut supplémentaire : android:completionThreshold :
indique le nombre minimum de caractères qu’un utilisateur doit entrer
pour que les suggestions apparaissent
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 10
Adaptateurs
12. Grille
• GridView: élément graphique qui permet d’afficher les éléments dans une
grille de défilement à deux dimensions
• Les éléments sont automatiquement insérés dans la grille grâce à un
ListAdapter
• Déterminer les caractéristiques de la grille dans son élément XML :
• android:numColumns : Nombre de colonnes
• android:verticalSpacing : Espacement vertical
• android:horizontalSpacing : Espacement horizontal
• android:columnWidth : Nombre de pixels défini pour la largeur de la colonne
• android:stretch: indique, pour les grilles avec un nombre de colonnes défini à auto_fit,
ce qui doit arriver pour l’espace disponible, non occupé par les colonnes ou les espaces.
• S’il est égal à columnWidth, les colonnes seront étirées pour combler l’espace vide.
• S’il est égal à spacingWidth, les espaces entre les colonnes seront étirés pour combler
l’espace vide.
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 12
Adaptateurs
14. Listes Personnalisées
• Permettent de gérer les situations où les listes correspondent aux situations
suivantes:
• Les lignes ne suivent pas la même disposition
• Contiennent des éléments graphiques qui varient d’une case à l’autre
• Il faut:
• Définir la ligne individuelle dans un layout XML à part
• Créer vos propres adaptateurs, en surchargeant la méthode getView du ArrayAdapter
pour construire vos propres lignes
• getView retourne une ligne associée à la position fournie
• Utiliser un LayoutInflater
• Permet de convertir un layout en XML vers le vrai arbre de vues que cet XML représente.
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 14
Adaptateurs
18. Présentation
• Un Fragment représente un comportement ou une portion d’interface
utilisateur dans une activité
• Plusieurs fragments peuvent être combinés dans une seule activité pour
construire une interface à plusieurs volets (multi-pane)
• Un fragment peut être réutilisé dans plusieurs activités
• Un fragment :
• a son propre cycle de vie, mais est directement affecté par celui de son hôte
• reçoit ses propres entrées
• peut être ajouté ou enlevé dynamiquement pendant que l’activité s’exécute
• Vit à l’intérieur d’un ViewGroup dans la hiérarchie de son Activity
• Peut être ajouté à l’activité:
• Dans le fichier Layout XML, comme <fragment>
• Dans le code de l’application en l’ajoutant à un conteneur (ViewGroup) existant
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 18
Fragments
19. Fragments: Cycle de Vie
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 19
Éléments de Base d’une Application Android
Etat de l’Activité
Created
Started
Resumed
20. Fragments: Cycle de Vie
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 20
Éléments de Base d’une Application Android
Invoquée quand le fragment est associé à
une activity
Invoquée pour créer sa propre interface
utilisateur pour la première fois
Invoquée quand la méthode onCreate() de
l'activity se termine.
21. Fragments: Cycle de Vie
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 21
Éléments de Base d’une Application Android
Etat de l’Activité
Paused
Stopped
Destroyed
22. Fragments: Cycle de Vie
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 22
Éléments de Base d’une Application Android
Invoquée quand la hiérarchie de View
associée avec le fragment est enlevée.
Invoquée quand le fragment est dissocié
de l’ Activity
23. Création d’un Fragment
• Pour créer un fragment, il faut créer une classe qui hérite de
android.app.Fragment (ou une de ses sous-classes)
• Sous-classes utiles de Fragment:
• DialogFragment
• Affiche une boîte de dialogue flottante, au lieu d’utiliser des méthodes dans
votre activité, car il peut être rajouté à la pile des fragments de l’activité
• ListFragment
• Affiche une liste d’éléments gérés par un adaptateur
• Fournit plusieurs méthodes pour gérer une ListView
• PreferenceFragment
• Affiche une hiérarchie d’objets Preference comme liste
• Permet de créer une activité « settings » pour votre application
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 23
Fragments
24. 1. Création de l’Interface du Fragment
• Définir une interface pour le fragment dans un fichier Layout séparé
• Implémenter la méthode de transition onCreateView pour construire
l’interface du fragment
• Doit retourner un objet View représentant la racine du fragment
• Utiliser un LayoutInflater pour construire l’interface à partir des ressources
XML
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 24
Création d’un Fragment
Conteneur de l’activité parente, dans
lequel le fragment sera inséré
ID du Layout à parcourir
25. 2. Ajout d’un Fragment à une Activité
• Soit déclarer le fragment dans le fichier layout XML de l’activité grâce à
l’élément XML <fragment>
• android:name à classe du fragment à instancier dans le layout
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 25
Création d’un Fragment
26. 2. Ajout d’un Fragment à une Activité
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 26
Création d’un Fragment
• Soit ajouter le fragment à un élément ViewGroup dans le code
• Créer une transaction de fragment (ajout, suppression…) grâce au
FragmentManager
• Ajouter un fragment en utilisant la méthode add(<conteneur>, <fragment>)
27. Ajout d’un Fragment sans UI
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 27
Création d’un Fragment
• Un fragment peut être utilisé pour fournir un comportement en arrière
plan pour l’activité sans présenter d’interface supplémentaire
• Pour cela, ajouter le fragment à l’activité en utilisant add(Fragment,
<tag_unique_du_frag>)
• Il est inutile d’implémenter onCreateView
28. FragmentManager
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 28
Fragments
• Le FragmentManager permet de gérer les fragments de votre activité
• Appeler getFragmentManager() à partir de votre activité
• Il permet de:
• Manipuler des fragments existants dans votre application grâce à
findFragmentById() ou findFragmentByTag()
• Gérer la pile accessible via le bouton Back de votre appareil:
• Dépiler un fragment de la pile des fragments, avec popBackStack()
• Associer un Listener aux changement dans la pile avec
addOnBackStackChangedListener()
29. Gérer les Transactions
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 29
Fragments
• Possibilité d’ajouter, supprimer, remplacer… des fragments dans une
activité, en réponse à une interaction utilisateur
• Chacun de ces changements est appelé Transaction
• Utilisation de FragmentTransaction
• Il est possible de sauvegarder chaque transaction dans la pile de
retour (Back Stack) de l’activité, pour permettre à l’utilisateur de
revenir en arrière
35. Menu d’Options et Action Bar
• Les APIs Menu étaient à la base destinées à définir le comportement
(entre autres) du bouton Menu du téléphone, qui, depuis la version
3.0, est devenu obsolète
• Plusieurs terminaux récents sous Android ne possèdent plus ce bouton
Ø Les fonctionnalités du menu d’options sont désormais définies dans le
Action Bar
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 35
Menus
1. App Icon
2. Action Items
3. Action Overflow
36. Action Bar
• La barre d’action (Action Bar) est une caractéristique qui identifie
l’emplacement de l’utilisateur et lui fournit des actions et des modes
de navigation
• Fournit:
• Un espace dédié pour donner à votre application une identité et indiquer où
se trouve l’utilisateur dans l’application
• Des actions importantes et accessibles (recherche, par ex)
• Navigation consistante et la possibilité de changer de vue dans une
application (grâce aux tabulations ou liste déroulantes)
• Remarque:
• Pour exécuter ce qui suit, ajouter :
compile "com.android.support:appcompat-v7:21.0.+ »
à la section dependencies du fichier build.gradle de votre application
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 36
Menu
37. Action Bar
• Les actions de la barre sont définies dans un fichier XML se trouvant
dans le répertoire res/menu
• Chaque action est représentée par un item, avec de préférence trois
attributs: ID, Icône et Titre
• Dans le fichier Manifest, associer un thème à votre application
supportant cette barre:
android:theme="@style/Theme.AppCompat.Light"
• Faire hériter votre activité de la classe ActionBarActivity
• Implémenter les méthodes (générées automatiquement):
• onCreateOptionsMenu: construit le menu en appelant le menu XML
• onOptionsItemSelected: définit le comportement de chacune des actions de
la barre
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 37
Menus
41. Menu Contextuel
• Un menu contextuel est un menu flottant qui
apparaît quand l’utilisateur fait un clic-long
sur un élément
• Fournit des actions qui affectent le contenu
cliqué et/ou son conteneur
• A partir de la version 3 d’Android, utiliser
plutôt le contextual action mode pour réaliser
des actions sur le contenu sélectionné
• Affiche les actions qui affectent le contenu
sélectionné dans une barre en haut de l’écran,
et permet à l’utilisateur de sélectionner
plusieurs éléments
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 41
Menus
42. Mode Contextuel
• Changer vers le mode contextuel si:
• L’utilisateur fait un clic long sur un élément
• L’utilisateur sélectionne une case à cocher (ou élément équivalent) de la
page
• La barre d’action contextuelle prend momentanément la place de la
barre d’action
• Il est possible d’activer ce mode dans deux cas:
• Pour des widgets individuels
• Pour un groupe d’éléments regroupé dans une liste ou une grille, par ex.
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 42
Menus
43. Mode Contextuel : Pour un Élément Individuel
1. Implémenter l’interface ActionMode.Callback
• Spécifier les actions de la barre contextuelle
• Répondre au clic sur les actions de la barre
• Gérer les autres évènements du cycle de vue du mode d’action
2. Appeler la méthode startActionMode dans l’écouteur de
l’évènement qui déclenche le mode d’action (le long clic par
ex.)
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 43
Menus
47. Mode Contextuel : Pour une Liste d’Éléments
1. Implémenter l’interface AbsListView.MultiChoiceModeListener
2. L’associer à la liste avec setMultiChoiceModeListener()
3. Appeler setChoiceMode() avec l’argument
CHOICE_MODE_MULTIPLE_MODAL
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 47
Menus
50. Mode Popup
• Affiche une liste d’éléments dans une liste verticale rattachée à la vue
qui a invoqué le menu
• Utile pour fournir des actions associées au contenu spécifique
• Les action d’un menu Popup ne devraient pas affecter directement le
contenu correspondant (c’est le menu contextuel qui s’en charge)
• Pour le définir:
• Instancier un objet PopupMenu prenant le contexte courant et la vue
associée au menu
• Utiliser le MenuInflater pour construire les éléments du menu dans l’objet
retourné par PopupMenu.inflate()
• Appeler PopupMenu.show()
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 50
Menus