API de masque d’affichage

Représente la zone de l’affichage qui n’est pas fonctionnelle pour l’affichage de contenu.

Les API du SDK Surface Duo interagissent avec l’appareil Surface Duo et ne doivent pas être appelées quand votre application est en cours d’exécution sur d’autres appareils. Avant d’appeler ces API, vous devez vérifier si votre application est en cours d’exécution sur un appareil Surface Duo. Utilisez l’extrait de code IsDualScreenDevice pour effectuer cette vérification.

DisplayMask a été mis à jour pour restituer un rectangle englobant par rapport aux métriques d’affichage basées sur le contexte de l’application. Cela affecte la façon dont l’API se comporte quand votre application s’exécute sur un seul écran par rapport à son comportement quand elle est répartie sur deux écrans. (Un service qui a créé une vue à n’importe quel moment appartient à l’une de ces deux catégories.)

  • En cas d’exécution sur un seul écran :

    • Les métriques de fenêtre et d’affichage se rapportent à cet affichage unique.
    • DisplayMask retourne une liste vide. Il n’entre pas en intersection avec la fenêtre.
  • En cas d’exécution répartie sur deux écrans :

    • Les métriques de fenêtre et d’affichage se rapportent aux deux écrans, y compris le masque d’affichage.
    • Le rectangle englobant de DisplayMask identifie la zone sous la charnière matérielle par rapport à la fenêtre de l’application (DisplayMask = rectangle du masque de charnière).

    Pour plus d’informations, consultez Blog Surface Duo.

Conseil

Le package display-mask s’exécute uniquement sur Surface Duo.

Envisagez d’utiliser le Gestionnaire de fenêtres Jetpack pour accéder à une API agnostique niveau appareil qui fonctionne sur les appareils pliables d’autres fabricants (ainsi que sur Surface Duo).

Mettez à jour votre fichier gradle avec le package pour utiliser ces API.

import com.microsoft.device.display.DisplayMask

Méthodes

Méthodes statiques

Méthode Description
fromResourcesRect(Context context) Crée le masque d’affichage en fonction de config_mainBuiltInDisplayMaskRect.
fromResourcesRectApproximation(Context context) Crée le masque d’affichage en fonction de config_mainBuiltInDisplayMaskRectApproximation, qui est l’approximation du masque basée sur le rectangle la plus proche.

Méthodes d’objets

Méthode Description
getBoundingRects() Retourne une liste de rectangles, chacun étant le rectangle englobant d’une zone non fonctionnelle sur l’affichage.
getBoundingRectsForRotation(int rotation) Retourne une liste de rectangles par rapport à la rotation, chacun étant le rectangle englobant d’une zone non fonctionnelle sur l’affichage.
getBounds() Retourne la zone englobante du masque.

Exemple

Obtention d’un rectangle de masque d’affichage

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
}

Méthodes publiques

fromResourcesRect

public static DisplayMask fromResourcesRect(Context context)

Crée le masque d’affichage en fonction de config_mainBuiltInDisplayMaskRect.

Paramètres

ContextContext

Contexte de l’activité actuelle.

Retourne

DisplayMask

Nouveau masque d’affichage.

fromResourcesRectApproximation

public static DisplayMask fromResourcesRectApproximation(Context context)

Crée le masque d’affichage en fonction de config_mainBuiltInDisplayMaskRectApproximation, qui est l’approximation du masque basée sur le rectangle la plus proche.

Paramètres

ContextContext

Contexte de l’activité actuelle.

Retourne

DisplayMask

Nouveau masque d’affichage.

getBoundingRects

public List<Rect> getBoundingRects()

Retourne une liste de rectangles (Rect), chacun étant le rectangle englobant d’une zone non fonctionnelle sur l’affichage.

Retourne

List<Rect>

Liste de rectangles (Rect) englobants, un pour chaque zone du masque d’affichage.

getBoundingRectsForRotation

public List<Rect> getBoundingRectsForRotation(int rotation)

Retourne une liste de rectangles (Rect) par rapport à la rotation, chacun étant le rectangle englobant d’une zone non fonctionnelle sur l’affichage.

Paramètres

intint

Le masque de rotation doit pivoter. Les valeurs possibles sont Surface.ROTATION_0, Surface.ROTATION_90, Surface.ROTATION_180, Surface.ROTATION_270

Retourne

List<Rect>

Liste de rectangles (Rect) englobants, un pour chaque zone du masque d’affichage.

getBounds

public Region getBounds()

Retourne la zone englobante du masque.

Il peut y avoir plusieurs masques, auquel cas la région (Region) retournée n’est pas contiguë et son rectangle englobant n’a aucune utilité tant qu’il n’entre pas en intersection avec elle.

Retourne

Region

Zone englobante du masque. Les coordonnées sont exprimées par rapport à l’angle supérieur gauche de l’affichage de contenu, en pixels.