Les écrans connectés étendent l'expérience de fenêtrage sur ordinateur aux téléphones standards, ce qui permet aux utilisateurs d'accéder à de grands écrans depuis leurs appareils mobiles. Cette fonctionnalité ouvre de nouvelles possibilités en matière d'interaction avec les applications et de productivité des utilisateurs.
Toutes les fonctionnalités uniques de la gestion des fenêtres sur ordinateur s'appliquent aux écrans connectés. Lorsque vous connectez un téléphone à un écran, l'état du téléphone reste inchangé et une session de bureau vide démarre sur l'écran connecté. L'appareil et l'écran fonctionnent comme deux systèmes distincts, avec des applications spécifiques à chaque écran.
Si vous connectez un appareil compatible avec le fenêtrage du bureau, comme une tablette, à un écran externe, la session de bureau s'étend sur les deux écrans. Les deux écrans fonctionnent alors comme un système continu. Cette configuration permet de déplacer librement les fenêtres, le contenu et le curseur entre les deux écrans.
Pour prendre en charge efficacement les écrans connectés, vous devez prêter attention à plusieurs aspects de la conception et de l'implémentation de votre application. Les bonnes pratiques suivantes garantissent une expérience utilisateur fluide et productive.
Gérer les modifications d'affichage dynamique
De nombreuses applications sont conçues en partant du principe que l'objet Display
et ses caractéristiques ne changeront pas pendant le cycle de vie de l'application. Toutefois, lorsqu'un utilisateur connecte ou déconnecte un écran externe, ou même déplace une fenêtre d'application entre les écrans, l'objet Display
sous-jacent associé au contexte ou à la fenêtre de votre application peut changer. Les propriétés de l'écran, telles que la taille, la résolution, la fréquence d'actualisation, la compatibilité HDR et la densité, peuvent toutes être différentes. Si vous codez en dur des valeurs en fonction de l'écran du téléphone, par exemple, vos mises en page risquent de ne pas fonctionner sur un écran externe.
Les écrans externes peuvent également avoir des densités de pixels très différentes. Vous devez vous assurer que votre application répond correctement aux modifications de densité. Pour ce faire, vous devez utiliser des pixels indépendants de la densité (dp) pour les mises en page, fournir des ressources spécifiques à la densité et vous assurer que votre UI s'adapte correctement.
Utiliser le bon contexte
L'utilisation du contexte adéquat est essentielle dans les environnements multi-écrans. Lors de l'accès aux ressources, le contexte de l'activité (qui est affiché) est différent du contexte de l'application (qui ne l'est pas).
Le contexte d'activité contient des informations sur l'écran et est toujours ajusté en fonction de la zone d'affichage dans laquelle l'activité apparaît. Vous pouvez ainsi obtenir les bonnes informations sur les densités d'affichage ou les métriques de fenêtre de votre application. Utilisez toujours le contexte d'activité (ou un autre contexte basé sur l'UI) pour obtenir des informations sur la fenêtre ou l'écran actuels. Cela affecte également certaines API système qui utilisent des informations du contexte.
Obtenir des informations sur l'affichage
Vous pouvez utiliser la classe Display
pour obtenir des informations sur un affichage particulier, comme sa taille ou ses indicateurs de sécurité. Pour obtenir les affichages disponibles, utilisez le service système DisplayManager
:
val displayManager = getSystemService(Context.DISPLAY_SERVICE) as DisplayManager
val displays = displayManager.getDisplays()
Gérer le lancement et la configuration des activités
Avec les écrans connectés, les applications peuvent spécifier l'écran sur lequel elles doivent s'exécuter lorsqu'elles se lancent ou lorsqu'elles créent une autre activité. Ce comportement dépend du mode de lancement de l'activité défini dans le fichier manifeste, ainsi que des options et des indicateurs d'intent définis par l'entité qui lance l'activité.
Lorsqu'une activité est déplacée vers un affichage secondaire, votre application peut faire l'objet d'une mise à jour du contexte, du redimensionnement de la fenêtre, ainsi que de modifications de la configuration et des ressources. Si l'activité gère la modification de configuration, elle en est informée dans onConfigurationChanged()
. Sinon, l'activité est redémarrée.
Si le mode de lancement sélectionné pour une activité autorise plusieurs instances, le lancement sur un écran secondaire peut créer une instance de l'activité. Les deux activités sont réactivées en même temps, ce qui peut être utile dans certains scénarios de multitâche.
Vous pouvez lancer une activité sur un écran particulier à l'aide de ActivityOptions
:
val options = ActivityOptions.makeBasic()
options.setLaunchDisplayId(targetDisplay.displayId)
startActivity(intent, options.toBundle())
Éviter les listes d'autorisation d'appareils
Les applications limitent parfois l'interface utilisateur et les fonctionnalités pour les grands écrans à certains appareils via une liste d'autorisation ou en vérifiant la taille d'affichage intégrée. Avec les écrans connectés, cette approche n'est plus efficace, car pratiquement tous les nouveaux appareils peuvent être connectés à un grand écran. Concevez votre application de sorte qu'elle soit responsive et adaptable à différentes tailles et densités d'écran.
Prendre en charge les périphériques externes
Lorsque les utilisateurs se connectent à un écran externe, ils créent souvent un environnement plus semblable à un ordinateur de bureau. Cela implique souvent d'utiliser des claviers, des souris, des pavés tactiles, des webcams, des micros et des haut-parleurs externes. Vous devez vous assurer que votre application fonctionne parfaitement avec ces périphériques. Cela inclut la gestion des raccourcis clavier, la gestion des interactions avec le pointeur de la souris, la prise en charge correcte des caméras ou des micros externes, et le respect du routage de la sortie audio. Pour en savoir plus, consultez la section Entrées compatibles sur les grands écrans.
Améliorer la productivité des utilisateurs
Les écrans connectés offrent une opportunité importante d'améliorer la productivité des utilisateurs. Vous disposez désormais des outils nécessaires pour créer des applications mobiles capables d'offrir des expériences comparables à celles des applications pour ordinateur. Envisagez d'implémenter les fonctionnalités suivantes pour améliorer la productivité des utilisateurs:
- Autorisez les utilisateurs à ouvrir plusieurs instances de la même application. Cela est très utile pour des tâches telles que comparer des documents, gérer différentes conversations ou afficher plusieurs fichiers simultanément.
- Permettez aux utilisateurs de partager des données riches dans et en dehors de votre application à l'aide de la fonctionnalité glisser-déposer.
- Aidez les utilisateurs à maintenir leur workflow lors des modifications de configuration en implémentant un système de gestion de l'état robuste.
En suivant ces consignes et en utilisant les exemples de code fournis, vous pouvez créer des applications qui s'adaptent parfaitement aux écrans connectés, offrant ainsi aux utilisateurs une expérience plus riche et plus productive.