I display connessi estendono l'esperienza di visualizzazione a finestra del computer agli smartphone standard, consentendo agli utenti di accedere a schermi di grandi dimensioni dai propri dispositivi mobili. Questa funzionalità apre nuove possibilità per l'interazione con le app e la produttività degli utenti.
Tutte le funzionalità uniche delle finestre del desktop si applicano ai display collegati. Quando colleghi uno smartphone a un display, lo stato dello smartphone rimane invariato e sul display connesso viene avviata una sessione desktop vuota. Il dispositivo e il display agiscono come due sistemi individuali, con app specifiche per ogni display.
Se colleghi un dispositivo con finestre delle app, ad esempio un tablet, a un monitor esterno, la sessione desktop si estende su entrambi i display. I due display funzionano quindi come un unico sistema continuo. Questa configurazione consente alle finestre, ai contenuti e al cursore di spostarsi liberamente tra i due display.
Il supporto efficace dei display connessi richiede attenzione a diversi aspetti del design e dell'implementazione dell'app. Le best practice riportate di seguito garantiscono un'esperienza utente fluida e produttiva.
Gestire le modifiche al display dinamico
Molte app sono progettate presupponendo che l'oggetto Display
e le sue caratteristiche non cambieranno durante il ciclo di vita dell'app. Tuttavia, quando un utente collega o scollega un monitor esterno o sposta la finestra di un'app tra i display, l'oggetto Display
sottostante associato al contesto o alla finestra dell'app può cambiare. Le proprietà del display, come dimensioni, risoluzione, frequenza di aggiornamento, supporto HDR e densità, possono essere diverse. Ad esempio, se inserisci valori hardcoded in base allo schermo dello smartphone, è probabile che i layout vengano danneggiati su un display esterno.
I display esterni possono anche avere densità di pixel molto diverse. Devi assicurarti che l'app risponda correttamente alle variazioni di densità. Ciò comporta l'utilizzo di pixel indipendenti dalla densità (dp) per i layout, la fornitura di risorse specifiche per la densità e l'assicurazione che l'interfaccia utente venga ridimensionata in modo appropriato.
Usare il contesto giusto
L'utilizzo del contesto corretto è fondamentale negli ambienti con più display. Quando accedi alle risorse, il contesto dell'attività (che viene visualizzato) è diverso dal contesto dell'applicazione (che non viene visualizzato).
Il contesto dell'attività contiene informazioni sul display e viene sempre regolato in base all'area di visualizzazione in cui viene visualizzata l'attività. In questo modo puoi ottenere le informazioni corrette sulla densità del display o sulle metriche della finestra della tua app. Utilizza sempre il contesto dell'attività (o un altro contesto basato sull'interfaccia utente) per ottenere informazioni sulla finestra o sul display corrente. Questo influisce anche su alcune API di sistema che utilizzano le informazioni del contesto.
Visualizzare le informazioni sul display
Puoi utilizzare la classe Display
per ottenere informazioni su una determinata visualizzazione, ad esempio le dimensioni o gli indicatori che indicano se una visualizzazione è sicura. Per visualizzare le visualizzazioni disponibili, utilizza il servizio di sistema DisplayManager
:
val displayManager = getSystemService(Context.DISPLAY_SERVICE) as DisplayManager
val displays = displayManager.getDisplays()
Gestire il lancio e la configurazione delle attività
Con i display connessi, le app possono specificare su quale display deve essere eseguita un'app al momento del lancio o quando crea un'altra attività. Questo comportamento dipende dalla modalità di lancio dell'attività definita nel file manifest e dagli indicatori e dalle opzioni dell'intent impostati dall'entità che lancia l'attività.
Quando un'attività viene spostata in un display secondario, la tua app può subire un aggiornamento del contesto, il ridimensionamento della finestra e modifiche alla configurazione e alle risorse. Se l'attività gestisce la modifica della configurazione, viene inviata una notifica in onConfigurationChanged()
. In caso contrario, l'attività viene riavviata.
Se la modalità di lancio selezionata per un'attività consente più istanze, il lancio su una schermata secondaria può creare una nuova istanza dell'attività. Entrambe le attività vengono riprese contemporaneamente, il che può essere utile per determinati scenari di multitasking.
Puoi avviare un'attività su un determinato display utilizzando ActivityOptions
:
val options = ActivityOptions.makeBasic()
options.setLaunchDisplayId(targetDisplay.displayId)
startActivity(intent, options.toBundle())
Evita le liste consentite dei dispositivi
A volte le app limitano l'interfaccia utente e le funzionalità per schermi di grandi dimensioni a dispositivi selezionati tramite una lista consentita o controllando le dimensioni dello schermo integrate. Con i display connessi a internet, questo approccio non è più efficace, poiché praticamente qualsiasi nuovo dispositivo può essere collegato a uno schermo di grandi dimensioni. Progetta la tua app in modo che sia adattabile e sensibile a varie dimensioni e densità dello schermo.
Supporto delle periferiche esterne
Quando gli utenti si connettono a un display esterno, spesso creano un ambiente più simile a un computer. Spesso questo comporta l'utilizzo di tastiere, mouse, trackpad, webcam, microfoni e altoparlanti esterni. Devi assicurarti che la tua app funzioni perfettamente con queste periferiche. Sono incluse la gestione delle scorciatoie da tastiera, le interazioni con il cursore del mouse, il supporto corretto di videocamere o microfoni esterni e il rispetto del routing dell'uscita audio. Per maggiori dettagli, vedi Compatibilità di input su schermi di grandi dimensioni.
Migliorare la produttività degli utenti
I display connessi offrono un'opportunità significativa per migliorare la produttività degli utenti. Ora hai gli strumenti per creare app mobile che possono offrire esperienze paragonabili a quelle delle applicazioni desktop. Valuta la possibilità di implementare le seguenti funzionalità per aumentare la produttività degli utenti:
- Consenti agli utenti di aprire più istanze della stessa app. Questa opzione è fondamentale per attività come il confronto di documenti, la gestione di conversazioni diverse o la visualizzazione di più file contemporaneamente.
- Consenti agli utenti di condividere dati avanzati all'interno e all'esterno della tua app con il trascinamento.
- Aiuta gli utenti a mantenere il flusso di lavoro invariato durante le modifiche di configurazione implementando un solido sistema di gestione degli stati.
Seguendo queste linee guida e utilizzando gli esempi di codice forniti, puoi creare app che si adattano perfettamente ai display connessi a internet, offrendo agli utenti un'esperienza più ricca e produttiva.