WindowManager

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

종속 항목 선언

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

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

Groovy

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

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

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

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

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

Kotlin

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

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

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

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

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

의견

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

새로운 문제 제출하기

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

버전 1.3

버전 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가 안정화되었습니다.
  • 이제 WindowLayoutInfoPublisherRuleUiContext에서 값을 가져올 때 재정의를 보고합니다.
  • WindowInfoTracker는 접기 기능 데이터를 UiContext 매개변수에 보고합니다.
  • 기기의 확장 프로그램 버전을 노출합니다.
  • 사용자 앱별 재정의를 위한 WindowProperties 상수:
    • 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가 안정화되었습니다.
  • 이제 WindowLayoutInfoPublisherRuleUiContext에서 값을 가져올 때 재정의를 보고합니다.
  • 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가 안정화되었습니다.
  • 이제 WindowLayoutInfoPublisherRuleUiContext에서 값을 가져올 때 재정의를 보고합니다.
  • 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에 필요한 window 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가 안정화되었습니다.
  • 이제 WindowLayoutInfoPublisherRuleUiContext에서 값을 가져올 때 재정의를 보고합니다.
  • 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)
  • Window Area API를 숨깁니다. 추가했습니다. (I39de0)
  • SplitControllerSplitInfo를 재정의하는 메서드를 추가합니다. 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가 지원 중단됩니다.
    • add/removeSplitCallbackSplitControllerCallbackAdapter(으)로 이동
    • SplitInfo 목록을 가져오도록 Flow 지원을 추가합니다. (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를 만듭니다.
    • 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 이후 중요 변경사항

활동 삽입

  • 앱 매니페스트에 PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED<application> 태그의 불리언 속성으로 추가했습니다.
  • isSplitSupported가 지원 중단되고 splitSupportStatus로 대체되어 분할 기능을 사용할 수 없는 이유에 관한 자세한 정보를 제공합니다.
  • splitSupportStatus 속성의 상태 상수를 제공하는 SplitController.SplitSupportStatus 중첩 클래스를 추가했습니다.
  • SplitController를 여러 모듈로 리팩터링했습니다.
    • Activity 또는 ActivityStack 관련 API의 ActivityEmbeddingController 모듈
    • isActivityEmbeddedSplitController에서 ActivityEmbeddingController로 이동했습니다.
    • EmbeddingRule 관련 작업을 위한 RuleController 모듈:
    • SplitController API를 삭제했습니다.
    • clearRegisteredRules()
    • getSplitRules()
    • initialize()
    • registerRule()
    • unregisterRule()
    • RuleController API를 추가했습니다.
    • addRule() - 규칙을 추가하거나 동일한 태그가 있는 규칙을 업데이트합니다.
    • removeRule() - 등록된 규칙 컬렉션에서 규칙을 삭제합니다.
    • setRules() - 규칙 모음을 설정합니다.
    • clearRules() - 등록된 모든 규칙을 삭제합니다.
    • parseRules() - XML 규칙 정의에서 규칙을 파싱합니다.
  • 모든 모듈에는 다음을 포함한 #getInstance() 메서드로 컨텍스트를 초기화해야 합니다.
    • ActivityEmbeddingController#getInstance(Context)
    • SplitController#getInstance(Context)
    • RuleController#getInstance(Context)
  • 디스플레이 가로세로 비율과 관련된 enum 유사 동작 상수를 정의하기 위해 EmbeddingAspectRatio 클래스를 추가했습니다.
  • 분할 레이아웃을 정의하는 SplitAttributes 클래스를 추가했습니다.
  • 분할 레이아웃을 맞춤설정할 수 있도록 SplitControllerSplitAttributes 계산기 함수를 추가했습니다.
    • setSplitAttributesCalculator(Function)
    • clearSplitAttributesCalculator()
    • isSplitAttributesCalculatorSupported(): 기기에서 SplitAttributesCalculator API가 지원되는지 확인
  • EmbeddingRule#tag 필드가 추가되었습니다.
  • SplitRule의 API 업데이트:
    • 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에 추가했습니다.
  • 실험용 비활동 UI 컨텍스트를 WindowMetricsCalculator에 추가했습니다.

이전 단계

  • 활동 삽입에서 활동을 분할로 표시하도록 사용 설정하려면 앱은 매니페스트 <application> 태그에 PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED 속성을 추가해야 합니다. xml <property android:name="android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED" android:value="true" /> 이를 통해 시스템은 미리 애플리케이션의 분할 동작을 최적화할 수 있습니다.
  • SplitInfo 비율
    • 현재 분할이 스택되어 있는지 확인합니다. 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 이전:
    • 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 속성 이전:
    • 이제 minWidthminSmallestWidth에서 픽셀 대신 dp 단위를 사용합니다. 앱에서는 kotlin TypedValue.applyDimension( COMPLEX_UNIT_DIP, minWidthInPixels, resources.displayMetrics ) 호출을 사용하거나 minWith(픽셀 단위)를 displayMetrics#density로 나누기만 하면 됩니다.
  • 종료 동작 상수를 FinishBehavior enum과 유사한 클래스 상수로 이전해야 합니다.
    • FINISH_NEVERFinishBehavior.NEVER로 변경됩니다.
    • FINISH_ALWAYSFinishBehavior.ALWAYS로 변경됩니다.
    • FINISH_ADJACENTFinishBehavior.ADJACENT로 변경됩니다.
  • 레이아웃 방향을 SplitAttributes.LayoutDirection로 이전해야 합니다.
    • ltrSplitAttributes.LayoutDirection.LEFT_TO_RIGHT로 변경됩니다.
    • rtlSplitAttributes.LayoutDirection.RIGHT_TO_LEFT로 변경됩니다.
    • localeSplitAttributes.LayoutDirection.LOCALE로 변경됩니다.
    • splitRatio 서비스를 SplitAttributes.SplitType.ratio(splitRatio)로 이전해야 합니다.
  • SplitPairRule.Builder 마이그레이션:
    • kotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600.SplitPairRule.Builder(filters, minWidth, minSmallestWidth) 변경
    • setLayoutDirection(layoutDirection)setSplitRatio(ratio)kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )로 변경됩니다.
    • setFinishPrimaryWithSecondarysetFinishSecondaryWithPrimaryFinishBehavior enum 유사 상수를 사용합니다. 자세한 내용은 'SplitRule 이전'을 참고하세요.
    • setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW)를 사용하여 세로 모드 기기에서 분할을 표시합니다.
  • SplitPlaceholder.Builder 마이그레이션:
    • filtersplaceholderIntent 매개변수만 있습니다. 다른 속성은 setter로 이동합니다. 자세한 내용은 'SplitPairRule.Builder 이전'을 참고하세요.
    • setFinishPrimaryWithPlaceholderFinishBehavior enum 유사 상수를 사용합니다. 자세한 내용은 'SplitRule 이전'을 참고하세요.
    • setLayoutDirection(layoutDirection)setSplitRatio(ratio)가 다음으로 변경됩니다. kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • 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에 포함된 커밋을 확인하세요.

활동 삽입

  • 앱 매니페스트에 PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED<application> 태그의 불리언 속성으로 추가했습니다.
  • isSplitSupported가 지원 중단되고 splitSupportStatus로 대체되어 분할 기능을 사용할 수 없는 이유에 관한 자세한 정보를 제공합니다.
  • splitSupportStatus 속성의 상태 상수를 제공하는 SplitController.SplitSupportStatus 중첩 클래스를 추가했습니다.
  • SplitController를 여러 모듈로 리팩터링했습니다.
    • Activity 또는 ActivityStack 관련 API의 ActivityEmbeddingController 모듈
    • isActivityEmbeddedSplitController에서 ActivityEmbeddingController로 이동했습니다.
    • EmbeddingRule 관련 작업을 위한 RuleController 모듈:
    • SplitController API를 삭제했습니다.
      • clearRegisteredRules()
      • getSplitRules()
      • initialize()
      • registerRule()
      • unregisterRule()
    • RuleController API를 추가했습니다.
      • addRule() - 규칙을 추가하거나 동일한 태그가 있는 규칙을 업데이트합니다.
      • removeRule() - 등록된 규칙 컬렉션에서 규칙을 삭제합니다.
      • setRules() - 규칙 모음을 설정합니다.
      • clearRules() - 등록된 모든 규칙을 삭제합니다.
      • `parseRules() — XML 규칙 정의에서 규칙을 파싱합니다.
  • 모든 모듈에는 다음을 포함한 #getInstance() 메서드로 컨텍스트를 초기화해야 합니다.
    • ActivityEmbeddingController#getInstance(Context)
    • SplitController#getInstance(Context)
    • RuleController#getInstance(Context)
  • 디스플레이 가로세로 비율과 관련된 enum 유사 동작 상수를 정의하기 위해 EmbeddingAspectRatio 클래스를 추가했습니다.
  • 분할 레이아웃을 정의하는 SplitAttributes 클래스를 추가했습니다.
  • 분할 레이아웃을 맞춤설정할 수 있도록 SplitControllerSplitAttributes 계산기 함수를 추가했습니다.
    • setSplitAttributesCalculator(Function)
    • clearSplitAttributesCalculator()
    • isSplitAttributesCalculatorSupported(): 기기에서 SplitAttributesCalculator API가 지원되는지 확인
  • EmbeddingRule#tag 필드가 추가되었습니다.
  • SplitRule의 API 업데이트:
    • 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 컨텍스트를 추가했습니다.

이전 단계

  • 활동 삽입에서 활동을 분할로 표시하도록 사용 설정하려면 앱은 매니페스트 <application> 태그에 PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED 속성을 추가해야 합니다. xml <property android:name="android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED" android:value="true" /> 이를 통해 시스템은 미리 애플리케이션의 분할 동작을 최적화할 수 있습니다.
  • SplitInfo 비율
    • 현재 분할이 스택되어 있는지 확인합니다. 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 마이그레이션:
    • 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 속성 이전:
    • 이제 minWidthminSmallestWidth에서 픽셀 대신 dp 단위를 사용합니다. 앱에서는 kotlin TypedValue.applyDimension( COMPLEX_UNIT_DIP, minWidthInPixels, resources.displayMetrics ) 호출을 사용하거나 minWith(픽셀 단위)를 displayMetrics#density로 나누기만 하면 됩니다.
  • 종료 동작 상수를 FinishBehavior enum과 유사한 클래스 상수로 이전해야 합니다.
    • FINISH_NEVERFinishBehavior.NEVER로 변경됩니다.
    • FINISH_ALWAYSFinishBehavior.ALWAYS로 변경됩니다.
    • FINISH_ADJACENTFinishBehavior.ADJACENT로 변경됩니다.
  • 레이아웃 방향을 SplitAttributes.LayoutDirection로 이전해야 합니다.
    • ltrSplitAttributes.LayoutDirection.LEFT_TO_RIGHT로 변경됩니다.
    • rtlSplitAttributes.LayoutDirection.RIGHT_TO_LEFT로 변경됩니다.
    • localeSplitAttributes.LayoutDirection.LOCALE로 변경됩니다.
    • splitRatio 서비스를 SplitAttributes.SplitType.ratio(splitRatio)로 이전해야 합니다.
  • SplitPairRule.Builder 마이그레이션:
    • kotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600.SplitPairRule.Builder(filters, minWidth, minSmallestWidth) 변경
    • setLayoutDirection(layoutDirection)setSplitRatio(ratio)kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )로 변경됩니다.
    • setFinishPrimaryWithSecondarysetFinishSecondaryWithPrimaryFinishBehavior enum 유사 상수를 사용합니다. 자세한 내용은 'SplitRule 이전'을 참고하세요.
    • setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW)를 사용하여 세로 모드 기기에서 분할을 표시합니다.
  • SplitPlaceholder.Builder 마이그레이션:
    • filtersplaceholderIntent 매개변수만 있습니다. 다른 속성은 setter로 이동합니다. 자세한 내용은 'SplitPairRule.Builder 이전'을 참고하세요.
    • setFinishPrimaryWithPlaceholderFinishBehavior enum 유사 상수를 사용합니다. 자세한 내용은 'SplitRule 이전'을 참고하세요.
    • setLayoutDirection(layoutDirection)setSplitRatio(ratio)가 다음으로 변경됩니다. kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • 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 등)에서 휴대전화의 현재 상태를 제공합니다.