Massimizzare la conformità dei test con gli invarianti di WindowManager

Per implementare un'esperienza utente coerente e di alta qualità e per evitare problemi che portano a errori del Compatibility Test Suite (CTS), implementa i principi di base di WindowManager (WM) descritti qui. Questi principi si applicano a:

  • Versioni di Android che utilizzano un'architettura multi-finestra, introdotta in Android 14 e proseguita in Android 15 con l'interfaccia utente scalabile.

  • UI scalabile di Android e implementazioni personalizzate

Se applichi i principi, eviterai in modo proattivo la maggior parte dei problemi di conformità CTS e dei test funzionali.

Terminologia

invariante
Una condizione logica che rimane vera durante l'esecuzione di un'app che porta all'integrità strutturale. Un invariante funge da regola di limite.
attività speciale
Nota anche come attività dell'interfaccia utente automatica o attività dell'interfaccia utente di sistema, questa attività critica dell'app ha un'area dedicata sullo schermo che è sempre visibile o è visibile la maggior parte del tempo, anche quando l'utente preme Home,ad esempio una navigazione principale o un'app cluster.
attività standard
Qualsiasi attività standard dell'app che non sia fondamentale per l'interfaccia utente principale del sistema, ad esempio un'app multimediale di terze parti avviata dalla griglia delle app.

Principi di WM

Per massimizzare la conformità al CTS, applica questi principi nelle implementazioni di WM.

Utilizzare una configurazione stabile all'avvio dell'attività

Avvia ogni nuova attività standard con una singola transizione WM che ne imposta la posizione, le dimensioni e la densità finali. Non devi attivare una seconda transizione che modifica la configurazione della finestra dell'attività sottostante (ad esempio dimensioni o densità) immediatamente dopo la prima, in quanto ciò causa una modifica della configurazione immediatamente dopo la creazione dell'attività.

Spostare le attività standard nello stato Interrotto

Quando l'utente passa all'attività o alla scena iniziale, devi spostare tutte le attività standard in esecuzione allo stato interrotto per mantenere il ciclo di vita prevedibile dell'app per Android richiesto dai test CTS.

Impedire l'oscuramento dei contenuti delle attività standard

Non disegnare decorazioni o elementi dell'interfaccia utente personalizzati che ostruiscano i contenuti di un'attività standard. Se disegni overlay personalizzati (ad esempio una barra di controllo personalizzata del clima), devi comunicare le dimensioni al sistema con i margini interni SystemOverlay. Per Android 15 e versioni successive, utilizza DecorPanel nell'interfaccia utente scalabile.

Nascondi le sovrapposizioni nella richiesta della modalità immersiva

Quando un'app richiede la modalità immersiva, devi nascondere tutti gli elementi dell'interfaccia utente personalizzata temporanea e rimuovere i relativi SystemOverlayinsets. Ostruzioni persistenti interferiscono con le aspettative dei pixel di un'app.

Applica gli angoli arrotondati solo a livello di visualizzazione

Applica gli angoli arrotondati solo a livello di visualizzazione utilizzando le configurazioni delle risorse appropriate in frameworks/base. Non applicare angoli arrotondati arbitrari alla superficie di un'attività standard.

In questo modo, si interferisce con i test degli elementi UI. Come misura temporanea, puoi specificare lo stesso raggio dell'angolo arrotondato per la visualizzazione che applichi alla superficie dell'attività standard.

Mantenere le dimensioni dell'app nella richiesta della modalità immersiva

Quando un'app richiede di entrare in modalità immersiva, non ridimensionare la finestra dell'app. In questo modo viene attivata una modifica alla configurazione distruttiva. Per massimizzare l'app, offri invece un pulsante a schermo intero controllato dall'utente.