Google은 흑인 공동체를 위한 인종 간 평등을 진전시키기 위해 노력하고 있습니다. Google에서 어떤 노력을 하고 있는지 확인하세요.

Compose UI

레이아웃, 그리기, 입력 등 기기와 상호작용할 때 필요한 Compose UI의 기본적인 구성요소입니다.
최근 업데이트 현재 안정화 버전 다음 버전 후보 베타 버전 알파 버전
2020년 11월 11일 - - - 1.0.0-alpha07

구조

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.runtimeCompose의 프로그래밍 모델과 상태 관리용 기본 요소 및 타겟팅용 Compose 컴파일러 플러그인의 핵심 런타임입니다.
compose.ui레이아웃, 그리기, 입력 등 기기와 상호작용할 때 필요한 Compose UI의 기본적인 구성요소입니다.
uiJetpack Compose 라이브러리와 호환됩니다.

종속 항목 선언

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

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

dependencies {
    implementation "androidx.compose.ui:ui:1.0.0-alpha03"
}

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerVersion "1.4.0"
        kotlinCompilerExtensionVersion "1.0.0-alpha03"
    }
}

tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach {
    kotlinOptions {
        jvmTarget = "1.8"
        freeCompilerArgs += ["-Xallow-jvm-ir-dependencies", "-Xskip-prerelease-check"]
    }
}

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

의견

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

새 문제 만들기

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

버전 1.0.0

Compose UI 버전 1.0.0-alpha07

2020년 11월 11일

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

새로운 기능

API 변경사항

  • 비균일 조정 사용 사례를 지원하기 위해 가로축 및 세로축의 배율을 개별적으로 나타내는 ScaleFactor 인라인 클래스를 도입했습니다.
    • ContentScale에 computeScaleFactor 메서드를 추가했습니다.
    • 대상을 완전히 차지하도록 src 경계를 확장하기 위해 비균일 조정을 실행하는 ContentScale.FillBounds를 추가했습니다.
    • 크기 매개변수로 ScaleFactor 매개변수를 계산하는 연산자 메서드를 추가했습니다.
    • (Ic96a6, b/172291582)
  • 정렬을 만들기 위한 BiasAlignment 및 BiasAbsoluteAlignment 팩토리를 추가했습니다. (Iac836, b/169406772)
  • 개발자가 포커스를 강제로 삭제할 수 있습니다. (I90372)
  • Compose의 뷰에 고도가 그려지지 않는 버그를 수정했습니다. (If7782)
  • 이름 지정 규칙을 Modifier.drawBehind와 일치시키기 위해 ContentDrawScope에서 onDrawBehind API를 만들었습니다. (I4fc3a, b/171955269)
  • Layer API에서 3D 변환 rotationX/rotationY를 보완하기 위해 카메라 거리 지원을 추가했습니다. (I40213, b/171492100)
  • 콜백 없는 SelectionContainer를 추가했습니다. (Ibfadb)
  • ExperimentalSubcomposeLayoutApi 주석을 삭제했습니다. 이제 @OptIn을 추가하지 않고도 SubcomposeLayout을 사용할 수 있습니다. (I708ad)
  • FirstBaseline 및 LastBaseline을 androidx.compose.ui.layout 패키지로 이동했습니다. (Ied2e7)
  • drawShadow() 수정자에서 혼란을 야기했던 불투명도를 삭제했습니다. (I82c62, b/171624638)
  • MeasureResult를 MeasureScope 외부로 이동했습니다. (Ibf96d, b/171184002)
  • 여러 레이아웃 관련 기호를 androidx.compose.ui에서 androidx.compose.layout.ui로 이동했습니다. (I0fa98, b/170475424)
  • 지원 중단된 FocusState2를 삭제했습니다. (I686cb, b/168686446)
  • 이제 ZIndexModifier가 내부용으로 변경되었습니다. (I1808b, b/171493718)
  • 불필요한 복싱을 피하기 위해 null이 아닌 크기를 반환하도록 크기 매개변수의 lerp 메서드 반환 유형을 업데이트했습니다. (Ib0044)
  • kotlinx-coroutines-test의 runBlockingTest를 사용하여 테스트 코드용으로 TestMonotonicFrameClock을 추가했습니다. 이는 대기 중인 컴포지션 프레임 이벤트에 대해 Compose의 MonotonicFrameClock에 의존합니다. (I4402f)
  • GestureScope.localToGlobal을 삭제했습니다. (I15299, b/171462785)
  • onAllNodesWithSubstring 파인더를 추가했습니다. (I81dd7, b/171462889)
  • androidx.ui.test 모듈이 지원 중단되었습니다. androidx.compose.ui.test 및 androidx.compose.ui.test.junit4로 이전하세요. (I452e8)

버그 수정

  • captureToBitmap을 captureToImage로 이동했습니다. (I86385)
  • foundation.Text가 지원 중단되고 material.Text로 대체되었습니다. 테마의 값을 사용하지 않는 비독단적인 기본 텍스트 API는 androidx.compose.foundation.BasicText를 참고하세요. (If64cb)
  • keyboardOptions를 허용하도록 TextFields를 업데이트했습니다. (Ida7f3)
  • KeyboardOptions의 이름을 ImeOptions로 바꿨습니다. (I82f36)
  • KeyboardType 및 ImeAction을 KeyboardOptions로 이동했습니다. (I910ce)
  • provideDefault를 앰비언트를 제공하기 위한 대안으로 추가했습니다. 이미 제공된 앰비언트 값이 없을 때만 설정될 앰비언트 값을 지정하는 데 사용할 수 있습니다. (Id6635, b/171024925)
  • BaseTextField가 지원 중단되었습니다. BasicTextField를 대신 사용하세요. (I896eb)
  • ui-test-junit4 모듈을 도입했습니다. (Ib91f8)
  • relativePaddingFrom 이름을 paddingFrom으로 바꿨습니다. 레이아웃 경계에서 텍스트 기준선까지의 거리를 쉽게 지정하도록 paddingFromBaseline 수정자를 추가했습니다. (I0440a, b/170633813)
  • SideEffect 및 DisposableEffect API와 일관성을 유지하기 위해 LaunchedTask의 이름을 LaunchedEffect로 바꿨습니다. 제목 매개변수가 없는 LaunchedEffect는 권장사항을 장려하기 위해 허용되지 않습니다. (Ifd3d4)
  • 구성 업데이트 시 재구성되는 리소스 컴포저블을 도입했습니다. (I6387c, b/167352819)
  • 이제 Recomposer에서 구성할 때 CoroutineContext가 필요합니다. (Ic4610)
  • 여러 Modifier.zIndex()가 적용된 경우 zIndex 값을 합산합니다. 이전에는 첫 번째 값이 더 컸습니다. (Ic514c, b/170623936)
  • 공개 API에 영향을 주지 않아야 하는 내부 SlotTable 구현을 변경했습니다. (If9828)
  • 키보드 자동 수정 IME 옵션을 추가했습니다. (I57b8d)
  • androidx.ui.test를 androidx.compose.ui.test로 이동했습니다. (I9ffdb)
  • 공개 API에서 KeyboardOptions.toImeOptions를 삭제했습니다. (Ic2e45)

외부 기여

  • 내부 아티팩트 androidx.compose.ui:ui-text-android의 게시가 중지되었습니다. (Ib93fa)

버전 1.0.0-alpha06

2020년 10월 28일

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

API 변경사항

  • 이제 Recomposer가 CompositionReference이자 유효한 컴포지션 상위 요소입니다. 이제 명시적 Recomposer가 필요한 위치가 줄었습니다. (I4036f)
  • 컴포저블 API에서 내부적으로 'remember'를 활용하여 컴포지션에서 데이터 유지를 더 잘 나타내도록 VectorPainter를 지원 중단하고 rememberVectorPainter로 대체했습니다. (Ifda43)
  • 그리기 명령어를 재정렬하는 기능을 구현하기 위해 DrawScope 대신 ContentDrawScope를 수신자 범위로 노출하도록 Modifier.drawWithCache API를 업데이트했습니다. 이는 상응하는 혼합 모드 알고리즘이 올바르게 적용되도록 콘텐츠 픽셀을 먼저 렌더링해야 하는 블렌딩/색조 조정 사용 사례에 유용합니다. (Ie7ec8)
  • SimpleContainer를 PopupTestUtils.kt로 이동했습니다. (I78c57)
  • ConsumedData가 더 이상 데이터 클래스가 아닙니다. 자세한 내용은 https://android-review.googlesource.com/c/platform/frameworks/support/+/1455219를 참고하세요. (I1737f)
  • Rtl 핸들 위치를 수정했습니다. (I6e1e0)
  • DrawScope 및 ContentDrawScope를 추상 클래스가 아닌 인터페이스가 되도록 리팩터링했습니다.
    • DrawScope의 CanvasDrawScope 구현을 생성했습니다.
    • CanvasScope를 대신 사용하도록 DrawScope의 구현을 리팩터링했습니다.
    • DrawScope의 종속 항목을 래핑하도록 DrawContext를 생성했습니다.
    • DrawScope에서 지원 중단된 메서드를 삭제했습니다. (I56f5e)
  • 브레이킹 체인지: 포인터 이벤트에서 변경할 수 있는 유일한 값이 소비 데이터라는 점을 고려하여 PointerInputFilter.onPointerEvent(...)에서 반환 값을 삭제했습니다. PointerInputFilter.onPointerEvent(...)에서 데이터를 반환하는 대신 이제 전달된 PointerEvents의 소비 데이터를 변경할 수 있습니다. (I6acd0)
  • MeasureScope와 IntrinsicMeasureScope가 인터페이스로 만들어졌습니다. (I1a087, b/170461665)
  • AlignmentLine의 병합 함수가 숨겨졌습니다. (I9da1a, b/170612900, b/170611568)
  • 구성된 수정자에 검사기 정보를 지정하는 기능을 추가했습니다. (Idee08, b/163494569)
  • 선택 메뉴에 SelectAll 옵션을 추가했습니다. (Ief02b)
  • 문서와 일치하는 중앙의 기본 피벗 매개변수를 가져오기 위해 DrawTransform.rotate를 업데이트했습니다.
    • 다른 변환 메서드와 일치하는 피벗 지점의 오프셋을 사용하기 위해 DrawScope.rotateRad를 업데이트했습니다.
    • 피벗의 x 및 y 좌표에 부동 소수점 수를 사용한 DrawScope.rotateRad 오버로드가 지원 중단되었습니다.
    • (Iffcbb, b/170434992)

버그 수정

  • MissingGetterMatchingBuilder의 API 린트 검사가 androidx용으로 사용 설정되었습니다. (I4bbea, b/138602561)
  • 테스트를 추가했습니다. (I6b8ae)
  • ComposeTestRule에서 전환을 사용 설정하여 ComposeTestRule에서 깜박이는 커서를 사용 설정하는 옵션을 삭제했습니다. (If0de3)
  • KeyboardCapitalization IME 옵션을 추가했습니다. (I8ac38)
  • CoreTextField에 한 줄 키보드 옵션을 추가했습니다. (I72e6d)
  • SimpleContainer를 PopupTestUtils.kt로 이동했습니다. (I65c3e)
  • Compose 전체에서 사용되는 방식을 더 잘 표현하도록 Radius API의 이름을 CornerRadius로 바꿨습니다. 음의 모서리 반지름이 0으로 고정되어 있음을 나타내도록 문서를 업데이트했습니다. (I130c7, b/168762961)
  • ACTION_DOWN을 제외한 모든 작업의 onTouchEvent에 false를 반환하는 하위 Android 뷰로 MotionEvent를 계속 전송하여 Android 상호 운용성을 개선했습니다. (I94c5a, b/170320973)
  • Box가 인라인 함수로 생성되었습니다. (Ibce0c, b/155056091)

외부 기여

  • AnnotatedString.capitalizeAnnotatedString.decapitalize에 다른 언어를 지원합니다. (I4aa7f)

버전 1.0.0-alpha05

2020년 10월 14일

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

API 변경사항

  • 검사기 정보를 지정하기 위한 DSL을 추가합니다. (Ic9a22)
  • LongPress를 Text로 이동합니다. (Iff2bc)
  • 입력 수정자를 정지하는 실험용 Modifier.pointerInput을 추가했습니다. (Ia77d2)
  • 복사/붙여넣기/잘라내기 접근성 작업을 추가했습니다. (I6db4f)
  • AndroidOwner용 공개 생성자가 삭제되었습니다. (Iacaef)
  • 이제 팝업 및 대화상자는 상위 Window에서 FLAG_SECURE를 상속합니다. 또한, 이를 명시적으로 구성하는 옵션이 추가되었습니다. (I64966, b/143778148, b/143778149)
  • 이제 소비 데이터를 변경할 수 있습니다. 또한, 이제 소비를 사용하는 확장 함수를 호출하면 더 이상 새 PointerInputChange가 반환되지 않고 대신 제공된 PointerInputChange가 변경됩니다.

    이는 사용자 코드가 다른 포인터 데이터를 수정할 수 없도록 PointerEvent 데이터를 변경 가능하게 하는 2단계 프로세스의 첫 번째 단계입니다. 두 번째 단계는 PointerInputFilter.onPointerEvent(...)에서 List<PointerInputChange> 반환 유형을 삭제하는 것입니다. (Id067e)

  • Text 및 Demo에서 Selection 사용을 중지합니다. (Ie7e97)

  • onGloballyPositioned 인라인 함수를 만들었습니다. (I15830)

  • OnPositionedModifier 이름이 OnGloballyPositionedModifier로 바뀌고 onPositioned()의 이름이 onGloballyPositioned()로 바뀝니다. (I587e8, b/169083903)

  • hasPendingMeasureOrLayout 속성이 Owner에 추가되어 Owner에서 대기 중인 레이아웃 작업이 있는지 알려줍니다. (I3d9f8, b/169038599)

  • 프로그래매틱 방식으로 포커스를 지우는 API를 추가했습니다. (Ie1dc2, b/161487952)

  • PointerInputFilter.onPointerInput(...)을 삭제했습니다. 대신 PointerInputFilter.onPointerEvent(...)를 사용해야 합니다. (I6f04a)

  • Size 변경사항

    • Size.getFliped를 삭제했습니다.
    • Size.rem을 삭제했습니다.
    • Size.truncDiv를 삭제했습니다. (Ief44d, b/169790720)
  • 인라인 클래스의 센티널 값을 표준화하는 과정의 일환으로 다른 인라인 클래스와의 일관성을 위해 Color.Unset의 이름을 Color.Unspecified로 바꿉니다. (I97611, b/169797763)

  • TextOverflow.None이 도입되었습니다. 오버플로가 None이면 Text에서 더 이상 오버플로를 처리하지 않으며 LayoutNode에 실제 크기를 보고합니다. (I175c9, b/158830170)

  • API 일관성을 위해 AnnotatedString.Builder.addStringAnnotation 내의 scope 매개변수 이름이 tag로 바뀌었습니다. (I7c8cb)

버그 수정

  • 스크롤마다 하위 구성의 작업을 줄이는 방식으로 LazyColumn/Row의 스크롤 성능을 개선합니다. Composition 클래스에 새로운 hasInvalidations() 메서드가 추가되었습니다. Recomposer의 hasPendingChanges() 메서드 이름이 hasInvalidations()로 바뀌었습니다. (Ib2f32, b/168293643, b/167972292, b/165028371)
  • Size.Unspecified 매개변수를 Float.POSITIVE_INFINITY 대신 Float.NaN으로 업데이트했습니다. Size.Unspecified와 유한하지 않은 크기의 Size를 확인하기 위해 구현을 업데이트했습니다. (I95a7e)
  • 이제 맞춤 레이아웃에서 place() 호출 순서가 하위 요소의 그리기 순서를 정의합니다 (Ibc9f6).
  • 접근성을 위해 AnnotatedString에서 SpannableString으로의 변환을 지원합니다. (Ief907)
  • 가능한 경우 리플렉션 사용을 방지하기 위해 이전 플랫폼에 있는 Android 클래스의 스터브를 추가했습니다. (Ia1790)
  • 소프트웨어 키보드 표시로 인해 앱이 변환되는 경우, 포인터 입력 좌표가 잘못 정해지던 버그가 수정되었습니다. (Ic4cec, b/163077821)

버전 1.0.0-alpha04

2020년 10월 1일

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

API 변경사항

  • 더 이상 유효하지 않을 때 레이아웃과 그림 관찰 범위를 수집할 수 있도록 OwnerScope를 추가했습니다. (Ic4cf8)
  • 각각 콘텐츠 레이아웃이 다시 측정되고 크기가 변경될 때 콜백을 수신하도록 OnRemeasureedModifier 및 onSizeChanged()를 추가했습니다. (I657cf, b/154108792)
  • 긴 클릭 시맨틱 작업을 추가합니다. (I6281b, b/156468846)
  • FocusManager를 비공개로 설정했습니다. (I7872f)
  • DrawModifier에 선택적 속성을 추가하는 대신 전용 DrawCacheModifier 구현을 생성하도록 구현을 업데이트했습니다.

    다양한 메서드 관련 문서를 업데이트했습니다. (Ibd166)

  • TextRange를 인라인으로 만들어 객체 생성을 방지합니다. (Id034b)

  • 맞춤 레이아웃의 배치 블록에서 더 이상 PlacementScope#parentWidth 및 PlacementScope#parentLayoutDirection을 읽을 수 없습니다. (Icc1ae, b/168295623)

  • AccessibilityScrollState를 시맨틱 속성에 추가합니다. (Ifeda9)

  • 크기/상태 정보에 의존하는 종속 항목을 조건부로 다시 만드는 그리기 객체 생성을 지원하도록 Modifier.drawWithCache를 도입했습니다. (I376dc)

  • ParagraphConstraints를 삭제했습니다. 이제 너비가 단락에 직접 전달됩니다. (Ica712)

버그 수정

  • 여러 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)
  • 여러 Graphics API를 업데이트했습니다.
    • 변환이 콜백 내에서만 적용되고 콜백이 호출된 후에는 삭제된다고 나타내도록 DrawScope API를 범위가 지정된 변환 메서드로 업데이트했습니다.
    • 둥근 직사각형 대신 Path를 참조하도록 clipPath 문서를 업데이트했습니다.
    • clipPath의 오른쪽 매개변수 문서에서 간격을 수정했습니다.
    • DrawScope.drawCanvas의 이름을 drawIntoCanvas로 변경하고 크기 매개변수를 삭제했습니다.
    • 인셋 메서드의 dx/dy 매개변수 이름을 수평 및 수직으로 변경했습니다.
    • 4개 경계에 모두 동일한 인셋 값을 제공하는 인셋 오버로드를 추가했습니다.
    • 인셋이 모든 네 면에 적용된다고 나타내는 인셋 메서드에 관한 문서를 삭제했습니다.
    • Rect 클래스 문서를 업데이트했습니다.
    • kdoc 스타일과 일치하도록 Rect 매개변수의 주석을 업데이트했습니다.
    • Rect.join 및 Rect.expandToInclude를 삭제했습니다.
    • Rect.translate(offset)의 오버로드를 만들고 Rect.shift를 지원 중단했습니다.
    • (If086a, b/167737376)
  • rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled, textInputServiceFactory에 @VisibleForTesting 주석을 달아 내부 API로 만들고 kdoc를 숨깁니다. (I554eb, b/168308412)
  • 상단에서 SelectionContainer를 삭제하여 기본 선택을 사용 중지하고 예기치 않은 동작을 방지합니다. 대신 특별히 SelectionContainer를 사용하여 선택 가능해야 하는 콘텐츠를 래핑할 수 있습니다. (I8dfe0, b/158459594)

버전 1.0.0-alpha03

2020년 9월 16일

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

API 변경사항

  • 앞으로 스크롤하거나 뒤로 스크롤하는 의미론적 작업을 삭제합니다. AccessibilityRangeInfo에 단계가 추가되었습니다. (Ia47b0)
  • Owner에서 onInvalidate()가 삭제되었습니다. OwnedLayer에서 무효화를 처리합니다. (Ica72b, b/162061312)
  • Size API에서 Offset 매개변수를 사용하는 연산자 메서드가 삭제되었습니다. 이러한 연산의 결과는 불분명하며 이러한 작업의 결과 유형도 예상치 못한 유형입니다. 예: size - offset은 그 차이와 함께 오프셋 또는 크기 결과를 반환해야 하나요?

    Size 클래스의 지원 중단된 메서드도 삭제되었습니다. (Iec902, b/166514214)

버그 수정

  • 간혹 LazyColumn의 항목이 잘못 그려지고 이 항목이 일부 조건에서 비정상 종료를 일으키기도 하던 문제를 수정합니다. (Ibcf17, b/163066980, b/165921895)
  • DpConstraints 및 DpConstraints를 사용하는 API가 지원 중단되었습니다. (I90cdb, b/167389835)
  • createAndroidComposeRuleAndroidInputDispatcherandroidx.ui.test.android에서 androidx.ui.test로 이동했습니다. (Idef08, b/164060572)
  • 레이아웃 API에서 중력 사용에 관한 이름이 align 또는 alignment로 일관성 있게 바뀌었습니다. (I2421a, b/164077038)
  • 현재 전역 메서드가 지원 중단될 예정이므로 onNode 및 다른 전역 메서드가 ComposeTestRule에 추가되었습니다. (Ieae36)

버전 1.0.0-alpha02

2020년 9월 2일

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

API 변경사항

  • layoutnode 경계가 변경되면 소유자에게 알리는 콜백이 삭제됩니다. (If654e, b/166106882)
  • evenOdd 또는 NonZero 경로 채우기 규칙에 따라 도형 컷아웃을 지원하기 위해 벡터 그래픽 경로에 filltype 매개변수 지원이 추가되었습니다. (I43dd2)
  • 가동시간 및 속도가 이제 인라인 클래스입니다. (I48f4a)
  • 지속 시간이 이제 인라인 클래스입니다. (I565eb)
  • layoutnode 경계가 변경되면 소유자에게 알리는 콜백이 추가됩니다. (Ic40b3)
  • 오프셋과 반경이 있는 Rect 함수 생성자가 왼쪽, 상단, 오른쪽, 하단이 아닌 왼쪽, 오른쪽, 상단, 하단 순서로 Rect를 생성하는 문제가 수정되었습니다.

    Rect에서 지원 중단된 컴패니언 메서드가 삭제되고 함수 생성자로 대체되었습니다.

    Rect.kt에서 메서드를 확인하는 테스트가 추가되었습니다. (I08460, b/165822356)

버그 수정

  • 수정할 수 있는 직사각형인 MutableRect가 추가되었습니다. (I71bd2, b/160140398)
  • Matrix4가 Matrix로 대체되었습니다. vectormath 패키지의 다른 모든 부분이 삭제되었습니다. (Ibd665, b/160140398)
  • 구성 가능한 함수의 호출 규칙이 변경되었습니다. 바이너리 브레이킹 체인지입니다. 이 버전의 Compose 컴파일러 플러그인을 사용하려면 모든 라이브러리를 다시 컴파일해야 합니다.

    이 변경사항은 소스 수준의 브레이킹 체인지를 만들지 않습니다. 명시적인 선택이 있는 컴파일러 API만 변경되었기 때문입니다. (I7afd2, b/158123185)

  • PointerInputFilter로의 디스패치로 인해 PointerInputFilter가 동기적으로 삭제될 때 발생할 수 있는 비정상 종료 문제가 수정되었습니다. (I58f25)

버전 1.0.0-alpha01

2020년 8월 26일

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

버전 0.1.0-dev

버전 0.1.0-dev17

2020년 8월 19일

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

API 변경사항

  • emitView가 지원 중단되었습니다. Compose 내에서 뷰를 내보내기 위해서는 가능하면 AndroidView를 대신 사용합니다. View 및 ViewGroup을 직접 구성하는 것은 AndroidView를 사용하여 이를 달성할 수 있는 경우에 구성 트리에 남아있지 않는 한 향후에는 지원되지 않습니다. (I29b1e, b/163871221)
  • FocusState2는 지원 중단되었으며 FocusState로 대체되었습니다. (Ia8b79, b/160822876, b/160923332)
  • 지원 중단된 AndroidView 오버로드가 삭제되었습니다. (I946b9, b/163802393)
  • 이제 맞춤 emit에서 하나 이상의 setter를 건너뛰고 emit로부터 독립적으로 재구성할 수 있음을 선언할 수 있습니다. (Ibbd13)
  • 동일한 객체 인스턴스가 구성에 사용되므로 Vector 클래스가 더 이상 데이터 클래스가 되지 않도록 변경되었습니다.

    벡터 콘텐츠를 변경할 경우 조건부로 다시 그리도록 VectorPainter용 mutableStateOf 플래그가 추가되었습니다.

    VectorComponent 인스턴스가 구성 전체에 걸쳐 재사용되므로 VectorPainter에 속하도록 리팩터링되었습니다.

    GroupComponent 및 PathComponent가 이름 필드를 변경할 수 있도록 업데이트되었습니다. (Ieae45, b/151378808)

  • onChildPositionedOnChildPositionedModifier가 삭제되었습니다. 개발자는 하위 레이아웃에서 onPositionedOnPositionedModifier를 대신 사용해야 합니다. (I4522e, b/162109766)

  • Offset이 인라인 클래스가 되었습니다. (Iaec70)

  • SelectionContainer에 수정자 매개변수가 추가되었습니다. (I4aada, b/161487952)

  • 지원 중단된 FocusModifier가 삭제되었습니다. (I0b4ba, b/160922116, b/160821157, b/162441435, b/160822875, b/160921940)

  • SemanticsPropertyKeymergePolicy 람다가 추가되었습니다. 이는 mergeAllDescendants 의미 체계 병합을 위한 맞춤 정책을 정의하는 데 사용할 수 있습니다. 기본 정책은 상위 값이 이미 있다면 상위 값을 사용하고 상위 값이 없으면 하위 값을 사용하는 것입니다. (Iaf6c4, b/161979921)

  • Constraints는 이제 인라인 클래스입니다. (I88736)

  • AndroidComposeView에서 공통 포커스 로직을 이동하는 FocusManager가 추가되었습니다. (I528ef, b/161487952, b/162206799)

  • 알파 버전의 PointerEventPass 이름이 업데이트되었습니다. (Ifda6f)

  • IntOffset은 이제 인라인 클래스입니다. (Iac0bf)

  • IntSize는 이제 인라인 클래스입니다. (I2bf42)

  • PlacementScope.placeAbsolute()의 이름이 PlacementScope.place()로 변경되었으며 이전 PlacementScope.place()의 이름은 PlacementScope.placeRelative()로 변경되었습니다. 따라서 PlacementScope.place() 메서드는 더 이상 RTL 컨텍스트의 위치를 자동으로 미러링하지 않습니다. 이를 원한다면 PlacementScope.placeRelative()를 대신 사용해야 합니다. (I873ac, b/162916675)

  • AlertDialog는 이제 버튼에 FlowRow를 사용합니다. (I00ec1, b/161809319, b/143682374)

  • 일부 테스트 유틸리티는 이들이 속한 곳에 있지 않으므로 비공개 상태가 되었습니다. 향후에 공개될 예정입니다. (I32ab1)

  • 포인터 입력 코드의 구성이 리팩터링되었습니다. (Ie3f45)

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

  • 지원 중단된 KeyEvent2가 삭제되었습니다. 대신 KeyEvent를 사용해야 합니다. (Ied2d0, b/162097587)

  • KeyEvent에는 지정된 키와 메타 키 상태 조합에 의해 생성된 유니코드 문자를 가져오는 데 사용할 수 있는 유니코드 속성이 있습니다. (If3afc)

  • DelayUp 맞춤 이벤트 및 관련 클래스는 변경될 가능성이 매우 크므로 선택 가능한 API로 만들었습니다. (I56d6f)

  • 더 이상 필요하지 않은 PointerEventPass 2개가 삭제되었습니다. (I3dd9d)

  • Paragraph.paint에 매개변수 색상, 그림자 및 TextDecoration을 추가합니다. 이 함수는 불필요한 단락 재생성을 방지하는 데 유용합니다. (I81689)

버그 수정

  • TextField에서 onFocusChanged 콜백을 삭제했습니다. 대신 Modifier.focusObserver를 사용해야 합니다. (I51089, b/161297615)
  • Modifier.drawBorder가 지원 중단되었습니다. 대신 Modifier.border를 사용하세요. Border 데이터 클래스를 BorderStroke로 대체했습니다. (I4257d, b/158160576)
  • 지원 중단된 FrameManager 호출을 삭제했습니다.

    내부 Compose API를 변경하여 mutableStateof()와 같은 상태 객체를 추적하기 위한 오버헤드 양을 줄였습니다. (I80ba6)

  • VerticalScroller 및 HorizontalScroller를 삭제했습니다. 대신 ScrollableColumn/Row를 사용해야 합니다. Modifier.drawBackground를 삭제했습니다. Modifier.background를 사용해야 합니다. (I73b0d, b/163019183)

  • 상태를 저장하는 요소가 for 루프 내에서 사용되었을 때 비정상 종료가 발생하는 문제가 수정되었습니다. 이제 savedInstanceState()에서 동일한 키를 가질 수 있으며, UiSavedStateRegistry의 API가 이제 이 새로운 요구사항에 맞게 조정됩니다. (I4ab76, b/160042650, b/156853976, b/159026663, b/154920561)

  • state { ... } 컴포저블이 이제 지원 중단되고 명확성을 위해 명시적 remember { mutableStateOf(...) } 호출로 대체됩니다. 이렇게 하면 전체 API 노출 영역 및 상태 관리를 위한 개념 수가 감소하고 클래스 속성 위임을 위한 by mutableStateOf() 패턴과 일치합니다. (Ia5727)

  • Compose 이름 지정 패턴에 더 잘 맞게 RRect의 이름을 RoundRect로 변경했습니다. RRect와 유사한 함수 생성자를 만들었으며 RRect 함수 생성자는 지원 중단되었습니다. (I5d325)

버전 0.1.0-dev16

2020년 8월 5일

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

API 변경사항

  • OnChildPositioned가 지원 중단되었습니다. 대신 하위 요소에서 OnPositioned를 사용해야 합니다. (I87f95, b/162109766)
  • setViewContent는 지원 중단되었습니다. 대신 setContent를 사용해야 합니다. (I7e497, b/160335130)
  • ViewBinding을 기반으로 레이아웃 리소스를 확장하고 구성하기 위한 AndroidViewBinding API가 추가되었습니다. (I081c6)
  • KeyEvent2가 KeyEvent로 대체되었습니다. (I2d770, b/162097585)
  • Alt 하드웨어 키 지원이 추가되었습니다. (I9036b)
  • FocusManager가 지원 중단되었습니다. 대신 Modifier.focus(), Modifier.focusObserver() 및 Modifier.focusRequester()를 사용해야 합니다. (I74ae4, b/162211322)
  • loadVectorResource는 trimPath 속성을 지원합니다. (I808fe)
  • 대화상자를 UI로 이동합니다. (I47fa6)
  • 더 이상 필요하지 않은 PointerEventPass 2개가 삭제되었습니다. (I33ca7)
  • Android View 구현과 마찬가지로 MotionEvents를 수신하고 Compose와 상호작용하는 기능을 제공하는 PointerInteropModifier를 구현했습니다. (Ieb08c)
  • 지원 중단된 태그 수정자가 삭제되었습니다. 대신 layoutId를 사용하세요. (Idaa05, b/162023919)
  • 오른쪽에서 왼쪽 지원을 위한 API가 업데이트되었습니다. LayoutDirectionAmbient가 추가되어 레이아웃 방향을 읽고 변경하는 데 사용할 수 있습니다. Modifier.rtl 및 Modifier.ltr이 삭제되었습니다. (I080b3)
  • 벡터 그래픽에서 경로 자르기를 지원합니다 (Ie16c9, b/158188351).
  • 맞춤 레이아웃 수정자를 쉽게 생성할 수 있도록 Modifier.layout()이 추가되었습니다. (I73b69, b/161355194)
  • 새로운 AndroidView API가 추가되었으며 기존 API는 지원 중단되었습니다. (I5bcfd)
  • Modifier.plus가 지원 중단되었습니다. 대신 Modifier.then을 사용해야 합니다. 'Then'은 더 강력한 순서 지정 신호를 가지고 있으면서 체인을 끊으며 읽기가 더 어려운 Modifier.padding().background() + anotherModifier 입력도 금지합니다. (Iedd58, b/161529964)
  • 뷰 계층 구조에서 Compose 콘텐츠를 호스팅하기 위한 [Abstract]ComposeView 뷰 서브클래스를 추가합니다. (I46357)
  • RowColumn은 이제 인라인 함수이며 이러한 함수를 사용하는 오버헤드가 상당히 감소합니다. (I75c10)
  • SubcomposeLayout이 추가되었습니다. 이는 나중에 하위 트리 구성에 관한 측정 중에만 제공되는 일부 값을 사용하려는 경우 측정 도중에 하위 요소를 구성할 수 있는 낮은 수준의 프리미티브입니다. 예를 들어 WithConstraints는 SubcomposeLayout을 사용하여 구현되지 않습니다. (I25cc8)
  • Compose 계층 구조의 루트를 기준으로 SemanticsNode의 위치를 가져오는 SemanticsNode.positionInRoot가 추가되었습니다. (Icdf26, b/161336532)
  • MotionEvents는 Android에서 Compose로 그리고 다시 Android로 끊임없이 전달됩니다. (I14be8, b/158034713)
  • dropdownPopup이 삭제되었습니다. (I00430)
  • 잘라낸 디스플레이에서 팝업 위치가 수정되었습니다. (Idd7dd)
  • TextLayoutResult를 가져오는 접근성 작업을 추가합니다. (I9d6e6)
  • RemeasurementModifier가 추가되었습니다. 이를 통해 레이아웃을 동기식으로 다시 측정할 수 있습니다. 일반적으로 재측정/재레이아웃이 자동으로 발생하므로 이 수정자가 필요하지 않지만 스크롤하는 동안 LazyColumnItems 내에서 이 수정자를 사용합니다. (I5f331, b/160791058)
  • getLineEllipsisOffset/getLineEllipsisCount를 삭제합니다. 대신 getLineVisibleEnd/getLineEnd/isLineEllipsized를 사용합니다. (I85aa2)
  • 권장사항을 위해 몇 가지 표시/주석을 추가합니다. (I66b20)
  • TextLayoutResult에 더 많은 Line API를 노출합니다. (I79bd2)
  • 이제 Foo.VectorConverter를 통해 내장 단위를 변환하는 내장 벡터 변환기에 액세스할 수 있습니다. 예: Dp.VectorConverter, Color.VectorConverter, Float.VectorConverter 등 (I3e273)

버그 수정

  • 광범위한 API 수정사항을 처리했습니다. (I077bc)
    1. 사용하지 않는 OffsetBase 인터페이스를 삭제했습니다.
    2. 일관된 API 노출 영역을 갖도록 Offset 및 IntOffset 클래스를 정렬했습니다.
    3. Offset API와 일치하도록 IntOffset.Origin의 이름을 IntOffset.Zero로 바꿨습니다.
    4. 소비자가 자체 캔버스 인스턴스를 만들 수 있도록 지원하기 위해 캔버스 인터페이스에서 nativeCanvas 메서드를 이동했습니다.
    5. lateinit 대신 null이 아닌 매개변수가 되도록 DrawScope를 리팩터링하고 필드의 비 null 허용 여부를 보장하기 위해 스터브 EmptyCanvas 클래스를 만들었습니다.
    6. ClipOp enum의 이름을 파스칼 표기법으로 바꿨습니다.
    7. FilterQuality enum의 이름을 파스칼 표기법으로 바꿨습니다.
    8. StrokeJoin enum의 이름을 파스칼 표기법으로 바꿨습니다.
    9. PointMode enum의 이름을 파스칼 표기법으로 바꿨습니다.
    10. PaintingStyle enum의 이름을 파스칼 표기법으로 바꿨습니다.
    11. PathFillType enum의 이름을 파스칼 표기법으로 바꿨습니다.
    12. StrokeCap enum의 이름을 파스칼 표기법으로 바꿨습니다.
    13. lateinit 매개변수를 더 이상 사용하지 않도록 DrawCache 구현을 업데이트했습니다.
    14. fillPaint 및 strokePaint 내부 매개변수에 지연 위임을 더 이상 사용하지 않도록 DrawScope를 업데이트했습니다.
    15. 적은 오버헤드로 Box 사용을 방지하기 위해 이미지 컴포저블을 업데이트했습니다.
    16. @Immutable 주석을 포함하도록 Outline 클래스를 업데이트했습니다.
    17. 각 경로 명령에 대해 @Immutable 주석을 포함하도록 PathNode를 업데이트했습니다.
    18. 동등성에 대한 중복 조건부 검사를 삭제하도록(Compose가 사전에 처리하므로) 벡터 하위 구성을 업데이트했습니다.
    19. Rect 컴패니언 생성자 메서드를 지원 중단하고 함수 생성자로 대체했습니다.
    20. @Immutable 및 @Stable API를 사용하여 Brush 클래스 및 함수 생성자를 업데이트했습니다.
    21. VertexMode enum을 파스칼 표기법으로 업데이트했습니다.
    22. 페인트의 stroke 매개변수가 변경된 경우 이 매개변수를 조건부로 덮어쓰도록 DrawScope selectPaint 메서드를 업데이트했습니다.
    23. 디스트럭처링 API를 추가하고 UnspecifiedSize 이름을 Unspecified로 바꾸며 사용하지 않는 메서드를 삭제하도록 Size를 업데이트했습니다.
  • API 수준에 따라 Android 프레임워크 BlendMode와 PorterDuff 모드 간에 적절하게 매핑되도록 Compose BlendMode API 사용을 업데이트했습니다. BlendMode가 사용되기 전에 기기에서 지원되는지 여부를 확인하는 기능 쿼리 역할을 하는 BlendMode#isSupported API를 도입했습니다. (I0ef42)
  • Lazy 목록의 itemContent 매개변수에 관한 LazyItemScope를 추가했습니다. 이는 항목이 표시 영역을 채워야 하며 항목이 무한대 제약 조건으로 측정될 때 일반 Modifier.fillMaxSize()가 작동하지 않는 경우 사용 사례를 해결하는 상위 요소 최대 크기를 채우는 수정자를 제공합니다. (Ibd3b2, b/162248854)
  • SemanticsNodeInteraction.performPartialGesture를 삭제했습니다. 대신 SemanticsNodeInteraction.performGesture를 사용해야 합니다. (Id9b62)
  • LazyColumnItems 이름을 LazyColumnFor로 바꿨습니다. LazyRowItems 이름을 LazyRowFor로 바꿨습니다. (I84f84)
  • foundation.shape.corner 패키지가 foundation.share로 평면화되었습니다. (I46491, b/161887429)
  • AndroidComposeTestRule의 이름을 createAndroidComposeRule로 변경했습니다. (I70aaf)
  • TextLayoutResult에 API를 더 많이 추가했습니다. (Id7e04)
  • 머티리얼 FilledTextFieldTextField로 이름이 바뀌었으며 기본 TextFieldBaseTextField로 이름이 바뀌어 원하는 가장 간단한 API를 쉽게 찾고 사용할 수 있습니다. (Ia6242, b/155482676)
  • Modifier.drawBackground 이름을 Modifier.background로 바꿨습니다. (I13677)

버전 0.1.0-dev15

2020년 7월 22일

androidx.compose.ui:ui-*:0.1.0-dev15가 출시되었습니다. 버전 0.1.0-dev15에 포함된 커밋을 확인하세요.

종속 항목 업데이트

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

API 변경사항

  • FocusModifier는 지원 중단되고 Modifier.focus, Modifier.focusRequester, Modifier.focusObserver로 대체되었습니다. FocusState 및 FocusDetailedState가 지원 중단되고 FocusState2로 대체되었습니다. (I46919, b/160822875, b/160922136)
  • 포커스 상태 변경을 관찰하기 위한 수정자를 추가했습니다. (I05866, b/160924455, b/160923326)
  • 포커스 변경을 요청하는 수정자를 추가했습니다. (I8dd73, b/161182057, b/160924778)
  • 복사, 잘라내기, 붙여넣기를 올바르게 표시하기 위해 툴바 메뉴가 조정됩니다. (Id3955)
  • 이제 단일 값 시맨틱 속성에 호출 스타일이 사용됩니다. 예를 들어, 이제 'semantics { hidden = true }'는 semantics { hidden() }으로 작성됩니다. (Ic1afd, b/145951226, b/145955412)
  • FocusModifier를 대체하는 Modifier.focus를 추가했습니다. (Ib852a, b/160924778)
  • TextField Selection을 위한 FloatingToolbar가 추가됩니다. (Ie8b07)
  • 키 입력 관련 API를 위해 실험용 API 주석을 추가했습니다. (I53c0a)
  • 모든 포커스 관련 API를 위해 실험용 API 주석을 추가했습니다. (I53b24, b/160903352)
  • FocusDetailedState를 대체하는 FocusState2를 추가했습니다. (I0a3ba, b/160822595)
  • Focus API용 @OptIn 주석인 ExperimentalFocus를 추가했습니다. (I1544b, b/160820961)
  • 레이아웃에서 정수 픽셀 경계를 표현하는 IntBounds 단위 클래스가 추가되었습니다. 이 기능을 사용하도록 PopupPositionProvider API를 업데이트했습니다. (I0d8d0, b/159596546)
  • 이제 Applier에 구성을 폐기하기 위한 clear() 메서드가 필요합니다. (Ibe697)
  • KeyEvent가 지원 중단되고 KeyEvent2로 대체되었습니다. (I68730)
  • 테스트 찾기에 새 옵션 플래그인 useUnmergedTree가 추가되었습니다. (I2ce48)
  • LayoutNode 실험용 API를 제작했습니다. (I4f2e9)
  • 다음과 같은 다양한 인라인 클래스 유형에 복사 메서드를 추가했습니다.

    • Offset
    • 크기
    • 반경
    • 모션
    • TransformOrigin

    • Size.copy 컴패니언 객체 메서드가 지원 중단되고 인스턴스 복사 메서드로 대체되었습니다. (Ife290, b/159905651)

  • 이제 팝업, 대화상자 및 메뉴에서 상황별 MaterialTheme을 상속합니다. (Ia3665, b/156527485)

  • TextDirection의 이름이 ResolvedTextDirection으로 바뀌었습니다. (I3ff38)

  • Layout() 함수의 측정 블록에서 레이아웃 방향 매개변수를 삭제했습니다. 하지만 레이아웃 방향은 측정 범위 객체를 통해 콜백 내에서 사용할 수 있습니다. (Ic7d9d)

  • 재사용을 위해 SelectionHandles를 리팩터링합니다. (I420e0)

  • Clickable이 삭제되었습니다. Modifier.clickable을 사용하세요. (I84bdf)

  • TestTag와 Semantics가 삭제되었습니다. 대신 Modifier.testTag 및 Modifier.semantics를 사용하세요. (I15ff0, b/158841414)

  • 이 변경사항 이전에는 범위 내의 해결된 '컴포저'에서 'emit operator' 메서드가 발견된 경우 Compose 컴파일러 플러그인에서 특별한 방식으로 @Composable 함수 내의 생성자 호출을 가로챘습니다. (I5205a, b/158123804)

  • Modifier.tag는 Modifier.testTag와 혼동을 피하고자 Modifier.layoutId로 이름이 바뀌었습니다. (I995f0)

  • 이제 Placeable#get(AlignmentLine)에서 반환된 정렬 행 Int 위치는 null이 아닙니다. 쿼리된 정렬 행이 없으면 AlignmentLine.Unspecified가 반환됩니다. (I896c5, b/158134875)

  • AndroidView 컴포저블이 수정자 매개변수에 추가되었습니다. (I48a88, b/158746303)

  • Semantics()가 지원 중단되었습니다. 대신 Modifier.semantics()를 사용하세요. (I72407, b/158841414)

  • Activity나 Fragment에서 작동하는 방식과 유사하게 ViewModel을 생성하거나 이미 생성된 ViewModel을 가져올 수 있는 viewModel() 컴포저블을 추가합니다. (I5fdd1)

  • IntPx 사용을 Int로 대체했습니다. IntPxPosition은 IntOffset으로 대체했습니다. IntPxSize를 IntSize로 대체했습니다. (Ib7b44)

  • 크기 정보를 표시하는 데 사용되는 클래스의 수를 통합하려면 PxSize 대신 Size 클래스 사용을 표준화합니다. 이렇게 하면 인라인 클래스의 이점을 제공하여 부동 소수점으로 표시된 너비와 높이를 나타내는 long-pack 2 부동 소수점 값을 활용할 수 있습니다. (Ic0191)

  • 위치 정보를 나타내는 데 사용되는 클래스 수를 통합하려면 PxPosition 대신 Offset 클래스 사용을 표준화합니다. 이렇게 하면, 인라인 클래스의 이점을 제공하여 부동 소수점으로 표시된 x 및 y 오프셋을 나타내는 long-pack 2 부동 소수점 값을 활용할 수 있습니다. (I3ad98)

  • 여러 컴포즈 클래스에서 Px 클래스가 더 이상 대규모 리팩터링 작업의 일부로 사용되지 않습니다. 픽셀 매개변수에는 Dp 유형과 기본 유형만 사용됩니다. Px 클래스 전체를 삭제했습니다. (I3ff33)

  • 대규모 리팩터링 작업의 일환으로 여러 컴포즈 클래스에서 Px 클래스가 더 이상 사용되지 않습니다. 픽셀 매개변수에는 Dp 유형과 기본 유형만 사용됩니다. (I086f4)

  • 대규모 리팩터링 작업의 일환으로 여러 컴포즈 클래스에서 Px 클래스가 더 이상 사용되지 않습니다. 픽셀 매개변수에는 Dp 유형과 기본 유형만 사용됩니다. (Id3434)

  • 대규모 리팩터링 작업의 일환으로 여러 컴포즈 클래스에서 Px 클래스가 더 이상 사용되지 않습니다. 픽셀 매개변수에는 Dp 유형과 기본 유형만 사용됩니다. (I97a5a)

  • 이제 TestTag는 지원 중단됩니다. 대신 Modifier.testTag를 사용하세요. (If5110, b/157173105)

  • 기본적으로 작동하지 않는 ParentDataModifier#modifyParentData 구현이 삭제되었습니다. 이는 애초에 인터페이스를 구현하지 않는 것과 같았습니다. (I0deaa)

  • 이전에 지원 중단된 ScaleFit이 삭제되었습니다. 대신 ContentScale을 사용하세요. (Ifbc5b)

  • 대규모 리팩터링 작업의 일환으로 여러 컴포즈 클래스에서 Px 클래스가 더 이상 사용되지 않습니다. 픽셀 매개변수에는 Dp 유형과 기본 유형만 사용됩니다. (I19d02)

  • 머티리얼 디자인 메뉴 구현인 ui-material에 DropdownMenu 구성요소를 추가했습니다. (I9bb3d)

  • 지원 중단된 LayoutTag()를 삭제했습니다. 대신 Modifier.tag()를 사용하세요. 지원 중단된 Modifier.matchParent()를 삭제했습니다. 대신 Modifier.matchParentSize()를 사용하세요. (If8044)

  • 대규모 리팩터링 작업의 일환으로 여러 컴포즈 클래스에서 Px 클래스가 더 이상 사용되지 않습니다. 픽셀 매개변수에는 Dp 유형과 기본 유형만 사용됩니다. (I57bff)

  • 상위 수준 구성요소에 사용할 수 있도록 Modifier.semantics의 지원 중단이 해제되었습니다. (I4cfdc)

  • CanvasScope 구현이 통합되어 이제 DrawScope와 ContentDrawScope만 있습니다. CanvasScope 이름을 DrawScope로 바꿨습니다. DrawScope는 Density 인터페이스를 구현하고 LayoutDirection을 제공하도록 업데이트되었으며 ContentDrawScope의 DrawScope 서브클래스는 삭제되었습니다. RTL 속성을 수동으로 제공하지 않아도 이미 DrawScope에서 제공하므로 Painter와 PainterModifier가 더 이상 RTL 속성을 자체적으로 유지하지 않도록 업데이트되었습니다. (I1798e)

  • 이제 DoubleTapGestureFilter가 트리에서 SingleTapGestureFilter를 구별합니다. (If92b1)

  • Alignment API를 업데이트하고 절대 정렬 지원을 추가했습니다(Rtl 컨텍스트에서 자동 미러링되지 않음). (I38cd3)

  • DrawLayer 수정자 API가 변경되었습니다. outlineShape 이름이 shape으로 바뀌었으며 기본값으로 RectangleShape을 사용하고 이제 null이면 안 됩니다. clipToOutline 이름은 clip으로 바뀌었으며, clipToBounds는 RectangleShape을 사용하면 clip == true와 동일하므로 삭제되었습니다. (I7ef11, b/155075735)

  • 캔버스를 노출하여 CanvasScope를 대신 노출하는 상위 수준 Compose API를 업데이트했습니다. 따라서 소비자가 자체 Paint 객체를 유지하지 않아도 됩니다. 캔버스에 계속 액세스해야 하는 소비자의 경우 콜백을 제공하여 기본 캔버스에서 그리기 명령어를 실행하는 drawCanvas 확장 메서드를 사용하면 됩니다. (I80afd)

  • 람다 API 후행 WithConstraints가 변경되었습니다. 이제 두 매개변수 대신 제약 조건 및 layoutDirection 외에도 Dp에서 minWidth, maxWidth, minHeight 및 maxHeight 속성을 제공하는 수신기 범위가 있습니다. (I91b9a, b/149979702)

  • LayoutModifier2 이름을 LayoutModifier로 바꿨습니다. (Id29f3)

  • 지원 중단된 LayoutModifier 인터페이스를 삭제했습니다. (I2a9d6)

  • 이제 Layout 및 LayoutModifier2의 내장 기능 측정 함수에 IntrinsicMeasureScope 수신기가 있으며, 이는 내장 기능 쿼리 API에 암시적으로 전파된 레이아웃 방향을 제공합니다. (Id9945)

  • Layout 및 LayoutModifier 하위 요소는 다른 레이아웃 방향으로 측정될 수 있습니다. (Ibd731)

  • 동일한 상위 요소 레이아웃 내에서 하위 요소의 그리기 순서를 제어하기 위해 새로운 Modifier.zIndex()가 추가되었습니다. DrawLayerModifier의 elevation 속성 이름은 shadowElevation으로 바뀌고 더 이상 그리기 순서를 제어하지 않습니다. DrawShadow의 매개변수 순서가 변경되었습니다. 첫 번째 매개변수는 elevation이고 두 번째 매개변수인 shape은 RectangleShape을 기본값으로 사용합니다. (I20150, b/152417501)

  • Owner의 onSizeChange 및 onPositionChange를 삭제했습니다. (I5c718)

  • IntPx 대신 Int 제약 조건 값만 지원하는 Constraints의 복사본인 Constraints2를 추가했습니다. IntPx는 삭제되고 모든 정수 제약 조건이 Android와 같은 픽셀로 간주됩니다.

    • 결국 IntPxSize를 대체할 IntSize도 추가했습니다. (I4b43a)
  • 정렬을 임의의 값으로 인스턴스화할 수 있게 만들었습니다. 1D 정렬을 추가했습니다. (Ia0c05)

  • 이제 alignToSiblings는 Placeable이 아닌 Measured를 허용합니다. (I5788d)

  • (I45f09, b/152842521)

    • ScaleFit에서 ContentScale로 이름을 바꿨습니다.
    • Alignment API와 동일한 모듈에 두기 위해 ContentScale을 ui-graphics에서 ui-core로 이동했습니다.
    • FillMaxDimension 이름을 Crop으로 바꿨습니다.
    • FillMinDimension 이름을 Fit으로 바꿨습니다.
    • 더 정확하게 일치하도록 Fit 이름을 Inside로 바꾸었습니다.
    • ImageView.ScaleType 상응 항목
    • Crop과 Alignment.Center의 조합이 ImageView.ScaleType.CENTER_CROP의 결과와 같고 Alignment.Center와 함께 사용된 Fit의 결과는 ImageView.ScaleType.FIT_CENTER와 같으며 Alignment.Center와 함께 사용된 Inside는 ImageView.ScaleType.CENTER_INSIDE의 결과와 같다는 점을 나타내는 문서를 추가했습니다.
  • 그리기 수정자를 위한 Rtl 지원이 있습니다. (I0aaf9)

  • XML에서 Android 뷰를 확장하는 API를 출시했습니다. 자세한 내용은 ViewInCompose 데모를 참조하세요. (I42916)

  • 다음과 같이 DrawModifier API를 개선합니다.

    • draw()의 수신기 범위를 ContentDrawScope로 설정했습니다.
    • draw()의 모든 매개변수를 삭제했습니다.
    • DrawScope는 이전 CanvasScope와 동일한 인터페이스를 사용합니다.
    • ContentDrawScope에 drawContent() 메서드가 있습니다. (Ibaced, b/152919067)
  • LayoutCoordinates에 positionInParent 및 boundsInParent를 추가했습니다. (Icacdd, b/152735784)

  • 이제 DrawLayerModifier 및 drawLayer()는 clipToBounds 및 clipToOutline의 기본값을 false로 설정합니다. (I0eb8b, b/152810850)

  • LayoutResult 이름을 MeasureResult로 바꿨습니다. (Id8c68)

  • 레이아웃 수정자를 정의하는 새로운 API인 LayoutModifier2가 추가되었고, LayoutModifier는 지원 중단되었습니다. (If32ac)

  • 수정자와 연산자를 팩토리 확장 함수로 대체했습니다. (I225e4)

  • 특정 레이어의 그리기 명령어 표시 목록의 오프셋을 지원하는 translationX/Y 속성을 추가했습니다. 이는 애니메이션 또는 터치 이벤트의 반응으로 콘텐츠를 이동하는 데 유용합니다. (I8641c)

  • 레이어의 특정 지점에 회전 및 크기 조정을 지원하기 위해 Layer API에 pivotX, pivotY 매개변수를 추가했습니다. (Icf7c3)

  • OnPositioned 및 OnChildPositioned 구성 가능 함수를 대체할 OnPositionedModifier 및 OnChildPositionedModifier가 추가됩니다. (I2ec8f)

  • Layout의 RenderNode를 추가할 수 있는 수정자인 LayerModifier를 추가했습니다. 자르기, 불투명도, 회전, 크기 조정, 그림자를 설정할 수 있습니다. RepaintBoundary를 대체합니다. (I7100d, b/150774014)

  • 레이아웃 방향을 상위 요소 레이아웃 노드에서 하위 요소로 전파되도록 만들었습니다. 레이아웃 방향 수정자를 추가했습니다. (I3d955)

  • 스택 구성요소가 오른쪽에서 왼쪽 방향을 지원합니다. (Ic9e00)

  • Compose 레이아웃에서 RTL을 최초로 지원합니다. (Ia5519)

  • Density와 DensityScope를 하나의 인터페이스로 병합했습니다. 이제 ambientDensity() 대신 DensityAmbient.current를 사용할 수 있으며 withDensity(density) 대신 with(density)를 사용하면 됩니다. (I11cb1)

  • providedAlignmentLines를 Map이 아닌 Set으로 만들고 LayoutCoordinates에서 값을 검색하는 대신 get() 연산자를 구현하도록 LayoutCoordinates를 변경했습니다. 이에 따라 수정자별로 새 컬렉션을 만들지 않고도 수정자가 세트에서 하나 이상의 값을 더 쉽게 수정할 수 있습니다. (I0245a)

  • LayoutCoordinate에 더 이상 위치 속성이 없습니다. 위치 속성은 LayoutModifier, 회전 또는 크기 조정을 고려할 때 의미가 없습니다. 대신 개발자는 parentCoordinates 및 childToLocal()을 사용하여 LayoutCoordinate 간의 변환을 계산해야 합니다.

    LayoutCoordinates는 크기 속성으로 PxSize가 아닌 IntPxSize를 사용합니다. Layout은 레이아웃에 정수 픽셀 크기를 사용하므로 모든 레이아웃 크기에 부동 소수점 값이 아닌 정수를 사용해야 합니다. (I9367b)

  • 제약 조건의 API 노출 영역 개선 (I0fd15)

  • 상태를 추적하지 않는 선언적 그리기 API 표면을 노출하기 위해 Canvas 객체를 래핑하는 CanvasScope API를 만들었습니다. 변환은 자체 수신기 범위 내에 포함되며 크기 정보도 상응하는 인셋 경계로 범위가 지정됩니다. 소비자가 그리기 작업을 구성하기 위해 자체 Paint 상태 객체를 유지할 필요는 없습니다.

    • 선언적 그래픽 데모를 포함하기 위해 CanvasScopeSample을 추가하고 데모 앱을 업데이트했습니다. (Ifd86d)
  • 사용하지 않는 MaskFilter API의 사용이 제한적이고 대부분의 사용 사례에서 하드웨어 가속이 최적화되지 않았으므로 이 API를 삭제했습니다. (I54f76)

  • RectangleShape을 androidx.ui.foundation.shape.*에서 androidx.ui.graphics.*로 이동했습니다. (Ia74d5, b/154507984)

  • API의 모든 null을 허용하는 Color 사용을 null을 허용하지 않는 것으로 대체했습니다. null 대신 Color.Unset을 사용하세요. (Iabaa7)

  • 기본 ImageAsset의 하위 섹션 그리기를 지원하기 위해 rect 매개변수(선택사항)가 ImagePainter에 추가로 도입됩니다. (I0ea9e)

  • Colors를 박싱하지 않고도 설정되지 않은 값을 표현하기 위해 Unset Color를 추가했습니다. (If901a)

  • 변환에 선택적 피벗 좌표를 사용하기 위해 Canvas.rotate 및 Canvas.scale 확장 메서드를 추가했습니다. 현재 캔버스 변환의 왼쪽 상단으로 기본 설정됩니다.

    또한, 일관성을 위한 확장 메서드가 되도록 Canvas.rotateRad를 이동했습니다. (Ibaca6)

  • ImageAsset에서 픽셀 정보 쿼리를 지원하는 PixelMap API를 만들었습니다. (I69ad6)

  • Compose API와 Android 프레임워크 API 간 객체 변환에 이름 지정 규칙을 일치하기 위해 toFrameworkRect/toFrameworkRectF의 이름을 toAndroidRect/toAndroidRectF로 바꿨습니다. 이 API의 문서도 업데이트했습니다. (I86337)

  • 기존의 벡터 그래픽용 하위 구성 API를 대체하는 VectorPainter API를 추가했습니다. 하위 구성의 결과는 DrawModifier가 아닌 VectorPainter 객체입니다. 이전의 DrawVector 컴포저블을 지원 중단하고 VectorPainter로 대체했습니다.

    Image(Painter) API의 이름을 PaintBox(Painter)로 바꿨습니다. Image 컴포저블과 같이 동작하는 Vector 컴포저블을 만들었습니다(ImageAsset 대신 VectorAsset을 사용하는 경우 제외). (I9af9a, b/149030271)

  • Image 데이터와 레이아웃에 참여하고 콘텐츠를 그리는 데 사용되는 예정된 Image 컴포저블 사이의 차이를 더 잘 구분하기 위해 Image 이름을 ImageAsset으로 바꿨습니다. _Body:기존 Android 애플리케이션 개발을 Compose 프레임워크와 결합하는 데 유용한 ImageAsset 인스턴스를 만들 수 있도록 android.graphics.Bitmap에 asImageAsset()이라는 확장 메서드를 만들었습니다. (Id5bbd)

  • TextDirection.Content를 추가했습니다. (I48f36)

  • TextDecoration.plus 연산자를 추가했습니다. (I0ad1a)

  • Force가 TextDirectionAlgorithm 열거형 값에서 삭제되었습니다. (Icc944)

  • TextDirectionAlgorithm 이름이 TextDirection으로 바뀌었습니다. (I75ce8)

  • TextField Selection을 위한 LongPressAndDrag가 구현되었습니다. (I17919)

  • 범위 내의 모든 주석을 반환하는 AnnotatedString.getStringAnnotations를 추가했습니다. (I1fa00)

  • Locale 및 LocaleList의 패키지 이름을 androidx.ui.text에서 androidx.ui.intl로 변경했습니다. (I8132c)

  • TextField의 커서에 깜박이는 애니메이션이 있습니다. (Id10a7)

  • API 변경: AnnotatedString(builder: Builder)의 이름이 annotatedString(builder: Builder)로 바뀌었습니다. (Ia6377)

  • API 변경: AnnotatedString.Item의 이름이 AnnotatedString.Range로 바뀌었습니다. (I2d44d)

  • AnnotatedString.Builder.addAnnotationString의 이름을 addStringAnnotation으로 바꿨습니다. (I5059e)

  • 이제 onTextInputStarted 콜백에서 전송하는 SoftwareKeyboardController를 사용하여 소프트웨어 키보드를 숨기거나 표시할 수 있습니다. (I8dc44, b/151860051)

  • merge() 함수에 위임하는 (Text/Paragraph/Span) 스타일에 더하기 연산자를 추가했습니다. (Ia1add)

  • FontWeight.lerp는 더 이상 맞지 않습니다. 여전히 데이터 클래스입니다. (I521c2)

  • 이제 FontWeight 생성자가 공개되어 더 이상 데이터 클래스가 아닙니다. (Id6b1f)

  • TextLayoutResult에 getLineStart, getLineEnd, getEllipsisOffset 및 getEllipsisCount를 추가합니다. (Ibc801)

  • ui-text 모듈 이름이 ui-text-core로 바뀌었습니다. (I57dec)

  • 사용 중인 ui-geometry 모듈에 중복된 Size 클래스가 있으므로 사용하지 않는 Size 클래스를 삭제했습니다. (I1b602)

  • 표시되는 항목만 작성하고 배치하는 스크롤 목록 구성요소인 AdapterList를 추가했습니다. 현재 알려진 문제는 이 기능이 세로 모드에만 가능하고 하위 요소에서 발생하는 모든 변경 사례를 완전히 처리하지는 않는다는 점입니다. (Ib351b)

  • Box에 패딩, 테두리, 도형 및 백그라운드 매개변수를 추가합니다. (I05027, b/148147281)

버그 수정

  • 텍스트 필드의 onFocusChange 콜백 이름이 onFocusChanged로 변경되었습니다. (Ida4a1)
  • VerticalScroller와 HorizontalScroller는 지원 중단되었습니다. 열/행 동작 및 매개변수를 사용하는 내장 환경에는 ScrollableColumn과 ScrollableRow를 사용하고, 개발자의 자체 요소에는 Modifier.verticalScroll 및 Modifier.horizontalScroll을 사용하세요. 마찬가지로, ScrollerPosition은 지원 중단되고 ScrollState로 대체되었습니다. (I400ce, b/157225838, b/149460415, b/154105299)
  • runOnIdleCompose 이름을 runOnIdle로 바꿨습니다. (I83607)
  • 여러 테스트 API의 이름이 더 직관적으로 바뀌었습니다. 모든 findXYZ API의 이름이 onNodeXYZ로 바뀌었습니다. 모든 doXYZ API의 이름이 performXYZ로 바뀌었습니다. (I7f164)
  • 이제 새로운 구성이 없어도 ViewGroups 내에서 Compose UI를 구성할 수 있습니다. ViewInteropDemo 예를 참조하세요. (I9ab0b, b/160455080)
  • sortWith 및 removeRange를 MutableVector에 추가했습니다. (Icccf7)
  • TextField Selection을 변경할 수 있는 드래그 선택 핸들이 구현됩니다. (I27032)
  • NativeShader 클래스를 래핑했던 Shader 인라인 클래스를 삭제하고 NativeShader 이름을 Shader로 바꿨습니다. 래핑된 Shader 인라인 클래스는 API 노출 영역에 중요한 항목을 추가하지 않았으며 인라인 클래스이므로 NativeShader 클래스를 직접 사용하면 됩니다. (I25e4d)
  • 더 이상 특정 제약 조건과 ContentScale 매개변수에 기반한 크기 조정을 제공하지 않도록 PainterModifier를 리팩터링했습니다. Painter의 구현은 DrawScope의 특정 크기에 따라 그림 콘텐츠 자체의 크기를 조정하기 위한 것입니다.

    VectorPainter의 캐시 비트맵 크기가 지정된 크기 대신 기본 크기로 조정되던 문제를 수정했습니다.

    PainterModifier를 사용하는 대신 자체 콘텐츠 크기를 조정할 수 있도록 ImagePainter를 업데이트했습니다. (I6ba90)

  • 애니메이션 타이밍을 위한 최상위 withFrameNanos 함수를 추가했습니다. (Ie34c5)

  • @Untracked 주석이 지원 중단되었습니다. @ComposableContract(tracked=false)로 대체했습니다. (Id211e)

  • androidx.ui.foundation.TextFieldValue 및 androidx.ui.input.EditorValue는 지원 중단되었습니다. 이 유형을 사용하는 TextField, FilledTextField, CoreTextField 컴포저블도 지원 중단되었습니다. 대신 androidx.ui.input.TextFieldValue를 사용하세요. (I4066d, b/155211005)

  • 전달 중에 하위 구성을 통해 PointerInputFilter가 삭제된 경우 포인터 입력 전달에서 비정상 종료가 발생하던 문제를 수정했습니다. 이제 이 문제가 해결되었습니다. (I1f48b, b/157998762)

  • 전달 중에 하위 구성을 통해 PointerInputFilter가 삭제된 경우 포인터 입력 전달에서 비정상 종료가 발생하던 문제가 수정되었습니다. 이제 이 문제가 해결되었습니다. (Iab398, b/157998762)

  • 반경 클래스를 인라인 클래스로 리팩터링했습니다. y축의 반경이 필수 x축 반경 매개변수의 반경과 일치하도록 컴패니언 생성 메서드가 삭제되고 기본 매개변수가 있는 함수 생성자로 대체되었습니다.

    x축 및 y축 반경에 2개의 별도 부동 소수점 값 대신 단일 Radius 매개변수를 사용하도록 DrawScope.drawRoundRect를 업데이트했습니다. (I46d1b)

  • Recompose 컴포저블은 더 이상 유용한 추상화가 아닙니다. 대부분의 재구성은 MutableState 할당의 결과로 발생해야 합니다. 그 외의 경우에는 invalidate 함수를 사용하여 현재 범위의 재구성을 트리거하는 것이 좋습니다. (Ifc992)

  • 대규모 리팩터링 작업의 일환으로 여러 컴포즈 클래스에서 Px 클래스가 더 이상 사용되지 않습니다. 픽셀 매개변수에는 Dp 유형과 기본 유형만 사용됩니다. (Iede0b)

  • Compose 컴파일러의 코드 생성 전략을 변경했습니다. 변경하기 전에는 Compose 컴파일러에서 호출을 구성 가능한 함수로 변환했습니다. 이번 변경으로 이제 구성 가능한 함수의 본문은 변환하고 호출 사이트의 대부분은 변경하지 않고 그대로 둡니다.

    이는 Compose 런타임과 통신하는 로직이 대부분 호출 사이트가 아니라 함수 본문의 시작 부분에서 발생함을 의미합니다.

    이번 변경은 모든 Compose 사용에서 소스와 호환됩니다. 대부분의 Compose 사용자는 이번 변경으로 인해 어떤 코드도 업데이트할 필요가 없습니다.

    이 작업을 지원하기 위해 모든 구성 가능한 함수의 JVM 서명이 변경되었습니다. 단일 매개변수를 허용하는 구성 가능한 함수는 3개의 매개변수를 허용하는 함수로 변환됩니다. 추가 매개변수는 '키' 정수인 컴포저, 호출을 통한 메타데이터 전파에 사용되는 비트마스크 정수입니다.

    이제 Compose는 기본 인수를 구성 가능한 함수로도 변환합니다. 함수 자체의 추가 합성으로 인한 기본 오버로드 없이 기본 인수를 변환하므로 이러한 변경으로 인해 정의되는 함수의 수가 줄어듭니다.

    이로 인해 알려진 의도된 동작 변경사항은 다음과 같습니다.

    1. 일부 호출이 이전에는 건너뛰지 않던 곳을 건너뜁니다.
    2. 이제 기본 인수 표현식의 구성 가능한 표현식이 올바르게 작성 및 처리됩니다.

    이 작업에는 다음과 같은 최적화가 포함되어 있습니다. 1. 매개변수 비교 결과는 호출 그래프를 통해 다른 구성 가능한 함수로 전파됩니다. 이렇게 하면 런타임 시 비교 작업이 적게 발생하고 슬롯 표 크기가 줄며 이전에는 건너뛰지 않던 구성 가능한 함수를 더 많이 건너뜁니다. 2. 컴파일 시간에 '정적'이라고 판단된 매개변수는 더 이상 런타임에 비교되거나 저장되지 않습니다. 따라서 비교 횟수와 슬롯 표 크기가 줄어듭니다. 3. 함수 본문의 제어 흐름 구조는 생성되는 그룹 수를 최소화하는 데 사용되므로 슬롯 표 크기가 줄고 런타임 동안 작업도 줄어듭니다. 4. 함수의 사용되지 않은 전달 및 수신자 매개변수는 함수의 본문 안에서 사용되지 않으면 함수의 건너뛰기 가능성을 판단하는 데 포함되지 않습니다.

    대부분의 브레이킹 체인지는 다음과 같이 컴파일러가 직접 타겟팅하는 API로 인해 발생하며 Compose의 일반적인 사용에는 영향을 미치지 않습니다. 1. Composer::startExpr이 삭제되었습니다. 2. Composer::endExpr이 삭제되었습니다. 3. Composer::call이 지원 중단되었습니다. 4. key의 non-varargs 오버로드가 삭제되었습니다. 앞으로는 vararg 버전을 사용하세요. 5. Pivotal 주석이 지원 중단되었습니다. 대신 key를 사용하세요. 6. Function 1 대신 Function 3을 예상하도록 ScopeUpdateScope::updateScope가 변경되었습니다. 7. 추가로 컴파일 시간 매개변수를 포함하기 위해 restartableFunction 및 restartableFunctionN이 업데이트되었습니다. (I60756, b/143464846)

  • 지원 중단된 LayoutAlign 수정자를 삭제했습니다. (I10877)

  • RepaintBoundary를 삭제하고 DrawLayerModifier로 대체했습니다. (I00aa4)

  • 이제 Button, FloatingActionButton, Clickable에 별도의 enabled 매개변수가 있습니다. Button의 일부 매개변수가 이름이 변경되거나 재정렬되었습니다. (I54b5a)

  • ButtonStyle을 고유 함수로 대체했으며 텍스트(문자열) 오버로드를 삭제했습니다. 사용량 정보는 업데이트된 샘플을 참조하세요. (If63ab, b/146478620, b/146482131)

  • ambients API에 브레이킹 체인지가 있습니다. 자세한 내용은 로그와 Ambient<T> 문서를 참조하세요. (I4c7ee, b/143769776)

  • TextDirection을 LayoutDirection에서 결정하도록 기본 TextDirection 동작을 변경했습니다. 예를 들어, LayoutDirection이 RTL이면 기본적으로 TextDirection은 RTL이 됩니다. 이전에는 TextDirection.ContentOrLtr/Rtl이 사용되었습니다. (I4e803)

  • 버그 수정: 글꼴 두께와 글꼴 스타일이 AnnotatedString에 중첩되면 텍스트가 올바르게 렌더링되지 않습니다. (I77a9d)

  • 일반적으로 사용되는 매개변수를 Text()에 추가합니다. 현재 로컬 텍스트 스타일을 생성하여 이러한 소수의 매개변수를 전달한다면(예: Text(style = TextStyle(textAlign = TextAlign.Center))) 이제 매개변수를 직접 제공할 수 있습니다(예: Text(textAlign = TextAlign.Center). (I82768)

  • ui-android-text 모듈 이름이 ui-text-android로 바뀌었습니다. (I68cbe)