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 display-mask
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
Context
contexte
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
Context
contexte
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
int
rotation
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.