일관되고 고품질의 사용자 환경을 구현하고 호환성 테스트 모음 (CTS) 실패로 이어지는 문제를 방지하려면 여기에 설명된 핵심 WindowManager (WM) 원칙을 구현하세요. 이 원칙은 다음에 적용됩니다.
Android 14에서 시작되어 Android 15에서 확장 가능한 UI로 계속된 멀티 윈도우 아키텍처를 사용하는 Android 출시
Android 확장 가능한 UI 및 자체 맞춤 구현
원칙을 적용하면 대부분의 CTS 규정 준수 및 기능 테스트 문제를 사전 예방할 수 있습니다.
용어
- 불변
- 앱 실행 전반에 걸쳐 참으로 유지되어 구조적 무결성을 이끄는 논리적 조건입니다. 불변량은 경계 규칙 역할을 합니다.
- 특수 활동
- 자동 UI 활동 또는 시스템 UI 활동이라고도 하는 이 중요한 앱 활동에는 사용자가 홈을 누를 때도 항상 표시되거나 대부분의 시간 동안 표시되는 전용 화면 영역이 있습니다(예: 기본 탐색 또는 클러스터 앱).
- 표준 활동
- 앱 그리드에서 실행된 서드 파티 미디어 앱과 같이 시스템의 핵심 사용자 인터페이스에 중요하지 않은 표준 앱 활동
WM 원칙
CTS 규정 준수를 극대화하려면 WM 구현에 다음 원칙을 적용하세요.
활동 실행 시 안정적인 구성 사용
최종 위치, 크기, 밀도를 설정하는 단일 WM 전환으로 모든 새 표준 활동을 실행합니다. 기본 작업의 창 구성 (예: 크기 또는 밀도)을 변경하는 두 번째 전환을 첫 번째 전환 직후에 트리거하면 안 됩니다. 이렇게 하면 활동이 생성된 직후에 구성 변경이 발생하기 때문입니다.
표준 활동을 중지된 상태로 이동
사용자가 홈 작업이나 홈 장면으로 이동하면 실행 중인 모든 표준 활동을 중지된 상태로 이동하여 CTS 테스트에 필요한 예측 가능한 Android 앱 수명 주기를 유지해야 합니다.
표준 활동 콘텐츠가 가려지지 않도록 방지
표준 활동의 콘텐츠를 가리는 맞춤 장식이나 UI 요소를 그리지 마세요. 맞춤 오버레이 (예: 맞춤 냉난방/공기청정 컨트롤 바)를 그리는 경우 SystemOverlay 인셋을 사용하여 시스템에 크기를 보고해야 합니다. Android 15 이상의 경우 확장 가능한 UI에서 DecorPanel를 사용합니다.
몰입형 모드 요청 시 오버레이 숨기기
앱이 몰입형 모드를 요청하면 임시 맞춤 UI 요소를 숨기고 SystemOverlay 인셋을 삭제해야 합니다. 지속적인 장애물은 앱의 픽셀 기대치를 방해합니다.
디스플레이 수준에서만 둥근 모서리 적용
frameworks/base에서 적절한 리소스 구성을 사용하여 디스플레이 수준에서만 모서리를 둥글게 처리합니다. 표준 활동의 표면에 임의의 둥근 모서리를 적용하지 마세요.
이렇게 하면 UI 요소 테스트가 방해됩니다. 임시 조치로 표준 활동의 표면에 적용하는 것과 동일한 둥근 모서리 반경을 디스플레이에 지정할 수 있습니다.
몰입형 모드 요청 시 앱 크기 유지
앱이 몰입형 모드로 전환하도록 요청하는 경우 앱의 창 크기를 조절하지 마세요. 이렇게 하면 중단이 발생하는 구성 변경이 트리거됩니다. 대신 앱을 최대화하려면 사용자가 제어하는 전체 화면 버튼을 제공하세요.