Développement d'une application mobile I 420-3A4-SO Cours #1 BONNES PRATIQUES, CYCLE DE VIE ET INTRODUCTION A ANDROID Bonnes pratiques Les 4 qualités à garder en tête lors du développement Expérience UI vs UX Fonctionalité Performance & Stabilité Sécurité & Confidentialité Bonnes pratiques Respect des nomenclatures Nom de classes commence avec Majuscule Nom de méthodes et attributs en minuscule "m" au début des membres d'une classe: Ok, pas renforcé Standard des parenthèse et accolades if (b = 3) { doSomething(); } if (b=3) doSomething(); if (b=3) doSomething(); Bonnes pratiques Utilisation des annotations Java @Override @Deprecated @SuppressWarning Logging Avec parcimonie Ok, mais pas trop ! Commentaires On le répète jamais assez. Thème d'une application Accent sur l'accessibilité S'assurer du contraste entre le texte et le background https://material.io/resources/color/ Démo personnalisation de theme Colors.xml vs theme.xml Cycle de vie d'une activité onCreate() Initialisation de l'activité ViewBinding, Listeners, saveState… onStart() L'application s'affiche a l'écran Animations, éléments visuels variables onResume() onPause() L'application est mise en background onDestroy() L'application perd le focus onStop() L'application est en avant-plan, prête a intéragir avec l'utilisateur L'application est en train de se fermer complètement onRestart() L'application reprend de son arrêt et redémarre Durée de vie Durée de vie entière Durée de vie visible Tout ce qui est entre "onCreate" et "onDestroy" Entre "onStart" et "onStop" Durée de vie de premier plan Entre "onResume" et "onPause" Exercice sur le cycle de vie Créer une nouvelle application vide Implémenter toutes les méthodes du cycle de vie Dans chacune, ajouter un log Log.d("MainActivity", "NomDeLaMethode"); Démarrer l'émulateur Ouvrir la console Logcat et filtrer "MainActivity" Explorer les réactions du lifecycle Trouvez quelque chose d'inattendu… ! Retour sur le prochain cours Ressources Android Ajout d'icône vectorielles Importation d'images Le chat et le chien Ajouter un bouton "Switch" au centre de la fenêtre Ajouter une ImageView "benjo" ContentDescription - Accessibilité ConstraintLayout - Afficher l'image directement au dessus du bouton Interactivité Accéder au ressources et au composantes findViewById Ajouter un Listener sur le bouton btnSwitch.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { switchImage(); } }); Toast, Snackbar Listener Snackbar - class implements View.OnClickListener avec un @Override sur onClick(View v) Exercice Avec les images fournies de face de dé, créer une application de "Dice roller" L'application doit rouler le dé dès l'ouverture On doit avoir un bouton qui nous permet de (re)rouler le dé autant de fois qu'on le désire L'image du dé doit réfléter le résultat Afficher un message à l'utilisateur du résultat "Vous avez rouler un 4" Dans ce message, je veux une action pour retourner au résultat précédent