Fermer

janvier 23, 2025

Coil : une bibliothèque de chargement d’images Android efficace

Coil : une bibliothèque de chargement d’images Android efficace


Introduction

Dans Développement d’applications Android, offrir une expérience utilisateur fluide et esthétique dépend de la qualité de l’affichage des photos. Bien que la gestion du chargement, de la mise en cache et de l’affichage des images puisse être difficile, des bibliothèques sont heureusement disponibles pour faciliter le processus. Une de ces bibliothèques est Bobineune bibliothèque de chargement d’images Android à la fois petite et flexible. Les avantages de l’utilisation de Coil seront discutés dans cet article, ainsi qu’un didacticiel détaillé sur la façon de l’inclure dans votre application Android.

Qu’est-ce que la bobine ?

Coil signifie : Coroutine Image Loader

Colin Blanc créé l’open source Bobine, une bibliothèque de chargement d’images dans le but de simplifier et d’accélérer le chargement d’images Android. Construit sur Kotlin Coroutines, il est réputé pour ses performances exceptionnelles, sa taille compacte et sa facilité d’utilisation. L’objectif de Coil est de permettre aux applications Android de charger, de mettre en cache et d’afficher facilement des images à partir de n’importe quelle source.

Principales caractéristiques de la bobine

  • Rapide et léger : Un chargement d’image plus rapide et des performances améliorées sont le résultat de la conception légère et ciblée de la bobine.
  • Priorisation des demandes d’images : Vous pouvez prioriser les demandes d’images avec Coil, garantissant que les images importantes se chargent en premier et préservant une expérience utilisateur transparente.
  • Mise en cache : Coil fournit une variété de fonctionnalités de mise en cache, telles que la mise en cache du disque et de la mémoire. Sa gestion automatisée du cache garantit un stockage et une récupération efficaces des images.
  • Options de personnalisation: Coil offre un certain nombre d’options de personnalisation, notamment la gestion des erreurs, qui vous permet de gérer avec élégance les problèmes de chargement d’images, et les transformations, qui vous permettent de modifier les images avant qu’elles ne soient affichées.
  • Intégration des coroutines Kotlin : Coil exploite Kotlin Coroutines pour garantir des interfaces utilisateur réactives et fluides en exécutant des demandes d’images de manière asynchrone.

Comment fonctionne la bobine en interne

Les éléments fondamentaux suivants sont utilisés par la bobine :

  • Coroutines : pour l’exécution de threads en arrière-plan.
  • OkHttp : gère les requêtes réseau de chargement d’images.
  • BitmapFactory ou décodeur d’images : Décode les images efficacement.
  • Mise en cache disque et mémoire : Utiliser la mise en cache disque (via OkHttp) et la mise en cache en mémoire (LruCache) pour permettre un chargement plus rapide des images.
  • Crée une demande : Avec les paramètres nécessaires, tels que le URL, cibles, transformationset espaces réservés-un Demande de chargement est généré.
  • Traitement des demandes : Coil traite les demandes d’images étape par étape à l’aide de chaînes d’interception, comparables à OkHttp. Chaque intercepteur effectue des opérations telles que télécharger l’image, la décoder, appliquer des transformations et vérifier le cache.
  • Vérifiez le cache mémoire : Afin de déterminer si l’image demandée est déjà disponible, Coil examine d’abord son cache en mémoire (LruCache).
    Il évite une requête réseau en récupérant l’image directement de la mémoire si elle est accessible.
  • Vérifiez le cache disque : Utilisations de la bobine OkHttp technique de cache pour vérifier le cache disque si l’image n’est pas en mémoire. Les images mises en cache sont récupérées sans nécessiter un nouveau téléchargement.
  • Téléchargez l’image : Utilisations de la bobine OkHttp pour télécharger l’image si elle n’est pas déjà dans le cache.
  • Images de décodage : La bobine décode les données d’image en un bitmap à l’aide de Décodeur d’images (API 28+) ou BitmapFactory (versions antérieures)
  • Transformations : Avant le rendu de l’image, des ajustements, notamment le recadrage, le flou et la mise à l’échelle, sont effectués.
  • Afficher sur la cible : Enfin, la cible ImageView ou une autre vue personnalisée affiche l’image traitée.

Composants

But

Chargeur d’imagesL’exécution des requêtes, la mise en cache, le décodage et le traitement sont gérés par le moteur principal.
Générateur de requêtesaide à configurer les paramètres de chargement d’images tels que les cibles, les espaces réservés et les transformations.
Cache mémoireminimise les lectures sur le réseau ou sur le disque et conserve les images en mémoire pour un accès rapide.
Cache disqueutilise OkHttp pour mettre en cache les photos téléchargées sur le disque pour une visualisation hors ligne.
Décodeurutilise les technologies contemporaines (ImageDécodeur, BitmapFactory) pour décoder les données d’image en objets bitmap.
Outil de récupérationgère le processus de récupération des données à partir des ressources, des fichiers et des URL.
Chaîne d’intercepteurpasse par un certain nombre de processus pour traiter la demande d’image, notamment la mise en cache, le téléchargement, le décodage, etc.

Bobine vs autres bibliothèques (Picasso, Glide)

Caractéristiques

Bobine

Picasso

Glisser

Prise en charge linguistiqueKotlin-first, prend en charge CoroutinesJava/KotlinJava/Kotlin
Prise en charge des GIF et des vidéosLimitéLimitéPrise en charge complète des GIF et des vidéos
Performances et taille de l’APKLéger (~150 Ko)Plus petit que Glide (~250 Ko)Plus grand (~450 Ko)
Accompagnement aux transformationsIntégré (flou, recadrage)Transformations limitéesIntégré (recadrage circulaire, flou)
Mécanisme de mise en cacheMémoire et cache disque (OkHttp)Cache disque basé sur OkHttpCache disque personnalisé (DiskLruCache)
Efficacité de chargement des imagesOptimisé avec CoroutinesSynchrone par défautPool de threads pour le parallélisme
Personnalisation et extensibilitéÉlevé (Intercepteurs, Transformateurs)LimitéÉlevé (chargeurs et décodeurs personnalisés)
Fonctionnalités modernesCoroutines, Kotlin DSLAPI plus simple mais manque de CoroutinesIntégration du cycle de vie Android

Quand utiliser la bobine et pourquoi ?

  1. Projets contemporains basés sur Kotlin: Coil est le choix idéal si votre projet utilise largement Kotlin et Coroutines.
  2. Applications légères: Parfait pour les applications qui nécessitent un fichier APK réduit. L’APK est plus petit que celui de Glide.
  3. Exigences simples de chargement d’images: Excellent pour le chargement simple d’images qui inclut la mise en cache et les modifications.
  4. Prise en charge de Jetpack Compose: Entièrement compatible avec Composer Jetpack pour une conception d’interface utilisateur contemporaine.
  5. Prise en charge de la concurrence : Évite blocage des fils en utilisant des coroutines.
  6. Efficacité de la mise en cache : OkHttp a été utilisé pour optimiser la mise en cache du disque et de la mémoire.

Intégrer Coil dans votre application Android

Étape 1 : Pour importer la bibliothèque de bobines dans votre projet, ajoutez la ligne ci-dessous au champ build.gradle fichier au niveau du module (niveau de l’application).

Bobine 1

Étape 2 : La fonction d’extension est la méthode la plus simple pour charger une image avec une bobine.

Bobine

Étape 3 : Demande de personnalisation : Ajouter une photo Vous devez fournir une ImageView avec l’URL de l’image ou l’ID de ressource afin de charger une image à l’aide de Coil. Voici une illustration :

Bobine

Chargeur d’images personnalisé

Pour gérer les exigences de votre projet, nous pouvons concevoir un chargeur d’images unique. Coil utilise son chargeur intégré avec les paramètres par défaut si nous n’en créons pas un nouveau.

Bobine - Chargeur d'images personnalisé

Transformation personnalisée : On peut utiliser des transformations d’une image comme circulaire, niveaux de gris, se brouilleret coins arrondis selon l’exigence. Voici quelques exemples de modifications :

Transformation des coins arrondis

Transformation de coins arrondis en bobine

Transformation circulaire

Transformation de culture en bobine-circulaire

Merci d’avoir lu.
Continuez à apprendre ! Continuez à coder !

Référence: https://coil-kt.github.io/coil/?source=post_page—–ec7579ef0f25——————————–

VOUS TROUVEZ CECI UTILE ? PARTAGEZ-LE






Source link