창 관리자

애플리케이션 개발자는 창 관리자를 활용하여 새로운 기기 폼 팩터를 지원하고 이전 플랫폼 버전과 신규 플랫폼 버전 모두에서 다양한 창 관리자 기능을 위한 공통 API 표시 영역을 제공할 수 있습니다. 최초 버전은 폴더블 기기를 목표로 하며 향후 버전은 더 많은 디스플레이 유형과 창 기능으로 확장됩니다.
최근 업데이트 현재 안정화 버전 다음 버전 후보 베타 버전 알파 버전
2021년 6월 30일 - - - 1.0.0-alpha09

종속 항목 선언

창 관리자의 종속 항목을 추가하려면 프로젝트에 Google Maven 저장소를 추가해야 합니다. 자세한 내용은 Google Maven 저장소를 읽어보세요.

다음과 같이 앱 또는 모듈의 build.gradle 파일에 필요한 아티팩트의 종속 항목을 추가합니다.

Groovy

dependencies {
    implementation "androidx.window:window:1.0.0-alpha10"

    // For Java-friendly APIs to register and unregister callbacks
    implementation "androidx.window:window-java:1.0.0-alpha10"

    // For RxJava2 integration
    implementation "androidx.window:window-rxjava2:1.0.0-alpha10"

    // For RxJava3 integration
    implementation "androidx.window:window-rxjava3:1.0.0-alpha10"

    // For testing
    implementation "androidx.window:window-testing:1.0.0-alpha10"
}

Kotlin

dependencies {
    implementation("androidx.window:window:1.0.0-alpha10")

    // For Java-friendly APIs to register and unregister callbacks
    implementation("androidx.window:window-java:1.0.0-alpha10")

    // For RxJava2 integration
    implementation("androidx.window:window-rxjava2:1.0.0-alpha10")

    // For RxJava3 integration
    implementation("androidx.window:window-rxjava3:1.0.0-alpha10")

    // For testing
    implementation("androidx.window:window-testing:1.0.0-alpha10")
}

의견

제출하신 의견은 Jetpack을 개선하는 데 도움이 됩니다. 새로운 문제를 발견하거나 라이브러리 개선을 위한 아이디어가 있다면 Google에 알려 주세요. 새 의견을 제출하기 전에 이 라이브러리의 기존 문제를 살펴보시기 바랍니다. 별표 버튼을 클릭하여 기존 문제에 투표할 수 있습니다.

새로운 문제 제출하기

자세한 내용은 Issue Tracker 문서를 참고하세요.

버전 1.0.0

버전 1.0.0-alpha09

2021년 6월 30일

androidx.window:window-*:1.0.0-alpha09가 출시되었습니다. 버전 1.0.0-alpha09에 포함된 커밋을 확인하세요.

새로운 기능

  • 정수 상수에서 제한이 없는 enum으로 변경합니다.
  • 테스트 폴딩 기능을 만드는 테스트 유틸리티를 추가합니다.

API 변경사항

  • 테스트 표시 기능을 만드는 도우미 메서드를 추가합니다. (I3cf54)
    • occlusionModeocclusionType으로 변경합니다.

버그 수정

  • 데이터 스트림의 여러 소비자를 추가할 때 초기 값을 내보냅니다.

버전 1.0.0-alpha08

2021년 6월 16일

androidx.window:window-*:1.0.0-alpha08이 출시되었습니다. 버전 1.0.0-alpha08에 포함된 커밋을 확인하세요.

새로운 기능

  • WindowInfoRepository를 사용할 때 더 쉽게 테스트할 수 있도록 테스트 아티팩트를 출시했습니다. WindowInfoRepository를 사용하여 DisplayFeatures 및 WindowMetrics에 관한 정보를 가져옵니다. (I57f66, Ida620)

버전 1.0.0-alpha07

2021년 6월 2일

androidx.window:window-*:1.0.0-alpha07이 출시되었습니다. 버전 1.0.0-alpha07에 포함된 커밋을 확인하세요.

새로운 기능

  • 핵심 창 라이브러리를 Kotlin으로 이전합니다. 앞으로는 코루틴과 정지 함수를 사용하여 비동기 데이터를 노출합니다.
  • WindowMetrics 및 WindowLayoutInfo 스트림을 가져오기 위한 기본 상호작용 지점으로 WindowInfoRepo를 추가합니다.
  • 콜백 등록 및 등록 취소를 위해 자바 친화적인 API를 노출하는 새로운 window-java 아티팩트를 추가합니다.
  • RxJava Adaptive API를 노출하는 새로운 window-rxjava2window-rxjava3 아티팩트를 추가합니다.

API 변경사항

  • 종속 항목을 균일하게 제공하기 위해 WindowServices를 추가합니다.
    • 창 레이아웃 정보를 사용할 수 있도록 코루틴 기반 API를 추가합니다. (Iab70f)
  • 핵심 창 관리자 라이브러리를 Kotlin으로 이전합니다. (Icca34)

버그 수정

  • 기능 경계를 나타내는 새 데이터 클래스를 추가합니다. (I6dcd1)

버전 1.0.0-alpha06

2021년 5월 5일

androidx.window:window:1.0.0-alpha06이 출시되었습니다. 버전 1.0.0-alpha06에 포함된 커밋을 확인하세요.

새로운 기능

  • Kotlin으로의 이전을 시작했으며 다음 출시에서 완료할 예정입니다.
  • DeviceState를 공개 API에서 삭제했습니다. 대신 FoldingFeature를 사용하세요.
  • FoldingFeature 상태에서 STATE_FLIPPED를 삭제했습니다. 현재 사용 사례에서 지원되지 않기 때문입니다.
  • 다른 지원 중단된 API도 삭제했습니다.

API 변경사항

  • Kotlin을 종속 항목으로 추가합니다.
    • 핵심 라이브러리를 Kotlin으로 이전합니다. (Idd995)
  • DisplayFeature 빌더를 삭제했습니다. (I61fa4)
  • 공개 API에서 DeviceState를 삭제했습니다. 대신 FoldingFeature를 사용하세요. (Id6079)
  • 기기 상태 콜백을 확장 프로그램에서 삭제합니다. (I5ea83)
  • STATE_FLIPPED를 FoldingFeature에서 삭제합니다. (I9c4e1)
  • 지원 중단된 등록 메서드를 삭제합니다. (Ib381b)

버전 1.0.0-alpha05

2021년 3월 24일

androidx.window:window:1.0.0-alpha05가 출시되었습니다. 버전 1.0.0-alpha05에 포함된 커밋을 확인하세요.

새로운 기능

FoldingFeature에 편의 메서드를 추가하여, 기능이 분리하거나 차단할 때 앱에서 인식하고 힌지 방향을 파악할 수 있도록 했습니다. 또한 다음을 위해 힌지 유형도 숨겼습니다.

WindowManager에서 동기 읽기 메서드를 삭제했습니다. 동기 읽기 메서드는 암시적 경합 상태가 발생하므로 오류가 발생하기 쉽습니다. WindowLayoutInfo에 관한 업데이트를 수신하려면 리스너 및 콜백을 등록합니다.

API 변경사항

  • FoldingFeatures와 함께 사용할 편의 메서드가 추가됨(Ie733f)
  • WindowManager에서 동기 읽기 메서드가 삭제됨(I96fd4)

버전 1.0.0-alpha04

2021년 3월 10일

androidx.window:window:1.0.0-alpha04가 출시되었습니다. 버전 1.0.0-alpha04에 포함된 커밋을 확인하세요.

새로운 기능

  • OEM 구현이 없는 경우 WindowLayoutInfo를 내보낼 수 없는 버그를 수정했습니다. 이제 빈 WIndowLayoutInfo를 내보냅니다.
  • 앱이 백그라운드에 있을 때 힌지 상태가 변경되면 상태가 제대로 업데이트되지 않는 버그를 수정했습니다. 이제 상태가 일관되게 유지됩니다.
  • ProGuard 파일을 업데이트하여 런타임 종속 항목의 경고를 무시합니다.

버그 수정

  • OEM 라이브러리가 누락된 경우 빈 값을 내보냅니다. (Ide935)

버전 1.0.0-alpha03

2021년 2월 18일

androidx.window:window:1.0.0-alpha03이 출시되었습니다. 버전 1.0.0-alpha03에 포함된 커밋을 확인하세요.

새로운 기능

  • OEM 구현이 비어 있는 경우 WindowLayoutInfo에 빈 값을 내보냅니다. 이를 통해 더 많은 기기에서 더 쉽게 라이브러리를 사용할 수 있습니다. API가 비동기식이므로 여전히 시간 초과 후에는 앱에서 방어 코드를 일부 작성하고 기본값을 내보내는 것이 좋습니다. Google에서는 OEM 구현을 보장하지 않으며 초기 값이 지연될 수 있습니다.

버그 수정

  • OEM 라이브러리가 누락된 경우 빈 값을 내보냅니다. (Ide935)

버전 1.0.0-alpha02

2021년 1월 27일

androidx.window:window:1.0.0-alpha02가 출시되었습니다. 버전 1.0.0-alpha02에 포함된 커밋을 확인하세요.

새로운 기능

  • API를 간소화하고 실수를 줄일 수 있도록 일부 API를 지원 중단했습니다. 몇 가지 주목할 만한 예로는 WindowManager에서 동기 읽기 작업을 삭제하고 DeviceState를 지원 중단한 것입니다. 동기 읽기 작업은 경합 상태를 유발하거나 제대로 UI가 표시되지 않는 원인이 될 수 있습니다.

  • DisplayFeature를 앞으로 다른 기능이 구현할 인터페이스로 변환했습니다. 첫 번째 기능은 현재 화면 접기나 힌지를 표현하는 FoldingFeature입니다. 여기에는 DeviceState를 대체하는 힌지 상태도 포함됩니다.

  • Android 11에서 도입된 WindowMetrics는 개발자에게 창에 관한 측정항목을 쿼리하는 간단한 방법을 제공합니다(예: 화면에서 창의 위치 및 크기, 시스템 인셋). 개발자가 WindowMetrics를 활용하고 이전 Android 버전을 계속 지원할 수 있도록 이 버전에서 API를 백포팅했습니다. WindowMetrics는 WindowManager#getCurrentWindowMetrics() 및 WindowManager#getMaximumWindowMetrics() API를 통해 얻을 수 있습니다.

API 변경사항

  • 다음 알파 버전에서 삭제될 API를 지원 중단합니다. (Ib7cc4)
  • 명시적인 Activity 참조를 수락하도록 ExtensionInterface를 업데이트합니다. (I07ded)
  • WindowMetrics API를 도입합니다. (I3ccee)
  • WindowManager에서 동기 읽기 메서드를 삭제합니다. (I69983)
  • ExtensionWindowBackend 패키지를 보호합니다. (Ied208)

버그 수정

  • 시각적 컨텍스트를 허용하도록 ExtensionInterface API를 업데이트합니다. (I8e827)

외부 기여

  • 데이터에 더 쉽게 액세스하도록 DeviceState와 WindowLayoutInfo를 병합합니다. (Id34f4)

버전 1.0.0-alpha01

2020년 2월 27일

androidx.window:window:1.0.0-alpha01androidx.window:window-extensions:1.0.0-alpha01 버전이 출시되었습니다. 버전 1.0.0-alpha01에 포함된 커밋을 확인하세요. 창 관리자 라이브러리의 첫 번째 버전입니다.

새로운 기능

  • DisplayFeature: 이 새로운 API는 연속 평면 화면 영역에서 힌지나 접힘 같은 장애 부분을 식별합니다.
  • DeviceState: 이 새로운 API는 정의된 상태 목록(예: CLOSED, OPENED, HALF_OPENED 등)에서 휴대전화의 현재 상태를 제공합니다.