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
Context
Contesto
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
Context
Contesto
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
int
Rotazione
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.