멀티 윈도우 지원

Android 7.0 이상에서는 기기가 멀티 윈도우를 사용하여 여러 개의 앱을 동시에 표시할 수 있습니다. 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 어포던스와 동작이 사용자에게 더 유연한 멀티태스킹 환경을 제공합니다.

  • 키보드 또는 마우스 상호작용: 터치 우선 상호작용과 키보드 또는 마우스 우선 상호작용을 모두 지원합니다.
  • 자유 형식 창: 창 제목 표시줄과 컨트롤이 있는 크기 조절 가능하고 이동 가능한 창에서 앱을 실행합니다.
  • 향상된 작업 표시줄: 실행 중인 앱과 고정된 앱에 쉽게 액세스할 수 있습니다.
  • 외부 디스플레이 최적화: 연결된 모니터를 지원되는 기기의 데스크톱 환경으로 변환합니다.
  • 가상 데스크: 사용자가 여러 작업공간에서 앱을 정리할 수 있습니다.

데스크톱 창 모드를 위해 기기를 구성하려면 다음 기본 요건을 충족하세요.

  • 다음 플래그를 사용 설정합니다.
  • 시스템 UI에는 너비가 600dp 이상인 디스플레이가 필요합니다. 데스크톱 창 모드는 작은 화면에서 예상대로 작동하지 않을 수 있습니다.
  • 기기는 RAM이 적은 기기가 아니어야 합니다. ActivityManager.isLowRam RAM이 적은 기기는 멀티 윈도우 기능을 사용할 수 없으므로 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_isDesktopModeSupportedtrue이면 시스템은 자동으로 적격한 외부 디스플레이 (예: 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_maxDesktopWindowingActiveTasksconfig.xml 지원되는 최대 작업 수로 설정합니다. 무제한의 작업 수를 지원하려면 플래그 값을 0으로 설정합니다.

<!-- Maximum number of tasks supported in desktop windowing -->
      <integer name="config_maxDesktopWindowingActiveTasks">4</integer>

데스크 한도 사용 설정

데스크톱 창 모드에서 지원되는 최대 가상 데스크 수를 구성하려면 구성 오버레이 플래그 config_maxDesktopWindowingDesksconfig.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 테스트를 실행하고 멀티 윈도우 모드 확인을 따르세요.

Android 버전 CTS 테스트
7.0 /platform/cts/hostsidetests/services/activitymanager/src/android/server/cts
8.0 /platform/cts/hostsidetests/services/activityandwindowmanager/activitymanager/src/android/server/cts
9.0 /platform/cts/tests/framework/base/activitymanager/src/android/server/am
Android 10 이상 /platform/cts/tests/framework/base/windowmanager/src/android/server/wm