표시 마스크 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에 따라 표시 마스크를 만듭니다.
매개 변수
Context
context
현재 작업에 대한 컨텍스트입니다.
반환
DisplayMask
새로운 표시 마스크입니다.
fromResourcesRectApproximation
public static DisplayMask fromResourcesRectApproximation(Context context)
마스크의 가장 가까운 사각형 기준 근사치인 config_mainBuiltInDisplayMaskRectApproximation에 따라 표시 마스크를 만듭니다.
매개 변수
Context
context
현재 작업에 대한 컨텍스트입니다.
반환
DisplayMask
새로운 표시 마스크입니다.
getBoundingRects
public List<Rect> getBoundingRects()
Rect
목록을 반환합니다. 각 항목은 디스플레이에서 작동하지 않는 영역의 경계 사각형입니다.
반환
List<Rect>
경계 Rect
목록을 반환합니다. 각 항목은 각 표시 마스크 영역을 나타냅니다.
getBoundingRectsForRotation
public List<Rect> getBoundingRectsForRotation(int rotation)
회전과 관련된 Rect
목록을 반환합니다. 각 항목은 디스플레이에서 작동하지 않는 영역을 나타내는 경계 사각형입니다.
매개 변수
int
rotation
회전 마스크는 회전해야 합니다. 가능한 값은 Surface.ROTATION_0
, Surface.ROTATION_90
, Surface.ROTATION_180
, Surface.ROTATION_270
입니다.
반환
List<Rect>
경계 Rect
목록을 반환합니다. 각 항목은 각 표시 마스크 영역을 나타냅니다.
getBounds
public Region getBounds()
마스크의 경계 영역을 반환합니다.
마스크가 여러 개 있을 수 있습니다. 이 경우 반환된 Region
은 인접하지 않으며, 경계 사각형은 영역과 먼저 교차하지 않는 이상 의미가 없습니다.
반환
Region
마스크의 경계 영역입니다. 좌표는 콘텐츠 보기의 왼쪽 위 모서리와 픽셀 단위를 기준으로 합니다.