Share via


顯示遮罩 API

表示無法用於顯示內容的顯示器區域。

Surface Duo SDK 中的 API 會與 Surface Duo 裝置互動,而且當您的應用程式在其他裝置上執行時不得呼叫這些 API。 在呼叫這些 API 之前,您應該檢查您的應用程式是否正在 Surface Duo 裝置上執行。 使用 IsDualScreenDevice 程式碼片段來執行這項檢查。

DisplayMask 已更新為根據應用程式內容傳回與顯示計量對應的周框矩形。 這會影響應用程式在單一螢幕上或跨兩個螢幕執行時的 API 運作方式。 (在任何時間點建立檢視的服務都會屬於這兩個類別的其中一個)。

  • 在單一螢幕上執行時:

    • Windows 和顯示計量都與該單一顯示器相關。
    • DisplayMask 會傳回空白清單。 並且不會與視窗交集。
  • 跨兩個螢幕執行時:

    • 視窗和顯示計量都會與這兩個顯示器相關,包括顯示遮罩。
    • DisplayMask 周框會識別硬體轉軸下與應用程式視窗相關的區域 (DisplayMask = 轉軸遮罩矩形)。

    如需詳細資訊,請參閱 Surface Duo 部落格

提示

display-mask 套件只會在 Surface Duo 上執行。

請考慮使用 Jetpack 視窗管理員 來存取與裝置無關的 API,該 API 可在其他製造商 (以及 Surface Duo) 的可摺疊裝置上運作。

將您的 Gradle 檔案更新為 display-mask 套件 以使用這些 API。

import com.microsoft.device.display.DisplayMask

方法

靜態方法

方法 描述
fromResourcesRect(Context context) 根據 config_mainBuiltInDisplayMaskRect 建立顯示遮罩。
fromResourcesRectApproximation(Context context) 根據 config_mainBuiltInDisplayMaskRectApproximation (最接近的矩形式遮罩近似值) 建立顯示遮罩。

物件方法

方法 描述
getBoundingRects() 傳回 Rect 清單,其中每一個都是顯示器上非功能區域的周框矩形。
getBoundingRectsForRotation(int rotation) 傳回與旋轉相關的 Rect 清單,其中每一個都是顯示器上非功能區域的周框矩形。
getBounds() 傳回遮罩的周框區域。

範例

取得顯示遮罩的 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
}

公用方法

fromResourcesRect

public static DisplayMask fromResourcesRect(Context context)

根據 config_mainBuiltInDisplayMaskRect 建立顯示遮罩。

參數

Context上下文

目前活動的內容。

傳回

DisplayMask

新的顯示遮罩。

fromResourcesRectApproximation

public static DisplayMask fromResourcesRectApproximation(Context context)

根據 config_mainBuiltInDisplayMaskRectApproximation (最接近的矩形式遮罩近似值) 建立顯示遮罩。

參數

Context上下文

目前活動的內容。

傳回

DisplayMask

新的顯示遮罩。

getBoundingRects

public List<Rect> getBoundingRects()

傳回 Rect 清單,其中每一個都是顯示器上非功能區域的周框矩形。

傳回

List<Rect>

周框 Rect 的清單 (每個顯示遮罩區域各一個)。

getBoundingRectsForRotation

public List<Rect> getBoundingRectsForRotation(int rotation)

傳回與旋轉相關的 Rect 清單,其中每一個都是顯示器上非功能區域的周框矩形。

參數

int旋轉

旋轉遮罩應會旋轉。 可能的值為 Surface.ROTATION_0Surface.ROTATION_90Surface.ROTATION_180Surface.ROTATION_270

傳回

List<Rect>

周框 Rect 的清單 (每個顯示遮罩區域各一個)。

getBounds

public Region getBounds()

傳回遮罩的周框區域。

遮罩可能會有一個以上,在這種情況下,傳回的 Region 將不會是連續的,而且如果周框矩形不會先有交集,則不具任何意義。

傳回

Region

遮罩的周框區域。 座標會位於內容檢視的左上角,並且以像素為單位。