제품 소식

Jetpack WindowManager 1.5 안정화

전문 길이: 3분
Francesco Romano
개발자 관계팀 엔지니어, Android

Jetpack WindowManager 1.5.0이 안정화되었습니다.

이번 출시에서는 WindowManager의 강력한 적응형 기반을 바탕으로 모든 화면 크기에서 멋지게 보이는 세련된 적응형 UI를 더욱 쉽게 만들 수 있습니다. Android 생태계가 계속 성장함에 따라 사용자는 휴대전화와 폴더블부터 태블릿, 커넥티드 디스플레이, Chromebook, 심지어 주차 모드의 자동차 디스플레이에 이르기까지 그 어느 때보다 다양한 기기에서 앱을 사용하고 있습니다.

WindowManager 1.5는 이러한 다양한 기기 환경을 위한 더 나은 도구를 제공하는 데 중점을 둡니다.

WindowManager 1.5의 새로운 기능

이 안정화 버전에서는 매우 큰 화면을 위한 새로운 중단점을 도입하고, 활동 삽입 API를 개선하며, 창 측정항목 계산의 유연성을 높입니다.

새 창 크기 클래스: 대형 및 초대형

1.5에서 가장 큰 업데이트는 대형과 특대형이라는 두 가지 새로운 너비 창 크기 클래스가 추가된 것입니다.

창 크기 클래스는 적응형 레이아웃을 디자인하고 개발하는 데 도움이 되는 공식적인 체계적인 표시 영역 중단점 세트입니다. 1.5에서는 일반적인 태블릿을 넘어가는 화면에 대한 안내를 확장합니다.

새 너비 중단점은 다음과 같습니다.

  • 대형: 너비가 1200dp~1600dp인 경우
  • 특대: 너비가 1600dp 이상인 경우
window_size_classes_width.png

디스플레이 너비에 따른 다양한 창 크기 클래스 

이러한 측정항목이 중요한 이유는 무엇인가요?

Android 16 QPR1 베타 2부터 Android는 연결된 디스플레이를 지원하여 사용자가 외부 디스플레이를 기기에 연결하고 대형 화면이 있는 데스크톱과 같은 도구로 변환할 수 있습니다.

ADB_5350_asset.gif

휴대전화가 외부 디스플레이에 연결되어 있고 외부 디스플레이에서 데스크톱 세션이 실행되고 있습니다. 

이 새로운 기능을 사용할 수 있으므로 더 큰 디스플레이를 포함하는 의견 기반 안내가 중요합니다. 

이러한 매우 큰 화면에서는 태블릿의 확장 레이아웃을 단순히 확대하는 것이 항상 최상의 사용자 환경은 아닙니다. 예를 들어 이메일 클라이언트는 확장 창 크기 클래스에서 두 개의 창 (편지함과 메일)을 편안하게 표시할 수 있습니다. 하지만 특대형 데스크톱 모니터에서는 이메일 클라이언트가 3개 또는 4개의 창을 한 번에 표시할 수 있습니다. 예를 들어 편지함, 메일 목록, 전체 메일 내용, 캘린더/할 일 패널을 한 번에 표시할 수 있습니다.

WindowManager 1.5는 매우 큰 디스플레이 크기에 공식 중단점을 제공하여 생산적이고 정보가 많은 데스크톱 환경을 위해 특별히 설계된 레이아웃을 도입하라는 명확한 신호를 제공합니다.

창 크기 클래스는 Set<WindowSizeClass> 유형을 확장하는 androidx.window.core.layout 라이브러리 확장 함수인 computeWindowSizeClass()를 사용하여 계산할 수 있습니다. 

프로젝트에 새 창 크기 클래스를 포함하려면 WindowSizeClass.BREAKPOINTS_V1 대신 WindowSizeClass.BREAKPOINTS_V2 세트에서 함수를 호출하면 됩니다.

val currentWindowMetrics =

    WindowMetricsCalculator.getOrCreate()

    .computeCurrentWindowMetrics(LocalContext.current)


val sizeClass = WindowSizeClass.BREAKPOINTS_V2

    .computeWindowSizeClass(currentWindowMetrics)


그런 다음 앱에 최소한 그 정도의 공간이 있는지 확인한 후 올바른 레이아웃을 적용합니다.

if(sizeClass.isWidthAtLeastBreakpoint(

    WindowSizeClass.WIDTH_DP_LARGE_LOWER_BOUND)){

    ...

    // window is at least 1200 dp wide


}

적응형 라이브러리

Compose Material 3 적응형 라이브러리를 사용하면 창 크기 클래스나 기기 자세와 같은 현재 창 구성에 따라 자동으로 적응하는 적응형 UI를 만들 수 있습니다. 

다행히 라이브러리가 이미 새로운 중단점으로 업데이트되어 있습니다. 버전 1.2 (현재 출시 후보 단계)부터 기본 창 스캐폴드 디렉티브 함수는 대형 및 초대형 창 너비 크기 클래스를 지원합니다.

Gradle 빌드 파일에서 새 중단점을 사용하겠다고 선언하여 선택하기만 하면 됩니다.

currentWindowAdaptiveInfo(

    supportLargeAndXLargeWidth = true)

추가 개선사항

  • 활동 삽입 - 자동 저장 및 복원: 이제 WindowManager가 활동 삽입 분할의 상태를 자동으로 저장하고 복원할 수 있습니다. 이를 통해 프로세스 재생성 전반에서 사용자의 레이아웃을 유지하여 더 안정적이고 일관된 환경을 제공할 수 있습니다. 개발자는 더 이상 상태를 수동으로 저장하고 복원할 필요가 없으며 EmbeddingConfiguration#isAutoSaveEmbeddingState 속성을 설정하여 자동을 선택하면 됩니다.
  • 확장된 WindowMetrics: 이제 Activity 컨텍스트뿐만 아니라 Application 컨텍스트에서도 WindowMetrics를 계산할 수 있습니다. 이렇게 하면 앱의 여러 부분에서 창 정보에 더 유연하게 액세스할 수 있습니다.

시작하는 방법

Android 프로젝트에서 새로운 대형 및 초대형 크기 클래스와 기타 1.5 기능을 사용하려면 build.gradle.kts에서 앱 종속 항목을 최신 안정 버전으로 업데이트하세요.

dependencies {
    implementation("androidx.window:window:1.5.0") 

    // or, if you're using the WindowManager testing library:

    testImplementation("androidx.window:window-testing:1.5.0")

}

WindowManager 1.5는 Android 폼 팩터에서 실행되는 완전 적응형 앱을 만들기 위한 또 다른 진전입니다. 변경사항 및 버그 수정사항의 전체 목록은 공식 출시 노트를 확인하세요.

즐겁게 코딩해 보세요!

작성자:

계속 읽기