GARCIA Luc | TeProW Android 2021/2022
Qu'est-ce que Jetpack Compose
Jetpack Compose est un nouveau framework “boîte à outils” pour la création
d'interfaces utilisateur pour les applications Android, co-développé par Google et
JetBrains, la société derrière Kotlin.
Il fonctionne exclusivement avec Kotlin.
Cet outil vise à aider les développeurs à créer des applications plus rapidement,
en tirant parti de « l'interface utilisateur native moderne d'Android ».
Pourquoi devrions-nous utiliser Compose
En 2019 lors de l’Android Dev Summit, Google a déclaré:
« Nous avons conçu Compose pour accélérer et faciliter la création d'applications
Android natives.
Grâce à une approche entièrement déclarative, vous décrivez simplement votre
interface utilisateur, et Compose s'occupe du reste.
Lorsque l'état de l'application change, votre interface utilisateur est
automatiquement mise à jour, ce qui simplifie considérablement la création rapide
d'interfaces utilisateur ».
Pourquoi s'appelle-t-il Compose ?
Android Jetpack Compose est 「composé」 d’une suite de librairies permettant aux
développeurs de suivre les bonnes pratiques et de gérer une tonne de tâches en
arrière plan afin d’accélérer le développement.
Héritage vs Composition
Composition – a-une relation entre les objets.
Héritage – est-une relation entre les classes.
Composition – L’objet de composition contient une référence aux classes de composition et la relation est donc vaguement liée.
Héritage – L’objet de la classe fille porte la définition de la classe mère en soi et est donc étroitement liée.
Composition – Utilisé en injection de dépendance
Héritage – Utilisé dans le polymorphisme
Composition – Les objets peuvent être composés au sein de plusieurs classes.
Héritage – Une classe ne peut hériter que d’une seule classe.
Création d'un projet Compose
Création d'un projet Compose
Composables
Dans Jetpack Compose, chaque fonction définie pour créer un contenu d'interface utilisateur est appelé un Composable.
Les fonctions composables sont les blocs de construction fondamentaux d'une application construite avec Compose. On
peut utiliser des fonctions Composables existantes ou créer nos propres fonctions Composables en combinant plusieurs
fonctions Composables à l'aide de l'annotation @Composable.
@Composable
fun PopularMoviesTheme(darkTheme: Boolean =
isSystemInDarkTheme(), content: @Composable() () ->
Unit) {
val colors = if (darkTheme) {
DarkColorPalette
} else {
LightColorPalette
}
MaterialTheme(
colors = colors,
typography = typography,
shapes = shapes,
content = content
)
}
Fonctions Composables
Interface déclarative
Concept de développement selon lequel on décrit à travers un langage de
programmation l’ensemble des éléments qu’a besoin notre interface utilisateur ainsi que
ce que leur structure et ce à quoi ils ressembleront.
La programmation d’UI dites déclaratives est par définition indissociable à la notion de
composants.
- Rend le code plus structuré et bien plus facile à maintenir
- Les interfaces sont un ensemble ordonné et cohérent de multiples composants
distincts
- Rend les parties de l’UI indépendantes et complémentaires les unes aux autres
Contenu dynamique
Puisque les fonctions composables sont écrites en Kotlin, elles peuvent être aussi dynamiques
que n’importe quelle code Kotlin.
Possibilité d’utiliser les instructions if,
Utilisation des boucles,
@Composable
fun Greeting(names: List<String>) {
Appel des fonctions helper,
for (name in names) {
Text("Hello $name")
}
} Cette puissance et cette flexibilité sont l'un des
principaux avantages de Jetpack Compose.
Recomposition
Dans Compose, vous pouvez appeler à nouveau une fonction composable avec de nouvelles données.
Cela provoque la recomposition de la fonction.
@Composable
fun ClickCounter(clicks: Int, onClick: () -> Unit) {
Button(onClick = onClick) {
Text("I've been clicked $clicks times")
}
}
Chaque fois que le bouton est cliqué, la valeur des clics est mise à jour. Compose appelle à nouveau la
fonction Text pour afficher la nouvelle valeur ; ce processus est appelé recomposition.
Les autres fonctions qui ne dépendent pas de la valeur ne sont pas recomposées.
Merci de votre attention