Qualificateurs de ressources sur Surface Duo

Sur les appareils double écran, les dispositions d’application ne doivent pas masquer le contenu sous la charnière. Si votre application charge des dispositions et d’autres ressources à l’aide de noms de dossiers qualifiés, vous pouvez le faire en créant des configurations spéciales pour les appareils Surface Duo. Android fournit des qualificatifs pour gérer de multiples configurations. Ainsi, que votre application fonctionne sur un appareil doté d'un petit écran, une tablette avec un écran de 10 pouces ou une Surface Duo, vous pouvez utiliser les valeurs des qualificatifs pour optimiser votre application pour différents appareils.

Les qualificateurs de ressources correspondent à n’importe quel appareil avec les caractéristiques données. Par conséquent, bien que les valeurs indiquées ci-dessous correspondent à Surface Duo et Surface Duo 2, il est possible que maintenant (ou à l’avenir) ils puissent également correspondre à d’autres appareils. Essayez de tester autant d’appareils réels que possible, en particulier ceux avec des tailles d’écran similaires et des ratios d’aspect, pour vérifier le chargement des ressources comme prévu.

Charger des ressources spécifiques à l’appareil

Étant donné que Surface Duo et Surface Duo 2 ont des dimensions d’écran différentes, il est possible d’utiliser des qualificateurs de ressources pour charger différentes ressources pour chaque modèle :

Appareil Qualificateur de ressource spécifique à l’appareil
Surface Duo sw696dp-2784×1740
Surface Duo 2 sw732dp-2754×1832

Ces qualificateurs sont mis en correspondance exactement avec les dimensions de chaque appareil, pour éviter la correspondance avec d’autres matériels autant que possible. Si aucune ressource spécifique n’est disponible, Surface Duo applique les qualificateurs existants par ordre de priorité.

Les noms de répertoires de ressources courants pour chaque appareil sont indiqués ci-dessous :

Surface Duo

  • drawable-sw696dp-2784×1740 - pour les images
  • layout-sw696dp-2784×1740 : pour les fichiers XML de mise en page
  • values-sw696dp-2784×1740 - pour les valeurs des ressources, comme les fichiers strings.xml

Surface Duo 2

  • drawable-sw732dp-2754×1832 - pour les images
  • layout-sw732dp-2754×1832 - pour les fichiers XML de mise en page
  • vvalues-sw732dp-2754×1832 : pour des valeurs de ressource, comme les fichiers strings.xml

Vous pouvez éviter la duplication à l’aide de ressources d’alias pour référencer des éléments pour les deux appareils.

Utiliser un qualificateur de ressource unique

Vous pouvez également utiliser un qualificateur de ressource unique - sw696dp-2754×1740 - pour faire correspondre les deux appareils. Cette valeur combine les valeurs communes maximales des deux appareils. Vous devez tester qu’il résout correctement sur tous vos appareils cibles.

Avertissement

De nombreuses applications utilisent sw720dp ou sw732dp pour fournir des ressources tablettes distinctes de leurs dispositions téléphoniques. Si votre application utilise un répertoire de largeur le plus petit correspondant pour certaines ressources, cela sera résolu avantsw696dp-2754×1740 et toutes les ressources spécifiques à Surface Duo ne seront pas chargées.

À l’exception de combinaisons très simples de qualificateurs de ressources, il sera plus fiable d’utiliser les qualificateurs de ressources distincts pour chaque appareil Surface Duo, comme indiqué au début de cette page.

Comment les qualificateurs sont construits

Les qualificateurs de ressources sont créés en ajoutant des configurations au nom d’un dossier de ressource. Tant qu’ils suivent les conventions d’affectation de noms appropriées, plusieurs qualificateurs peuvent être ajoutés au même dossier à l’aide de tirets.

Les dimensions de Surface Duo indiquent que l’appareil en mode double écran paysage a la plus petite largeur, à savoir 720 dp. Cette valeur ne change pas quand l’orientation de l’écran change. Elle reste constante, que nous soyons en mode double écran portrait ou double écran paysage. Étant donné que la barre d’état réduit la zone d’écran disponible pour les applications, soustrait 24dp pour obtenir la valeur de largeur la plus petite correcte : sw696dp pour Surface Duo et sw732dp pour Surface Duo 2.

La spécification de la plus petite largeur limite le nombre d’appareils qui chargeront ces ressources, mais de nombreuses tablettes seront incluses. Les ressources peuvent être plus restreintes en spécifiant des dimensions d’écran. En ajoutant 2784x1740 pour Surface Duo ou 2754×1832 pour Surface Duo 2 au qualificateur de ressource, les ressources seront chargées uniquement lorsque la largeur la plus petite correspond et que les dimensions de l’écran sont au moins aussi grandes que la taille de pixel spécifiée.

Notes

Le codage en dur des ressources sur des valeurs spécifiques peut avoir des conséquences inattendues : si un nouvel appareil apparaît avec la même taille d’écran, il correspond également au qualificateur. Planifiez vos ressources en conséquence.

Largeur d’écran minimale dans le code

La largeur d’écran minimale peut également être vérifiée dans le code à l’aide de resources.configuration.smallestScreenWidthDp, qui est disponible dans un contexte d’interface utilisateur, comme celui d’une classe d’activité. Évitez d’utiliser la valeur d’un contexte autre que celui d’une interface utilisateur (par exemple, celui d’une application), et évitez de mettre en cache la valeur car celle-ci peut changer sur les appareils double écran ou si le multifenêtrage est activé et que l’application est démarrée ou déplacée vers une partie de l’écran plutôt que vers l’écran entier.

Modifications apportées à Android 10

Dans Android 11, la façon dont Surface Duo correspond au qualificateur de ressource a changé. Auparavant, la dimension d’écran entière a été utilisée pour calculer les tailles des qualificateurs de ressources correspondant, mais à partir d’Android 11, la barre de navigation de 60 pixels est soustraite avant la correspondance.

Les valeurs suivantes ont été précédemment prises en charge sur Surface Duo exécutant Android 10 :

  • values-sw720dp-2754×1800 : pour des valeurs de ressource
  • layout-sw720dp-2754×1800 : pour la disposition des fichiers XML de disposition

Avertissement

Ces dossiers sw720dp-2754×1800ne sont plus pris en charge sur Surface Duo exécutant Android 11 ou version ultérieure. Utilisez les qualificateurs de ressources spécifiés au début de cette page.

Ressources