Les applications adaptatives sont compatibles avec les écrans de toutes tailles : l'intégralité de l'écran de l'appareil, les fenêtres redimensionnables en mode multifenêtre, les orientations portrait et paysage, et les écrans pliés et dépliés des appareils pliables.
Une courte liste de paramètres de configuration et d'API vous permet de créer des applications adaptatives. Toutefois, certains paramètres et API obsolètes sont incompatibles avec les applications adaptatives et doivent être évités.
Redimensionnement
Les applications adaptatives sont compatibles avec le redimensionnement et le mode multifenêtre.
L'attribut resizeableActivity des éléments de fichier manifeste <activity> et <application> permet d'activer ou de désactiver le mode multifenêtre sur Android 11 (niveau d'API 30) et les versions antérieures. Sur Android 12 (niveau d'API 31) et versions ultérieures, les grands écrans sont compatibles avec le mode multifenêtre, quel que soit l'attribut. Pour en savoir plus, consultez Compatibilité avec le mode multifenêtre.
Permettez à votre application de participer à des scénarios multifenêtres et multitâches pour améliorer la productivité et la satisfaction des utilisateurs.
Définissez resizeableActivity="true" si votre application cible des niveaux d'API inférieurs à 24. Sinon, ne vous en souciez pas : il est défini sur true par défaut sur Android 7.0 (niveau d'API 24) et versions ultérieures.
Ne définissez pas resizeableActivity="false" pour aucun niveau d'API. N'excluez pas votre application des cas d'utilisation impliquant le mode multifenêtre.
Orientation
Les applications adaptatives sont compatibles avec les orientations portrait et paysage, quelle que soit la taille de l'écran ou le mode de fenêtrage.
Le paramètre de fichier manifeste screenOrientation limite l'orientation de l'activité.
Supprimez le paramètre screenOrientation du fichier manifeste de votre application.
Le verrouillage de l'orientation des applications n'empêche pas les changements de taille de fenêtre. Les applications sont redimensionnées lorsqu'elles passent en mode multifenêtre, lorsqu'un appareil est plié ou déplié, ou lorsqu'une fenêtre de type ordinateur de bureau est redimensionnée. Votre application doit prendre en charge les modifications de la taille de la fenêtre, quel que soit le paramètre de l'attribut screenOrientation.
Ne pas restreindre l'orientation de l'activité. Les applications qui verrouillent l'orientation sont mises au format letterbox sur les appareils à grand écran et les tailles de fenêtre incompatibles.
La visibilité des applications mises en boîte aux lettres sur Google Play est réduite pour les tablettes, les appareils pliables et les appareils ChromeOS.
Format
Les tailles d'écran et de fenêtre varient, tout comme leurs formats (de grand et étroit à carré, en passant par court et large).
Les paramètres de fichier manifeste minAspectRatio et maxAspectRatio limitent le format de votre application à des valeurs codées en dur.
Adaptez votre application à l'écran, quelles que soient les dimensions relatives.
Supprimez les paramètres minAspectRatio et maxAspectRatio du fichier manifeste de votre application. Vous pouvez également vous assurer que votre application est redimensionnable et que le format s'adapte automatiquement (voir la section Redimensionnement).
N'essayez pas de contrôler les dimensions relatives de votre application. Si votre application s'exécute sur un écran ou dans une fenêtre dont le format est incompatible avec celui de l'application, elle est mise au format letterbox.
Sur Android 14 (niveau d'API 34) ou version ultérieure, les utilisateurs peuvent remplacer le format de l'application pour étendre les applications au format letterbox afin qu'elles remplissent la zone d'affichage disponible. Consultez Mode de compatibilité avec les appareils.
Taille de la fenêtre
L'optimisation des mises en page pour différentes tailles d'écran est le principe central du design adaptatif. Les applications adaptatives se concentrent sur la taille de la fenêtre de l'application plutôt que sur la taille de l'écran de l'appareil. Lorsque l'application est en plein écran, la fenêtre de l'application correspond à l'écran de l'appareil.
Les classes de taille de fenêtre permettent de déterminer et de catégoriser de manière systématique la taille de la fenêtre de l'application. Adaptez votre application en modifiant les mises en page à mesure que la classe de taille de fenêtre de votre application change.
Évaluez la taille de la fenêtre de votre application en fonction des classes de taille de fenêtre.
Pour déterminer la classe de taille de fenêtre, utilisez la fonction de premier niveau currentWindowAdaptiveInfo() de la bibliothèque Compose Material 3 Adaptive. Pour en savoir plus, consultez Créer des applications adaptatives.
Ne négligez pas l'utilité des définitions de classe de taille de fenêtre et des API intégrées. N'utilisez pas d'API obsolètes pour calculer la taille de la fenêtre.
API obsolètes
Les anciennes API de plate-forme ne mesurent pas correctement la fenêtre de l'application. Certaines mesurent l'écran de l'appareil, tandis que d'autres excluent la décoration du système.
Utilisez WindowManager#getCurrentWindowMetrics() et WindowMetrics#getBounds() pour obtenir la taille de la fenêtre de l'application. Utilisez WindowMetrics#getDensity() pour obtenir la densité d'affichage.
N'utilisez pas les API Display obsolètes suivantes pour déterminer la taille de la fenêtre :
getSize(): obsolète dans Android 11 (niveau d'API 30)getMetrics(): obsolète dans Android 11 (niveau d'API 30)getRealSize(): obsolète dans Android 12 (niveau d'API 31)getRealMetrics(): obsolète dans Android 12 (niveau d'API 31)
Compose
Jetpack Compose est conçu pour le développement d'UI adaptatives. Aucun fichier XML ni de mise en page, aucun qualificatif de ressource. Il s'agit de composables sans état basés sur Kotlin, tels que Column, Row et Box, qui décrivent votre UI, et de modificateurs tels que offset, padding et size, qui ajoutent un comportement aux éléments de l'UI.
Créez avec Compose. Tenez-vous informé des dernières fonctionnalités et versions.
Ne vous fiez pas à une technologie obsolète. Ne laissez pas votre application devenir obsolète.
Bibliothèque Compose Material 3 Adaptive
La bibliothèque Compose Material 3 Adaptive fournit des composants et des API qui facilitent le développement d'applications adaptatives.
Utilisez les API suivantes pour rendre votre application adaptative :
NavigationSuiteScaffold: bascule entre la barre de navigation et le rail de navigation en fonction de la classe de taille de la fenêtre de l'application.ListDetailPaneScaffold: implémente la mise en page canonique liste/détails. Adapte la mise en page à la taille de la fenêtre de l'application.SupportingPaneScaffold: implémente la mise en page canonique du volet d'assistance.
Ne réinventez pas la roue. Ne manquez pas les gains de productivité des développeurs offerts par toutes les bibliothèques Jetpack Compose.
Mises en page
Les utilisateurs s'attendent à ce que les applications exploitent au maximum l'espace d'affichage disponible avec du contenu supplémentaire ou des commandes améliorées.
Les applications adaptatives optimisent les mises en page en fonction des modifications apportées à l'écran, en particulier les modifications de la taille de la fenêtre de l'application ou de la position de l'appareil.
Modifiez les composants de l'UI à mesure que la taille de la fenêtre change pour profiter de l'espace d'affichage disponible. Par exemple, remplacez la barre de navigation inférieure utilisée pour les tailles de fenêtre compactes par un rail de navigation vertical pour les fenêtres moyennes et agrandies. Repositionnez les boîtes de dialogue pour qu'elles soient accessibles sur tous les écrans.
Organisez le contenu en volets pour activer les mises en page à plusieurs volets, comme les volets de liste et de détails, ainsi que le volet secondaire pour les affichages de contenu dynamique.
Si vous n'utilisez pas de volets de contenu, ne vous contentez pas d'étirer les éléments d'interface utilisateur pour remplir l'espace d'affichage disponible. Les longues lignes de texte sont difficiles à lire. Les boutons étirés semblent mal conçus. Si vous utilisez Modifier.fillMaxWidth, ne partez pas du principe qu'il s'agit du bon comportement pour toutes les tailles d'écran.
Périphériques d'entrée
Les utilisateurs n'utilisent pas uniquement les écrans tactiles pour interagir avec les applications.
Les applications adaptatives sont compatibles avec les claviers, les souris et les stylets externes pour offrir une expérience utilisateur améliorée et aider les utilisateurs à être plus productifs sur tous les types d'appareils.
Profitez des fonctionnalités intégrées du framework Android pour la navigation au clavier et les clics, sélections et défilements à la souris ou au pavé tactile. Publiez les raccourcis clavier de votre application dans l'outil d'aide pour raccourcis clavier.
Utilisez la bibliothèque Material 3 de Jetpack pour permettre aux utilisateurs d'écrire dans n'importe quel composant TextField à l'aide d'un stylet.
Ne rendez pas les autres méthodes de saisie impossibles. Ne pas introduire de problèmes d'accessibilité.
Résumé
- Créer votre application avec Compose et la bibliothèque Adaptive Material 3
- Baser les mises en page sur les classes de taille de fenêtre
- Créer des mises en page à plusieurs volets
- Rendre votre application redimensionnable
- Ne jamais verrouiller l'orientation de l'activité
- Ne pas limiter le format
- Accepter les saisies autres que tactiles
- Éviter les API obsolètes
✓ Faites ce que vos utilisateurs attendent : optimisez votre application pour la diversité des appareils sur lesquels les utilisateurs s'appuient au quotidien.
✗ N'attendez pas. Lancez-vous dès aujourd'hui !