WindowManager

Jetpack WindowManager 라이브러리를 사용하면 애플리케이션 개발자가 새로운 기기 폼 팩터와 멀티 윈도우 환경을 지원할 수 있습니다. 라이브러리는 API 버전 14 이상에서 공통 API 노출 영역을 제공합니다. 최초 버전은 폴더블 기기를 타겟팅하지만 향후 버전에서는 더 많은 디스플레이 유형과 창 기능을 지원할 예정입니다.
최근 업데이트 안정화 버전 출시 후보 버전 베타 버전 알파 버전
2024년 9월 4일 1.3.0 - - 1.4.0-alpha02

종속 항목 선언

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

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

Groovy

dependencies {
    implementation "androidx.window:window:1.3.0"

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

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

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

    // For testing
    implementation "androidx.window:window-testing:1.3.0"
}

Kotlin

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

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

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

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

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

의견

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

새로운 문제 제출하기

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

버전 1.4

버전 1.4.0-alpha02

2024년 9월 4일

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

새로운 기능

맞춤 WindowSizeClass 지원을 추가합니다.

  • 개발자가 자체 생성자를 사용할 수 있도록 WindowSizeClass의 생성자를 엽니다.
  • 개발자가 다양한 WindowSizeClass 값을 처리할 수 있도록 isAtLeast 유틸리티 메서드를 추가합니다.
  • Set<WindowSizeClass>에 확장 함수를 추가하여 세트에서 최적 일치를 계산합니다.
  • Android 권장 중단점의 상수를 추가합니다.
  • Android 권장 중단점에 상응하는 중단점 세트를 추가합니다.

API 변경사항

  • WindowSizeClass의 경계 메서드 이름을 업데이트합니다. 추가했습니다. (If89a6)
  • 향후 새 중단점 값 추가를 지원하도록 WindowSizeClass API를 업데이트합니다. 절대적인 경계 대신 하한을 사용하며 개발자는 WindowSizeClass를 처리할 때 하한 검사를 사용하는 것이 좋습니다. 기존 WindowWidthSizeClassWindowHeightSizeClass는 더 이상 개발되지 않으므로 지원 중단됩니다. 추가했습니다. (I014ce)

버전 1.4.0-alpha01

2024년 8월 7일

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

새로운 기능

  • ActivityStack 고정을 사용하면 앱이 한 컨테이너에 콘텐츠를 고정하고 다른 컨테이너와 탐색을 분리할 수 있습니다.
  • 대화형 구분선을 사용하면 분할 프레젠테이션의 두 활동 사이에 고정되거나 드래그 가능한 구분선을 표시할 수 있습니다.
  • 전체 화면 대화상자 어둡게 하기를 사용하면 앱에서 대화상자 어둡게 하기 영역을 지정하여 전체 작업 창을 어둡게 하거나 대화상자를 표시하는 컨테이너만 어둡게 할 수 있습니다.
  • 삽입된 활동 창 정보 콜백을 사용하면 앱이 삽입된 활동 창의 업데이트를 지속적으로 수신할 수 있습니다.
  • 애니메이션 배경 삽입을 사용하면 앱에서 애니메이션 배경을 지정하여 ActivityEmbedding 사용 시 전환 애니메이션 품질을 개선할 수 있습니다.
  • 개선된 ActivityStack 관리를 통해 ActivityEmbedding가 사용될 때 앱에서 다음과 같이 ActivityStacks를 더욱 세밀하게 제어할 수 있습니다.
  • 지정된 ActivityStack로 활동 실행
  • ActivityStack 완료 중

API 변경사항

  • 새 API WindowInfoTracker#supportedPostures:

    • 기기가 폴더블의 테이블탑 모드를 지원하는지 확인하는 API입니다. WindowAreaSessionPresenter#getWindow 추가
  • ActivityStack 고정을 지원하는 API를 추가합니다.

    • SplitPinRule 클래스
    • SplitController#pinTopActivityStack
    • SplitController#unpinTopActivityStack
  • API를 추가하여 대화형 구분선 사용 설정 및 구성

    • DividerAttributes 클래스
    • SplitAttributes.Builder#setDividerAttributes
  • 대화상자에 EmbeddingConfigurationDimAreaBehavior를 설정하는 API 추가

    • EmbeddingConfiguration 클래스
    • DimAreaBehavior 클래스
    • ActivityEmbeddingController#setEmbeddingConfiguration
  • 삽입된 활동 창 정보 업데이트를 수신하는 API 추가

    • EmbeddedActivityWindowInfo 클래스
    • ActivityEmbeddingController#embeddedActivityWindowInfo
  • 애니메이션 배경 삽입을 설정하는 API 추가

    • EmbeddingAnimationBackground
    • SplitAttributes.Builder#setAnimationBackground
  • API를 추가하여 ActivityStacks 완료

    • ActivityEmbeddingController#finishActivityStacks
  • ActivityStack 실행을 설정하는 API 추가

    • ActivityEmbeddingOptions#setLaunchingActivityStack
  • 다음 API는 안정적이며 더 이상 실험용이 아닙니다.

    • ActivityEmbeddingController#invalidateVisibleActivityStacks (SplitController#invalidateTopVisibleSplitAttributes에서 이동됨)
    • ActivityEmbeddingController#getActivityStack
    • SplitController#updateSplitAttributes
  • 버전 1.4. 추가했습니다. (I56774)

버그 수정

  • 세션이 활성 상태일 때 ACTIVE 대신 UNAVAILABLE이 반환되는 특정 기기에서 버그를 수정합니다.
  • 불안정한 API 지원으로 인해 vendorApiLevel가 2인 기기에서 transferActivityToWindowArea 지원을 삭제합니다.
  • 활동 삽입에 드래그 가능한 구분선을 위해 드래그하여 전체 화면으로 사용할 수 있도록 하는 API를 도입했습니다. 추가했습니다. (I645c9)
  • 앱이 SplitAttributes의 애니메이션 매개변수를 통해 ActivityEmbedding 애니메이션을 사용 중지하도록 허용합니다. 추가했습니다. (Idc01a)
  • 새 플랫폼 API에 대한 액세스에 관한 수동 개요가 삭제되었습니다. 이는 AGP 7.3 이상 (예: R8 버전 3.3)과 함께 R8을 사용할 때 API 모델링을 통해, 그리고 AGP 8.1 이상을 사용할 때 (예: D8 버전 8.1) 모든 빌드에 대해 자동으로 발생하기 때문입니다. AGP를 사용하지 않는 클라이언트는 D8 버전 8.1 이상으로 업데이트하는 것이 좋습니다. 자세한 내용은 이 도움말을 참조하세요. 추가했습니다. (Ia60e0, b/345472586)
  • 기기에서 애니메이션 전환에 사용할 수 있도록 확장 프로그램이 SplitAttributes의 애니메이션 매개변수를 사용하도록 허용합니다. 추가했습니다. (Iede00)
  • 오버레이 API를 숨깁니다. (Ic4251)
  • API를 도입하여 분할의 고정 또는 드래그 가능한 구분선을 구성합니다. (Ia7a78)
  • WindowMetrics에 밀도를 추가했습니다. (Id6723)
  • SupportedPostures를 가져오는 API를 추가합니다. 추가했습니다. (If557a)
  • 실험용 API에서 setLaunchingActivityStack를 삭제합니다. (I191cf)
  • ActivityEmbeddingController#embeddedActivityWindowInfo를 도입했습니다. (I24312)
  • #getToken를 지원 중단하고 #getActivityStackToken를 추가합니다. (Ie0471)
  • embeddedActivityWindowInfo 흐름 API용 콜백 어댑터를 도입했습니다. (Ida77f)
  • overlayInfo 흐름 API용 콜백 어댑터를 추가합니다. (I7264f)
  • WindowSdkExtensionsRule를 도입하여 테스트를 위해 extensionsVersion를 재정의합니다. 추가합니다. (Ifb928)
  • - ActivityOptionsCompat 사용과 호환되도록 #setLaunchingActivityStack를 Bundle로 이전합니다.
    • 사용자는 ActvityOptions 자체 대신 activityOptions.toBundle를 전달해야 합니다.
    • #setLaunchingActivityStack(Activity)가 삭제됩니다. 사용자는 ActivityEmbeddingController#getActivityStac(Activity)를 사용하여 ActivityStack를 가져오고 ActivityStack#setLaunchingActivityStack에 전달하도록 이전해야 합니다. 추가합니다. (Ie0ccc)
  • - WM Jetpack과 확장 프로그램 간에 통신하기 위한 식별자로 ActivityStack.TokenSpltInfo.Token를 도입합니다.
    • API를 지원 중단/교체하여 IBinder 대신 토큰을 사용/반환합니다. 추가했습니다. (I12b24)
  • - ActivityEmbeddingController#invalidateVisibleActivityStacks 소개 <ph type="x-smartling-placeholder">
      </ph>
    • 기능이 #invalidateVisibleActivityStacks로 통합되었으므로 SplitController#invalidateTopVisibleSplitAttributes를 삭제합니다. (I02ef5)
  • - 임베딩 구성을 설정하는 API 추가 추가했습니다. (I59a4a)
  • - 상단 ActivityStack androidx.Window API 고정/고정 해제 <ph type="x-smartling-placeholder">
      </ph>
    • 상단 ActivityStack를 고정/고정 해제할 수 있도록 데모 앱을 업데이트합니다. (I24dd3)
  • #finishActivityStacksActivityEmbeddingOptions를 다시 추가합니다. (Ic1ab3)
  • 불안정한 API를 삭제합니다. 추가합니다. (Ibc534, b/302380585)

버전 1.3

버전 1.3.0

2024년 5월 29일

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

1.2.0 이후 중요 변경사항

  • 창 크기 클래스를 위한 Kotlin 멀티플랫폼 지원

버전 1.3.0-rc01

2024년 5월 14일

WindowManager Jetpack 1.3에서는 WindowSizeClass 기능을 위한 Kotlin 멀티플랫폼 지원과 여러 버그 수정이 추가되었습니다.

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

버전 1.3.0-beta02

2024년 5월 1일

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

API 변경사항

  • 맞춤 WindowSizeClass 생성 및 사용 지원을 삭제했습니다. (Id1143)

버그 수정

  • proguard가 특정 기기 구현에서 일부 파일을 제거하여 발생하는 KotlinReflectionInternalError을 수정합니다. 추가했습니다. (I01b02)

버전 1.3.0-beta01

2024년 4월 3일

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

버전 1.3.0-alpha03

2024년 3월 6일

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

API 변경사항

  • WindowSizeClassUtil를 좀 더 구체적인 메서드로 분할합니다. 추가했습니다. (Ie9292)
  • WindowSizeClass#compute를 복원합니다. (I21355, b/324293374)

버그 수정

  • 제공된 컨텍스트가 올바르게 래핑 해제되지 않았을 때 발생하는 비정상 종료 문제를 수정합니다. 추가했습니다. (94d10ce , b/318787482)

버전 1.3.0-alpha02

2024년 2월 7일

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

새로운 기능

  • 자체 크기 클래스를 사용하려는 개발자의 유연성을 개선하기 위해 Window Size Class API의 API 노출 영역이 업데이트되었습니다.

API 변경사항

  • 너비 선택기에 높이 제약 조건을 추가합니다. 추가했습니다. (I23393)
  • 세트에서 WindowSizeClass를 선택하는 유틸리티 함수를 추가합니다. 개발자가 자체 선택기를 작성할 수 있도록 실험용 점수 함수를 추가합니다. 지정된 경계 내에서 가장 넓은 WindowSizeClass를 선택하는 선택기 확장 함수를 추가합니다. 추가했습니다. (I0c944)
  • 맞춤 중단점을 추가할 수 있도록 WindowSizeClass 생성자를 엽니다. 추가했습니다. (Ic1ff3)
  • 편의 함수를 추가하여 너비, 높이, 밀도로 크기 클래스를 만듭니다. 추가했습니다. (If67f4)

버그 수정

  • 부동 소수점 값이 0으로 잘릴 때 발생하는 예외를 수정했습니다. (272ffac)

버전 1.3.0-alpha01

2023년 11월 15일

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

새로운 기능

  • 후면 화면에 액세스하기 위한 실험용 창 API를 노출합니다.
  • 이제 FoldingFeature 생성을 위한 테스트 API가 안정화되었습니다.
  • 가짜 ActivityEmbedding 값 설정을 위한 테스트 API가 이제 안정화되었습니다.
  • WindowLayoutInfoPublisherRule는 이제 UiContext에서 값을 가져올 때 재정의를 보고합니다.
  • WindowInfoTracker는 접기 기능 데이터를 UiContext 매개변수로 보고합니다.
  • 기기에서 확장 프로그램 버전을 노출합니다.
  • 사용자 앱별 재정의를 위한 WindowProperties 상수: <ph type="x-smartling-placeholder">
      </ph>
    • PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE — 다음을 알립니다. 앱이 사용자 대상 가로세로 비율 호환성을 선택 해제한 시스템 재정의해야 합니다.
    • PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE— 정보 앱이 사용자의 전체 화면 옵션을 선택 해제한 시스템 가로세로 비율 호환성 재정의 설정

버전 1.2

버전 1.2.0

2023년 11월 15일

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

1.1.0 이후 중요 변경사항

  • 후면 화면에 액세스하기 위한 실험용 창 API를 노출합니다.
  • 이제 FoldingFeature 생성을 위한 테스트 API가 안정화되었습니다.
  • 가짜 ActivityEmbedding 값 설정을 위한 테스트 API가 이제 안정화되었습니다.
  • WindowLayoutInfoPublisherRule는 이제 UiContext에서 값을 가져올 때 재정의를 보고합니다.
  • WindowInfoTracker는 접기 기능 데이터를 UiContext 매개변수로 보고합니다.
  • 기기에서 확장 프로그램 버전을 노출합니다.

버전 1.2.0-rc01

2023년 11월 1일

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

새로운 기능

  • 후면 화면에 액세스하기 위한 실험용 창 API를 노출합니다.
  • 이제 FoldingFeature 생성을 위한 테스트 API가 안정화되었습니다.
  • 가짜 ActivityEmbedding 값 설정을 위한 테스트 API가 이제 안정화되었습니다.
  • WindowLayoutInfoPublisherRule는 이제 UiContext에서 값을 가져올 때 재정의를 보고합니다.
  • WindowInfoTracker는 접기 기능 데이터를 UiContext 매개변수로 보고합니다.
  • 기기에서 확장 프로그램 버전을 노출합니다.

버전 1.2.0-beta04

2023년 10월 18일

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

API 변경사항

버전 1.2.0-beta03

2023년 9월 20일

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

새로운 기능

  • 올바르게 작동하려면 특정 버전의 확장 프로그램이 필요한 API를 위한 RequiresApi 검사를 추가합니다.
  • 기기에서 확장 프로그램 버전을 노출하는 API를 추가합니다.

API 변경사항

  • 공개 API에서 필수 창 SDK 확장 프로그램 버전에 주석을 답니다.
    • 활동 삽입 구성요소에서 isXXXSupported를 삭제합니다. 추가했습니다. (Ie3dae)
  • WindowSdkExtensions를 도입하여 기기의 확장 프로그램 버전을 보고합니다.
    • RequiresWindowSdkExtension를 도입하여 필요한 최소 확장 프로그램 버전에 주석을 답니다. 추가했습니다. (I05fd4)
  • WindowAreaInfo#getCapability를 null을 허용하지 않도록 만듭니다. 추가했습니다. (I17048)

버전 1.2.0-beta01

2023년 7월 26일

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

새로운 기능

  • 후면 화면에 액세스하기 위한 실험용 창 API를 노출합니다.
  • 이제 FoldingFeature 생성을 위한 테스트 API가 안정화되었습니다.
  • 가짜 ActivityEmbedding 값 설정을 위한 테스트 API가 이제 안정화되었습니다.
  • WindowLayoutInfoPublisherRule는 이제 UiContext에서 값을 가져올 때 재정의를 보고합니다.
  • WindowInfoTracker는 접기 기능 데이터를 UiContext 매개변수로 보고합니다.

API 변경사항

  • 1.3의 안정화 버전에서 API를 계속 변경할 수 있도록 WindowArea API를 실험용으로 표시합니다. (I857f5)
  • 호환성 억제에 주석을 달도록 API 파일을 업데이트했습니다. (I8e87a, b/287516207)

버전 1.2.0-alpha03

2023년 6월 21일

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

새로운 기능

  • API 노출 영역에서 지원 중단된 API를 삭제합니다.
  • 동시 디스플레이를 지원하는 API를 추가합니다.
  • 강제 크기 조절 재정의를 선택 해제하려면 속성을 추가합니다.
  • 최소 가로세로 비율 재정의를 선택 해제하려면 속성을 추가하세요.
  • ActivityEmbeddingRule를 안정화하여 활동 삽입에 관한 단위 테스트를 지원합니다.

API 변경사항

  • 지원 중단된 API를 삭제합니다. (I18d39)
  • 동시 디스플레이 지원을 추가합니다. 추가합니다. (Ifcbb0)

버그 수정

  • 강제 크기 조절 재정의를 위한 선택 해제 compat 속성을 추가합니다. (Ie7ab1)
  • 확장 프로그램 인터페이스에서 SESSION_STATE_CONTENT_INVISIBLE를 삭제합니다. 추가했습니다. (I6ed19)
  • ActivityEmbeddingRule를 안정화하여 활동 삽입에 관한 단위 테스트를 지원합니다. 추가했습니다. (I8d6b6)
  • 최소 가로세로 비율 재정의를 위한 선택 해제 compat 속성을 추가합니다. 추가했습니다. (I66390)
  • 지원 중단된 WindowArea API를 삭제합니다. (Ieb67c)
  • 방향 요청 루프 속성 이름을 PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED로 바꿉니다. 추가했습니다. (Ie2fbd)
  • 창 영역 세션 상수 이름을 업데이트합니다. (I83675)
  • 감지 시 방향 요청 루프를 무시하는 선택 해제 compat 속성을 추가합니다. (I0a7a2)
  • WindowAreaComponent#STATUS_ACTIVE를 추가하여 기능이 이미 활성 상태임을 나타냅니다. 추가했습니다. (I62bc3)
  • RearDisplayPresentationMode API를 추가합니다. (I0401c)
  • 안정화를 위해 배경 색상 API를 삭제합니다. 추가했습니다. (I34c3e)
  • 창 영역 API를 숨깁니다. 추가했습니다. (I39de0)
  • SplitController에서 SplitInfo를 재정의하는 메서드를 추가합니다. SplitInfoActivityStack의 double을 만드는 테스트 메서드를 추가합니다. 추가했습니다. (Icd69f)
  • ActivityRule.Builder의 태그를 선택사항으로 만듭니다. 추가했습니다. (Ib0b44)
  • RatioSplitType, ExpandContainersSplit, HingeSplitType가 삭제됩니다. 현재 SplitType 상태입니다.
    • #splitEqually(), #expandContainers(), #splitByHinge를 상수 SplitType SPLIT_TYPE_EQUAL, SPLIT_TYPE_EXPAND, SPLIT_TYPE_HINGE로 바꿉니다.
    • 힌지 분할 유형의 대체 유형을 설정하는 기능을 삭제합니다. 현재 기기 또는 창 상태로 인해 힌지 분할 유형을 적용할 수 없는 경우 상위 작업 컨테이너를 균등하게 분할하도록 대체됩니다. SplitController#setSplitAttributesCalculator를 사용하여 대체 분할 유형을 맞춤설정합니다. 추가합니다. (Ifcc59)
  • add/removeSplitCallback 지원 중단 <ph type="x-smartling-placeholder">
      </ph>
    • add/removeSplitCallbackSplitControllerCallbackAdapter(으)로 이동
    • Flow 지원을 추가하여 SplitInfo 목록을 가져옵니다. (I7f1b6)
  • ActivityEmbeddingController 테스트 규칙을 추가합니다. (I42e9b)
  • ActivityOptionsCompat의 이름을 ActivityEmbeddingOptions로 바꿨습니다. (I89301)
  • 활동 삽입의 사용 가능 여부를 나타내는 splitSupportStatus를 추가했습니다. (I10024)
  • DEFAULT 값을 더 잘 나타내기 위해 SplitAttributes.BackgroundColor를 도입합니다. 불투명하지 않은 애니메이션 배경 색상이 지원되지 않음을 명확히 했습니다. 따라서 불투명하지 않은 색상은 모두 기본값으로 취급됩니다. 즉, 현재 테마 창 배경 색상을 사용합니다. 추가했습니다. (Ic6b95)
  • alwaysAllow()alwaysDisallow()ALWAYS_ALLOWALWAYS_DISALLOW로 바꾸었습니다. 추가했습니다. (I3057b)
  • SplitRule, SplitAttributes, SplitAttributesCalculator용 API를 추가했습니다. (I92d23)
  • TestActivityStack를 추가하여 테스트용 ActivityStack 만들기 <ph type="x-smartling-placeholder">
      </ph>
    • TestSplitInfo를 추가하여 테스트용 SplitInfo를 만듭니다. 추가했습니다. (I8e779)
  • 개발자가 맞춤설정된 SplitAttributesCalculator를 확인할 수 있도록 가짜 SplitAttributesCalculatorParams를 만드는 방법을 추가합니다. (Id4a6e)
  • WindowMetricsCalculator#computeCurrentWindowMetrics(@UiContext context: Context)WindowMetricsCalculator#computeMaximumWindowMetrics(@UiContext context: Context)를 추가합니다. (I66c7f)

버전 1.2.0-alpha02

2023년 6월 7일

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

새로운 기능

  • 지정되지 않은 접기 기능의 상수를 포함하도록 테스트 API를 업데이트합니다.
  • WindowLayoutInfoPublishRule로 재정의하면 컨텍스트 기반 API를 포함하여 windowLayoutInfo의 모든 값이 재정의됩니다.

API 변경사항

  • 지정되지 않은 중앙 접기 기능의 상수를 추가합니다. 추가했습니다. (I7530c)

버그 수정

  • Context 기반 WindowLayoutInfo에 대한 재정의를 지원하도록 WindowLayoutInfoPublishRule를 업데이트합니다. 추가했습니다. (I2037a)

버전 1.2.0-alpha01

2023년 5월 24일

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

새로운 기능

활동 삽입 및 WindowLayoutInfoTracker와 관련된 테스트 API를 안정화합니다. ActivityEmbeddingRule가 안정화 버전으로 승격되었습니다. WindowMetricsCalculatorRule가 안정화 버전으로 승격되었습니다. 테스트용 FoldingFeature를 생성하는 유틸리티 함수가 안정화 버전으로 승격되었습니다.

API 변경사항

  • ActivityEmbeddingRule를 안정화하여 활동 삽입에 관한 단위 테스트를 지원합니다. 추가했습니다. (I8d6b6)
  • WindowMetrisCalculatorTestRule는 JVM 테스트의 스텁 측정항목을 허용하는 안정적입니다. 정확한 결과를 얻으려면 에뮬레이터를 사용하는 것이 좋습니다.
  • JVM 테스트를 지원하기 위해 WindowLayoutInfo의 테스트 API를 안정화합니다. 추가했습니다. (Ie036e)
  • 테스트 접기 특성 값에 IntRange를 추가합니다. 추가했습니다. (I69f7d)

버전 1.1

버전 1.1.0

2023년 6월 7일

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

1.0.0 이후 중요 변경사항

활동 삽입

  • 앱 매니페스트에 <application> 태그의 불리언 속성으로 PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED를 추가했습니다.
  • 분할 기능을 사용할 수 없는 이유에 관한 자세한 정보를 제공하기 위해 isSplitSupported를 지원 중단하고 splitSupportStatus로 대체했습니다.
  • splitSupportStatus 속성의 상태 상수를 제공하는 SplitController.SplitSupportStatus 중첩 클래스를 추가했습니다.
  • SplitController를 여러 모듈로 리팩터링했습니다. <ph type="x-smartling-placeholder">
      </ph>
    • Activity 또는 ActivityStack 관련 API의 ActivityEmbeddingController 모듈
    • isActivityEmbeddedSplitController에서 ActivityEmbeddingController로 이동했습니다.
    • EmbeddingRule 관련 작업을 위한 RuleController 모듈:
    • SplitController API를 삭제했습니다.
    • clearRegisteredRules()
    • getSplitRules()
    • initialize()
    • registerRule()
    • unregisterRule()
    • RuleController API를 추가했습니다.
    • addRule() - 규칙을 추가하거나 동일한 태그가 있는 규칙을 업데이트합니다.
    • removeRule() - 등록된 규칙 컬렉션에서 규칙을 삭제합니다.
    • setRules() - 규칙 모음을 설정합니다.
    • clearRules() - 등록된 모든 규칙을 삭제합니다.
    • parseRules() - XML 규칙 정의에서 규칙을 파싱합니다.
  • 모든 모듈에는 다음과 같이 #getInstance() 메서드로 초기화해야 하는 컨텍스트가 필요합니다. <ph type="x-smartling-placeholder">
      </ph>
    • ActivityEmbeddingController#getInstance(Context)
    • SplitController#getInstance(Context)
    • RuleController#getInstance(Context)
  • 디스플레이 가로세로 비율과 관련된 enum 유사 동작 상수를 정의하도록 EmbeddingAspectRatio 클래스를 추가했습니다.
  • 분할 레이아웃을 정의하는 SplitAttributes 클래스를 추가했습니다.
  • 분할 레이아웃을 맞춤설정하기 위해 SplitControllerSplitAttributes 계산기 함수를 추가했습니다. <ph type="x-smartling-placeholder">
      </ph>
    • setSplitAttributesCalculator(Function)
    • clearSplitAttributesCalculator()
    • isSplitAttributesCalculatorSupported(): 기기에서 SplitAttributesCalculator API가 지원되는지 확인
  • EmbeddingRule#tag 필드가 추가되었습니다.
  • SplitRule의 API 업데이트: <ph type="x-smartling-placeholder">
      </ph>
    • defaultSplitAttributes 추가됨 - 분할의 기본 분할 레이아웃을 정의합니다. 가 splitRatiolayoutDirection를 대체합니다.
    • XML 속성 splitRatiosplitLayoutDirection의 변환을 defaultSplitAttributes에 추가했습니다.
    • 픽셀 대신 밀도 독립형 픽셀 (dp)을 사용하도록 최소 크기 정의를 변경했습니다.
    • 기본값이 600dp인 minHeightDp를 추가했습니다.
    • minWidth를 기본값이 600dp인 minWidthDp로 변경했습니다.
    • minSmallestWidth를 기본값이 600dp인 minSmallestWidthDp로 변경했습니다.
    • 기본값이 ALWAYS_ALLOWmaxAspectRatioInHorizontal를 추가했습니다.
    • 기본값 1.4를 사용하여 maxAspectRatioInPortrait을 추가했습니다.
    • 종료 동작 상수를 대체하는 FinishBehavior 중첩 클래스를 정의했습니다.
    • SplitPairRuleSplitPlaceholderRule의 빌더 중첩 클래스에 속성 변경사항을 적용했습니다.
  • 분할 관련 추가 정보를 제공하기 위해 SplitInfo#getSplitRatio()SplitInfo#getSplitAttributes()로 대체했습니다.

WindowLayout

  • 실험용 비활동 UI 컨텍스트 지원을 WindowInfoTracker에 추가했습니다.
  • WindowMetricsCalculator에 실험용 비활동 UI 컨텍스트를 추가했습니다.

이전 단계

  • 활동 삽입이 활동을 분할로 표시하도록 사용 설정하려면 앱에서 PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED 속성을 매니페스트 <application> 태그에 추가해야 합니다. <ph type="x-smartling-placeholder">xml <property android:name="android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED" android:value="true" /></ph> 이를 통해 시스템은 애플리케이션의 분할 동작을 미리 최적화할 수 있습니다.
  • 비율 SplitInfo개 <ph type="x-smartling-placeholder">
      </ph>
    • 현재 분할이 스택되었는지 확인합니다. kotlin SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.ExpandContainersSplitType
    • 현재 비율을 확인합니다. kotlin if (SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.RatioSplitType) { val ratio = splitInfo.splitAttributes.splitType.ratio } else { // Ratio is meaningless for other types. }
  • SplitController 이전: <ph type="x-smartling-placeholder">
      </ph>
    • SplitController.getInstance()SplitController.getInstance(Context)로 변경됩니다.
    • SplitController.initialize(Context, @ResId int)RuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int))로 변경됩니다.
    • SplitController.getInstance().isActivityEmbedded(Activity)ActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity)로 변경됩니다.
    • SplitController.getInstance().registerRule(rule)RuleController.getInstance(Context).addRule(rule)로 변경됩니다.
    • SplitController.getInstance().unregisterRule(rule)RuleController.getInstance(Context).removeRule(rule)로 변경됩니다.
    • SplitController.getInstance().clearRegisteredRules()RuleController.getInstance(Context).clearRules()로 변경됩니다.
    • SplitController.getInstance().getSplitRules()RuleController.getInstance(Context).getRules()로 변경됩니다.
  • SplitRule 속성 이전: <ph type="x-smartling-placeholder">
      </ph>
    • minWidthminSmallestWidth는 이제 픽셀 대신 dp 단위를 사용합니다. 앱은 다음 호출을 사용할 수 있습니다. kotlin TypedValue.applyDimension( COMPLEX_UNIT_DIP, minWidthInPixels, resources.displayMetrics ) 또는 간단히 minWithdisplayMetrics#density(으)로 픽셀로 나눕니다.
  • 종료 동작 상수는 FinishBehavior enum과 같은 클래스 상수로 이전해야 합니다. <ph type="x-smartling-placeholder">
      </ph>
    • FINISH_NEVERFinishBehavior.NEVER로 변경됩니다.
    • FINISH_ALWAYSFinishBehavior.ALWAYS로 변경됩니다.
    • FINISH_ADJACENTFinishBehavior.ADJACENT로 변경됩니다.
  • 레이아웃 방향은 SplitAttributes.LayoutDirection로 이전해야 합니다. <ph type="x-smartling-placeholder">
      </ph>
    • ltrSplitAttributes.LayoutDirection.LEFT_TO_RIGHT로 변경됩니다.
    • rtlSplitAttributes.LayoutDirection.RIGHT_TO_LEFT로 변경됩니다.
    • localeSplitAttributes.LayoutDirection.LOCALE로 변경됩니다.
    • splitRatio을(를) SplitAttributes.SplitType.ratio(splitRatio)로 이전해야 합니다.
  • 이전 SplitPairRule.Builder개: <ph type="x-smartling-placeholder">
      </ph>
    • SplitPairRule.Builder(filters, minWidth, minSmallestWidth)을(를) 다음으로 변경: kotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600.
    • setLayoutDirection(layoutDirection)setSplitRatio(ratio)를 다음으로 변경: <ph type="x-smartling-placeholder">kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )</ph>
    • setFinishPrimaryWithSecondarysetFinishSecondaryWithPrimaryFinishBehavior enum과 유사한 상수를 사용합니다. 자세한 내용은 'SplitRule 이전'을 참고하세요.
    • setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW)를 사용하여 세로 모드 기기에 분할을 표시합니다.
  • 이전 SplitPlaceholder.Builder개: <ph type="x-smartling-placeholder">
      </ph>
    • filtersplaceholderIntent 매개변수만 있습니다. 다른 속성은 setter로 이동합니다. 자세한 내용은 'SplitPairRule.Builder 이전'을 참고하세요.
    • setFinishPrimaryWithPlaceholderFinishBehavior enum과 유사한 상수를 사용합니다. 자세한 내용은 'SplitRule 이전'을 참고하세요.
    • setLayoutDirection(layoutDirection)setSplitRatio(ratio)는 다음과 같이 변경됩니다. <ph type="x-smartling-placeholder">kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )</ph>
    • setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW)를 사용하여 세로 모드 기기에 분할을 표시합니다.

버전 1.1.0-rc01

2023년 5월 10일

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

새로운 기능

  • ActivityEmbedding를 안정적인 API로 출시합니다.
  • 다양한 버그를 수정했습니다.

버전 1.1.0-beta02

2023년 4월 5일

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

새로운 기능

  • 내부 수정 및 정리

버전 1.1.0-beta01

2023년 3월 22일

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

활동 삽입

  • 앱 매니페스트에 <application> 태그의 불리언 속성으로 PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED를 추가했습니다.
  • 분할 기능을 사용할 수 없는 이유에 관한 자세한 정보를 제공하기 위해 isSplitSupported를 지원 중단하고 splitSupportStatus로 대체했습니다.
  • splitSupportStatus 속성의 상태 상수를 제공하는 SplitController.SplitSupportStatus 중첩 클래스를 추가했습니다.
  • SplitController를 여러 모듈로 리팩터링했습니다. <ph type="x-smartling-placeholder">
      </ph>
    • Activity 또는 ActivityStack 관련 API의 ActivityEmbeddingController 모듈
    • isActivityEmbeddedSplitController에서 ActivityEmbeddingController로 이동했습니다.
    • EmbeddingRule 관련 작업을 위한 RuleController 모듈:
    • SplitController API를 삭제했습니다. <ph type="x-smartling-placeholder">
        </ph>
      • clearRegisteredRules()
      • getSplitRules()
      • initialize()
      • registerRule()
      • unregisterRule()
    • RuleController API를 추가했습니다. <ph type="x-smartling-placeholder">
        </ph>
      • addRule() - 규칙을 추가하거나 동일한 태그가 있는 규칙을 업데이트합니다.
      • removeRule() - 등록된 규칙 컬렉션에서 규칙을 삭제합니다.
      • setRules() - 규칙 모음을 설정합니다.
      • clearRules() - 등록된 모든 규칙을 삭제합니다.
      • `parseRules() — XML 규칙 정의에서 규칙을 파싱합니다.
  • 모든 모듈에는 다음과 같이 #getInstance() 메서드로 초기화해야 하는 컨텍스트가 필요합니다. <ph type="x-smartling-placeholder">
      </ph>
    • ActivityEmbeddingController#getInstance(Context)
    • SplitController#getInstance(Context)
    • RuleController#getInstance(Context)
  • 디스플레이 가로세로 비율과 관련된 enum 유사 동작 상수를 정의하도록 EmbeddingAspectRatio 클래스를 추가했습니다.
  • 분할 레이아웃을 정의하는 SplitAttributes 클래스를 추가했습니다.
  • 분할 레이아웃을 맞춤설정하기 위해 SplitControllerSplitAttributes 계산기 함수를 추가했습니다. <ph type="x-smartling-placeholder">
      </ph>
    • setSplitAttributesCalculator(Function)
    • clearSplitAttributesCalculator()
    • isSplitAttributesCalculatorSupported(): 기기에서 SplitAttributesCalculator API 지원 여부 확인
  • EmbeddingRule#tag 필드가 추가되었습니다.
  • SplitRule의 API 업데이트: <ph type="x-smartling-placeholder">
      </ph>
    • defaultSplitAttributes 추가됨 - 분할의 기본 분할 레이아웃을 정의합니다. 가 splitRatiolayoutDirection를 대체합니다.
    • XML 속성 splitRatiosplitLayoutDirection의 변환을 defaultSplitAttributes에 추가했습니다.
    • 픽셀 대신 밀도 독립형 픽셀 (dp)을 사용하도록 최소 크기 정의를 변경했습니다.
    • 기본값이 600dp인 minHeightDp를 추가했습니다.
    • minWidth를 기본값이 600dp인 minWidthDp로 변경했습니다.
    • minSmallestWidth를 기본값이 600dp인 minSmallestWidthDp로 변경했습니다.
    • 기본값이 ALWAYS_ALLOWmaxAspectRatioInHorizontal를 추가했습니다.
    • 기본값이 1.4maxAspectRatioInPortrait를 추가했습니다.
    • 종료 동작 상수를 대체하는 FinishBehavior 중첩 클래스를 정의했습니다.
    • SplitPairRuleSplitPlaceholderRuleBuilder 중첩 클래스에 속성 변경사항을 적용했습니다.
  • 분할 관련 추가 정보를 제공하기 위해 SplitInfo#getSplitRatio()SplitInfo#getSplitAttributes()로 대체했습니다.

WindowLayout

  • WindowInfoTracker에 비활동 UI 컨텍스트 지원을 추가했습니다.
  • WindowMetricsCalculator에 비활동 UI 컨텍스트를 추가했습니다.

이전 단계

  • 활동 삽입이 활동을 분할로 표시하도록 사용 설정하려면 앱에서 PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED 속성을 매니페스트 <application> 태그에 추가해야 합니다. <ph type="x-smartling-placeholder">xml <property android:name="android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED" android:value="true" /></ph> 이를 통해 시스템은 애플리케이션의 분할 동작을 미리 최적화할 수 있습니다.
  • 비율 SplitInfo개 <ph type="x-smartling-placeholder">
      </ph>
    • 현재 분할이 스택되었는지 확인합니다. kotlin SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.ExpandContainersSplitType
    • 현재 비율을 확인합니다. kotlin if (SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.RatioSplitType) { val ratio = splitInfo.splitAttributes.splitType.ratio } else { // Ratio is meaningless for other types. }
  • 이전 SplitController개: <ph type="x-smartling-placeholder">
      </ph>
    • SplitController.getInstance()SplitController.getInstance(Context)로 변경됩니다.
    • SplitController.initialize(Context, @ResId int)을(를) 다음으로 변경: RuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int))
    • SplitController.getInstance().isActivityEmbedded(Activity)ActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity)로 변경됩니다.
    • SplitController.getInstance().registerRule(rule)RuleController.getInstance(Context).addRule(rule)로 변경됩니다.
    • SplitController.getInstance().unregisterRule(rule)RuleController.getInstance(Context).removeRule(rule)로 변경됩니다.
    • SplitController.getInstance().clearRegisteredRules()RuleController.getInstance(Context).clearRules()로 변경됩니다.
    • SplitController.getInstance().getSplitRules()RuleController.getInstance(Context).getRules()로 변경됩니다.
  • SplitRule 속성 이전: <ph type="x-smartling-placeholder">
      </ph>
    • minWidthminSmallestWidth는 이제 픽셀 대신 dp 단위를 사용합니다. 앱은 다음 호출을 사용할 수 있습니다. kotlin TypedValue.applyDimension( COMPLEX_UNIT_DIP, minWidthInPixels, resources.displayMetrics ) 또는 간단히 minWithdisplayMetrics#density(으)로 픽셀로 나눕니다.
  • 종료 동작 상수는 FinishBehavior enum과 같은 클래스 상수로 이전해야 합니다. <ph type="x-smartling-placeholder">
      </ph>
    • FINISH_NEVERFinishBehavior.NEVER로 변경됩니다.
    • FINISH_ALWAYSFinishBehavior.ALWAYS로 변경됩니다.
    • FINISH_ADJACENTFinishBehavior.ADJACENT로 변경됩니다.
  • 레이아웃 방향은 SplitAttributes.LayoutDirection로 이전해야 합니다. <ph type="x-smartling-placeholder">
      </ph>
    • ltrSplitAttributes.LayoutDirection.LEFT_TO_RIGHT로 변경됩니다.
    • rtlSplitAttributes.LayoutDirection.RIGHT_TO_LEFT로 변경됩니다.
    • localeSplitAttributes.LayoutDirection.LOCALE로 변경됩니다.
    • splitRatio을(를) SplitAttributes.SplitType.ratio(splitRatio)로 이전해야 합니다.
  • 이전 SplitPairRule.Builder개: <ph type="x-smartling-placeholder">
      </ph>
    • SplitPairRule.Builder(filters, minWidth, minSmallestWidth)을(를) 다음으로 변경: kotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600.
    • setLayoutDirection(layoutDirection)setSplitRatio(ratio)이 <ph type="x-smartling-placeholder">kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )</ph>
    • setFinishPrimaryWithSecondarysetFinishSecondaryWithPrimaryFinishBehavior enum과 유사한 상수를 사용합니다. 자세한 내용은 'SplitRule 이전'을 참고하세요.
    • setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW)를 사용하여 세로 모드 기기에 분할을 표시합니다.
  • 이전 SplitPlaceholder.Builder개: <ph type="x-smartling-placeholder">
      </ph>
    • filtersplaceholderIntent 매개변수만 있습니다. 다른 속성은 setter로 이동합니다. 자세한 내용은 'SplitPairRule.Builder 이전'을 참고하세요.
    • setFinishPrimaryWithPlaceholderFinishBehavior enum과 유사한 상수를 사용합니다. 자세한 내용은 'SplitRule 이전'을 참고하세요.
    • setLayoutDirection(layoutDirection)setSplitRatio(ratio)는 다음과 같이 변경됩니다. <ph type="x-smartling-placeholder">kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )</ph>
    • setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW)를 사용하여 세로 모드 기기에 분할을 표시합니다.

버전 1.1.0-alpha06

2023년 2월 22일

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

새로운 기능

  • UI 컨텍스트에서 WindowLayoutInfo를 가져오는 시험용 버전을 노출했습니다.

API 변경사항

  • 활동 삽입의 사용 가능 여부를 나타내는 splitSupportStatus를 추가했습니다. (I10024)
  • UI 컨텍스트 WindowLayoutInfo API를 실험용으로 만들었습니다. (I58ee0)
  • RearDisplay 모드를 사용 설정하여 현재 창을 후면 카메라와 정렬된 디스플레이로 이동할 수 있도록 WindowAreaController 및 API를 도입합니다. (Iffcbf)
  • 기본 배경 색상을 업데이트했습니다. (I1ac1b)
  • SplitAttributes 매개변수를 추가했습니다. (I18bdd)
  • SplitRule, SplitAttributes, SplitAttributesCalculator용 API를 추가했습니다. (I92d23)
  • maxAspectRatio 관련 API를 개선했습니다.
    1. alwaysAllow()alwaysDisallow()ALWAYS_ALLOWALWAYS_DISALLOW로 바꾸었습니다.
    2. @see의 API 문서를 단독 문서로 업데이트했습니다. (I3057b)
  • 앱에서 호출해서는 안 되는 다음 생성자를 공개 API에서 삭제했습니다.
    • SplitInfo 생성자
    • ActivityStack 생성자 (Ide534)
  • 이제 SplitRulemaxAspectRatioInPortrait/Landscape를 받습니다. 상위 요소 경계의 가로세로 비율이 요청된 maxAspectRatio보다 작거나 같은 경우에만 활동 분할을 허용합니다. (Ia5990)
  • RuleController#parseRules가 정적이 되도록 변경했습니다. (I785df)
  • ActivityEmbedding 관련 API를 개선했습니다.
    1. API 이름 통일 - 여러 인스턴스의 이름에 add/remove를 적용했습니다.
    2. registerRuleaddRule로 변경했습니다.
    3. unregisterRuleremoveRule로 변경했습니다.
    4. ActivityRule은 분할 규칙이 아니므로 getSplitRulesgetRules로 바꾸었습니다.
    5. 여러 규칙을 추가할 수 있도록 RuleController#setRules를 추가했습니다.
    6. SplitController에서 다음과 같은 규칙 관련 API를 싱글톤 RuleController로 이동했습니다.
    7. addRule
    8. removeRule
    9. getRules
    10. setRules
    11. clearRules
    12. parseRules
    13. SplitController에서 #isActivityEmbedded를 싱글톤 ActivityEmbeddingController로 이동했습니다.
    14. isActivityEmbedded
    15. SplitController#initialize를 삭제했습니다. XML 파일에서 규칙을 설정하려면 RuleController#parseRules#setRules를 사용하세요. 변경 전: SplitController.initialize(context, R.xml.static_rules) 변경 후: val ruleController = RuleController.getInstance(context) val rules = ruleController.parseRules(R.xml.static_rules) ruleController.setRules(rules)
    16. 정적 규칙과 런타임 규칙이 더 이상 구분되지 않습니다. 즉, 규칙이 정적 XML 규칙 정의에 등록되어 있든 런타임에 등록되었든 상관없이 모든 규칙을 지우려면 #clearRules를 호출하면 됩니다. SplitController#clearRegisteredRules의 기존 동작을 이용하려면 XML 리소스 ID를 사용하여 RuleController#parseRules를 호출하고 규칙을 다시 설정하려면 RuleController#setRules를 호출하세요. 변경 전: SplitController.getInstance(context).clearRegisteredRules() 변경 후: val ruleController = RuleController.getInstance(context) val rules = ruleController.parseRules(R.xml.static_rules) ruleController.setRules(rules) (Ib3967)
  • SplitRule API를 개선했습니다.
    1. SplitRule이 최소 크기를 픽셀 단위가 아닌 DP 단위로 받습니다.
    2. 최소 크기를 선택사항으로 받도록 SplitRule 빌더를 리팩터링했습니다. (I95f17)
  • SplitController를 초기화하는 컨텍스트를 전달합니다. (I42549)
  • SplitRule#layoutDir의 이름이 #layoutDirection으로, SplitRule Builder#setLayoutDir의 이름이 Builder#setLayoutDirection으로 변경되었습니다. (I3f6d1)

버전 1.1.0-alpha04

2022년 11월 9일

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

새로운 기능

  • ActivityEmbedding을 위해 ActivityStack이 비어 있는지 확인하는 메서드를 노출합니다.
  • ActivityEmbedding API에서 실험용 API 태그를 삭제했습니다.
  • 선호하는 구성 방법이 Builder이므로 ActivityRule 생성자를 숨깁니다.
  • WindowMetrics에서 WindowInsets를 가져오는 실험용 메서드를 추가합니다.
  • 자리표시자가 마무리되지 않도록 SplitPlaceholderFinishBehavior를 업데이트합니다. 자리표시자를 마무리하면 일부 동작에서 혼동이 발생했습니다.

API 변경사항

  • val isEmpty를 공개로 설정하여 isEmpty를 대체합니다.
  • ActivityStack 매개변수 활동의 이름을 activitiesInProcess로 바꿉니다. (Ia5055)
  • ActivityFilter#matchesClassNameActivityFilter#matchesClassNameOrWildCard가 혼동을 야기하므로 삭제합니다.
  • 호출자가 다양한 필터를 구별할 수 있도록 ActivityFilter#componentName abd ActivityFilter#intentAction을 추가합니다. (I41f22)
  • 실험용 API에서 @Deprecated API를 삭제합니다. (I216b3)
  • Activity Embedding API용 @ExperimentalWindowApi를 삭제합니다. (I69ebe)
  • ActivityRule 생성자를 숨기고 대신 Builder를 사용합니다. (If4eb6)
  • Activity가 ActivityFilter의 일부인지 확인하는 API를 추가합니다. (Ia43cf)
  • WindowMetricsWindowMetricsCalculatorCompat 클래스의 변경사항을 반영하도록 API 파일을 업데이트합니다. (I667fe)
  • ActivityEmbedding 속성 Javadoc 및 클래스 이름을 업데이트합니다. (Ia1386)
  • AndroidManifest.xml에 사용할 ActivityEmbedding 속성 태그 이름을 추가합니다. (Id1ad4)
  • 새 API SplitPlaceholderFinishBehaviorSplitPlaceholderRule.finishPrimaryWithPlaceholder를 추가했습니다. 따라서 자리표시자 활동이 완료되는 시점, 연결된 활동이 Activity Embedding에서 작동해야 하는 방식을 정의하는 기존 SplitPlaceholderRule.finishPrimaryWithSecondary를 대체합니다. (I64647)

버그 수정

  • RearDisplay 모드를 사용 설정하여 현재 창을 후면 카메라와 정렬된 디스플레이로 이동할 수 있도록 WindowAreaController 및 API를 도입합니다. (I388ab)

버전 1.1.0-alpha03

2022년 7월 27일

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

새로운 기능

  • 임베딩 규칙의 기본값이 업데이트되었습니다.

API 변경사항

  • 임베딩 규칙 속성의 기본값이 업데이트되었습니다. (Ic4d35)

버전 1.1.0-alpha02

2022년 5월 11일

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

새로운 기능

  • 자바 및 RxJava를 지원하는 어댑터 라이브러리를 출시했습니다.

버전 1.1.0-alpha01

2022년 5월 11일

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

새로운 기능

  • 자바 및 RxJava를 지원하는 어댑터를 출시했습니다.

버전 1.1.0-alpha01

2022년 4월 20일

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

새로운 기능

  • 앱을 백그라운드로 전환하면 접기 기능 방출이 중지되는 버그를 수정합니다.
  • 실험용 ActivityEmbedding API를 확장합니다.

API 변경사항

  • 활동이 삽입되었는지 확인하는 공개 API (I39eb7)

버그 수정

  • 활동 분할에서 컨테이너의 마무리 동작을 맞춤설정하는 API를 추가합니다. (I1a1e4)
  • 활동 분할 규칙의 새 구성 옵션을 추가했습니다. (Iec6af)

버전 1.0

버전 1.0.0

2022년 1월 26일

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

1.0.0의 주요 기능

  • WindowInfoTrackerFoldingFeature를 통해 폴더블 스마트폰을 지원합니다. WindowMetricsCalculator는 현재 WindowMetrics를 계산하는 데 도움이 됩니다.

버전 1.0.0-rc01

2021년 12월 15일

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

새로운 기능

  • WindowInfoTracker를 통한 폴더블 스마트폰 지원을 추가합니다.
  • 현재 및 최대 WindowMetrics를 계산하는 메서드를 추가합니다.
  • 테스트 API 지원을 추가합니다.

버전 1.0.0-beta04

2021년 11월 17일

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

새로운 기능

  • WindowInfoRepository의 이름이 WindowInfoTracker로 변경됩니다.
  • 활동이 WindowInfoTracker의 명시적인 메서드 종속 항목이 됩니다.
  • Robolectric을 사용하는 개발자를 지원하기 위해 WindowMetricsCalculator용으로 간단한 TestRule이 추가됩니다.

API 변경사항

  • 확장 프로그램을 추출할 수 있습니다. (I25a5f)
  • ActivityStack에 isEmpty가 추가됩니다. (I5a4e6)
  • WindowInfoRepository의 이름이 WindowInfoTracker로 변경됩니다.
    • 일치하도록 java/rxjava/testing 종속 항목이 업데이트됩니다. (I0da63)
  • WindowMetricsCalculator용으로 간단한 테스트 규칙이 추가됩니다. (Ibacdb)

버전 1.0.0-beta03

2021년 10월 27일

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

새로운 기능

  • 실험용 Activity Embedding API가 추가되었습니다. 이 초기 레이아웃 버전을 사용하면 두 활동을 나란히 표시할 수 있습니다.

API 변경사항

  • currentWindowMetrics API를 정확히 제공할 수 없으므로 삭제했습니다. 대신 WindowMetricsCalculator를 사용하세요. (Icda5f)
  • 확장 API를 업데이트했습니다. (Ica92b)
  • 활동을 삽입하고 상위 작업 창에 삽입된 활동을 나란히 표시할 수 있는 새로운 기능을 위한 인터페이스가 추가되었습니다. (I5711d)
  • WindowMetrics 및 WindowLayoutInfo의 생성자를 숨겼습니다. 대신 테스트 API를 사용하세요. (I5a1b5)
  • 가짜 WindowLayoutInfo 객체를 생성하는 API를 추가했습니다. (I4a2fd)

버그 수정

버전 1.0.0-beta02

2021년 9월 1일

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

새로운 기능

  • 실험용 주석을 추가하여 실험용 API에 주석을 지정합니다. (I9f1b6)
  • Rect를 허용하는 테스트 FoldingFeature를 만들기 위한 테스트 메서드를 추가합니다. 이렇게 하면 실제 활동과는 반대로 Robolectric을 사용할 때 더 쉽게 테스트할 수 있습니다. (Id1cca)

버전 1.0.0-beta01

2021년 8월 18일

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

새로운 기능

  • 이전 상수를 삭제하고 FoldingFeature를 인터페이스로 만들었습니다.

API 변경사항

  • 이전 상수를 삭제하고 FoldFeature를 인터페이스로 만듭니다. (I9a2d5)

버그 수정

  • Test Core 라이브러리에 종속된 라이브러리는 1.4.0 버전으로 업그레이드되었으며 이제 Android 플랫폼 버전 S에서 작동합니다. (I88b72, b/189353863)

버전 1.0.0-alpha10

2021년 8월 4일

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

새로운 기능

  • WindowInfoRepo의 이름을 WindowInfoRepository로 바꾸고 해당하는 클래스와 파일을 조정합니다.
  • 시간 경과에 따라 값이 변경되므로 현재 창 측정항목을 WindowInfoRepository의 Flow로 변환합니다.
  • WindowInfoRepoJavaAdapter의 이름을 WindowInfoRepoCallbackAdapter로 바꿉니다.
  • 테스트 FoldingFeature 객체를 생성하는 도우미 메서드를 추가합니다.
  • 지원하는 기능에 따라 클래스를 그룹화하도록 패키지를 업데이트합니다.

API 변경사항

  • ActivityExt 이름을 ActivityExtensions로 바꿉니다. Repo에서 Repository로 변경합니다. (I61a16)
  • 클래스용 패키지를 업데이트합니다. (I23ae2)
  • WindowInfoRepo에서 WindowMetrics를 삭제합니다. (I24663)
  • WindowManager를 삭제하고 WindowInfoRepo를 사용합니다.
    • WindowBackend를 내부용으로 설정합니다. (I06d9a)
  • 창 측정항목을 Flow로 변환합니다.
    • 자바 어댑터의 이름을 WindowInfoRepoCallbackAdapter로 변경합니다.
    • 더 이상 실험용 API를 사용하지 않도록 callbackFlow를 삭제합니다. (Ia4d15)
  • 테스트 표시 기능을 만드는 도우미 메서드를 추가합니다.
    • occlusionMode에서 occlusionType으로 변경합니다. (If4cff)

버그 수정

  • 핵심 라이브러리가 삭제되는 ProGuard 오류가 수정되었습니다.
  • WindowLayoutInfo가 추가 구독자에게 전달되지 않는 오류가 수정되었습니다.
  • 구성 변경 시 폴딩 기능 업데이트가 트리거되지 않는 오류가 수정되었습니다.

버전 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 등)에서 휴대전화의 현재 상태를 제공합니다.