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
Context
Kontext
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
Context
Kontext
Ein Kontext für die aktuelle Aktivität.
Rückgabe
DisplayMask
Die neue Anzeigemaske.
getBoundingRects
public List<Rect> getBoundingRects()
Gibt eine Liste von Rechtecken (Rect
s) zurück, von denen jedes das Begrenzungsrechteck für einen nicht funktionalen Bereich der Anzeige ist.
Rückgabe
List<Rect>
Eine Liste der Begrenzungsrechtecke (Rect
s), eins für jeden Anzeigemaskenbereich.
getBoundingRectsForRotation
public List<Rect> getBoundingRectsForRotation(int rotation)
Gibt eine Liste von Rechtecken (Rect
s) unter Berücksichtigung der Drehung zurück, von denen jedes das Begrenzungsrechteck für einen nicht funktionalen Bereich der Anzeige ist.
Parameter
int
Drehung
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 (Rect
s), 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“.