데스크톱 창 지원

데스크톱 윈도잉을 통해 사용자는 크기 조절이 가능한 여러 개의 앱을 동시에 실행할 수 있음 앱 창을 통해 다재다능한 데스크톱과 같은 환경을 제공합니다.

그림 1에서 데스크톱 윈도잉의 화면 구성을 확인할 수 있습니다. 사용 설정되어 있습니다. 다음 사항을 참고하세요.

  • 사용자는 여러 앱을 동시에 나란히 실행할 수 있습니다.
  • 태스크 바는 실행 중인 앱을 보여주는 디스플레이 하단의 고정된 위치에 있습니다. 사용자는 빠른 액세스를 위해 앱을 고정할 수 있습니다.
  • 맞춤설정이 가능한 새로운 헤더 표시줄이 최소화 및 최대화와 같은 컨트롤로 각 창 상단을 장식합니다.
그림 1. 태블릿의 데스크톱 창

기본적으로 앱은 Android 태블릿에서 전체 화면으로 열립니다. 데스크톱 윈도잉에서 앱을 실행하려면 UI 내에서 핸들을 드래그합니다(그림 2 참고).

앱이 데스크톱 창에서 열리면 다른 앱은 데스크톱 창에서 다음과 같이 열립니다. 좋습니다.

그림 2. 앱 창 핸들을 길게 누른 상태로 드래그하여 바탕화면 윈도윙으로 전환합니다.

또한 사용자는 창 아래에 표시되는 메뉴에서 데스크톱 윈도잉을 호출할 수도 있습니다. 핸들을 탭하거나 클릭하거나 단축키를 사용할 때 창 핸들 표시 메타 키 (Windows, Command 또는 검색) + Ctrl + 아래쪽 화살표:

사용자는 활성 창을 모두 닫거나 데스크톱 창 상단의 창 핸들을 잡고 앱을 화면 상단으로 드래그하여 데스크톱 창 모드를 종료합니다. Meta + H 키보드 단축키를 사용하면 데스크톱 창 모드가 종료되고 앱이 전체 화면으로 다시 실행됩니다.

바탕화면 창으로 돌아가려면 화면 왼쪽 상단의 바탕 화면 공간 타일을 누르거나 클릭합니다. 최근 화면

크기 조절 가능 여부 및 호환성 모드

데스크톱 윈도잉에서 방향이 잠긴 앱은 자유롭게 크기를 조절할 수 있습니다. 즉, 활동이 세로 방향으로 고정, 사용자는 여전히 앱의 크기를 가로 모드 방향 창으로 조정할 수 있습니다.

그림 3. 세로 모드 제한 앱의 창 크기를 가로 모드로 조절합니다.

크기를 조절할 수 없다고 선언된 앱 (즉, resizableActivity = false) 가로 세로 비율을 동일하게 유지하면서 UI 크기가 조정됩니다.

그림 4. 크기를 조절할 수 없는 앱의 UI는 창 크기가 조절됨에 따라 확장됩니다.

방향을 잠그거나 크기 조절 불가로 선언된 카메라 앱에는 특수 처리: 창 크기를 완전히 조절할 수 있고 뷰파인더의 가로세로 비율은 동일하게 유지됩니다. 앱이 항상 세로 모드 또는 가로 모드로 실행된다고 가정하여 앱이 미리보기 또는 캡처된 이미지 방향이나 가로세로 비율을 잘못 계산하여 늘어나거나 옆으로 기울어지거나 거꾸로 된 이미지가 표시되도록 하드코딩하거나 가정합니다.

앱이 완전 반응형 카메라 뷰파인더를 구현할 준비가 될 때까지 특수 취급을 받으면 보다 기본적인 사용자 경험을 제공하여 잘못된 가정이 야기될 수 있는 영향을 미칩니다

카메라 앱의 호환성 모드에 관한 자세한 내용은 다음을 참고하세요. 기기 호환성 모드.

그림 5. 카메라 뷰파인더는 창 크기가 조절될 때 가로세로 비율을 유지합니다.

맞춤설정이 가능한 헤더 인셋

데스크톱 창에서 실행되는 모든 앱에는 몰입형 모드입니다.
앱의 콘텐츠가 헤더 표시줄에 가려지지 않도록 합니다. 헤더 표시줄은 자막 모음 인셋 유형입니다. 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 객체 목록은 피해야 할 시스템 영역을 나타냅니다. 남은 공간 (직사각형의 크기를 빼서 계산) 캡션 표시줄 인셋에서 가져온 것)에서는 아무런 코드 없이 앱을 그릴 수 있습니다. 시스템 요소가 겹치고 입력을 받을 수 있습니다.

맞춤 헤더 구현 전후의 Chrome
그림 6. 맞춤 헤더 구현 전후의 Chrome

멀티태스킹 및 멀티 인스턴스 지원

멀티태스킹은 데스크톱 윈도잉의 핵심이며 사용자 생산성을 크게 높일 수 있습니다.

Android 15에는 PROPERTY_SUPPORTS_MULTI_INSTANCE_SYSTEM_UI가 도입됩니다. 앱이 시스템 UI를 표시하도록 지정할 수 있는 앱 여러 인스턴스로 실행할 수 있습니다

드래그 동작으로 앱 인스턴스 관리

멀티 윈도우 모드에서 사용자는 뷰를 드래그하여 새 앱 인스턴스를 시작할 수 있음 요소가 앱 창 밖으로 펼쳐집니다. 사용자는 동일한 앱의 인스턴스 간에 요소를 이동할 수도 있습니다.

그림 7. 데스크톱 창 밖으로 탭을 드래그하여 새 Chrome 인스턴스를 시작합니다.

Android 15에서는 드래그 앤 드롭 동작을 맞춤설정하는 두 가지 플래그가 도입되었습니다.

  • DRAG_FLAG_START_INTENT_SENDER_ON_UNHANDLED_DRAG: 표시된 창에서 드롭을 처리하지 않는 경우 처리되지 않은 드래그를 시스템에 위임하여 시작해야 함을 나타냅니다. 이 플래그를 사용하는 경우 호출자는 실행할 활동에 대한 변경 불가능한 IntentSender가 포함된 ItemClipData에 제공해야 합니다(ClipData.Item.Builder#setIntentSender() 참고). 시스템은 현재 화면 크기나 창 모드와 같은 요소를 기반으로 인텐트를 실행하거나 실행하지 않을 수 있습니다. 시스템에서 인텐트를 실행하지 않으면 일반 드래그 앤 드롭 흐름을 통해 인텐트가 취소됩니다.

  • DRAG_FLAG_GLOBAL_SAME_APPLICATION: (동일한 애플리케이션의 여러 인스턴스에서) 드래그 작업이 창 경계를 넘을 수 있음을 나타냅니다.

    이 플래그가 설정된 상태에서 startDragAndDrop()이 호출되면 동일한 애플리케이션에 속한 표시된 창만 드래그 작업에 참여하고 드래그된 콘텐츠를 수신할 수 있습니다.

를 통해 개인정보처리방침을 정의할 수 있습니다. <ph type="x-smartling-placeholder">
</ph> 그림 8. Chrome 앱의 두 인스턴스 간에 탭을 이동합니다.
를 통해 개인정보처리방침을 정의할 수 있습니다.
를 통해 개인정보처리방침을 정의할 수 있습니다.

추가 최적화

앱 실행을 맞춤설정하고 앱을 데스크톱 창 모드에서 전체 화면으로 전환합니다.

기본 크기 및 위치 지정

크기를 조절할 수 있는 앱이라도 사용자 가치를 제공하기 위해 큰 창이 필요한 것은 아닙니다. ActivityOptions#setLaunchBounds() 메서드를 사용하여 활동이 시작될 때 기본 크기와 위치를 지정합니다.

데스크톱 공간에서 전체 화면 모드로 전환

앱은 다음을 호출하여 프로그래밍 방식으로 전체 화면 모드를 시작할 수 있습니다. Activity#requestFullScreenMode() 이 메서드는 데스크톱 윈도잉에서 바로 앱을 전체 화면 모드로 전환합니다.