Android 7.0 이상에서는 기기가 멀티 윈도우를 사용하여 여러 개의 앱을 동시에 표시할 수 있습니다. Android는 세 가지 멀티 윈도우 구성을 지원합니다.
- 자유 형식: 사용자가 활동 창 크기를 동적으로 조절하고 화면에 2개 이상의 앱을 표시할 수 있게 해줍니다. 데스크톱 창 모드의 경우 사용자는 데스크톱 스타일 상호작용을 제공하는 데스크톱에서 자유 형식 창을 만들 수 있습니다.
- 화면 분할: 사용자가 앱을 배치할 수 있는 두 개의 활동 창을 제공하는 기본 멀티 윈도우 구현입니다.
- PIP 모드 (PIP): Android를 실행하는 기기가 사용자가 다른 앱과 상호작용하는 동안 작은 창에서 동영상 콘텐츠를 재생할 수 있게 해줍니다.
멀티 윈도우 기기 요구사항
멀티 윈도우 지원은 Android 7.0 이상에서 기본으로 사용 설정됩니다.
사용 중지하려면 기기의 config.xml 파일에서 config_supportsMultiWindow 플래그를
false로 설정하세요.
멀티 윈도우는 RAM이 적은 모든 기기 (기기
ActivityManager.isLowRam을 선언한 기기)에서 기본으로 사용 중지됩니다. RAM이 적은 기기
config_supportsMultiWindow 플래그 값을 무시합니다.
자유 형식
자유 형식 창 모드를 사용하면 사용자가 자유롭게 크기를 조절할 수 있는 창을 만들 수 있습니다. 자유 형식 창 모드는 데스크톱 창 모드의 기본 요건입니다. 자유 형식 창 모드를 사용 설정하기 위한 기기 요구사항은 다음과 같습니다:
-
config_supportsMultiWindow플래그를 사용 설정합니다. -
다음 방법 중 하나로 자유 형식 창 관리를 사용 설정합니다.
-
config.xml에서config_freeformWindowManagement플래그를 사용 설정합니다.<feature name="android.software.freeform_window_management" /> -
기기 makefile에 다음을 포함합니다.
PRODUCT_COPY_FILES += \ frameworks/native/data/etc/android.software.freeform_window_management.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/permissions/android.software.freeform_window_management.xml
-
Android 16에서 OEM은 자유 형식 멀티 윈도우 구성에 관한 기기에서 데스크톱 창 모드 사용을 사용하여 데스크톱 창 모드를 지원할 수 있습니다.
데스크톱 창 모드
데스크톱 창 모드는 자유 형식 창을 기반으로 대형 화면에서 멀티태스킹을 위한 작업공간을 제공합니다. 작업공간은 전체 화면과 함께 존재하며 추가 UI 어포던스와 동작이 사용자에게 더 유연한 멀티태스킹 환경을 제공합니다.
- 키보드 또는 마우스 상호작용: 터치 우선 상호작용과 키보드 또는 마우스 우선 상호작용을 모두 지원합니다.
- 자유 형식 창: 창 제목 표시줄과 컨트롤이 있는 크기 조절 가능하고 이동 가능한 창에서 앱을 실행합니다.
- 향상된 작업 표시줄: 실행 중인 앱과 고정된 앱에 쉽게 액세스할 수 있습니다.
- 외부 디스플레이 최적화: 연결된 모니터를 지원되는 기기의 데스크톱 환경으로 변환합니다.
- 가상 데스크: 사용자가 여러 작업공간에서 앱을 정리할 수 있습니다.
데스크톱 창 모드를 위해 기기를 구성하려면 다음 기본 요건을 충족하세요.
-
다음 플래그를 사용 설정합니다.
- 자유 형식 창 모드의 모든 기본 요건
- 전역 데스크톱 창 모드 플래그
config_isDesktopModeSupported
- 시스템 UI에는 너비가 600dp 이상인 디스플레이가 필요합니다. 데스크톱 창 모드는 작은 화면에서 예상대로 작동하지 않을 수 있습니다.
-
기기는 RAM이 적은 기기가 아니어야 합니다.
ActivityManager.isLowRamRAM이 적은 기기는 멀티 윈도우 기능을 사용할 수 없으므로false은 를 반환해야 합니다.
다음 표는 화면 크기와 기기 사용 방법에 따라 데스크톱 창 모드를 위해 기기를 구성할 수 있는 구성을 보여줍니다.
| 모드 | 전체 화면 전용 휴대기기 | 연결된 디스플레이에 프로젝팅하는 전체 화면 우선 휴대기기 | 연결된 디스플레이로 확장되는 전체 화면 우선 대형 화면 | 데스크톱 창 모드 우선 대형 화면 |
|---|---|---|---|---|
| 예시 폼 팩터 | 휴대기기 | 외부 디스플레이에 HDMI를 지원하는 휴대기기 | 외부 디스플레이에 HDMI를 지원하는 태블릿 | 외부 디스플레이에 HDMI를 지원하는 키보드가 있는 태블릿 |
| 내부 디스플레이 환경 | 전체 화면, 화면 분할, PIP, 비데스크톱 자유 형식 지원 | 전체 화면, 화면 분할, PIP 지원 | 별도의 데스크를 통한 전체 화면, 화면 분할, PIP 지원 데스크톱 창 모드 | 데스크톱 창 모드는 기본 창 모드입니다 (별도의 데스크 지원). 사용자는 전체 화면 또는 터치 모드 데스크톱 창 모드를 별도의 데스크를 통해 입력할 수 있습니다. |
| 연결된 디스플레이 환경 | 내부 디스플레이 미러링만 | 연결된 디스플레이에서만 데스크톱 창 모드 | 데스크톱 창 모드가 데스크를 확장하며 내부 디스플레이에서 사용할 수 있음 | 데스크톱 창 모드가 데스크를 확장하며 내부 디스플레이에서 사용할 수 있음 |
| 구성 설정 | ||||
config_supportsMultiWindow |
true |
true |
true |
true |
config_freeformWindowManagement |
true |
true |
true |
true |
config_isDesktopModeSupported |
false |
true |
true |
true |
config_canInternalDisplayHostDesktops |
무시됨 | false |
true |
true |
config_enterDesktopByDefaultOnFreeformDisplay |
무시됨 | false |
false |
true |
config_isDesktopModeSupported
구성 오버레이 플래그 config_isDesktopModeSupported는 데스크톱 창 모드를 사용 설정하기 위한
최상위 플래그입니다. 사용 설정되지 않으면 다른 모든 구성 설정이 무시됩니다.
config.xml에서 true로 설정합니다.
<!-- Globally enable Desktop windowing logic -->
<bool name="config_isDesktopModeSupported">true</bool>
config_isDesktopModeSupported가 true이면 시스템은 자동으로
적격한 외부 디스플레이 (예: DisplayPort 또는 HDMI로 연결된 디스플레이)를
데스크톱 창 모드의 후보로 취급합니다.
디스플레이는 창 관리자 (최소한 공개 및 신뢰할 수 있는 디스플레이,
데스크톱 창 모드참고)에서 적격한 것으로 간주되어야 합니다.
시스템은 기본적으로 이러한 디스플레이에서 자유 형식 모드로 작업을 실행하려고 시도합니다.
config_canInternalDisplayHostDesktops
구성 오버레이 플래그 config_canInternalDisplayHostDesktops는 기기의 내부 디스플레이에서 데스크톱
창 모드를 사용 설정합니다. `
config.xml`에서 `true`로 설정합니다.
<!-- Allow the primary internal display to host desktop sessions -->
<bool name="config_canInternalDisplayHostDesktops">true</bool>데스크톱 창 모드는 작은 휴대기기보다 태블릿과 같은 대형 화면 기기에서 가장 잘 작동합니다. 사용 설정되지 않으면 데스크톱 창 모드는 외부 디스플레이에서만 지원됩니다 (기기가 HDMI를 지원한다고 가정).
config_enterDesktopByDefaultOnFreeformDisplay
구성 오버레이 플래그 config_enterDesktopByDefaultOnFreeformDisplay는 데스크톱 창 모드를 기기의 내부 디스플레이에서 기본 창 모드로 설정합니다. 사용 설정되지 않으면 전체 화면이 기본 창 모드이며 데스크가 공존합니다. config.xml에서 true로 설정합니다.
<!-- Enable Desktop windowing as the default windowing mode on the internal display -->
<bool name="config_enterDesktopByDefaultOnFreeformDisplay">true</bool>작업 한도 사용 설정
데스크톱 창 모드에서 지원되는 최대 작업 수를 구성하려면
구성 오버레이 플래그 config_maxDesktopWindowingActiveTasks를 config.xml
지원되는 최대 작업 수로 설정합니다. 무제한의 작업 수를 지원하려면 플래그 값을 0으로 설정합니다.
<!-- Maximum number of tasks supported in desktop windowing -->
<integer name="config_maxDesktopWindowingActiveTasks">4</integer>데스크 한도 사용 설정
데스크톱 창 모드에서 지원되는 최대 가상 데스크 수를 구성하려면
구성 오버레이 플래그 config_maxDesktopWindowingDesks을 config.xml
지원되는 최대 데스크 수로 설정합니다. 무제한의 데스크 수를 지원하려면 플래그 값을 0으로 설정합니다.
<!-- Maximum number of virtual desks supported in desktop windowing -->
<integer name="config_maxDesktopWindowingDesks">4</integer>화면 분할
멀티 윈도우의 기본 환경은 시스템 UI가 세로 또는 가로 모드의 기기 중간에서 분할되는 화면 분할 모드입니다. 사용자는 기기 방향에 따라 구분선을 측면에서 측면으로 또는 상단에서 하단으로 드래그하여 창 크기를 조절할 수 있습니다.
화면 분할을 사용 설정한 후에는 기기 제조업체에서 자유 형식 또는 PIP를 선택해 사용 설정할 수 있습니다.
Android 8.0 이상에서는 사용자가 홈을 탭할 때 런처를 압축하여 화면 분할을 개선합니다. 구현 세부정보는 화면 분할 상호작용을 참고하세요.
PIP 모드
config_supportsMultiWindow 플래그로 멀티 윈도우 모드를 사용 설정한 후 기기 제조업체는
PIP 모드를 지원할 수 있으며 이 모드를 사용하면 사용자가 다른 활동을 탐색하면서
동영상을 시청할 수 있습니다. 이 기능은
Android TV 기기를 대상으로 하지만 다른 기기 유형도 이 기능을 지원할 수 있습니다.
PIP를 지원하려면
PackageManager#FEATURE_PICTURE_IN_PICTURE 시스템 기능을
/android/frameworks/base/core/java/android/content/pm/PackageManager.java에서 사용 설정합니다.
Android 8.0 이상을 실행하는 기기의 PIP 구현에 관한 자세한 내용은 PIP 모드를 참고하세요.
시스템 UI
멀티 윈도우 모드 확인에 따라 모든 표준 시스템 UI를 지원합니다.
앱
미리 로드된 앱의 멀티 윈도우 모드를 지원하려면 멀티 윈도우 모드 지원을 참고하세요.
유효성 검사
멀티 윈도우 구현의 유효성을 검사하려면 관련 CTS 테스트를 실행하고 멀티 윈도우 모드 확인을 따르세요.