Développez vos compétences en programmation

Sessions intensives d'une semaine

Created by Anthony Monteiro
E-mail : anthony.monteiro.85@gmail.com
LinkedIn : Anthony Monteiro

Android & Kotlin

  • 70% des applications mobiles populaires sont en Kotlin
  • Objects connectés en C/C++ → Android
  • (Xamarin) C# -> Android

SDK Android

  • Compliqué
  • Beaucoup de versions
  • Évolue rapidement
  • Erreurs bloquantes fréquentes
  • Tuto pas à jour ou trop compliqués
  • Même ChatGPT galère...

Pourquoi une formation ?

  • Faire monter en compétence ses équipes
    • Nouveaux développeurs
    • Passer à Kotlin, Compose, MVVM....
    • Vision de la techno
  • Apprentissage accéléré
    • Erreur chronophage
    • 15 versions différentes
    • Modules décomposés
    • Réponse à toutes vos questions
    • Support à jour
  • Gain de temps (et d'argent)

Programme Android

  • Apprentissage de Kotlin
    • Variable, safe check, Elvis opérator, fonction expression, paramètres nommés et par défaut...
    • Objet, data class, surcharge, lambda expression...
    • Exploiter une API Rest, coroutine, flow...
  • Android Compose
    • Interface graphique recomposable, variable d'état, données observables...
    • Gestion des erreurs, thème claire/sombre, internationalisation...
    • Navigation, Architecture MVVM, TopBar, rotation d'écran...
    • Permission et localisation
  • Android XML (Ancien système)
    • Interface graphique XML, viewBinding, dataBinding...
    • Cycle de vie Activity et navigation par fragment
    • Et plus en fonction du temps restant et des besoins...
  • Objectifs :
    • Être capable de se débrouiller tout seul
    • Squelette d'application étudié, prêt à l'emploi

Anthony Monteiro

  • Diplômes :
    • 2009 : Diplôme d'ingénieur en sciences informatiques (Polytech)
    • 2009 : Master informatique fondamentale et industrielle (Université de Nice)
  • Développeur Android depuis 2012
  • Formateur depuis 2014 :
    • Java (5 à 10 jours)
    • Jakarta/Spring (5 jours)
    • Kotlin (2 à 4 jours)
    • Android (5 jours)
    • Kotlin Multiplatform
  • Vidéos de formation :

Bilan 2023

  • Écoles de reconversion :
  • École d'ingénieur :
  • Entreprise
  • 182 jours de formation
  • Environ 300 personnes formées

Support de cours

  • Support en ligne : mise à jour rapide
  • Onglets multi fichier/ langage
  • Correction dynamique















                            
//http://localhost:8080/receiveStudent
//Json Attendu : {"name": "toto", "note": 12}
@PostMapping("/receiveStudent")
public void receiveStudent(@RequestBody StudentBean student) {
    System.out.println("/receiveStudent : " + student.getName() + " : " + student.getNote());

    //traitement, mettre en base…
    //Retourner d'autres données
}
                            
                        

Exemple de TP Assisté et sa correction

Objectif Réaliser le reste de l'interface


Guide

Guide

  1. Dans le composable SearchScreen() :
  2. Créer le composable SearchBar() dans SearchScreen.kt à l'aide d'un TextField editable
    • Pensez à passer le modifier
    • Attention, vous ne pourrez pas écrire dans le TextField
                                
    @Composable
    fun SearchBar(modifier: Modifier = Modifier) {
        //TODO
    }
                                
                            
  3. Créer et télécharger un theme sur material3, l'intégrer à votre application pour prendre en compte le mode sombre et claire
  4. Dans SearchScreen remplacer les appels de couleur directs par des appels de MaterialTheme.colorScheme.*
  5. Pour les plus rapides : Internationalisation
    • Dans String.xml créer 2 nouvelles lignes pour les textes des 2 boutons en anglais
    • Cliquer sur "open editor" proposé en haut du fichier String.xml et ajouter le francais en cliquant sur la planète
    • Faire les traductions pour le francais
    • Utiliser Text(stringResource(R.string.app_name)) dans les boutons pour utiliser un texte en fonction de la langue du téléphone
    • Ajouter une Preview en français, locale = "fr"
Correction

Correction  

                    
//Code affiché dans la Preview, thème claire, thème sombre
@Preview(showBackground = true, showSystemUi = true)
@Preview(showBackground = true, showSystemUi = true,
            uiMode = android.content.res.Configuration.UI_MODE_NIGHT_YES
            or android.content.res.Configuration.UI_MODE_TYPE_NORMAL)
@Composable
fun SearchScreenPreview() {
    NomVotreProjetTheme {
        Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding ->
            SearchScreen(modifier = Modifier.padding(innerPadding), mainViewModel = MainViewModel())
        }
    }
}

@Composable
fun SearchScreen(modifier:Modifier = Modifier, mainViewModel : MainViewModel) {

    Column(modifier= modifier.fillMaxSize()) {
        SearchBar()
        LazyColumn(verticalArrangement = Arrangement.spacedBy(8.dp), modifier = Modifier.weight(1f)) {
            items(mainViewModel.dataList.size) {
                PictureRowItem(modifier = Modifier.padding(8.dp), data = mainViewModel.dataList[it])
            }
        }

        Row(modifier = Modifier.align(CenterHorizontally)) {
            Button(
                onClick = {  },
                contentPadding = ButtonDefaults.ButtonWithIconContentPadding,
                modifier = Modifier
                    .padding(8.dp)
            ) {
                Icon(
                    Icons.Filled.Clear,
                    contentDescription = "Localized description",
                    modifier = Modifier.size(ButtonDefaults.IconSize)
                )
                Spacer(Modifier.size(ButtonDefaults.IconSpacing))
                Text("Clear filter")
            }

            Button(
                onClick = { },
                contentPadding = ButtonDefaults.ButtonWithIconContentPadding,
                modifier = Modifier
                    .padding(8.dp)
            ) {
                Icon(
                    Icons.Filled.Send,
                    contentDescription = "Localized description",
                    modifier = Modifier.size(ButtonDefaults.IconSize)
                )
                Spacer(Modifier.size(ButtonDefaults.IconSpacing))
                Text("Load data")
            }
        }
    }
}
                    
                

Format

  • Session
    • Collective (multi entreprises)
    • Privée dans vos locaux
  • Format
    • Distanciel
    • Présentiel (Dans toute la France)
  • Financement pris en charge
    • OPCO
    • CPF / Mon Compte formation

Pourquoi moi ?

  • Spécialisé dans la formation et sur ces univers
  • Cours et exercices testés et calibrés
  • Session maintenue dès la 1ʳᵉ inscription

Prochaines sessions

  • Date :
    • Android : 16 au 20 septembre
    • Java : 23 au 27 septembre
    • Kotlin : 30 septembre au 3 octobre
    • Android : 12 au 15 novembre
    • Kotlin : 18 au 21 novembre
    • Java : 2 au 5 décembre
    • Android : 9 au 13 décembre
  • Contact :