Blog Alphorm Logo de blog informatique spécialisé en technologie et solutions IT
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
En cours de lecture : Créer des grilles performantes avec LazyVerticalGrid
Agrandisseur de policeAa
Blog AlphormBlog Alphorm
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
Search
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
Suivez-nous
© Alphorm 2024 - Tous droits réservés
Développement

Créer des grilles performantes avec LazyVerticalGrid

L'Équipe Alphorm Par L'Équipe Alphorm 18 janvier 2025
Partager
Partager

Créer des interfaces utilisateur performantes sur Android peut être complexe.

Les solutions traditionnelles peuvent être inefficaces pour gérer de grandes quantités de contenu, entraînant des ralentissements.

Découvrez comment LazyVerticalGrid de Jetpack Compose simplifie la création de grilles adaptatives et performantes, optimisant l’expérience utilisateur.

Table de matière
LazyVerticalGrid Jetpack Compose GuideIntroduction à Jetpack Compose UIComprendre LazyVerticalGrid AndroidConclusion sur LazyVerticalGrid UIFAQConclusion

Formation Créer une Interface Utilisateur Moderne avec JetPack Compose

Créez des interfaces modernes et réactives avec JetPack Compose!

Découvrir cette formation

LazyVerticalGrid Jetpack Compose Guide

Introduction à Jetpack Compose UI

Jetpack Compose révolutionne la création d’interfaces utilisateur sur Android en offrant une approche déclarative et réactive. Parmi les nombreux composants qu’il propose, les conteneurs paresseux ( LazyRow , LazyColumn , et LazyVerticalGrid ) jouent un rôle crucial dans la gestion efficace des listes et des grilles de contenu.

Comprendre LazyVerticalGrid Android

Définition et Configuration de LazyVerticalGrid

LazyVerticalGrid est un composant de Jetpack Compose qui permet de créer des grilles verticales de manière performante. Comme LazyRow et LazyColumn , il est optimisé pour gérer de grandes quantités de contenu en construisant uniquement les éléments visibles.

Il existe deux principales configurations pour définir le nombre de colonnes dans une grille :

  1. Colonnes Fixes :Un nombre fixe de colonnes, indépendamment de la taille de l’écran.
  2. Colonnes Adaptatives :Le nombre de colonnes s’adapte en fonction de la taille de l’écran, permettant une flexibilité maximale.
Diagramme LazyVerticalGrid Compose

Définition d’une LazyVerticalGrid avec colonnes adaptatives :

				
					
 @Composable
fun AdaptiveLazyVerticalGrid(itemsList: List<String>) {
val gridState = rememberLazyGridState()
LazyVerticalGrid(
columns = GridCells.Adaptive(128.dp),
state = gridState,
contentPadding = PaddingValues(16.dp)
) {
items(itemsList.size) { index ->
Text(
text = itemsList[index],
modifier = Modifier
.padding(8.dp)
.fillMaxWidth(),
fontWeight = FontWeight.Bold,
fontSize = 20.sp
)
}
}
}

				
			

Voici la sortie du code :

Grille verticale Jetpack Compose avec 10 éléments
Élément
Description
LazyVerticalGrid
Composant pour afficher des éléments en grille verticale.
columns = GridCells.Adaptive(128.dp)
Définition des colonnes adaptatives qui ajustent leur taille en fonction de l’espace disponible.
contentPadding = PaddingValues(16.dp)
Espacement autour du contenu de la grille.

Dans cet exemple, GridCells.Adaptive(128.dp) indique que chaque colonne doit avoir une largeur d’au moins 128 dp. Le nombre de colonnes s’adapte automatiquement en fonction de la largeur disponible de l’écran.

Alimentation en Contenu

Les éléments à afficher dans LazyVerticalGrid sont des composables. Dans notre exemple, nous utilisons des Card pour représenter chaque élément de la grille, contenant des textes ou d’autres éléments UI.

Diagramme LazyVerticalGrid structure Compose

Exemple d’alimentation en contenu avec des cartes :

				
					
 @Composable
fun ArticleGrid(itemsList: List<String>) {
val gridState = rememberLazyGridState()
LazyVerticalGrid(
columns = GridCells.Adaptive(128.dp),
state = gridState,
contentPadding = PaddingValues(16.dp)
) {
items(itemsList.size) { index ->
Card(
backgroundColor = Color.Red,
modifier = Modifier
.padding(8.dp)
.fillMaxSize(),
elevation = 4.dp            ) {
Text(
text = itemsList[index],
modifier = Modifier
.padding(16.dp),
fontWeight = FontWeight.Bold,
fontSize = 20.sp,
textAlign = TextAlign.Center,
color =Color.White        )    }        }    }}

				
			

Voici la sortie du code :

Grille Jetpack Compose avec articles numérotés

Chaque élément de la grille est une carte rouge contenant un texte centré. Le padding autour de chaque carte assure un espacement visuel agréable.

Exemple Pratique : Grille d’Articles

Imaginons une application affichant une liste d’articles, chacun représenté par une image, un titre, une date, etc. Nous allons créer une grille d’articles en utilisant LazyVerticalGrid .

Question : Comment pouvez-vous créer une grille d’articles dans une application en utilisant LazyVerticalGrid avec Jetpack Compose, en tenant compte d’une classe de données Article qui inclut un titre, une date, une image, un contenu, et un indicateur de favoris ?

Définition du Modèle de Données

Commençons par définir la classe de données représentant un article :

				
					
 data class Article(
val title: String,
val date: String,
val image: Painter,
val content: String,
val isFavorite: Boolean
)

				
			

Création de l’Item Article

Définissons un composable pour représenter chaque article dans la grille :

				
					
 @Composable
fun ArticleItem(article: Article) {
Card(
modifier = Modifier
.padding(8.dp)
.fillMaxWidth(),
elevation = 4.dp
) {
Column(
modifier = Modifier.padding(16.dp),
horizontalAlignment = Alignment.CenterHorizontally
) {
Image(
painter = article.image,
contentDescription = article.title,
modifier = Modifier
.size(100.dp)
)
Spacer(modifier = Modifier.height(8.dp))
Text(
text = article.title,
fontWeight = FontWeight.Bold,
fontSize = 18.sp,
textAlign = TextAlign.Center
)
Text(
text = article.date,
fontSize = 14.sp,
color = Color.Gray
)
Spacer(modifier = Modifier.height(8.dp))
Text(
text = article.content,
fontSize = 16.sp,
textAlign = TextAlign.Justify
)
}
}
}

				
			

Voici la sortie du code :

Exemple d'article avec LazyVerticalGrid Compose

Création de l’Écran de Grille d’Articles

Créons maintenant l’écran affichant la grille des articles :

				
					
 @Composable
fun ArticleGridScreen(articles: List<Article>) {
val gridState = rememberLazyGridState()
val coroutineScope = rememberCoroutineScope()
Column(modifier = Modifier.fillMaxSize()) {
Button(
onClick = {
coroutineScope.launch {
gridState.animateScrollToItem(0)                }    },
enabled = gridState.firstVisibleItemIndex > 0,
modifier = Modifier
.padding(16.dp)
.align(Alignment.CenterHorizontally)        ) {
Text("Retour en haut")        }
LazyVerticalGrid(
columns = GridCells.Adaptive(128.dp),
state = gridState,
contentPadding = PaddingValues(16.dp)        ) {
items(articles.size) { index ->
ArticleItem(article = articles[index])
}       }   }}

				
			

Voici la sortie du code :

Grille d'articles dans Jetpack Compose
Élément
Description
enabled
Détermine si le bouton est activé ou désactivé.
coroutineScope.launch
Lancement d’une coroutine pour des tâches asynchrones, comme l’animation du défilement.
LazyVerticalGrid
Composant pour afficher une grille verticale d’éléments.
columns
Définit le nombre de colonnes dans la grille. GridCells.Adaptive(128.dp) permet de créer des colonnes adaptatives.
state
État de la grille, utilisé pour contrôler le défilement.
contentPadding
Espacement autour du contenu de la grille.
items
Fonction pour générer des éléments de la grille en fonction de la liste d’articles.
ArticleItem
Composant pour afficher les détails d’un article individuel.

Dans cet écran, un bouton « Retour en haut » apparaît lorsque l’utilisateur défile vers le bas de la grille. En cliquant sur ce bouton, la grille défile de manière animée jusqu’au premier article.

Prévisualisation de la Grille

Pour visualiser notre grille dans Android Studio, ajoutons une fonction de prévisualisation :

				
					
 @Preview(showBackground = true)
@Composable
fun PreviewArticleGrid() {
val sampleArticles = List(10) { index ->
Article(
title = "Article $index",
date = "2024-08-${index + 1}",
image = painterResource(id = R.drawable.sample_image),
content = "Contenu de l'article numéro $index.",
isFavorite = false        )    }
ArticleGridScreen(articles = sampleArticles)}

				
			

Assurez-vous d’avoir une ressource image nommée sample_image dans le dossier drawable de votre projet.

Configuration des Colonnes Fixes vs Adaptatives

LazyVerticalGrid permet de configurer le nombre de colonnes de deux manières principales :

Colonnes Adaptatives : Le nombre de colonnes s’ajuste automatiquement en fonction de la largeur disponible et de la taille minimale spécifiée.

Colonnes Fixes : Un nombre fixe de colonnes, indépendamment de la taille de l’écran.

Schéma colonnes adaptatives et fixes

Exemple avec colonnes fixes :

				
					
 LazyVerticalGrid(
columns = GridCells.Fixed(3),
state = gridState,
contentPadding = PaddingValues(16.dp)
) {
items(articles.size) { index ->
ArticleItem(article = articles[index])
}
}

				
			

Voici la sortie du code :

Grille d'articles LazyVerticalGrid Jetpack

Dans cet exemple, la grille affichera toujours 3 colonnes, quel que soit le dispositif utilisé. Cela peut être utile lorsque vous souhaitez un affichage cohérent sur différents écrans.

Infos : LazyRow et LazyColumn sont idéaux pour les listes horizontales et verticales respectivement, surtout lorsqu’elles contiennent de nombreux éléments.

Conclusion sur LazyVerticalGrid UI

Les conteneurs paresseux de Jetpack Compose, tels que LazyRow , LazyColumn , et LazyVerticalGrid , offrent des solutions puissantes et performantes pour gérer de grandes quantités de contenu dans vos applications Android.

Formez-vous gratuitement avec Alphorm !

Maîtrisez les compétences clés en IT grâce à nos formations gratuites et accélérez votre carrière dès aujourd'hui.

Démarrer gratuitement
illustration processus de paiement en ligne avec étapes claires et convivialité

FAQ

Comment fonctionne LazyVerticalGrid dans Jetpack Compose?
LazyVerticalGrid est un composant de Jetpack Compose qui permet de créer des grilles verticales performantes. Il optimise l’affichage en ne construisant que les éléments visibles, ce qui est idéal pour gérer de grandes quantités de contenu. Deux configurations principales existent : colonnes fixes, où le nombre reste constant, et colonnes adaptatives, qui s’ajustent en fonction de la largeur d’écran disponible.
Comment configurer des colonnes adaptatives avec LazyVerticalGrid?
Les colonnes adaptatives dans LazyVerticalGrid sont configurées avec GridCells.Adaptive, où vous spécifiez une largeur minimale pour chaque colonne, par exemple 128.dp. Le nombre de colonnes s’ajuste automatiquement en fonction de la largeur d’écran disponible, garantissant une utilisation efficace de l’espace pour différentes tailles d’écran.
Comment ajouter du contenu dans une LazyVerticalGrid?
Pour ajouter du contenu dans une LazyVerticalGrid, vous utilisez des composables, comme des Card, pour chaque élément de la grille. Chaque élément est défini par un item, et vous pouvez définir des propriétés telles que le padding et la taille du texte pour créer une interface utilisateur attractive et fonctionnelle.
Quelle est la différence entre colonnes fixes et adaptatives?
Les colonnes fixes dans LazyVerticalGrid maintiennent un nombre constant de colonnes, quel que soit la taille de l’écran. En revanche, les colonnes adaptatives ajustent leur nombre en fonction de l’espace disponible, offrant une flexibilité maximale. Cela permet une meilleure adaptabilité visuelle sur différents appareils.
Pourquoi utiliser LazyVerticalGrid pour les grilles d'articles?
LazyVerticalGrid est idéal pour afficher des grilles d’articles car il optimise le rendu en affichant uniquement les éléments visibles à l’écran. Cela permet de gérer efficacement de grandes quantités de données, comme des listes d’articles, tout en assurant une expérience utilisateur fluide et réactive.

Conclusion

Les conteneurs paresseux de Jetpack Compose, tels que LazyVerticalGrid, offrent des solutions puissantes pour gérer efficacement de grandes quantités de contenu. Comment envisagez-vous d’utiliser ces outils pour améliorer votre prochaine application Android?

ÉTIQUETÉ : Android, Jetpack
Facebook
Twitter
LinkedIn
Email
WhatsApp
Par L'Équipe Alphorm
Démocratiser la Connaissance Informatique pour Tous !
Suivre :
L'Équipe Alphorm, c'est la démocratisation de la connaissance informatique. Passionnés et dévoués, nous sommes là pour vous guider vers le succès en rendant la technologie accessible à tous. Rejoignez notre aventure d'apprentissage et de partage. Avec nous, le savoir IT devient une ressource inspirante et ouverte à tous dans un monde numérique en constante évolution.

Derniers Articles

  • Techniques pour gérer les fichiers texte en C#
  • Créer et lire un fichier CSV avec C#
  • JSON : Comprendre et Utiliser Efficacement
  • Créer une Base SQLite dans C#
  • Lecture des données SQLite simplifiée
Laisser un commentaire Laisser un commentaire

Laisser un commentaire Annuler la réponse

Vous devez vous connecter pour publier un commentaire.

Blog Alphorm
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
En cours de lecture : Créer des grilles performantes avec LazyVerticalGrid

© Alphorm - Tous droits réservés