제품 소식

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의 가장 큰 업데이트는 대형 및 초대형이라는 두 가지 새로운 너비 창 크기 클래스가 추가된 것입니다.

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

다음은 새로운 너비 중단점입니다.

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

디스플레이 너비를 기반으로 하는 다양한 창 크기 클래스 

이러한 클래스가 중요한 이유는 무엇인가요?

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

ADB_5350_asset.gif

외부 디스플레이에 연결된 휴대전화, 외부 디스플레이의 데스크톱 세션 

이 새로운 기능을 사용하면 더 큰 디스플레이를 포함하는 데 대한 체계적인 안내가 중요합니다. 

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

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

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

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

  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: 이제 활동 컨텍스트뿐만 아니라 애플리케이션 컨텍스트에서도 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 폼 팩터에서 실행되는 완전히 적응형 앱을 만들기 위한 또 다른 단계입니다. 변경사항 및 버그 수정의 전체 목록은 공식 출시 노트를 참고하세요.

즐겁게 코딩해 보세요!

작성자:

계속 읽기