Compose 애니메이션

Jetpack Compose 애플리케이션에서 애니메이션을 빌드하여 사용자 환경에 풍부함을 더합니다.
최근 업데이트 현재 안정화 버전 다음 버전 후보 베타 버전 알파 버전
2021년 11월 3일 1.0.5 - 1.1.0-beta02 -

구조

Compose는 androidx 내 Maven 그룹 ID 7개의 조합입니다. 각 그룹에는 타겟팅된 일부 기능이 포함되고 각 기능에는 자체 출시 노트 세트가 있습니다.

다음 표에서는 각 출시 노트 세트에 관한 그룹과 링크를 설명합니다.

그룹설명
compose.animationJetpack Compose 애플리케이션에서 애니메이션을 빌드하여 사용자 환경에 풍부함을 더합니다.
compose.compilerKotlin 컴파일러 플러그인으로 최적화를 사용 설정하고 @Composable 함수를 변환합니다.
compose.foundation즉시 사용 가능한 구성요소를 사용해 Jetpack Compose 애플리케이션을 작성하고 기초를 확장해 나만의 디자인 시스템 요소를 빌드합니다.
compose.material즉시 사용 가능한 머티리얼 디자인 구성요소로 Jetpack Compose UI를 빌드합니다. 이는 Compose를 고급 수준에서 사용하는 첫 단계이며, www.material.io에 설명된 것과 동일한 구성요소를 제공합니다.
compose.material3차세대 머티리얼 디자인인 머티리얼 디자인 3 구성요소로 Jetpack Compose UI를 빌드합니다. 머티리얼 3는 업데이트된 테마 설정 및 구성요소, Material You 맞춤설정 기능(동적 색상 등)을 포함하며 새로운 Android 12의 시각적 스타일 및 시스템 UI와 일관되도록 설계되었습니다.
compose.runtimeCompose의 프로그래밍 모델과 상태 관리를 위한 기본 구성요소 및 타겟팅용 Compose 컴파일러 플러그인 핵심 런타임입니다.
compose.ui레이아웃, 그리기, 입력 등 기기와 상호작용할 때 필요한 Compose UI의 기본적인 구성요소입니다.

종속 항목 선언

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

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

Groovy

dependencies {
    implementation "androidx.compose.animation:animation:1.1.0-beta03"
}

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.1.0-beta03"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

dependencies {
    implementation("androidx.compose.animation:animation:1.1.0-beta03")
}

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.1.0-beta03"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

종속 항목에 관한 자세한 내용은 빌드 종속 항목 추가를 참고하세요.

의견

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

새로운 문제 제출하기

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

버전 1.1

버전 1.1.0-beta02

2021년 11월 3일

androidx.compose.animation:animation:1.1.0-beta02, androidx.compose.animation:animation-core:1.1.0-beta02androidx.compose.animation:animation-graphics:1.1.0-beta02가 출시되었습니다. 버전 1.1.0-beta02에 포함된 커밋을 확인하세요.

버그 수정

  • 도구 지원을 위한 새로운 Animation API가 있습니다. 특히, 이 API를 통해 전환에서 애니메이션과 구성을 검사하는 도구를 사용할 수 있습니다. (I4116e)

버전 1.1.0-beta01

2021년 10월 27일

androidx.compose.animation:animation:1.1.0-beta01, androidx.compose.animation:animation-core:1.1.0-beta01androidx.compose.animation:animation-graphics:1.1.0-beta01이 출시되었습니다. 버전 1.1.0-beta01에 포함된 커밋을 확인하세요.

API 변경사항

  • 도구 지원을 위한 새로운 Animation API가 있습니다. 특히, 이 API를 통해 전환에서 애니메이션과 구성을 검사하는 도구를 사용할 수 있습니다. (I4116e)

버전 1.1.0-alpha06

2021년 10월 13일

androidx.compose.animation:animation:1.1.0-alpha06, androidx.compose.animation:animation-core:1.1.0-alpha06androidx.compose.animation:animation-graphics:1.1.0-alpha06이 출시되었습니다. 버전 1.1.0-alpha06에 포함된 커밋을 확인하세요.

버전 1.1.0-alpha05

2021년 9월 29일

androidx.compose.animation:animation:1.1.0-alpha05, androidx.compose.animation:animation-core:1.1.0-alpha05, androidx.compose.animation:animation-graphics:1.1.0-alpha05가 출시되었습니다. 버전 1.1.0-alpha05에 포함된 커밋을 확인하세요.

API 변경사항

  • EnterTransition, ExitTransition, 일부 AnimatedVisibility API가 안정화되었습니다. MutableTransitionState.isIdle 또한 더 이상 실험용이 아닙니다. (I5072d)

  • 브레이킹 체인지: Enter/ExitTransition 팩토리의 람다를 매개변수 목록의 마지막 위치로 이동했습니다. (I5072d)

버전 1.1.0-alpha04

2021년 9월 15일

androidx.compose.animation:animation:1.1.0-alpha04, androidx.compose.animation:animation-core:1.1.0-alpha04androidx.compose.animation:animation-graphics:1.1.0-alpha04가 출시되었습니다. 버전 1.1.0-alpha04에 포함된 커밋을 확인하세요.

버전 1.1.0-alpha03

2021년 9월 1일

androidx.compose.animation:animation:1.1.0-alpha03, androidx.compose.animation:animation-core:1.1.0-alpha03androidx.compose.animation:animation-graphics:1.1.0-alpha03이 출시되었습니다. 버전 1.1.0-alpha03에 포함된 커밋을 확인하세요.

새로운 기능

  • Kotlin 1.5.30에 종속되도록 Compose 1.1.0-alpha03을 업데이트했습니다. (I74545)

버전 1.1.0-alpha02

2021년 8월 18일

androidx.compose.animation:animation:1.1.0-alpha02, androidx.compose.animation:animation-core:1.1.0-alpha02androidx.compose.animation:animation-graphics:1.1.0-alpha02가 출시되었습니다. 버전 1.1.0-alpha02에 포함된 커밋을 확인하세요.

API 변경사항

  • 이제 StartOffset이 repeatable 및 infiniteRepeatable에서 지원됩니다. 이는 애니메이션이 시작되기 전에 시작 시간을 지연시키거나 애니메이션을 빨리 감기 위한 방법입니다. 이 시작 오프셋은 반복되지 않습니다. (Ic679f, b/195079908)
  • 규모에 맞는 새로운 들어가기/나가기 전환입니다. 다른 유형의 Enter/ExitTransitions와 함께 사용할 수 있습니다. (I372da, b/191325593)

버전 1.1.0-alpha01

2021년 8월 4일

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

API 변경사항

  • AnimatedImageVector 및 관련 API가 이제 새 androidx.compose.animation:animation-graphics 모듈에 있습니다. (I60873)

버그 수정

  • InfiniteAnimationPolicy를 :compose:ui로 이동했습니다. (I5eb09, b/160602714)

버전 1.0

버전 1.0.5

2021년 11월 3일

androidx.compose.animation:animation:1.0.5androidx.compose.animation:animation-core:1.0.5가 출시되었습니다. 버전 1.0.5에 포함된 커밋을 확인하세요.

버그 수정

  • derivedStateOf 인스턴스를 추적할 때 발생하는 비정상 종료 문제를 수정했습니다. (aosp/1792247)

버전 1.0.4

2021년 10월 13일

androidx.compose.animation:animation:1.0.4androidx.compose.animation:animation-core:1.0.4가 출시되었습니다. 버전 1.0.4에 포함된 커밋을 확인하세요.

종속 항목 업데이트

  • Kotlin 1.5.31에 종속되도록 업데이트했습니다.

버전 1.0.3

2021년 9월 29일

androidx.compose.animation:animation:1.0.3androidx.compose.animation:animation-core:1.0.3이 출시되었습니다. 버전 1.0.3에 포함된 커밋을 확인하세요.

종속 항목 업데이트

  • Kotlin 1.5.30에 종속되도록 업데이트했습니다.

버전 1.0.2

2021년 9월 1일

androidx.compose.animation:animation:1.0.2androidx.compose.animation:animation-core:1.0.2가 출시되었습니다. 버전 1.0.2에 포함된 커밋을 확인하세요.

Compose 1.0.2 출시를 지원하도록 업데이트되었습니다. Compose 1.0.2는 여전히 Kotlin 1.5.21과 호환됩니다.

버전 1.0.1

2021년 8월 4일

androidx.compose.animation:animation:1.0.1androidx.compose.animation:animation-core:1.0.1이 출시되었습니다. 버전 1.0.1에 포함된 커밋을 확인하세요.

종속 항목 업데이트

  • Kotlin 1.5.21에 종속되도록 업데이트했습니다.

버전 1.0.0

2021년 7월 28일

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

1.0.0의 주요 기능

Compose의 첫 번째 안정화 버전입니다. 자세한 내용은 공식 Compose 버전 블로그를 참고하세요.

알려진 문제

  • Android 스튜디오 Bumblebee Canary 4 또는 AGP 7.1.0-alpha04/7.1.0-alpha05를 사용하는 경우 다음과 같은 비정상 종료가 발생할 수 있습니다.

      java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
    

    이 문제를 해결하려면 build.gradle 파일에서 minSdkVersion을 24 이상으로 일시적으로 늘리세요. 이 문제는 Android 스튜디오 Bumblebee 향후 버전 및 AGP 7.1 버전에서 해결될 예정입니다. (b/194289155)

버전 1.0.0-rc02

2021년 7월 14일

androidx.compose.animation:animation:1.0.0-rc02androidx.compose.animation:animation-core:1.0.0-rc02가 출시되었습니다. 버전 1.0.0-rc02에 포함된 커밋을 확인하세요.

버전 1.0.0-rc01

2021년 7월 1일

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

버그 수정

  • InfiniteAnimationPolicyandroidx.compose.ui:ui로 이동했습니다. (I5eb09, b/160602714)

버전 1.0.0-beta09

2021년 6월 16일

androidx.compose.animation:animation:1.0.0-beta09androidx.compose.animation:animation-core:1.0.0-beta09가 출시되었습니다. 버전 1.0.0-beta09에 포함된 커밋을 확인하세요.

API 변경사항

  • 새로운 AnimatedContent 컴포저블이 추가됩니다. 새 타겟 콘텐츠가 들어오고 초기 콘텐츠가 나갈 때 맞춤설정 가능한 ContentTransform을 사용하여 콘텐츠 변경을 관리합니다. 들어가기 전환과 나가기 전환을 다양하게 조합하여 디자인과 분위기를 맞춤설정할 수 있습니다. 콘텐츠 전환의 일부로 AnimatedContent는 자신의 크기를 수신되는 콘텐츠와 일치하도록 자동으로 애니메이션합니다. (I2c3df)
  • ManualFrameClock을 삭제했습니다. 애니메이션을 제어해야 한다면 composeTestRule.mainClock을 대신 사용합니다. (I3c3e8, b/189951065)

추가된 프로필 규칙

이번 출시에서는 다음 Compose 모듈에 프로필 규칙이 추가됩니다. (I14ed6)

  • androidx.compose.animation
  • androidx.compose.animation-core
  • androidx.compose.foundation
  • androidx.compose.foundation-layout
  • androidx.compose.material
  • androidx.compose.material-ripple
  • androidx.compose.runtime
  • androidx.compose.ui
  • androidx.compose.ui.geometry
  • androidx.compose.ui.graphics
  • androidx.compose.ui.text
  • androidx.compose.ui.text
  • androidx.compose.ui.unit
  • androidx.compose.ui.util

프로필 규칙이란 무엇인가요?

  • 라이브러리의 프로필 규칙은 src/main 또는 이에 상응하는 디렉터리에 있는 텍스트 파일 baseline-prof.txt에 지정됩니다. 이 파일에서는 줄별로 규칙을 지정합니다. 이때 규칙은 라이브러리의 메서드 또는 클래스와의 일치를 확인하는 패턴을 말합니다. 규칙의 구문은 adb shell profman --dump-classes-and-methods ...를 사용할 때 사용되며 사람이 읽을 수 있는 ART 프로필 형식의 상위 집합입니다. 규칙의 형식은 메서드 또는 클래스를 타겟팅하는 두 가지 형식 중 하나입니다.

  • 메서드 규칙의 패턴은 다음과 같습니다.

    <FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
    
  • 클래스 규칙의 패턴은 다음과 같습니다.

    <CLASS_DESCRIPTOR>
    
  • 여기에서 <FLAGS>는 이 메서드의 플래그를 'Hot, 'Startup' 또는 'Post Startup' 중 무엇으로 지정해야 하는지를 나타내는 문자 H, S, P 중 하나 이상으로 구성됩니다.

  • <CLASS_DESCRIPTOR>는 타겟팅된 메서드가 속한 클래스의 설명자입니다. 예를 들어 androidx.compose.runtime.SlotTable 클래스는 Landroidx/compose/runtime/SlotTable;의 설명자를 포함합니다.

  • <METHOD_SIGNATURE>는 메서드의 서명이며 이름, 매개변수 유형, 메서드의 반환 유형을 포함합니다. 예를 들어 LayoutNodefun isPlaced(): Boolean 메서드는 서명이 isPlaced()Z입니다.

  • 이러한 패턴에는 단일 규칙이 여러 메서드나 클래스를 포괄하도록 와일드 카드(**, *, ?)가 포함될 수 있습니다.

규칙의 기능은 무엇인가요?

  • H 플래그는 'Hot' 메서드임을 나타내며, 이러한 메서드는 미리 컴파일해야 합니다.

  • S 플래그는 시작 시 호출되는 메서드임을 나타내며, 컴파일 비용을 발생시키키거나 시작 시 메서드를 해석하는 일을 피하려면 이러한 메서드를 미리 컴파일해야 합니다.

  • P 플래그는 시작 후에 호출되는 메서드임을 나타냅니다.

  • 이 파일에 있는 클래스는 시작 중에 사용된다는 사실을 나타내며, 클래스 로드 비용을 발생시키지 않으려면 클래스를 힙에 미리 할당해야 합니다.

원리는 무엇인가요?

  • 라이브러리는 이러한 규칙을 정의할 수 있고 규칙은 AAR 아티팩트에 패키징됩니다. 그런 다음, 이러한 아티팩트를 포함하는 앱을 빌드하면 규칙이 함께 병합되어 앱과 관련된 압축 바이너리 ART 프로필을 빌드하는 데 사용됩니다. 그러면 ART에서 앱을 기기에 설치할 때 예정보다 앞서 애플리케이션의 특정 하위 집합을 컴파일하여 애플리케이션의 성능을 향상하도록(특히, 첫 번째 실행 성능) 이 프로필을 활용할 수 있습니다. 디버그 가능 애플리케이션에는 영향을 주지 않습니다.

버전 1.0.0-beta08

2021년 6월 2일

androidx.compose.animation:animation:1.0.0-beta08androidx.compose.animation:animation-core:1.0.0-beta08이 출시되었습니다. 버전 1.0.0-beta08에 포함된 커밋을 확인하세요.

버그 수정

  • 이제 detectDragGesures, detectVerticalGesturesdetectHorizontalGestures는 자동으로 위치 변경사항을 사용하므로 onDrag 콜백에서 change.consumePositionChange를 호출하지 않아도 됩니다. (I42fc4, b/185096350, b/187320697)
  • 모든 수정자를 적용한 후 수정자 체인에서 레이아웃 좌표가 아닌 이 수정자의 좌표를 보고하도록 Modifier.onGloballyPositioned()를 수정했습니다. 즉, 이제 수정자의 순서가 보고되는 좌표에 영향을 미칩니다. (Ieb67d, b/177926591)

버전 1.0.0-beta07

2021년 5월 18일

androidx.compose.animation:animation:1.0.0-beta07androidx.compose.animation:animation-core:1.0.0-beta07이 출시되었습니다. 버전 1.0.0-beta07에 포함된 커밋을 확인하세요.

API 변경사항

  • MutableTransitionState에 지정되는 가시성을 지원하는 새로운 AnimatedVisibility API: 이 API를 사용하면 currentStateisIdle를 통해 AnimatedVisibility 외부의 애니메이션 상태를 관찰할 수도 있습니다.
    • Transition에서의 새로운 하위 요소 전환 지원
    • AnimationScope.transition을 사용하여 AnimatedVisibility에서 맞춤 종료/시작 전환 애니메이션 지원
    • AnimatedVisibility의 모든 하위 요소에 액세스 가능한 새로운 animateEnterExit 수정자
    • initiallyVisible 매개변수를 취하는 AnimatedVisibility API의 지원이 중단됨(I702f3)

버전 1.0.0-beta06

2021년 5월 5일

androidx.compose.animation:animation:1.0.0-beta06androidx.compose.animation:animation-core:1.0.0-beta06이 출시되었습니다. 버전 1.0.0-beta06에 포함된 커밋을 확인하세요.

버전 1.0.0-beta05

2021년 4월 21일

androidx.compose.animation:animation:1.0.0-beta05androidx.compose.animation:animation-core:1.0.0-beta05가 출시되었습니다. 버전 1.0.0-beta05에 포함된 커밋을 확인하세요.

버그 수정

  • ui-test-manifest 및 ui-tooling-data의 AndroidManifest 파일이 이제 Android 12와 호환됩니다. (I6f9de, b/184718994)

버전 1.0.0-beta04

2021년 4월 7일

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

API 변경사항

  • RowScope, ColumnScope, BoxScope, BoxWithConstraintsScope의 공개 인스턴스를 삭제했습니다. (I4e83e, b/181869067)

버전 1.0.0-beta03

2021년 3월 24일

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

버전 1.0.0-beta02

2021년 3월 10일

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

버그 수정

버전 1.0.0-beta01

2021년 2월 24일

androidx.compose.animation:animation:1.0.0-beta01androidx.compose.animation:animation-core:1.0.0-beta01가 출시되었습니다. 버전 1.0.0-beta01에 포함된 커밋을 확인하세요.

Compose 1.0.0 베타의 첫 번째 버전입니다.

API 변경사항

  • InteractionState[Mutable]InteractionSource로 대체했습니다.
    • 인터페이스는 상호작용 이벤트를 방출/수집해야 합니다.
    • ButtonModifier.clickable() 등의 구성요소에 interactionState = remember { InteractionState() }를 전달하는 대신 interactionSource = remember { MutableInteractionSource() }를 사용합니다.
    • Interaction.Pressed in interactionState 대신 InteractionSource에서 InteractionSource.collectIsPressedAsState()와 같은 확장 함수를 사용해야 합니다.
    • 복잡한 사용 사례의 경우 InteractionSource.interactions를 사용하여 상호작용 스트림을 관찰할 수 있습니다. 자세한 내용은 InteractionSource 도움말과 샘플을 참고하세요.
    • (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
  • smoothScrollBy 및 scrollBy 메서드의 패키지를 androidx.compose.foundation.gestures.*로 변경했습니다. (I3f7c1, b/175294473)
  • 크기 수정자의 이름을 바꿨습니다. Modifier.width/height/size의 이름이 requiredWidth/requiredHeight/requiredSize로, Modifier.preferredWidth/preferredHeight/preferredSize의 이름이 width/height/size로 변경되었습니다. (I5b414)
  • 방향을 기본 패키지로 이동했습니다. VelocirtTracker가 ui.gesture에서 ui.input.pointer로 이동했습니다. (Iff4a8, b/175294473)
  • AnimationClockObservable 및 서브클래스를 삭제했습니다. AnimatedFloat를 삭제했습니다. (Icde52, b/177457083)
  • Modifier.draggable이 이제 간단한 람다 대신 DraggableState를 허용합니다. rememberDraggableState { delta -> }를 통해 상태를 만들어 이전과 같은 동작을 가져올 수 있습니다. (Ica70f, b/175294473)
  • animate, animatedValue, AnimatedValue API를 삭제했습니다. (If27bc, b/177457083)
  • AnimationEndReason.Interrupted를 삭제했습니다. 애니메이션이 중단되면 CancellationException이 발생합니다. (I2cbbc, b/179695417)
  • TargetAnimation API를 삭제했습니다. (If47d1, b/177457083)

버전 1.0.0-alpha12

2021년 2월 10일

androidx.compose.animation:animation:1.0.0-alpha12androidx.compose.animation:animation-core:1.0.0-alpha12가 출시되었습니다. 버전 1.0.0-alpha12에 포함된 커밋을 확인하세요.

API 변경사항

  • 이제 Modifier.pointerInput에 새 종속 항목으로 인해 포인터 입력 감지 코루틴이 다시 시작되어야 할 때를 나타내는 기억 키가 필요합니다. (I849cd)
  • Bounds 이름을 DpRect로 바꾸었습니다. (I4b32a)
  • AnimationSpec의 매개변수 이름을 애니메이션 시스템 전체에서 animationSpec으로 통합했습니다. 또한 FiniteAnimationSpec을 허용하도록 Enter/ExitTransition을 제한합니다. (Ie47c5, b/177457083)
  • Animatable.snapTo 및 Animatable.stop은 이제 정지된 함수입니다. (If4288)
  • 이전의 state { 0 } 컴포저블을 삭제하고 remember { mutableStateOf(0) }과 같은 사용을 촉진하는 것과 마찬가지로 savedInstanceState { 0 } 컴포저블을 삭제할 예정입니다. 대신 rememberSaveable { mutableStateOf(0) }을 사용해야 하며 이 방식은 MutableState 내에서 사용한 유형을 Bundle에 저장할 수 있다면 자동으로 저장하고 복원합니다. 이전에 맞춤 Saver 객체를 전달했다면 이제 stateSaver 매개변수가 있는 rememberSaveable의 새 오버로드를 사용해야 합니다. 사용법은 다음과 같습니다. val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) } (Ib4c26, b/177338004)
  • 애니메이션 시스템의 나머지 부분과의 일관성을 높이기 위해 Crossfade의 메서드 서명을 업데이트했습니다. (Ib05ed, b/177457083)
  • rememberSavedInstanceState()를 rememberSaveable()로 이름을 바꾸고 androidx.compose.runtime.saveable 패키지로 이동했습니다. (I1366e, b/177338004)
  • RestorableStateHolder를 SaveableStateHolder로 이름을 바꾸고 androidx.compose.runtime.saveable 패키지로 이동했습니다. Inner 메서드 RerestableStateProvider를 SaveableStateProvider로 이름을 바꾸었습니다. 일반 유형이 삭제되었으므로 Any를 키로 전달할 수 있습니다. 실험용 주석은 더 이상 필요하지 않습니다. (I0902e, b/174598702)
  • 애니메이션 시스템의 나머지 부분과 일관되도록 Modifier.animateContentSize API를 업데이트했습니다. (I0bf75, b/177457083)
  • 이제 AnimatedValue/Float가 지원 중단되었습니다. 대신 Animatable을 사용하세요. (I71345, b/177457083)
  • tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter 및 pressIndicaitonGestureFilter가 지원 중단되었습니다. 대신 detectTapGestures 함수와 함께 Modifier.clickable 또는 Modifier.pointerInput을 사용합니다. (I6baf9, b/175294473)
  • 무한 애니메이션에 적용될 InfiniteAnimationPolicy 코루틴 컨텍스트 요소를 도입했습니다. 기본적으로 ComposeTestRule을 사용하여 테스트를 실행하는 경우를 제외하고 설치되는 정책은 없습니다. (I50ec4, b/151940543)
  • 거의 사용하지 않는 여러 클래스의 디스트럭처링 메서드와 copy() 메서드를 삭제했습니다. (I26702, b/178659281)
  • 애니메이션 재생 시간은 이제 나노초 단위로 통합되었습니다. (If776a)
  • compose:runtime-dispatch 아티팩트는 이제 지원 중단됩니다. 이제 MonotonicFrameClock은 compose:runtime에서, AndroidUiDispatcher는 compose:ui에서 찾을 수 있습니다. (Ib5c36)
  • 무한 애니메이션인지 여부를 알려주는 Animation.isInfiniteVectorizedAnimationSpec.isInfinite를 추가했습니다. 애니메이션 구현 시 이러한 애니메이션을 특별히 처리하도록 사용할 수 있습니다. 예를 들어 특별한 '남은 시간' 메시지를 표시할 수도 있고, 테스트 중에 유휴 상태를 무기한으로 대기하지 않도록 애니메이션을 취소할 수도 있습니다. (Iebb05, b/151940543)
  • 애니메이션 시간 유형으로 Uptime 대신 Long을 사용합니다. (Ie3aa7, b/177420019)

버전 1.0.0-alpha11

2021년 1월 28일

androidx.compose.animation:animation:1.0.0-alpha11androidx.compose.animation:animation-core:1.0.0-alpha11이 출시되었습니다. 버전 1.0.0-alpha11에 포함된 커밋을 확인하세요.

API 변경사항

  • TransitionDefinition 기반 Transition을 지원 중단했습니다. (I0ac57)
  • Transition 및 하위 애니메이션이 도구에 표시되도록 라벨 필드를 추가합니다. (I619fb)
  • animateAsState가 이제 animateFooAsState이고 여기서 Foo는 애니메이션되는 변수의 유형입니다(예: Float, Dp, Offset 등). (Ie7e25)
  • 새 InfiniteTransition이 여러 하위 애니메이션을 실행합니다. (I1da81)
  • Material 스테이트풀(Stateful) 매개변수 인터페이스를 State<T>를 반환하는 @Composable 함수를 포함하도록 변경합니다. Animatable을 State로 더 쉽게 변환하도록 Animatable.asState()를 추가합니다. 또한 animateElevation을 Animatable의 일시중지 확장이 되도록 변경합니다. (If613c)

버그 수정

  • onCommit, onDispose, onActive를 지원 중단하고 SideEffect 및 DisposableEffect API로 대체했습니다. (If760e)
  • 이제 updateTransition의 초기 State가 지원됩니다. (Ifd51d)
  • 콘텐츠 설명 매개변수를 이미지 및 아이콘에 추가했습니다. 접근성 서비스에 설명을 제공하는 데 사용됩니다. (I2ac4c)
  • invalidate 및 compositionReference()를 지원 중단하고 currentRecomposeScope 및 rememberCompositionReference로 각각 대체했습니다. (I583a8)
  • Duration과 Uptime이 Long 밀리초로 대체되며 이 단계에서는 이러한 클래스의 포인터 입력 종속 항목을 삭제합니다. (Ia33b2, b/175142755, b/177420019)
  • 이제 컴포지션 외부에서 clickable, toggleable, selectable을 만들 수 있습니다. (I0a130, b/172938345, b/175294473)
  • 이징을 기능 인터페이스로 변경했습니다. (Ib14e5)
  • LazyColumn/LazyRow/LazyVerticalGrid 범위의 새 items(count: Int) 팩토리 메서드입니다. items(items: List)itemsIndexed(items: List)는 이제 확장 함수이므로 사용할 때 수동으로 가져와야 합니다. 배열의 새 확장 오버로드입니다. items(items: Array) 및 itemsIndexed(Array) (I803fc, b/175562574)
  • 테스트에서 TestCoroutineDispatcher를 활용합니다. (I532b6)
  • PointerInputData를 삭제하고 PointerInputChange를 수정하여 PointerInputData의 모든 필드를 제공했습니다. PointerInputEvent 및 PointerInputEventData가 공개 API에서 사용되지 않으므로 이를 내부 클래스로 변경했습니다. (Ifff97, b/175142755)

버전 1.0.0-alpha10

2021년 1월 13일

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

API 변경사항

  • 구성요소 부분과 수학 연산을 포함하도록 속도를 수정했습니다. (Ib0447)
  • 유사한 실험용 API 주석과 일치하도록 @ExperimentalTesting에서 @ExperimentalTestApi로 이름을 바꿨습니다. (Ia4502, b/171464963)
  • Position의 이름을 DpOffset으로 바꿨고 getDistance()를 삭제했습니다. (Ib2dfd)
  • Any.identityHashCode() 공개 API를 삭제했습니다. (I025d7)

버그 수정

  • 새로운 코루틴 기반 API Animatable은 애니메이션 간의 상호 배타성을 보장합니다. 새로운 DecayAnimationSpec이 다차원 감쇠 애니메이션을 지원합니다. (I820f2, b/168014930)
  • animate()가 이제 T 대신 State<T>를 반환하는 animateAsState()로 대체되었습니다. 상태 값이 판독되는 지점까지 무효화 범위를 좁힐 수 있으므로 성능이 향상됩니다. (Ib179e)

버전 1.0.0-alpha09

2020년 12월 16일

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

API 변경사항

  • Dp.VectorConverter, Position.VectorConverter 등을 animation-core로 이동하고 이전 VectorConveters를 지원 중단했습니다. (If0c4b)
  • 사용 편의성을 개선하고 동적으로 추가된 애니메이션과 동적으로 계산된 애니메이션 타겟을 지원하는 완전히 새로운 Transition API 세트를 도입했습니다. 이 API는 TransitionDefinition 기반 API와 쉽게 구분되도록 실험용으로 표시됩니다. (Ia7fe3)

버그 수정

  • 오프셋 수정자의 람다가 이제 Float 대신 IntOffset을 반환합니다. (Ic9ee5, b/174137212, b/174146755)
  • LazyColumnFor, LazyRowFor, LazyColumnForIndexed, LazyRowForIndexed를 지원 중단했습니다. 대신 LazyColumn과 LazyRow를 사용하세요. (I5b48c)
  • 정지 포인터 입력 API의 경우 HandlePointerInputScope의 이름을 AwaitPointerEventScope로 바꾸고 handlePointerInput()의 이름을 awaitPointerEventScope()로 바꿨습니다. (Idf0a1, b/175142755)
  • InfiniteRepeatableSpec을 생성하기 위한 새로운 infiniteRepeatable 함수를 도입했습니다. (I668e5)
  • ExperimentalPointerInput 주석을 삭제했습니다. (Ia7a24)

버전 1.0.0-alpha08

2020년 12월 2일

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

API 변경사항

  • Compose 가이드라인과의 일관성을 확인하기 위해 구성 가능한 람다 매개변수 이름 지정 및 위치에 대한 린트 검사를 추가했습니다. 또한 Lint 검사와 지침에 따라 후행 람다의 이름으로 children을 사용하는 일부 API를 content로 마이그레이션했습니다. (Iec48e)
  • 이전에 지원 중단된 API를 삭제했습니다.
    • Modifier.onPositioned를 삭제했습니다. Modifier.onGloballyPositioned를 사용하세요.
    • Modifier.onDraw를 삭제했습니다. Modifier.onDrawBehind을 사용하세요.
    • Modifier.plus를 삭제했습니다. Modifier.then을 사용하세요.
    • Color.Unset을 삭제했습니다. Color.Unspecified를 사용하세요.
    • PxBounds 클래스를 삭제했습니다. 대신 Rect를 사용하세요.
    • (Ie9d02, b/172562222)
  • TestAnimationClock의 기반을 MonotonicFrameClock으로 설정하도록 허용하는 옵션을 일시적으로 추가했습니다. (I1403b, b/173402197)

버그 수정

  • Modifier.drawLayer의 이름을 Modifier.graphicsLayer로 바꿨습니다. API 위원회 의견에 따라 관련 클래스도 GraphicsLayer로 업데이트했습니다. (I0bd29, b/173834241)
  • drawLayer의 편의성을 위해 Modifier.scale/rotate API를 추가했습니다.
    • Modifier.drawOpacity를 Modifier.alpha로 이름을 바꿨습니다.
    • Modifier.drawShadow를 Modifier.shadow로 이름을 바꿨습니다. (I264ca, b/173208140)
  • PointerInputData의 가동시간 및 위치 필드가 null을 허용하지 않게 했습니다. (Id468a)
  • offsetPx 수정자의 이름을 offset으로 바꿨습니다. offsetPx 수정자는 이제 State 대신 람다 매개변수를 사용합니다. (Ic3021, b/173594846)
  • 코루틴에서 애니메이션을 실행하기 위한 새로운 API를 도입했습니다. (Ied662)
  • 접미사로 Ambient라는 이름을 사용하는 Ambient가 지원 중단되고 다른 Ambient 및 Compose API 가이드라인에 따라 Ambient를 접두사로 사용하는 새로운 속성으로 대체됩니다. (I33440)
  • 테스트의 시간 제어(TestAnimationClock 및 사용)가 이제 실험용입니다. (I6ef86, b/171378521)
  • 이전 ui-test 모듈 및 해당 스텁을 삭제했습니다. (I3a7cb)
  • RestorableStateHolder.withRestorableState 함수의 이름을 RestorableStateProvider로 변경했습니다. (I66640)
  • 정렬 인터페이스가 업데이트되어 정상 작동합니다. (I46a07, b/172311734)

버전 1.0.0-alpha07

2020년 11월 11일

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

버그 수정

  • 기본 AmbientTextStyle, ProvideTextStyle, AmbientContentColor가 지원 중단되었습니다. 대신 머티리얼 라이브러리에서 사용할 수 있는 새 버전을 사용하세요. 비머티리얼 애플리케이션의 경우 자체 구성요소에 사용할 수 있는 고유 디자인 시스템별 테마 설정 앰비언트를 만들어야 합니다. (I74acc, b/172067770 참조)
  • foundation.Text가 지원 중단되고 material.Text로 대체되었습니다. 테마의 값을 사용하지 않는 비독단적인 기본 텍스트 API는 androidx.compose.foundation.BasicText를 참고하세요. (If64cb)
  • MeasureResult를 MeasureScope 외부로 이동했습니다. (Ibf96d, b/171184002)
  • 여러 레이아웃 관련 기호를 androidx.compose.ui에서 androidx.compose.layout.ui로 이동했습니다. (I0fa98, b/170475424)

버전 1.0.0-alpha06

2020년 10월 28일

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

API 변경사항

  • ComposeTestRule에서 전환을 사용 설정하여 ComposeTestRule에서 깜박이는 커서를 사용 설정하는 옵션을 삭제했습니다. (If0de3)

버전 1.0.0-alpha05

2020년 10월 14일

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

API 변경사항

  • 새 Animation 인터페이스 및 서브클래스: 이 클래스는 애니메이션의 시작 및 종료 조건을 저장하므로 재생 시간을 통해서만 값과 속도를 쿼리할 수 있습니다. (Ie95bd, b/163329867)

버그 수정

  • OnPositionedModifier 이름이 OnGloballyPositionedModifier로 바뀌고 onPositioned()의 이름이 onGloballyPositioned()로 바뀝니다. (I587e8, b/169083903)
  • contentColor() 및 currentTextStyle() API를 지원 중단하고 각각 AmbientContentColor 및 AmbientTextStyle 앰비언트로 대체합니다. 다른 앰비언트와 마찬가지로 앰비언트 속성에서 .current를 사용하여 현재 값에 액세스할 수 있습니다. 이러한 변경은 일관성을 유지하고 여러 가지 방법을 사용하여 동일한 결과를 얻는 것을 피하기 위해 이루어졌습니다. 또한, 목적을 더 잘 나타내도록 앰비언트 속성 일부의 이름을 다음과 같이 바꿉니다.

    • ContentColorAmbient -> AmbientContentColor
    • TextStyleAmbient -> AmbientTextStyle
    • IndicationAmbient -> AmbientIndication
    • EmphasisAmbient -> AmbientEmphasisLevels
    • RippleThemeAmbient -> AmbientRippleTheme (I37b6d)

버전 1.0.0-alpha04

2020년 10월 1일

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

API 변경사항

  • rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled, textInputServiceFactory에 @VisibleForTesting 주석을 달아 내부 API로 만들고 kdoc를 숨깁니다. (I554eb, b/168308412)

버그 수정

  • 여러 Graphics API를 업데이트했습니다.
    • DrawScope 및 DrawTransform에서 별도의 x/y 좌표 float 매개변수 대신 피벗 좌표를 나타내는 단일 오프셋 매개변수를 사용하도록 배율 및 회전 변환 API를 업데이트했습니다.
    • Rect.expandToInclude 및 Rect.join 메서드를 삭제했습니다.
    • elliptical 외에도 oval을 나타내도록 Radius 문서를 업데이트했습니다.
    • 인라인 Radius 클래스의 공개 생성자를 직접 호출하는 것이 아니라 함수 생성자를 통해 Radius 객체를 인스턴스화해야 한다고 나타내는 문서를 추가했습니다.
    • topRight, bottomRight, bottomCenter 등을 쿼리하도록 RoundRect API를 삭제했습니다.
    • Rect.shift를 지원 중단하고 Rect.translate로 대체했습니다.
    • RoundRect.grow 및 Rect.shrink API를 삭제했습니다.
    • RoundRect.outerRect의 이름을 Rect.boundingRect로 변경했습니다.
    • RoundRect.middleRect/tallMiddleRect/wideMiddleRect 및 Rect.isStadium 메서드를 삭제했습니다.
    • RoundRect.longestSide의 이름을 RoundRect.maxDimension으로 변경했습니다.
    • RoundRect.shortestSide의 이름을 RoundRect.minDimension으로 변경했습니다.
    • RoundRect.center를 함수가 아닌 속성으로 변경했습니다.
    • x/y 반경 값에 개별 매개변수 대신 Radius 속성을 사용하도록 RoundRect 생성자를 업데이트했습니다.
    • 0,0에 원점이 있는 직사각형이라고 가정한 Size API를 삭제했습니다.
    • Radius에 소멸 API를 추가했습니다.
    • 대신 다양한 RoundRect 확장 함수를 속성이 되도록 이전했습니다.
    • (I8f5c7, b/168762961)
  • foundation.Box가 지원 중단되었습니다. 대신 foundation.layout.Box를 사용하세요. (Ie5950, b/167680279)
  • 스택의 이름이 Box로 변경되었습니다. 이전의 기존 Box는 지원 중단되고 compose.foundation.layout의 새 Box로 대체됩니다. 새 Box의 동작은 하위 요소가 여러 개일 때 하위 요소를 겹겹이 쌓는 것입니다. Column과 유사하게 동작했던 이전 Box와 다른 점입니다. (I94893, b/167680279)
  • Box 장식 매개변수가 지원 중단되었습니다. Box에 장식/패딩을 적용하려면 대신 수정자를 사용합니다(Modifier.background, Modifier.border, Modifier.padding). (Ibae92, b/167680279)
  • 레이아웃 범위 콘텐츠의 정적 가져오기(예: RowScope의 alignWithSiblings)를 방지했습니다. 대신 명시적인 대체 범위를 사용해야 합니다. with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) } (I216be, b/166760797)

버전 1.0.0-alpha03

2020년 9월 16일

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

버그 수정

  • 레이아웃 API에서 중력 사용에 관한 이름이 align 또는 alignment로 일관성 있게 바뀌었습니다. (I2421a, b/164077038)

버전 1.0.0-alpha02

2020년 9월 2일

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

API 변경사항

  • 클록에서 프레임을 기다리는 것이 있는지 확인하기 위해 ManualFrameClock.hasAwaiters가 추가되었습니다. ManualFrameClock이 필요한 테스트를 실행할 때 runBlockingrunWithManualClock으로 대체됩니다. TestUiDispatcher.Main으로 테스트에서 기본 UI 디스패처에 쉽게 액세스할 수 있습니다.

    예:

    @Test
    fun myTest() = runWithManualClock { clock ->
        // set some compose content
        withContext(TestUiDispatcher.Main) {
            clock.advanceClock(1000L)
        }
        if (clock.hasAwaiters) {
            println("The clock has awaiters")
        } else {
            println("The clock has no more awaiters")
        }
    }
    

    (I0a85b, b/161247083)

버그 수정

  • onPreCommit이 지원 중단되었습니다. 이제 onCommit에 onPreCommit의 동작이 있습니다.

    이제 onCommit과 onActive가 다음 choreographer 프레임의 시작 부분이 아닌 구성 변경사항이 커밋된 동일한 choreographer 프레임에서 실행됩니다. (I70403)

버전 1.0.0-alpha01

2020년 8월 26일

androidx.compose.animation:animation:1.0.0-alpha01androidx.compose.animation:animation-core:1.0.0-alpha01이 출시되었습니다. 버전 1.0.0-alpha01에 포함된 커밋을 확인하세요.

버전 0.1.0-dev

버전 0.1.0-dev17

2020년 8월 19일

androidx.compose.animation:animation:0.1.0-dev17androidx.compose.animation:animation-core:0.1.0-dev17이 출시되었습니다. 버전 0.1.0-dev17에 포함된 커밋을 확인하세요.

새로운 기능

API 변경사항

  • Offset이 인라인 클래스가 되었습니다. (Iaec70)
  • IntOffset은 이제 인라인 클래스입니다. (Iac0bf)
  • IntSize는 이제 인라인 클래스입니다. (I2bf42)
  • AnimatedVisibilty 컴포저블은 하위 요소 콘텐츠의 표시 및 사라짐을 애니메이션으로 보여줍니다.

    EnterTransition 및 ExitTransition이 도입되어 AnimatedVisibilty 컴포저블과 함께 작동하여 세 가지 유형의 표시 및 사라짐 애니메이션(콘텐츠 페이드, 슬라이드 및 확장/축소)을 제공할 수 있습니다. 다양한 유형의 애니메이션을 조합하여 더욱 맞춤화된 디자인과 분위기를 구현할 수 있습니다. (Idda11)

  • PxBounds가 지원 중단되고 Rect로 대체되었습니다. PxBounds의 모든 사용이 Rect로 업데이트되었으며 이전을 지원하기 위해 적절한 지원 중단/주석으로 대체가 추가되었습니다. (I37038, b/162627058)

버그 수정

  • PlacementScope.placeAbsolute()의 이름이 PlacementScope.place()로 변경되었으며 이전 PlacementScope.place()의 이름은 PlacementScope.placeRelative()로 변경되었습니다. 따라서 PlacementScope.place() 메서드는 더 이상 RTL 컨텍스트의 위치를 자동으로 미러링하지 않습니다. 이를 원한다면 PlacementScope.placeRelative()를 대신 사용해야 합니다. (I873ac, b/162916675)
  • state { ... } 컴포저블이 이제 지원 중단되고 명확성을 위해 명시적 remember { mutableStateOf(...) } 호출로 대체됩니다. 이렇게 하면 전체 API 노출 영역 및 상태 관리를 위한 개념 수가 감소하고 클래스 속성 위임을 위한 by mutableStateOf() 패턴과 일치합니다. (Ia5727)

버전 0.1.0-dev16

2020년 8월 5일

androidx.compose.animation:animation:0.1.0-dev16androidx.compose.animation:animation-core:0.1.0-dev16이 출시되었습니다. 버전 0.1.0-dev16에 포함된 커밋을 확인하세요.

API 변경사항

  • 이제 Foo.VectorConverter를 통해 내장 단위를 변환하는 내장 벡터 변환기에 액세스할 수 있습니다. 예: Dp.VectorConverter, Color.VectorConverter, Float.VectorConverter 등 (I3e273)
  • 크기 변경 애니메이션이 완료되면 애니메이션의 시작/종료 크기와 함께 알림이 리스너에 전송되도록 Modifier.animateContentSize()에서 종료 리스너를 지원합니다. (I277b2)
  • 새로운 animateContentSize 수정자는 하위 요소 수정자의 레이아웃 크기 변경을 애니메이션으로 보여줍니다. (Ieffdc)
  • MonotonicFrameClock을 AnimationClockObservable로 사용할 수 있게 하는 MonotonicFrameAnimationClock을 추가하여 새로운 코루틴 기반 클록과 여전히 이전 콜백 기반 클록을 사용하는 API 간의 간극을 메웠습니다.

    ManualAnimationClock에 상응하는 MonotonicFrameClock은 이제 ManualFrameClock입니다. (I111c7, b/161247083)

버그 수정

  • 오른쪽에서 왼쪽 지원을 위한 API가 업데이트되었습니다. LayoutDirectionAmbient가 추가되어 레이아웃 방향을 읽고 변경하는 데 사용할 수 있습니다. Modifier.rtl 및 Modifier.ltr이 삭제되었습니다. (I080b3)
  • transitionDefinition에 T 유형을 명시적으로 지정해야 합니다. (I1aded)
  • foundation.shape.corner 패키지가 foundation.share로 평면화되었습니다. (I46491, b/161887429)
  • Modifier.plus가 지원 중단되었습니다. 대신 Modifier.then을 사용해야 합니다. 'then'에는 더 강력한 순서 지정 신호가 있지만 체인을 끊으며 읽기가 더 어려운 Modifier.padding().background() + anotherModifier 입력도 금지합니다. (Iedd58, b/161529964)
  • Modifier.drawBackground 이름을 Modifier.background로 바꿨습니다. (I13677)

버전 0.1.0-dev15

2020년 7월 22일

androidx.compose.animation:animation:0.1.0-dev15androidx.compose.animation:animation-core:0.1.0-dev15가 출시되었습니다. 0.1.0-dev15에 포함된 커밋을 확인하세요.

종속 항목 업데이트

  • Compose의 0.1.0-dev15 버전을 사용하려면 위의 종속 항목 선언에 표시된 새로운 코드 스니펫에 따라 종속 항목을 업데이트해야 합니다.

API 변경사항

  • TransitionState를 하위 요소에 전달하는 대신 TransitionState를 반환하도록 Transition API가 변경되었습니다. 이렇게 하면, API와 animate() API의 일관성이 더 높아집니다. (I24e38)
  • Crossfade를 위한 수정자 매개변수가 추가되었습니다. (I87cfe, b/129706180)
  • 정적 애니메이션 사양 개념을 명확히 나타내려면 최상위 API에서 AnimationBuilder 대신 AnimationSpec을 사용하세요.
    • 트윈, 스프링 같은 AnimationSpec을 만드는 데 필요한 람다 요구사항이 필요 없게 되어 전환 DSL이 개선됩니다. 대신 생성자 매개변수를 직접 사용합니다.
    • 빌더에 의존하는 대신 생성자를 여는 AnimationSpec의 사용 편의성이 전반적으로 향상됩니다.
    • KeyFrames와 Tween의 재생 시간과 지연이 Int로 변경됩니다. 이를 통해 불필요한 유형 변환 및 메서드 오버로드가 사라집니다(Long과 Int를 모두 지원하는 경우). (Ica0b4)
  • IntPx 사용을 Int로 대체했습니다. IntPxPosition은 IntOffset으로 대체했습니다. IntPxSize를 IntSize로 대체했습니다. (Ib7b44)
  • 크기 정보를 표시하는 데 사용되는 클래스의 수를 통합하려면 PxSize 대신 Size 클래스 사용을 표준화합니다. 이렇게 하면 인라인 클래스의 이점을 제공하여 부동 소수점으로 표시된 너비와 높이를 나타내는 long-pack 2 부동 소수점 값을 활용할 수 있습니다. (Ic0191)
  • 위치 정보를 나타내는 데 사용되는 클래스 수를 통합하려면 PxPosition 대신 Offset 클래스 사용을 표준화합니다. 이렇게 하면, 인라인 클래스의 이점을 제공하여 부동 소수점으로 표시된 x 및 y 오프셋을 나타내는 long-pack 2 부동 소수점 값을 활용할 수 있습니다. (I3ad98)
  • 대규모 리팩터링 작업의 일환으로 여러 컴포즈 클래스에서 Px 클래스가 더 이상 사용되지 않습니다. 픽셀 매개변수에는 Dp 유형과 기본 유형만 사용됩니다. (I086f4)
  • Dp, Px, Size, Position, Bounds, PxPosition, PxSize, PxBounds, IntPx, IntPxSize, IntPxPosition, IntPxBounds, AnimationVector를 위한 animate() 지원이 추가되었습니다. (Ib7518)
  • 이제 Crossfade가 애니메이션을 구성할 수 있도록 선택적 AnimationBuilder 매개변수를 허용합니다. (I6d6e0)
  • API의 모든 null을 허용하는 Color 사용을 null을 허용하지 않는 것으로 대체했습니다. null 대신 Color.Unset을 사용하세요. (Iabaa7)
  • ValueHolder 클래스가 삭제되었습니다. 애니메이션 값 필드를 추상적으로 만들어 서브클래스에 값 업데이트가 표시될 수 있도록 AnimatedValue 및 AnimatedFloat 클래스를 재구성했습니다.
    • AnimatedValue, AnimatedFloat 등의 모델 클래스가 추가되었습니다.
    • 값 사이에 애니메이션을 적용하기 위한 새로운 경량 Composable API 세트를 추가했습니다. (I79530 참조)
  • ambients API에 브레이킹 체인지가 있습니다. 자세한 내용은 로그와 Ambient<T> 문서를 참고하세요. (I4c7ee, b/143769776)
  • 새로운 반복 모드: 리버스. 이 모드는 애니메이션이 RepeatableSpec 또는 VectorizedRepeatableSpec에서 반복될 경우 이전 반복을 역방향으로 진행시킵니다. (Ibe0f5)
  • ManualAnimationClock에 API 추가: hasObservers: Boolean 및 생성자 매개변수 dispatchOnSubscribe: Boolean (Iaa134)
  • AnimatedFloat에서 min/max 경계를 가져오기 위한 API를 추가했습니다. (Icd9cc)

버그 수정

  • runOnIdleCompose 이름을 runOnIdle로 바꿨습니다. (I83607)
  • 여러 테스트 API의 이름이 더 직관적으로 바뀌었습니다. 모든 findXYZ API의 이름이 onNodeXYZ로 바뀌었습니다. 모든 doXYZ API의 이름이 performXYZ로 바뀌었습니다. (I7f164)
  • 낮은 수준의 스테이트리스(Stateless) 애니메이션 API가 도입되었습니다. (I63bf7)
  • Recompose 컴포저블은 더 이상 유용한 추상화가 아닙니다. 대부분의 재구성은 MutableState 할당의 결과로 발생해야 합니다. 그 외의 경우에는 invalidate 함수를 사용하여 현재 범위의 재구성을 트리거하는 것이 좋습니다. (Ifc992)
  • 대규모 리팩터링 작업의 일환으로 여러 컴포즈 클래스에서 Px 클래스가 더 이상 사용되지 않습니다. 픽셀 매개변수에는 Dp 유형과 기본 유형만 사용됩니다. Px 클래스 전체를 삭제했습니다. (I3ff33)
  • 대규모 리팩터링 작업의 일환으로 여러 컴포즈 클래스에서 Px 클래스가 더 이상 사용되지 않습니다. 픽셀 매개변수에는 Dp 유형과 기본 유형만 사용됩니다. (Id3434)
  • 이제 Crossfade가 null을 초기 값으로 사용할 수 있습니다. (Iad6a4, b/155947711)
  • 대규모 리팩터링 작업의 일환으로 여러 컴포즈 클래스에서 Px 클래스가 더 이상 사용되지 않습니다. 픽셀 매개변수에는 Dp 유형과 기본 유형만 사용됩니다. (I19d02)
  • CanvasScope 구현이 통합되어 이제 DrawScope와 ContentDrawScope만 있습니다. CanvasScope 이름을 DrawScope로 바꿨습니다. DrawScope는 Density 인터페이스를 구현하고 LayoutDirection을 제공하도록 업데이트되었으며 ContentDrawScope의 DrawScope 서브클래스는 삭제되었습니다. RTL 속성을 수동으로 제공하지 않아도 이미 DrawScope에서 제공하므로 Painter와 PainterModifier가 더 이상 RTL 속성을 자체적으로 유지하지 않도록 업데이트되었습니다. (I1798e)
  • 캔버스를 노출하여 CanvasScope를 대신 노출하는 상위 수준 Compose API를 업데이트했습니다. 따라서 소비자가 자체 Paint 객체를 유지하지 않아도 됩니다. 캔버스에 계속 액세스해야 하는 소비자의 경우 콜백을 제공하여 기본 캔버스에서 그리기 명령어를 실행하는 drawCanvas 확장 메서드를 사용하면 됩니다. (I80afd)
  • Row와 Column에 각각 verticalGravity 및 horizontalGravity 매개변수를 추가했습니다. (I7dc5a)
  • ui-text 모듈 이름이 ui-text-core로 바뀌었습니다. (I57dec)
  • 다음과 같이 DrawModifier API가 개선됩니다.
    • 수신기 범위를 draw() ContentDrawScope로 설정했습니다.
    • draw()의 모든 매개변수를 삭제했습니다.
    • DrawScope는 이전 CanvasScope와 동일한 인터페이스를 사용합니다.
    • ContentDrawScope에 drawContent() 메서드가 있습니다. (Ibaced, b/152919067)
  • 이제 runOnIdleComposerunOnUiThread는 ComposeTestRule의 메서드가 아닌 전역 함수입니다. (Icbe8f 참조)
  • [변경 가능] 주 속성 위임 연산자가 Kotlin 1.4 속성 위임 최적화를 지원하기 위해 확장 프로그램으로 이동했습니다. by state { ... } 또는 by mutableStateOf(...)를 계속 사용하려면 호출자가 가져오기를 추가해야 합니다. (I5312c)
  • ColoredRect가 지원 중단되었습니다. 대신 Box(Modifier.preferredSize(width, height).drawBackground(color))를 사용하세요. (I499fa, b/152753731)
  • 수정자와 연산자를 팩토리 확장 함수로 대체했습니다.(I225e4)
  • Center 컴포저블을 지원 중단했습니다. LayoutSize.Fill + LayoutAlign.Center 수정자로 대체되거나 적절한 수정자가 적용된 Box 또는 Stack 컴포저블 중 하나로 대체됩니다. (Idf5e0 참조)
  • LayoutFlexible을 LayoutWeight로 이름을 변경했습니다. 채우기 위해 긴 매개변수의 이름을 변경했습니다. (If4738)
  • 불투명도 구성 가능한 함수를 drawOpacity 수정자로 대체했습니다. (I5fb62)
  • AndroidComposeTestRule을 사용한 테스트가 이제 수동 일시중지, 계속, 진행을 허용하는 애니메이션 클록을 구성 루트에서 제공합니다. (Id54c5)
  • LayoutPadding 수정자의 오른쪽에서 왼쪽 방향을 지원합니다. (I9e8da)
  • Density와 DensityScope를 하나의 인터페이스로 병합했습니다. 이제 ambientDensity() 대신 DensityAmbient.current를 사용할 수 있으며 withDensity(density) 대신 with(density)를 사용하면 됩니다. (I11cb1)
  • 다음과 같은 다양한 인라인 클래스 유형에 복사 메서드를 추가했습니다.
    • 오프셋
    • 크기
    • 반경
    • 모션
    • TransformOrigin
    • Size.copy 컴패니언 객체 메서드가 지원 중단되고 인스턴스 복사 메서드로 대체되었습니다. (Ife290, b/159905651)
  • androidx.compose.ViewComposer가 androidx.ui.node.UiComposer로 이동했습니다. androidx.compose.Emittable은 삭제되었습니다. 이 항목은 ComponentNode와 중복되었습니다. androidx.compose.ViewAdapters는 삭제되었습니다. 더 이상 지원되지 않는 사용 사례입니다. Compose.composeInto가 지원 중단되었습니다. 대신 setContent 또는 setViewContent를 사용하세요. Compose.disposeComposition이 지원 중단되었습니다. 대신 setContent에서 반환되는 Composition에서 dispose 메서드를 사용하세요. androidx.compose.Compose.subcomposeInto를 androidx.ui.core.subcomposeInto로 이동했습니다. ComponentNode#emitInsertAt의 이름이 ComponentNode#insertAt로 변경되었습니다. ComponentNode#emitRemoveAt의 이름이 ComponentNode#removeAt로 변경되었습니다. ComponentNode#emitMode의 이름이 ComponentNode#move로 변경되었습니다. (Idef00)