Anzeigenmasken-API

Stellt den Bereich der Anzeige dar, in dem keine Inhalte angezeigt werden können.

APIs im Surface Duo SDK interagieren mit dem Surface Duo-Gerät und sollten nicht aufgerufen werden, wenn deine App auf anderen Geräten ausgeführt wird. Bevor du diese APIs aufrufst, solltest du prüfen, ob deine App auf einem Surface Duo-Gerät ausgeführt wird. Verwenden Sie den IsDualScreenDevice-Codeausschnitt, um diese Überprüfung durchzuführen.

DisplayMask wurde derart aktualisiert, dass ein Begrenzungsrechteck zurückgegeben wird, das relativ zu den Metriken der Anzeige ist, basierend auf dem App-Kontext. Dies wirkt sich darauf aus, wie sich die API verhält, wenn Ihre App auf einem einzelnen Bildschirm ausgeführt wird, im Vergleich zur über zwei Bildschirme verteilten Ausführung. (Ein Dienst, der zu einem beliebigen Zeitpunkt eine Ansicht erstellt hat, fällt in eine dieser beiden Kategorien.)

  • Bei Ausführung auf einem einzelnen Bildschirm:

    • Fenster- und Anzeigemetriken beziehen sich relativ auf die einzelne Anzeige.
    • DisplayMask gibt eine leere Liste zurück. Es bildet keine Überschneidung mit dem Fenster.
  • Bei über zwei Bildschirme verteilter Ausführung:

    • Fenster- und Anzeigemetriken beziehen sich relativ auf beide Anzeigen, einschließlich der Anzeigemaske.
    • Das DisplayMask-Begrenzungsrechteck identifiziert den Bereich unter dem Hardwarescharnier im Verhältnis zum App-Fenster (DisplayMask = Scharniermaskenrechteck).

    Weitere Informationen finden Sie unter Surface Duo Blog.

Tipp

Das display-mask-Paket funktioniert nur auf Surface Duo.

Erwägen Sie die Verwendung des Jetpack-Fenster-Managers, um auf eine geräteunabhängige API zuzugreifen, die auf klappbaren Geräten anderer Hersteller (sowie auch auf Surface Duo) funktioniert.

Aktualisieren Sie die gradle-Datei mit dem display-mask-Paket, um diese APIs zu verwenden.

import com.microsoft.device.display.DisplayMask

Methoden

Statische Methoden

Methode BESCHREIBUNG
fromResourcesRect(Context context) Erstellt die Anzeigemaske gemäß „config_mainBuiltInDisplayMaskRect“.
fromResourcesRectApproximation(Context context) Erstellt die Anzeigemaske gemäß „config_mainBuiltInDisplayMaskRectApproximation“, wobei es sich um die nächste rechteckbasierte Annäherung der Maske handelt.

Objektmethoden

Methode BESCHREIBUNG
getBoundingRects() Gibt eine Liste von Rechtecken (Rects) zurück, von denen jedes das Begrenzungsrechteck für einen nicht funktionalen Bereich der Anzeige ist.
getBoundingRectsForRotation(int rotation) Gibt eine Liste von Rechtecken (Rects) unter Berücksichtigung der Drehung zurück, von denen jedes das Begrenzungsrechteck für einen nicht funktionalen Bereich der Anzeige ist.
getBounds() Gibt den Begrenzungsbereich der Maske zurück.

Beispiel

Abrufen eines Anzeigemaskenrechtecks (Rect)

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
}

Öffentliche Methoden

fromResourcesRect

public static DisplayMask fromResourcesRect(Context context)

Erstellt die Anzeigemaske gemäß „config_mainBuiltInDisplayMaskRect“.

Parameter

ContextKontext

Ein Kontext für die aktuelle Aktivität.

Rückgabe

DisplayMask

Die neue Anzeigemaske.

fromResourcesRectApproximation

public static DisplayMask fromResourcesRectApproximation(Context context)

Erstellt die Anzeigemaske gemäß „config_mainBuiltInDisplayMaskRectApproximation“, wobei es sich um die nächste rechteckbasierte Annäherung der Maske handelt.

Parameter

ContextKontext

Ein Kontext für die aktuelle Aktivität.

Rückgabe

DisplayMask

Die neue Anzeigemaske.

getBoundingRects

public List<Rect> getBoundingRects()

Gibt eine Liste von Rechtecken (Rects) zurück, von denen jedes das Begrenzungsrechteck für einen nicht funktionalen Bereich der Anzeige ist.

Rückgabe

List<Rect>

Eine Liste der Begrenzungsrechtecke (Rects), eins für jeden Anzeigemaskenbereich.

getBoundingRectsForRotation

public List<Rect> getBoundingRectsForRotation(int rotation)

Gibt eine Liste von Rechtecken (Rects) unter Berücksichtigung der Drehung zurück, von denen jedes das Begrenzungsrechteck für einen nicht funktionalen Bereich der Anzeige ist.

Parameter

intDrehung

Die Drehung, um die die Maske gedreht werden soll. Mögliche Werte sind Surface.ROTATION_0, Surface.ROTATION_90, Surface.ROTATION_180 und Surface.ROTATION_270.

Rückgabe

List<Rect>

Eine Liste der Begrenzungsrechtecke (Rects), eins für jeden Anzeigemaskenbereich.

getBounds

public Region getBounds()

Gibt den Begrenzungsbereich der Maske zurück.

Es kann mehr als eine Maske geben, wobei dann die zurückgegebene Region nicht zusammenhängend und das Begrenzungsrechteck (Rect) bedeutungslos ist, wenn es nicht zuerst überschnitten wurde.

Rückgabe

Region

Der Begrenzungsbereich der Maske. Koordinaten sind relativ zur linken oberen Ecke der Inhaltsansicht in der Einheit „Pixel“.