顯示遮罩 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_0
、Surface.ROTATION_90
、Surface.ROTATION_180
、Surface.ROTATION_270
傳回
List<Rect>
周框 Rect
的清單 (每個顯示遮罩區域各一個)。
getBounds
public Region getBounds()
傳回遮罩的周框區域。
遮罩可能會有一個以上,在這種情況下,傳回的 Region
將不會是連續的,而且如果周框矩形不會先有交集,則不具任何意義。
傳回
Region
遮罩的周框區域。 座標會位於內容檢視的左上角,並且以像素為單位。