Jetpack Compose est une boîte à outils moderne conçue pour créer des applications Android en utilisant le langage de programmation Kotlin. Contrairement aux approches précédentes, où l'interface utilisateur était définie en XML et le code de logique en Java, Jetpack Compose centralise tout le processus dans Kotlin, simplifiant ainsi le développement.
Avec Jetpack Compose, les interfaces utilisateur sont construites en utilisant des fonctions composables, qui sont des blocs de code réutilisables permettant de créer des éléments d'interface tels que des boutons, des champs de saisie, des cases à cocher, et bien plus encore. Ces fonctions composables rendent le code plus lisible et modulaire, facilitant la gestion et la mise à jour de l'UI.
Une caractéristique clé de Jetpack Compose est la gestion de l'état et la recomposition automatique. Les éléments de l'interface sont automatiquement redessinés en réponse aux changements d'état grâce à une gestion efficace des variables d'état. En Kotlin, les variables de type mutableState permettent de suivre les changements dans l'état de l'application. Lorsqu'une variable de ce type est modifiée, les composables qui en dépendent sont automatiquement rafraîchis pour refléter les mises à jour. Cela simplifie la création d'interfaces dynamiques et réactives, tout en réduisant le besoin de gestion manuelle du cycle de vie de l'interface utilisateur
Nous allons examiner un bout de code minimaliste qui va nous permettre de prendre contact avec les composables, les variables de type mutableState et la notion de recomposition
var taillexy by remember { mutableStateOf(20) }
Column {
Box( modifier = Modifier
.size(taillexy.dp, taillexy.dp)
.background(Color.Magenta)
)
Button( onClick = { taillexy += 10 } )
{
Text(text = "Agrandir")
}
}
Ce bout de code est constitué d'une variable et de trois composables:
Voici le code entier. Si vous voulez l'essayer, créer un nouveau projet. Replacer le contenu de votre MainActivity par le code ci-dessous. Dans la première ligne, remplacez composebasics par le nom de votre projet (minuscule)
package com.example.composebasics
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.size
import androidx.compose.material3.Button
import androidx.compose.material3.Text
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableIntStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.dp
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
var boxsize by remember { mutableIntStateOf(20) }
Column {
Box( modifier = Modifier
.size(boxsize.dp, boxsize.dp)
.background(Color.Magenta)
)
Button( onClick = { boxsize += 10 } )
{
Text(text = "Agrandir")
}
}
}
}
}
Android Studio est l'environnement de développement intégré (IDE) officiel pour le développement d'applications Android. Basé sur IntelliJ IDEA, il offre une suite complète d'outils pour écrire, tester, déboguer et optimiser des applications Android. Il inclut un éditeur de code performant, un émulateur intégré de téléphones et tablettes android (et bien plus encore).
Android Studio est un gros pavé, il faut une bonne liaison Internet pour l'installer et un bon PC pour le faire tourner correctement.
On trouve sur Internet plein de vidéos pour vous aider à commencer avec Android Studio
Pour commencer un nouveau projet:
Maintenant, on peut commencer à toucher à notre projet et le tester
On a 3 façons pour tester et débeuguer un projet
package com.example.monprojet
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.unit.sp
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
MonApp()
}
}
}
@Composable
fun MonApp() {
Text(
text = "Hello World!",
fontSize = 30.sp
)
}
package com.example.monprojet
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.sp
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
MyApp()
}
}
}
@Composable
fun MyApp() {
Text(
text = "Hello World!",
fontSize = 30.sp
)
}
@Preview(showBackground = true)
@Composable
fun MyPreview() {
MyApp()
}