창 관리

이 페이지에서는 Chrome OS의 창 관리자에 관해 설명합니다.

Chrome OS의 창 관리자

Android 앱은 다음과 같은 카테고리로 그룹화됩니다.

API 레벨 창 관리자 동작
Android 1.5(API 레벨 3) 이하 이러한 앱은 항상 전체 화면으로 표시됩니다.
Android 1.6(API 레벨 6) ~ Android 6.0(API 레벨 23) 이러한 앱은 크기를 조절하기에 안전하지 않은 것으로 처리됩니다. 가능한 경우 이러한 앱은 기본적으로 스마트폰 크기의 세로 모드 창으로 실행됩니다. 아니면 스마트폰 크기의 가로 모드 창으로 실행됩니다. 사용자가 F4 키를 눌러 전체 화면 모드로 전환하거나 종료할 수 있습니다. 전체 화면 모드에서는 앱을 완전히 다시 시작하고(앱을 종료하고 새로 시작) 이후에는 전체 화면 세로 모드 크기(또는 가로 모드로 회전)로 유지합니다.
크기 조절 가능한 Android 7.0(API 레벨 24) Android 7.0의 기본값입니다. 앱을 다시 시작하지 않고도 앱 크기를 조절할 수 있습니다. 대개 이러한 앱은 기본적으로 최대화되어 시작됩니다. M60 이하 버전의 Chromebook은 기본적으로 스마트폰 크기의 (Nexus 5X) 세로 모드로 세로 모드 크기의 창을 시작합니다.
크기 조절이 가능하지 않은 Android 7.0(API 레벨 24) 애플리케이션이 android:resizeableActivity="false"를 지정하고 크기가 조절되지 못하게 합니다. 그러나 사용자가 화면 크기를 변경하거나, 활동이 크기 조절 가능한 활동의 위에 있거나, 활동이 방향을 변경하는 경우와 같이 크기 조절이 필요한 상황이 있습니다.
앱이 제어되는 Android 7.0(API 레벨 24) 앱에서 특수 시작 크기를 요청합니다.

최대화됨 또는 바인딩됨과 같은 앱 상태가 저장됩니다.

루트 활동 규칙

Chromebook의 창은 여러 개의 활동 창으로 구성되어 있습니다. 이 스택의 각 창은 크기와 방향이 동일합니다.

데스크톱 환경에서 사용자에게 혼동을 주는 갑작스러운 방향 및 크기 변경을 피하기 위해 Chromebook의 창 관리자는 나란히 모드를 사용하는 경우 Android의 창 관리자와 동일하게 작동합니다.

  • 스택의 맨 아래에 있는 활동은 위의 모든 활동의 속성을 나타냅니다. 이로 인해 크기 조절이 불가능한 세로 모드인 새로 시작된 활동이 크기 조절 가능한 가로 모드가 되는 예기치 않은 상황이 발생할 수 있습니다.

기기 모드가 여기에 영향을 미칩니다. 태블릿 모드에서는 방향이 잠겨 있지 않으며 각 방향은 Android에서 정상인 고유한 방향을 지정합니다. 하지만 활동이 Android 6.0 (API 레벨 23) 이하를 타겟팅하는 경우 앱 크기가 잠깁니다.

방향

가장 일반적인 방향은 세로 모드입니다. 스마트폰이 주로 이 방향으로 유지되기 때문입니다. 이 모드는 스마트폰에 적합하지만 노트북에는 좋지 않습니다. 반면 가로 모드는 노트북과 태블릿에 적합합니다. 창 관리자를 사용하는 애플리케이션에서 최상의 결과를 얻으려면 두 방향 모두를 지원하는 것을 고려해야 합니다.

일부 Android 앱에서는 기기가 세로 모드로 유지되는 경우 회전 값이 항상 Surface.ROTATION_0이라고 가정합니다. 이는 대부분의 Android 기기에 해당될 수 있습니다. 하지만 앱이 특정 ARC 모드에 있으면 세로 방향의 회전 값이 Surface.ROTATION_0이 아닐 수도 있습니다.

가속도계 또는 유사한 센서를 읽는 동안 정확한 회전 값을 얻으려면 Display.getRotation() 메서드를 사용하고 그에 따라 축을 전환하세요. 방향 설정에 관한 자세한 내용을 보려면 AccelerometerPlay 샘플 앱을 다운로드하세요.

한 방향만 지원하는 경우 애플리케이션을 시작하기 전에 창 관리자가 이를 알 수 있도록 manifest에 정보를 추가하세요. Chromebook은 컨버터블인 경우가 많으며 거꾸로 된 앱은 불편을 주기 때문에 가능하면 방향을 지정할 때 센서 방향을 지정해야 합니다. 선택한 방향을 유지하세요. 또한 가장 중요한 것은 manifest에서 한 방향을 요청하지 말고 나중에 프로그래매틱 방식으로 다른 방향을 설정해야 한다는 점입니다. 창 크기에 따라 방향을 변경하면 작은 세로 모드 크기 창에서 멈춰서 사용자가 큰 가로 모드 창으로 돌아오지 못할 수 있습니다.

시작 크기

앱은 다음 방법 중 하나를 사용하여 시작 크기를 변경할 수 있습니다.

  • 데스크톱 환경에서만 시작 크기를 사용합니다. 이렇게 하면 창 관리자가 적절한 경계와 방향을 제공하는 데 도움이 됩니다. 데스크톱 모드에서 사용될 때 환경설정을 표시하려면 <application> 태그 내에 다음 메타 태그를 추가합니다.

    <meta-data android:name="WindowManagerPreference:FreeformWindowSize"
                   android:value="[phone|tablet|maximize]" />
        <meta-data android:name="WindowManagerPreference:FreeformWindowOrientation"
                   android:value="[portrait|landscape]" />
        
  • 정적 시작 경계를 사용합니다. 활동의 manifest 항목 내에서 <layout>를 사용하여 '고정' 시작 크기를 지정합니다. 다음 예를 참조하세요.

    <layout android:defaultHeight="500dp"
                android:defaultWidth="600dp"
                android:gravity="top|end"
                android:minHeight="450dp"
                android:minWidth="300dp" />
        
  • 동적 시작 경계를 사용합니다. 새 활동을 만들 때 활동이 ActivityOptions.setLaunchBounds(Rect)를 만들고 사용할 수 있습니다. 빈 직사각형을 지정하여 앱을 최대화할 수 있습니다.

전체 화면

기존의 Android에서와 동일한 방식으로 작동합니다. 창이 전체 화면을 덮지 않는 경우 전체 차단(모든 시스템 UI 숨기기) 요청이 무시됩니다. 앱이 최대화되면 전체 화면 모드로 전환하기 위한 일반 메서드/레이아웃/함수가 적용됩니다. 이 방식으로 시스템 UI(창 컨트롤 바 및 실행기)가 사라집니다.