API maschera di visualizzazione

Rappresenta l'area di visualizzazione non funzionale alla visualizzazione del contenuto.

Le API in Surface Duo SDK interagiscono con il dispositivo Surface Duo e non devono essere chiamate quando l'app è in esecuzione in altri dispositivi. Prima di chiamare le API, verifica che l'app sia in esecuzione in un dispositivo Surface Duo. Per eseguire questa verifica, usa il frammento di codice IsDualScreenDevice.

L'API DisplayMask è stata aggiornata per restituire un rettangolo delimitatore rispetto alle metriche di visualizzazione in base al contesto dell'app. Questa modifica influisce sul comportamento dell'API quando l'app è in esecuzione su un singolo schermo rispetto a quando è in esecuzione in forma estesa su due schermi. Un servizio che comporta la creazione di una vista, ad un certo punto rientrerà in una di queste due categorie.

  • Esecuzione su un singolo schermo:

    • Le finestre e le metriche di visualizzazione sono in relazione con la visualizzazione singola.
    • L'API DisplayMask restituisce un elenco vuoto, che non si interseca con la finestra.
  • Esecuzione in forma estesa su due schermi:

    • Le finestre e le metriche di visualizzazione sono in relazione con entrambe le visualizzazioni, inclusa la maschera di visualizzazione.
    • Il rettangolo delimitatore di DisplayMask identificherà l'area della cerniera dell'hardware in rapporto alla finestra dell'app (DisplayMask = rettangolo della maschera della cerniera).

    Per altre informazioni, vedi il blog di Surface Duo.

Suggerimento

Il pacchetto display-mask viene eseguito solo in Surface Duo.

Utilizzare Jetpack Window Manager per accedere a un'API indipendente del dispositivo che funzioni sui dispositivi ripieghevoli di altri produttori (oltre che su Surface Duo).

Aggiornare il file Gradle con il pacchetto display-mask per usare queste API.

import com.microsoft.device.display.DisplayMask

Metodi

Metodi statici

Metodo Descrizione
fromResourcesRect(Context context) Crea la maschera di visualizzazione in base a config_mainBuiltInDisplayMaskRect.
fromResourcesRectApproximation(Context context) Crea la maschera di visualizzazione in base a config_mainBuiltInDisplayMaskRectApproximation, che è la migliore approssimazione al rettangolo della maschera.

Metodi di oggetto

Metodo Descrizione
getBoundingRects() Restituisce un elenco di oggetti Rect, ciascuno dei quali rappresenta il rettangolo delimitatore di un'area non funzionale sullo schermo.
getBoundingRectsForRotation(int rotation) Restituisce un elenco di oggetti Rect rispetto alla rotazione, ciascuno dei quali rappresenta il rettangolo delimitatore di un'area non funzionale sullo schermo.
getBounds() Restituisce l'area di delimitazione della maschera.

Esempio

Per ottenere il rettangolo di una maschera di visualizzazione

val displayMask: DisplayMask = DisplayMask.fromResourcesRect(this)
val masks: List<Rect> = displayMask.getBoundingRectsForRotation(rotation) // pass in orientation (test with 0)
var mask = Rect()
if (!masks.isEmpty()) {
    mask = masks[0]
    // layout around masked area
}

Metodi pubblici

fromResourcesRect

public static DisplayMask fromResourcesRect(Context context)

Crea la maschera di visualizzazione in base a config_mainBuiltInDisplayMaskRect.

Parameters

ContextContesto

Contesto per l'attività corrente.

Restituisce

DisplayMask

Nuova maschera di visualizzazione.

fromResourcesRectApproximation

public static DisplayMask fromResourcesRectApproximation(Context context)

Crea la maschera di visualizzazione in base a config_mainBuiltInDisplayMaskRectApproximation, che è la migliore approssimazione al rettangolo della maschera.

Parameters

ContextContesto

Contesto per l'attività corrente.

Restituisce

DisplayMask

Nuova maschera di visualizzazione.

getBoundingRects

public List<Rect> getBoundingRects()

Restituisce un elenco di oggetti Rect, ciascuno dei quali rappresenta il rettangolo delimitatore di un'area non funzionale sullo schermo.

Restituisce

List<Rect>

Elenco di oggetti Rect di delimitazione, uno per ogni area della maschera di visualizzazione.

getBoundingRectsForRotation

public List<Rect> getBoundingRectsForRotation(int rotation)

Restituisce un elenco di oggetti Rect rispetto alla rotazione, ciascuno dei quali rappresenta il rettangolo delimitatore di un'area non funzionale sullo schermo.

Parameters

intRotazione

La maschera di rotazione viene ruotata. I valori possibili sono Surface.ROTATION_0, Surface.ROTATION_90, Surface.ROTATION_180 e Surface.ROTATION_270.

Restituisce

List<Rect>

Elenco di oggetti Rect di delimitazione, uno per ogni area della maschera di visualizzazione.

getBounds

public Region getBounds()

Restituisce l'area di delimitazione della maschera.

Possono essere presenti più maschere, in questo caso l'oggetto Region restituito sarà non contiguo e il relativo rettangolo delimitatore non sarà significativo se prima non interseca l'oggetto.

Restituisce

Region

Area di delimitazione della maschera. Le coordinate sono relative all'angolo superiore sinistro della visualizzazione contenuto ed espresse in unità pixel.