显示掩码 API
表示无法用于显示内容的显示区域。
Surface Duo SDK 中的 API 与 Surface Duo 设备交互,当应用在其他设备上运行时不应调用这些 API。 在调用这些 API 之前,应检查应用是否在 Surface Duo 设备上运行。 使用 IsDualScreenDevice 代码片段执行此检查。
DisplayMask 已更新,可根据应用上下文返回一个相对于显示指标的边框。 这将影响应用在单个屏幕上运行与跨两个屏幕运行时的 API 行为。 (在任何时候创建视图的服务都属于这两类服务之一。)
在单个屏幕上运行时:
- 窗口和显示指标与该单个显示器相关。
- DisplayMask 返回一个空列表。 它不会与窗口相交。
当跨两个屏幕运行时:
- 窗口和显示指标与两个显示器相关,包括显示掩码。
- DisplayMask 边框将标识硬件铰链下与应用窗口相关的区域(DisplayMask = 铰链掩码矩形)。
有关详细信息,请参阅 Surface Duo 博客。
提示
display-mask
包仅在 Surface Duo 上运行。
请考虑使用 Jetpack 窗口管理器访问在其他制造商(以及 Surface Duo)的可折叠设备上运行的设备无关型 API。
使用 display-mask
包更新 gradle 文件以使用这些 API。
import com.microsoft.device.display.DisplayMask
方法
静态方法
方法 | 说明 |
---|---|
fromResourcesRect(Context context) | 根据 config_mainBuiltInDisplayMaskRect 创建显示掩码。 |
fromResourcesRectApproximation(Context context) | 根据 config_mainBuiltInDisplayMaskRectApproximation(这是掩码最接近的矩形基近似值)创建显示掩码。 |
对象方法
方法 | 说明 |
---|---|
getBoundingRects() | 返回矩形列表,每个矩形都是显示器上非功能区域的边框。 |
getBoundingRectsForRotation(int rotation) | 返回相对于旋转的矩形列表,每个矩形都是显示器上非功能区域的边框。 |
getBounds() | 返回掩码的边界区域。 |
示例
获取显示掩码矩形
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
掩码的边界区域。 坐标相对于内容视图的左上角,以像素为单位。