Classes de taille de fenêtre

Les classes de taille de fenêtre sont un ensemble de points d'arrêt de fenêtre d'affichage définis qui vous aident à concevoir, développer et tester des mises en page responsives et adaptatives. Les points d'arrêt équilibrent la simplicité de la mise en page et la flexibilité d'optimisation de votre application dans des cas uniques.

Les classes de taille de fenêtre classifient la zone d'affichage disponible pour votre application dans les catégories Compacte, Moyenne ou Étendue. La largeur et la hauteur disponibles sont classées séparément. Votre application peut donc être associée à deux classes de taille de fenêtre : une pour la largeur et une pour la hauteur. La largeur disponible est généralement plus importante que la hauteur disponible en raison de l'omniprésence du défilement vertical. La classe de largeur de fenêtre est donc probablement plus adaptée à l'interface utilisateur de votre application.

Figure 1 : Représentations des classes de largeur de fenêtre.
Figure 2 : Représentations des classes de hauteur de fenêtre.

Comme le montrent les figures, les points d'arrêt vous permettent de continuer à réfléchir aux mises en page en termes d'appareils et de configurations. Chaque point d'arrêt de classe de taille représente un cas majoritaire pour des scénarios d'appareil typiques, ce qui peut être un cadre de référence utile lorsque vous réfléchissez à la conception de vos mises en page basées sur des points d'arrêt.

Classe de taille Point d'arrêt Représentation de l'appareil
Largeur compacte largeur < 600 dp 99,96 % des téléphones en mode portrait
Largeur moyenne 600 dp ≤ largeur < 840 dp 93,73 % des tablettes en mode portrait

plus grands écrans internes dépliés en mode portrait

Largeur étendue largeur ≥ 840 dp 97,22 % des tablettes en mode paysage

plus grands écrans internes dépliés en mode paysage

Hauteur compacte hauteur < 480 dp 99,78 % des téléphones en mode paysage
Hauteur moyenne 480 dp ≤ hauteur < 900 dp 96,56 % des tablettes en mode paysage

97,59 % des téléphones en mode portrait

Hauteur étendue hauteur ≥ 900 dp 94,25 % des tablettes en mode portrait

Bien qu'il puisse être utile de visualiser les classes de taille en tant qu'appareils physiques, les classes de taille de fenêtre ne sont pas explicitement déterminées par la taille de l'écran de l'appareil. Les classes de taille de fenêtre ne sont pas destinées à une logique de type isTablet. Les classes de taille de fenêtre sont déterminées par la taille de fenêtre disponible pour votre application, quel que soit le type d'appareil sur lequel elle s'exécute, ce qui a deux conséquences importantes:

  • Les appareils physiques ne garantissent pas l'utilisation d'une classe de taille de fenêtre spécifique. L'espace disponible à l'écran pour votre application peut différer de la taille de l'écran de l'appareil pour de nombreuses raisons. Sur les appareils mobiles, le mode Écran partagé peut partitionner l'écran entre deux applications. Sous ChromeOS, les applications Android peuvent être présentées dans des fenêtres de format libre qui sont arbitrairement redimensionnables. Les appareils pliables sont équipés de deux écrans de différentes tailles auxquels il est possible d'accéder individuellement en pliant ou en dépliant l'appareil.

  • La classe de taille de fenêtre peut changer tout au long de la durée de vie de votre application.Lorsque votre application est en cours d'exécution, les changements d'orientation de l'appareil, le mode multitâche et le pliage/dépliage peuvent modifier l'espace disponible à l'écran. Par conséquent, la classe de taille de fenêtre est dynamique, et l'interface utilisateur de votre application doit s'adapter en conséquence.

Les classes de taille de fenêtre correspondent aux points d'arrêt compacts, moyens et étendus dans les conseils de mise en page Material Design. Utilisez les classes de taille de fenêtre pour prendre des décisions concernant la mise en page des applications de haut niveau, par exemple pour décider d'utiliser une mise en page canonique spécifique afin de bénéficier d'un espace à l'écran supplémentaire.

Vous pouvez calculer la WindowSizeClass actuelle à l'aide de la fonction de niveau supérieur currentWindowAdaptiveInfo de la bibliothèque androidx.compose.material3.adaptive. L'exemple suivant montre comment calculer la classe de taille de fenêtre et recevoir des mises à jour chaque fois qu'elle change:

val windowSizeClass = currentWindowAdaptiveInfo().windowSizeClass

Gérer les mises en page avec des classes de taille de fenêtre

Les classes de taille de fenêtre vous permettent de modifier la mise en page de votre application à mesure que l'espace d'affichage disponible pour votre application change, par exemple lorsqu'un appareil se plie ou se déplie, que l'orientation de l'appareil change ou que la fenêtre de l'application est redimensionnée en mode multifenêtre.

Localisez la logique de gestion des changements de taille d'affichage en transmettant les classes de taille de fenêtre en tant qu'état aux composables imbriqués, comme n'importe quel autre état d'application:

@OptIn(ExperimentalMaterial3AdaptiveApi::class)
@Composable
fun MyApp(
    windowSizeClass: WindowSizeClass = currentWindowAdaptiveInfo().windowSizeClass
) {
    // Perform logic on the size class to decide whether to show the top app bar.
    val showTopAppBar = windowSizeClass.windowHeightSizeClass != WindowHeightSizeClass.COMPACT

    // MyScreen knows nothing about window sizes, and performs logic based on a Boolean flag.
    MyScreen(
        showTopAppBar = showTopAppBar,
        /* ... */
    )
}

Tester les classes de taille de fenêtre

Lorsque vous modifiez la mise en page, testez le comportement de la mise en page sur toutes les tailles de fenêtre, en particulier avec les points d'arrêt de largeur compacte, moyenne et étendue.

Si vous disposez déjà d'une mise en page pour les écrans de format compact, optimisez d'abord votre mise en page pour la classe de largeur étendue, car cette classe de taille offre le plus d'espace possible pour ajouter du contenu et des modifications de l'interface utilisateur. Ensuite, décidez de la mise en page qui convient pour la classe de largeur moyenne. Envisagez d'ajouter une mise en page spécialisée.

Étapes suivantes

Pour en savoir plus sur l'utilisation des classes de taille de fenêtre pour créer des mises en page responsives/adaptatives, consultez les pages suivantes:

Pour en savoir plus sur ce qui fait la qualité d'une application sur tous les appareils et toutes les tailles d'écran, consultez les pages suivantes: