데스크톱 윈도잉을 통해 사용자는 크기 조절이 가능한 여러 개의 앱을 동시에 실행할 수 있음 앱 창을 통해 다재다능한 데스크톱과 같은 환경을 제공합니다.
그림 1에서 데스크톱 윈도잉의 화면 구성을 확인할 수 있습니다. 사용 설정되어 있습니다. 다음 사항을 참고하세요.
- 사용자는 여러 앱을 동시에 나란히 실행할 수 있습니다.
- 태스크 바는 실행 중인 앱을 보여주는 디스플레이 하단의 고정된 위치에 있습니다. 사용자는 빠른 액세스를 위해 앱을 고정할 수 있습니다.
- 맞춤설정이 가능한 새로운 헤더 표시줄이 최소화 및 최대화와 같은 컨트롤로 각 창 상단을 장식합니다.
기본적으로 앱은 Android 태블릿에서 전체 화면으로 열립니다. 데스크톱 윈도잉에서 앱을 실행하려면 UI 내에서 핸들을 드래그합니다(그림 2 참고).
앱이 데스크톱 창에서 열리면 다른 앱은 데스크톱 창에서 다음과 같이 열립니다. 좋습니다.
또한 사용자는 창 아래에 표시되는 메뉴에서 데스크톱 윈도잉을 호출할 수도 있습니다. 핸들을 탭하거나 클릭하거나 단축키를 사용할 때 창 핸들 표시 메타 키 (Windows, Command 또는 검색) + Ctrl + 아래쪽 화살표:
사용자는 활성 창을 모두 닫거나 데스크톱 창 상단의 창 핸들을 잡고 앱을 화면 상단으로 드래그하여 데스크톱 창 모드를 종료합니다. Meta + H 키보드 단축키를 사용하면 데스크톱 창 모드가 종료되고 앱이 전체 화면으로 다시 실행됩니다.
바탕화면 창으로 돌아가려면 화면 왼쪽 상단의 바탕 화면 공간 타일을 누르거나 클릭합니다. 최근 화면
크기 조절 가능 여부 및 호환성 모드
데스크톱 윈도잉에서 방향이 잠긴 앱은 자유롭게 크기를 조절할 수 있습니다. 즉, 활동이 세로 방향으로 고정, 사용자는 여전히 앱의 크기를 가로 모드 방향 창으로 조정할 수 있습니다.
크기를 조절할 수 없다고 선언된 앱 (즉,
resizableActivity = false
)
가로 세로 비율을 동일하게 유지하면서 UI 크기가 조정됩니다.
방향을 잠그거나 크기 조절 불가로 선언된 카메라 앱에는 특수 처리: 창 크기를 완전히 조절할 수 있고 뷰파인더의 가로세로 비율은 동일하게 유지됩니다. 앱이 항상 세로 모드 또는 가로 모드로 실행된다고 가정하여 앱이 미리보기 또는 캡처된 이미지 방향이나 가로세로 비율을 잘못 계산하여 늘어나거나 옆으로 기울어지거나 거꾸로 된 이미지가 표시되도록 하드코딩하거나 가정합니다.
앱이 완전 반응형 카메라 뷰파인더를 구현할 준비가 될 때까지 특수 취급을 받으면 보다 기본적인 사용자 경험을 제공하여 잘못된 가정이 야기될 수 있는 영향을 미칩니다
카메라 앱의 호환성 모드에 관한 자세한 내용은 다음을 참고하세요. 기기 호환성 모드.
맞춤설정이 가능한 헤더 인셋
데스크톱 창에서 실행되는 모든 앱에는
몰입형 모드입니다.
앱의 콘텐츠가 헤더 표시줄에 가려지지 않도록 합니다.
헤더 표시줄은 자막 모음 인셋 유형입니다.
androidx.compose.foundation.layout.WindowInsets.Companion.captionBar()
조회수, WindowInsets.Type.captionBar()
,
시스템 표시줄의 일부입니다.
인셋 처리에 관한 자세한 내용은 앱에서 더 넓은 화면에 콘텐츠 표시 및 Compose에서 창 인셋 처리를 참고하세요.
헤더 표시줄도 맞춤설정할 수 있습니다. Android 15에서는 모양 유형을 도입했습니다.
다음을 만들려면 APPEARANCE_TRANSPARENT_CAPTION_BAR_BACKGROUND
앱이 내부에 맞춤 콘텐츠를 그릴 수 있도록 헤더 막대가 투명합니다.
표시됩니다.
그러면 앱은 시스템에서 앱 상단의 투명한 자막 표시줄에 그리는 시스템 자막 요소(닫기 및 최대화 버튼)를 제외하고 콘텐츠의 상단 부분을 자막 표시줄(배경, 맞춤 콘텐츠 등)처럼 보이도록 스타일 지정해야 합니다.
앱이 캡션 내 시스템 요소의 모양을 전환할 수 있음
APPEARANCE_LIGHT_CAPTION_BARS
를 사용한 밝은 테마 및 어두운 테마
탐색 메뉴가 전환되는 방식과 비슷합니다.
또한 Android 15에서는
WindowInsets#getBoundingRects()
메서드를 사용하면 앱이 자막 표시줄 인셋을 더 자세히 검사할 수 있습니다.
앱은 시스템이 시스템 요소를 그리는 영역과 앱이 시스템 요소를 겹치지 않게 맞춤 콘텐츠를 배치할 수 있는 사용되지 않는 영역을 구분할 수 있습니다.
API에서 반환하는 Rect
객체 목록은 피해야 할 시스템 영역을 나타냅니다. 남은 공간 (직사각형의 크기를 빼서 계산)
캡션 표시줄 인셋에서 가져온 것)에서는 아무런 코드 없이 앱을 그릴 수 있습니다.
시스템 요소가 겹치고 입력을 받을 수 있습니다.
멀티태스킹 및 멀티 인스턴스 지원
멀티태스킹은 데스크톱 윈도잉의 핵심이며 사용자 생산성을 크게 높일 수 있습니다.
Android 15에는 PROPERTY_SUPPORTS_MULTI_INSTANCE_SYSTEM_UI가 도입됩니다. 앱이 시스템 UI를 표시하도록 지정할 수 있는 앱 여러 인스턴스로 실행할 수 있습니다
드래그 동작으로 앱 인스턴스 관리
멀티 윈도우 모드에서 사용자는 뷰를 드래그하여 새 앱 인스턴스를 시작할 수 있음 요소가 앱 창 밖으로 펼쳐집니다. 사용자는 동일한 앱의 인스턴스 간에 요소를 이동할 수도 있습니다.
Android 15에서는 드래그 앤 드롭 동작을 맞춤설정하는 두 가지 플래그가 도입되었습니다.
DRAG_FLAG_START_INTENT_SENDER_ON_UNHANDLED_DRAG
: 표시된 창에서 드롭을 처리하지 않는 경우 처리되지 않은 드래그를 시스템에 위임하여 시작해야 함을 나타냅니다. 이 플래그를 사용하는 경우 호출자는 실행할 활동에 대한 변경 불가능한IntentSender
가 포함된Item
를ClipData
에 제공해야 합니다(ClipData.Item.Builder#setIntentSender()
참고). 시스템은 현재 화면 크기나 창 모드와 같은 요소를 기반으로 인텐트를 실행하거나 실행하지 않을 수 있습니다. 시스템에서 인텐트를 실행하지 않으면 일반 드래그 앤 드롭 흐름을 통해 인텐트가 취소됩니다.DRAG_FLAG_GLOBAL_SAME_APPLICATION
: (동일한 애플리케이션의 여러 인스턴스에서) 드래그 작업이 창 경계를 넘을 수 있음을 나타냅니다.이 플래그가 설정된 상태에서
startDragAndDrop()
이 호출되면 동일한 애플리케이션에 속한 표시된 창만 드래그 작업에 참여하고 드래그된 콘텐츠를 수신할 수 있습니다.
추가 최적화
앱 실행을 맞춤설정하고 앱을 데스크톱 창 모드에서 전체 화면으로 전환합니다.
기본 크기 및 위치 지정
크기를 조절할 수 있는 앱이라도 사용자 가치를 제공하기 위해 큰 창이 필요한 것은 아닙니다.
ActivityOptions#setLaunchBounds()
메서드를 사용하여 활동이 시작될 때 기본 크기와 위치를 지정합니다.
데스크톱 공간에서 전체 화면 모드로 전환
앱은 다음을 호출하여 프로그래밍 방식으로 전체 화면 모드를 시작할 수 있습니다.
Activity#requestFullScreenMode()
이 메서드는 데스크톱 윈도잉에서 바로 앱을 전체 화면 모드로 전환합니다.