이 페이지에서는 데스크톱 창 모드와 관련된 기능과 테스트 시나리오를 자세히 설명합니다.
Android 17 이상에서는 디스플레이별 데스크톱 창 모드를 사용 설정할 수 있습니다. 자세한 내용은 데스크톱 창 모드 사용 설정을 참고하세요.
데스크톱 기능
이 섹션에서는 데스크톱 창과 관련된 주요 기능과 구성을 설명합니다.
태스크 제한 사용 설정
데스크톱 창 모드에서 지원되는 최대 작업 수를 구성하려면 다음을 실행하세요.
- 데스크톱 창 모드를 사용 설정합니다.
config.xml에서 구성 오버레이 플래그config_maxDesktopWindowingActiveTasks를 지원되는 최대 작업 수로 설정합니다. 무제한의 작업을 지원하려면 플래그를 기본값인0로 설정합니다.<integer name="config_maxDesktopWindowingActiveTasks">4</integer>
브라우저별 기능
Android 16에서는 맞춤설정 가능한 헤더 인셋과 앱 인스턴스 관리라는 두 가지 브라우저 관련 기능을 도입했습니다. 이 섹션에서는 브라우저 호환성을 확인하는 테스트 시나리오를 설명합니다. OEM은 기능 구현이 의도한 대로 작동하는지 확인해야 합니다.
맞춤설정 가능한 헤더 인셋 테스트 사례
다음 테스트 사례는 맞춤설정 가능한 헤더 인셋과의 브라우저 호환성을 확인합니다.
- UI 상호작용: 브라우저의 캡션 표시줄 UI가 모든 창 구성 (자유 형식, 화면 분할, 전체 화면)에서 완전히 상호작용 가능한 상태로 유지되는지 확인합니다.
- 시스템 아이콘 여유 공간: 브라우저 UI가 시스템 아이콘 아래에 그려지지 않는지 확인합니다.
- 전경색 적용: 브라우저 테마에 따라 앱 헤더의 시스템 아이콘에 올바른 전경색이 적용되는지 확인합니다. 이는 브라우저 테마가 시스템 테마와 다른 경우 특히 중요합니다.
- 창 드래그: 탭 표시줄의 빈 영역을 길게 눌러 자유 형식 창을 드래그할 수 있는지 확인합니다.
- 크기 조절 시 탭 표시 여부: 최적의 유용성을 유지하기 위해 창 너비에 따라 탭이 표시되거나 숨겨지는지 테스트합니다.
드래그 가능한 동작이 있는 앱 인스턴스 관리 테스트 사례
다음 테스트 사례는 앱 인스턴스 관리와의 브라우저 호환성을 확인합니다.
- 새 창 만들기: 탭 표시줄에서 빈 영역으로 탭을 드래그하면 해당 탭이 포함된 새 브라우저 창이 만들어지는지 확인합니다.
- 마지막 탭에 새 창 없음 (단일 인스턴스): 브라우저 인스턴스가 하나만 열려 있는 경우 해당 창에서 마지막 탭을 드래그해도 새 창이 생성되지 않는지 확인합니다.
데스크톱 우선 및 터치 우선 동작 모드
데스크톱 창 모드는 클램셸, 연결된 외부 디스플레이가 있는 기기 등 독립형 태블릿을 넘어 다양한 폼 팩터를 지원하도록 설계되었습니다. 폼 팩터마다 상호작용에 대한 사용자 기대치가 다르기 때문에(주 입력 방식(터치 또는 키보드 및 마우스)에 따라 결정되는 경우가 많음) 데스크톱 창 모드에서는 다음과 같은 두 가지 동작 모드를 사용합니다.
- 데스크톱 우선 모드: 시스템이 자유 형식 창을 선호하는 키보드 및 터치패드 최적화 환경을 제공합니다. 이 모드는 노트북과 유사한 구성을 위해 설계되었습니다.
- 터치 우선 모드: 시스템에서 전체 화면 창을 선호하는 터치 최적화 환경을 제공합니다. 이 모드는 독립형 태블릿의 기본값입니다.
이러한 모드는 별도의 데스크톱 환경이 아니라 기본 UI 동작을 지정하는 디스플레이별 상태입니다.
동작 차이점
다음 표에는 데스크톱 우선 모드와 터치 우선 모드 간의 주요 UI 및 기능 차이점이 요약되어 있습니다.
| 기능 | 터치 우선 모드 | 데스크톱 우선 모드 |
|---|---|---|
| 기본 실행 | 자유 형식 창이 이미 상단에 있지 않는 한 창이 전체 화면으로 실행됩니다. | 전체 화면 창이 이미 상단에 있지 않는 한 자유 형식으로 Windows가 실행됩니다. |
| 작업 표시줄 유형 | 전체 화면에서 일시적 태스크 바 (고정된 앱만 표시)를 사용합니다. | 항상 데스크톱 작업 표시줄을 사용합니다 (고정된 앱과 열린 앱 표시). |
| 리포커싱 | 현재 디스플레이 모드에 따라 창이 다시 활성화됩니다 (예: 디스플레이가 데스크톱 창 모드인 경우 자유 형식으로 다시 활성화). | 창은 저장된 자체 윈도잉 모드에 따라 다시 활성화됩니다(예: 전체 화면 창은 항상 전체 화면으로 다시 시작됨). |
| 상단으로 드래그 | 창을 상단 가장자리로 드래그하면 전체 화면이 됩니다. | 창을 상단 가장자리로 드래그하면 최대화 상태가 됩니다. |
| 창 컨트롤 | 전체 화면 컨트롤에 앱 핸들을 사용합니다. | 전체 화면 컨트롤에 마우스 오버 메뉴를 사용합니다. |
데스크톱 우선 모드는 디스플레이별 상태입니다. 즉, 기기는 터치 우선 내부 디스플레이와 데스크톱 우선 외부 디스플레이를 동시에 호스팅할 수 있습니다.
트리거 전환
시스템은 디스플레이에 적합한 모드를 결정하기 위해 여러 요소를 평가합니다.
- 입력 주변기기: 키보드와 터치패드 또는 마우스가 모두 연결되고 사용 설정된 경우 디스플레이가 데스크톱 우선으로 전환됩니다.
- 외부 디스플레이: 연결된 외부 디스플레이는 내부 디스플레이를 미러링하지 않는 한 일반적으로 데스크톱 우선 모드로 기본 설정됩니다.
- 기기 자세: 컨버터블 기기의 경우 물리적 방향에 따라 모드가 전환될 수 있습니다 (예: 키보드가 뒤로 접히면 터치 우선으로 전환).
기술적 구현
이 상태의 '신뢰할 수 있는 소스'는 디스플레이 창 모드, 특히 디스플레이의 TaskDisplayArea 창 모드입니다. 셸 및 런처 구성요소는 디스플레이 컨텍스트의 DisplayAreaInfo 또는 WindowConfiguration을 통해 이 상태에 액세스할 수 있습니다.
디스플레이별 데스크톱 창 모드
Android 17 이상에서 Display.canHostTasks에 정의된 대로 작업을 호스팅할 수 있는 디스플레이의 경우 WindowManager(WM)는 OEM이 구성할 수 있는 기준에 따라 데스크톱 창 모드 지원 여부를 결정합니다. 기본적으로 WM은 다음 기준을 확인합니다.
- 자유 형식 창 지원
- 시스템 장식이 사용 설정됨
- 기본 디스플레이 또는 콘텐츠 모드 전환이 사용 설정됨
디스플레이의 적격성이 변경되면 WM은 IDisplayWindowListener.onDesktopModeEligibleChanged를 호출합니다. 숨겨진 API WindowManager.isEligibleForDesktopMode는 디스플레이가 창에 적합한지 여부를 반환합니다. WM 셸이 이 호출을 가로채고 디스플레이가 적합해지면 디스플레이가 데스크톱 창 모드를 지원하는지 결정하고 필요한 리소스를 할당합니다.