표시 마스크 API

콘텐츠를 표시하는 용도로는 작동하지 않는 표시 영역을 나타냅니다.

Surface Duo SDK의 API는 Surface Duo 디바이스와 상호 작용하며, 앱이 다른 디바이스에서 실행되는 경우에는 호출하면 안 됩니다. 이러한 API를 호출하기 전에, 앱이 Surface Duo 디바이스에서 실행되고 있는지 확인해야 합니다. IsDualScreenDevice 코드 조각을 사용하여 이 검사를 수행합니다.

앱 컨텍스트를 기반으로 표시 메트릭에 상대적인 경계 사각형을 반환하도록 DisplayMask가 업데이트되었습니다. 이로 인해 앱이 단일 화면에서 실행될 때와 두 화면에 걸쳐 실행될 때의 API 동작에 영향이 있습니다. (언제든지 보기를 만든 서비스는 이러한 두 범주 중 하나에 속합니다.)

  • 단일 화면에서 실행되는 경우:

    • 창과 표시 메트릭은 해당 단일 표시와 관계가 있습니다.
    • DisplayMask는 빈 목록을 반환합니다. 창과 교차하지 않습니다.
  • 두 화면에 걸쳐 실행되는 경우:

    • 창과 표시 메트릭은 표시 마스크를 포함하여 두 표시 모두와 관계가 있습니다.
    • DisplayMask 경계 사각형은 앱 창과 관계가 있는 하드웨어 힌지 아래의 영역을 식별합니다(DisplayMask = 힌지 마스크 사각형).

    자세한 내용은 Surface Duo 블로그를 참조하세요.

display-mask 패키지는 Surface Duo에서만 실행됩니다.

Jetpack Window Manager를 사용하여 다른 제조업체의 폴더블 디바이스(Surface Duo 포함)에서 작동하는 디바이스 기반 API에 액세스해 보세요.

이러한 API를 사용하려면 display-mask 패키지로 gradle 파일을 업데이트합니다.

import com.microsoft.device.display.DisplayMask

메서드

정적 메서드

메서드 설명
fromResourcesRect(Context context) config_mainBuiltInDisplayMaskRect에 따라 표시 마스크를 만듭니다.
fromResourcesRectApproximation(Context context) 마스크의 가장 가까운 사각형 기준 근사치인 config_mainBuiltInDisplayMaskRectApproximation에 따라 표시 마스크를 만듭니다.

개체 메서드

메서드 설명
getBoundingRects() Rect 목록을 반환합니다. 각 항목은 디스플레이에서 작동하지 않는 영역을 나타내는 경계 사각형입니다.
getBoundingRectsForRotation(int rotation) 회전과 관련된 Rect 목록을 반환합니다. 각 항목은 디스플레이에서 작동하지 않는 영역을 나타내는 경계 사각형입니다.
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
}

public 메서드

fromResourcesRect

public static DisplayMask fromResourcesRect(Context context)

config_mainBuiltInDisplayMaskRect에 따라 표시 마스크를 만듭니다.

매개 변수

Contextcontext

현재 작업에 대한 컨텍스트입니다.

반환

DisplayMask

새로운 표시 마스크입니다.

fromResourcesRectApproximation

public static DisplayMask fromResourcesRectApproximation(Context context)

마스크의 가장 가까운 사각형 기준 근사치인 config_mainBuiltInDisplayMaskRectApproximation에 따라 표시 마스크를 만듭니다.

매개 변수

Contextcontext

현재 작업에 대한 컨텍스트입니다.

반환

DisplayMask

새로운 표시 마스크입니다.

getBoundingRects

public List<Rect> getBoundingRects()

Rect 목록을 반환합니다. 각 항목은 디스플레이에서 작동하지 않는 영역의 경계 사각형입니다.

반환

List<Rect>

경계 Rect 목록을 반환합니다. 각 항목은 각 표시 마스크 영역을 나타냅니다.

getBoundingRectsForRotation

public List<Rect> getBoundingRectsForRotation(int rotation)

회전과 관련된 Rect 목록을 반환합니다. 각 항목은 디스플레이에서 작동하지 않는 영역을 나타내는 경계 사각형입니다.

매개 변수

introtation

회전 마스크는 회전해야 합니다. 가능한 값은 Surface.ROTATION_0, Surface.ROTATION_90, Surface.ROTATION_180, Surface.ROTATION_270입니다.

반환

List<Rect>

경계 Rect 목록을 반환합니다. 각 항목은 각 표시 마스크 영역을 나타냅니다.

getBounds

public Region getBounds()

마스크의 경계 영역을 반환합니다.

마스크가 여러 개 있을 수 있습니다. 이 경우 반환된 Region은 인접하지 않으며, 경계 사각형은 영역과 먼저 교차하지 않는 이상 의미가 없습니다.

반환

Region

마스크의 경계 영역입니다. 좌표는 콘텐츠 보기의 왼쪽 위 모서리와 픽셀 단위를 기준으로 합니다.