Compose UI
androidx.compose.ui
androidx.compose.ui.geometry
androidx.compose.ui.graphics
androidx.compose.ui.platform
androidx.compose.ui.test
(모든 Compose 패키지는 API 참조 문서 참고)
최근 업데이트 | 안정화 버전 | 출시 후보 버전 | 베타 버전 | 알파 버전 |
---|---|---|---|---|
2024년 8월 7일 | 1.6.8 | - | 1.7.0-beta07 | - |
구조
Compose는 androidx
내의 Maven 그룹 ID 7개의 조합입니다. 각 그룹에는 타겟팅된 기능의 하위 집합이 있으며, 각 기능은 자체적인 출시 노트를 포함하고 있습니다.
다음 표에서는 그룹에 관한 설명과 각 출시 노트 조합의 링크를 제시합니다.
그룹 | 설명 |
---|---|
compose.animation | Jetpack Compose 애플리케이션에서 애니메이션을 빌드하여 풍부한 사용자 경험을 제공합니다. |
compose.compiler | Kotlin 컴파일러 플러그인으로 최적화를 사용 설정하고 @Composable 함수를 변환합니다. |
compose.foundation | 즉시 사용 가능한 구성요소를 사용해 Jetpack Compose 애플리케이션을 작성하고 기초를 확장해 나만의 디자인 시스템 요소를 빌드합니다. |
compose.material | 즉시 사용 가능한 Material Design 구성요소로 Jetpack Compose UI를 빌드합니다. 이는 Compose를 고급 수준에서 사용하는 첫 단계이며, www.material.io에 설명된 것과 동일한 구성요소를 제공합니다. |
compose.material3 | 차세대 Material Design인 Material Design 3 구성요소로 Jetpack Compose UI를 빌드합니다. Material 3은 업데이트된 테마 설정 및 구성요소, Material You 맞춤설정 기능(동적 색상 등)을 포함하며 새로운 Android 12의 시각적 스타일 및 시스템 UI와 일관되도록 설계되었습니다. |
compose.runtime | Compose의 프로그래밍 모델과 상태 관리를 위한 기본 구성요소이며, Compose 컴파일러 플러그인이 타겟팅하는 핵심 런타임입니다. |
compose.ui | 레이아웃, 그리기, 입력 등 기기와 상호작용할 때 필요한 Compose UI의 기본적인 구성요소입니다. |
종속 항목 선언
Compose의 종속 항목을 추가하려면 프로젝트에 Google Maven 저장소를 추가해야 합니다. 자세한 내용을 알아보려면 Google Maven 저장소를 읽어보세요.
다음과 같이 앱 또는 모듈의 build.gradle
파일에 필요한 아티팩트의 종속 항목을 추가합니다.
Groovy
dependencies { implementation "androidx.compose.ui:ui:1.6.8" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.ui:ui:1.6.8") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
종속 항목에 관한 자세한 내용은 빌드 종속 항목 추가를 참고하세요.
의견
제출하신 의견은 Jetpack을 개선하는 데 도움이 됩니다. 새로운 문제를 발견하거나 라이브러리 개선을 위한 아이디어가 있다면 Google에 알려 주세요. 새 문제를 제출하기 전에 이 라이브러리의 기존 문제를 살펴보시기 바랍니다. 별표 버튼을 클릭하여 기존 문제에 투표할 수 있습니다.
자세한 내용은 Issue Tracker 문서를 참고하세요.
버전 1.7
버전 1.7.0-beta07
2024년 8월 7일
androidx.compose.ui:ui-*:1.7.0-beta07
이 출시되었습니다. 버전 1.7.0-beta07에 포함된 커밋을 확인하세요.
버그 수정
- 이제 텍스트 입력 관련
SemanticsNodeInteraction
함수performTextReplacement
,performTextInput
,performTextClearance
가 읽기 전용TextFields
에서만 호출될 때 어설션 오류를 발생시킵니다. 추가했습니다. (I4ae8f)
버전 1.7.0-beta06
2024년 7월 24일
androidx.compose.ui:ui-*:1.7.0-beta06
이 출시되었습니다. 버전 1.7.0-beta06에 포함된 커밋을 확인하세요.
버전 1.7.0-beta05
2024년 7월 10일
androidx.compose.ui:ui-*:1.7.0-beta05
이 출시되었습니다. 버전 1.7.0-beta05에 포함된 커밋을 확인하세요.
버그 수정
- 소프트웨어 키보드를 변경하면 포커스가 사라졌다가 다시 반환될 때까지
TextField
에서 새 키보드의 입력을 허용하지 않는 버그를 수정했습니다. SurfaceView
콘텐츠로 렌더링할 때 레이어 콘텐츠를 유지하려고 하면 의도하지 않은 부작용이 발생하는 문제를 수정했습니다.
버전 1.7.0-beta04
2024년 6월 26일
androidx.compose.ui:ui-*:1.7.0-beta04
이 출시되었습니다. 버전 1.7.0-beta04에 포함된 커밋을 확인하세요.
버그 수정
- 매우 큰 텍스트 줄 (예: 1만 자)을 측정할 때 비정상 종료가 방지됩니다. (8157ab)
GraphicsLayer
API의 소프트웨어 렌더링 지원을 사용 중지합니다. 추가했습니다. (35ddd8)- 레이어 지속성 로직의 비정상 종료 문제를 수정합니다. 추가했습니다. (70b13e)
- 렌더링 문제가 발생하여 레이어 객체 재사용 최적화가 되돌려졌습니다. 추가했습니다. (70b13e)
버전 1.7.0-beta03
2024년 6월 12일
androidx.compose.ui:ui-*:1.7.0-beta03
이 출시되었습니다. 버전 1.7.0-beta03에 포함된 커밋을 확인하세요.
버전 1.7.0-beta02
2024년 5월 29일
androidx.compose.ui:ui-*:1.7.0-beta02
이 출시되었습니다. 버전 1.7.0-beta02에 포함된 커밋을 확인하세요.
API 변경사항
SemanticsProperties.Editable
의 이름을IsEditable
로 바꾸고SemanticsPropertyReceiver.editable
를 valisEditable
로 변경합니다. 이제 속성이 불리언이며 항상 텍스트 필드로 지정됩니다. 추가했습니다. (I8acd8)- 접근성 벤치마크 매개변수의 이름을 바꿉니다. 추가했습니다. (I3d440)
- 링크 스타일을 지정하기 위한 API를 업데이트했습니다.
TextLinkStyles
가 이제LinkAnnotation
생성자 및AnnotatedString.fromHtml
메서드의 일부입니다. (I90b2b) 머티리얼에서TextDefaults
도 삭제했습니다. (I5477b)
버그 수정
- 용도를 더 잘 반영하도록
LayoutCoordinates.introducesFrameOfReference
의 이름을LayoutCoordinates.introducesMotionFrameOfReference
로 바꾸었습니다. 해당 플래그를 기반으로 좌표를 계산하도록 관련 함수의 이름을 바꿨습니다. 추가했습니다. (I3a330)
버전 1.7.0-beta01
2024년 5월 14일
androidx.compose.ui:ui-*:1.7.0-beta01
이 출시되었습니다. 버전 1.7.0-beta01에 포함된 커밋을 확인하세요.
API 변경사항
performCustomAccessibilityActionLabelled
의 이름이performCustomAccessibilityActionWithLabel
으로,performCustomAccessibilityActionWhere
의 이름이performCustomAccessibilityActionWithLabelMatching
으로 변경되었습니다. 추가했습니다. (I5387f)AnnotatedString.hasEqualsAnnotations
는 이제hasEqualAnnotations
입니다. (I685c0)- 텍스트에서 Material 테마 링크를 가져오기 위한 API를 업데이트했습니다. 구체적으로, 테마
LinkAnnotations
를 구성하고 테마 링크로 HTML을 파싱하기 위한TextDefaults
에서 메서드를 삭제했습니다. 대신 Text 컴포저블의 매개변수로 링크 스타일을 지정할 수 있는TextLinkStyles
클래스를 추가했습니다. 추가했습니다. (I31b93)
버그 수정
- 이벤트 중에 포인터 입력 수정자를 동적으로 추가할 때 발생하는 추가 사용 사례가 수정되었습니다. 63e1504
버전 1.7.0-alpha08
2024년 5월 1일
androidx.compose.ui:ui-*:1.7.0-alpha08
이 출시되었습니다. 버전 1.7.0-alpha08에 포함된 커밋을 확인하세요.
API 변경사항
- 변경 가능한 도형 구현 지원을 추가합니다. 이제
Shape#createOutline
가 그래픽 레이어 내에서 관찰됩니다. 따라서 내부의 상태 값을 읽으면 상태가 변경될 때 무효화가 발생하므로 더 높은 성능의 도형 애니메이션이 가능합니다. 추가했습니다. (Id1629, b/326070216) isPositionedByParentWithDirectManipulation
에서introducesFrameOfReference
로 이름이 변경되었습니다. 이제 반대의 효과가 발생합니다. 즉, 기본적으로 대부분의LayoutCoordinates
는 참조 프레임을 도입하며, 직접 조작할 때만 속성이 false입니다. 참조 프레임을 도입하는 항목만 사용하여 위치를 쿼리하려면positionInLocalFrameOfReference(...)
를 사용합니다. 또는LookaheadScope
의positionInLocalLookaheadFrameOfReference
입니다. 추가했습니다. (Ifc5f7)LookaheadScope
API가 안정화되었습니다. (I21507)- API 위원회 의견에 따라
getScrollViewportLength
의 작업 람다를 변경합니다. 추가합니다. (Ibc74a) - int 대신 float 매개변수를 사용하도록
GraphicsLayer
윤곽선 API를 업데이트했습니다.UnsetOffset/UnsetSize IntSize
센티널 값을 삭제하고 부동 소수점 기반 오프셋 및 크기 인라인 클래스에 이미 존재하는 미지정 상수를 사용합니다. (I2fb03, b/333863462) - 테스트 중에 마우스 입력을 삽입할 때 이제
MouseInjectionScope.click()
,MouseInjectionScope.doubleClick()
,MouseInjectionScope.tripleClick()
,MouseInjectionScope.longClick()
가button: MouseButton
매개변수를 허용하므로 더 보편적으로 적용할 수 있습니다. 기본값은 모든 메서드의MouseButton.Primary
입니다. (I31a23, b/190493367, b/261439695) LinkInteractionListener
내에서onClicked
의 이름을onClick
로 바꿨습니다. 추가했습니다. (Iaa35c)TextInclusionStrategy.isInside
의 이름을isIncluded
로 바꿉니다.Paragraph/MultiParagraph#getRangeForRect()
반환 유형을 null을 허용하지 않도록 설정합니다. 추가했습니다. (I51f26)
버그 수정
reverseScrolling=true
가 있는 스크롤 컨테이너의 긴 스크린샷 캡처가 수정되었습니다. 추가했습니다. (I7c59c)
외부 기여
- 중첩된
LazyLists
(예: 중첩된LazyRows
를 렌더링하는LazyColumn
)에서 항목 미리 가져오기 지원이 추가되었습니다. 이 변경사항으로 인해 이러한LazyLists
에서 스크롤하는 동안 프레임 드롭이 감소할 것으로 예상됩니다. 구현 기본값은 처음 2개의 중첩된 항목을 미리 가져오는 것이지만 이 동작은 새로운LazyLayoutPrefetchStrategy(nestedPrefetchItemCount)
및LazyListPrefetchStrategy#onNestedPrefetch
API로 제어할 수 있습니다. 추가했습니다. (I51952)
버전 1.7.0-alpha07
2024년 4월 17일
androidx.compose.ui:ui-*:1.7.0-alpha07
이 출시되었습니다. 버전 1.7.0-alpha07에 포함된 커밋을 확인하세요.
API 변경사항
ClickableText
가 지원 중단된 것으로 표시됩니다. 텍스트에 링크를 추가하려면 링크에 해당하는LinkAnnotation
로AnnotatedString
를 만들고 이AnnotatedString
를 Text 컴포저블에 전달합니다. 추가했습니다. (I34d4b, b/323346994)- 필기 입력 동작을 위한
ViewConfiguration.HandwritingGestureLineMargin
를 도입합니다.BasicTextField
의JoinOrSplit
동작을 지원합니다. (Ie6e13, b/325660505) FocusProperties.enter
및FocusProperties.exit
는 더 이상 실험용이 아닙니다.FocusDirection.Enter
및FocusDirection.Exit
가 더 이상 실험용이 아닙니다.FocusRequester.Cancel
는 더 이상 실험용이 아닙니다. (I461a1, b/261564106)- 레이아웃 좌표를 쿼리할 때 이제
excludeDirectManipulationOffset
인수를 사용하여Placeable.PlacementScope.withDirectManipulationPlacement
를 사용하여 하위 요소를 배치한 상위 레이아웃에서 설정한 오프셋을 제외할 수 있습니다. 마찬가지로 하위 요소의 위치를 자주 변경하는 레이아웃은 이제withDirectManipulationPlacement
를 사용하여 하위 요소를 배치할 수 있습니다 (예: 기본으로 구현되는 스크롤). 이를 통해approachLayout
기반 애니메이션을 더 직관적으로 만들어 애니메이션을 적용할 오프셋과 애니메이션 접근 방식을 결정할 때 직접 적용할 항목을 구별할 수 있습니다. 추가했습니다. (I60ec7) - 긴 스크린샷에 대한 기능 플래그가 삭제되었습니다. 추가했습니다. (I28648, b/329128246)
- 이제
LazyColumn
가 긴 스크린샷에서 고정 헤더를 올바르게 렌더링합니다. 추가했습니다. (I8d239, b/329296635) - 이제 애니메이션 (부수 효과)과 마우스 휠 및 키보드 (
UserInput
)가 포함된 이러한 소스의 확장된 정의를 수용하기 위해NestedScroll
소스 드래그 및 플링이UserInput
및SideEffect
로 대체됩니다. 추가했습니다. (I40579) ApproachLayoutModifierNode
및Modifier.approachLayout
가 이제 이전isMeasurementApproachComplete()
및isPlacementApproachComplete()
를 각각 대체하는 새로운isMeasurementApproachInProgress()
및isPlacementApproachInProgress()
로 안정화되었습니다.- 지원 중단된
intermediateLayout
수정자를 삭제했습니다. 추가했습니다. (I3e91c) RenderNode
및 Picture와 같은 Displaylist 지원 API의 start/endRecording 메서드를 미러링하도록GraphicsLayer#buildLayer
의 이름을 바꿉니다.rememberObserver
를 활용하도록rememberGraphicsLayer
를 업데이트했습니다. 추가했습니다. (I312c1, b/288494724, b/330758155)UrlAnnotation
가 지원 중단되었습니다. 대신LinkAnnotation.Url
를 사용하세요. Material 테마 설정을 사용하는 경우TextDefaults
객체를 사용하여 Material 테마 설정이 적용된 주석을 만듭니다. (I8d180, b/323346545)- 텍스트 링크에 일반적인 스타일 지정, 마우스 오버 및 포커스가 있는 것 외에도 누름 상태 스타일 지정 옵션이 적용되었습니다. (I5f864, b/139312671)
String.parseAsHtml
에서AnnotatedString.Companion.fromHtml
으로 이름이 변경되었습니다. 추가했습니다. (I43dcd)- 스타일 지정 인수 (
linkStyle
,focusedLinkStyle
,hoveredLinkStyle
) 및 링크 상호작용 리스너를parseAsHtml
메서드에 추가했습니다.<a>
태그로 HTML 태그가 지정된 문자열을 파싱할 때 이 메서드는 이러한 각 태그의LinkAnnotation.Url
를 구성하고 스타일 지정 객체와 링크 상호작용 리스너를 각 주석에 전달합니다. 추가했습니다. (I7c977) - 이제
LinkAnnotation
가 상태 기반 스타일 지정 인수와LinkInteractionListener
를 사용합니다. 이 주석을AnnotatedString
에 추가하여 하이퍼링크를 가져옵니다.focusedState
또는hoveredState
를 전달하면 링크에 포커스를 두거나 마우스를 가져갈 때 링크의 시각적configuration
를 정의할 수 있습니다. 추가했습니다. (I81ce4, b/139312671) ImeOptions.hintLocales
는 더 이상 null을 허용하지 않습니다. 빈 언어 목록을 전달하려면LocaleList.Empty
를 사용하세요. 추가했습니다. (Ic5bc4)
버그 수정
- 잘못되거나 손상된 이전 입력 이벤트 데이터를 적절하게 처리합니다 (잘못된 오프셋 데이터 무시).
- 활성 포인터 입력 이벤트 스트림 중에 포인터 입력 수정자가 다른 포인터 입력 수정자보다 먼저 동적으로 추가될 때 발생하는 예상치 못한 포인터 이벤트를 수정합니다 (예: 마우스 오버 엔터 및 마우스 오버 이탈[마우스/스타일러스] 사이).
버전 1.7.0-alpha06
2024년 4월 3일
androidx.compose.ui:ui-*:1.7.0-alpha06
이 출시되었습니다. 버전 1.7.0-alpha06에 포함된 커밋을 확인하세요.
새로운 기능
- 스타일이 지정된 문자열에
parseAsHtml
메서드를 추가했습니다. 이 메서드를 사용하면 HTML 태그로 표시된 문자열을AnnotatedString
로 변환할 수 있습니다. 일부 태그는 지원되지 않습니다. 예를 들어 아직 글머리기호 목록을 표시할 수 없습니다. (I84d3d, I30626, b/139326648) - 공식 Android API (
ScrollCaptureCallback
)를 사용하여 Compose 스크롤 컨테이너에서 긴 스크린샷을 위한 실험용 지원을 구현했습니다. 이 기능은 실험용이며 현재 모든 사례를 제대로 처리하지 못할 수 있습니다. 이러한 이유로 현재 기본적으로 사용 중지되어 있습니다. 선택하려면ComposeFeatureFlag_LongScreenshotsEnabled
플래그를 true로 설정합니다. 추가했습니다. (I2b055, b/329296471)
API 변경사항
fun ClipEntry.getMetadata()
가val ClipEntry.clipMetadata
로 변경됩니다. 추가했습니다. (I50155)ClipboardManager.getClipMetadata
및ClipboardManager.hasClip
함수를 삭제했습니다.clipEntry.getMetadata()
를 사용하여 현재 클립 항목의 메타데이터를 읽어 보세요. 또한ClipboardManager.getClip
의 결과가 null인지 아닌지 확인하여 클립보드에 현재 클립이 있는지 파악합니다. 추가했습니다. (I50498)- 이제
GraphicsLayer
객체를placeable.placeWithLayer()
함수에 전달할 수 있습니다. (I1b22f) - 이제
ClipboardManager.setClip
에서 null을 허용하여 클립보드를 지울 수 있습니다. 추가했습니다. (I7d2e9) - 빌드 도구 내에서 구현 세부정보로 사용되는 뷰를 숨기는 데 도움이 되는 리소스 ID를 추가했습니다. (I99531)
- 비트맵의 콘텐츠를
GraphicsLayer
로 렌더링할 수 있도록GraphicsLayer#toImageBitmap
정지 메서드를 추가했습니다. API 수준 22 이상 (포함)에서 하드웨어 가속 렌더링 작업으로, 모든 Android 기기의 99% 이상을 지원합니다. Android API 수준 21에서는 소프트웨어 렌더링으로 대체됩니다. 추가했습니다. (I9e114) - Android
RectF
를ComposeRect
로 변환하는 도우미 메서드입니다. (I39925, b/325660505) - 이제 모든
KeyboardOptions
매개변수에 기본적으로 지정되지 않은 값이 있습니다.KeyboardOptions.merge
메서드를 추가했습니다. KeyboardOptions.autoCorrect
의 이름을autoCorrectEnabled
로 변경하고 null을 허용하도록 했습니다. 여기서 null은 지정된 값이 없음을 나타냅니다. 추가했습니다. (Ia8ba0, b/295951492)BasicTextField(state)
변형 및BasicSecureTextField
는 이제KeyboardActions
대신KeyboardActionHandler
를 사용하여 소프트웨어 키보드에서 실행한 작업을 처리합니다. 추가했습니다. (I58dda)
버전 1.7.0-alpha05
2024년 3월 20일
androidx.compose.ui:ui-*:1.7.0-alpha05
이 출시되었습니다. 버전 1.7.0-alpha05에 포함된 커밋을 확인하세요.
새로운 기능
- 표시 목록에 그리기 명령어와 표시 목록 렌더링에 영향을 미치는 추가 속성을 기록하는 새로운
GraphicsLayer
API를 도입했습니다. 이는 전체 장면을 다시 만들지 않고도 복잡한 장면을 더 작은 조각으로 나누는 격리 경계를 제공합니다.GraphicsLayer
의 변환은 표시 목록을 다시 기록하지 않고도 실행할 수 있습니다.Modifier.graphicsLayer
와 달리GraphicsLayer
를 사용하면 다른 곳에서 컴포저블 콘텐츠를 렌더링할 수 있으며 콘텐츠가 다양한 장면에서 렌더링될 것으로 예상되는 애니메이션 사용 사례에 유용합니다.
API 변경사항
GraphicsLayer.draw(Canvas)
는 더 이상 공개 API가 아닙니다. 대신DrawScope.drawLayer(GraphicsLayer)
확장 함수를 사용하여 레이어를 그립니다. 추가했습니다. (I7a7c0)restrictedConstraints()
를fitPrioritizingWidth()
및fitPrioritizingHeight()
의 두 메서드로 분할합니다. (I6d7fd)- Android L 사용을 위한
HardwareCanvas
스텁을 도입했습니다. (I1c3b5, b/288494724) - 소유자,
DelegateableNode
,drawWithCache
수정자 구현을 업데이트하는 동시에GraphicsContext
컴포지션 로컬을 노출하도록 Compose 프레임워크를 업데이트하여 수정자가 해제될 때GraphicsLayer
인스턴스를 자동으로 정리하는 범위가 지정된 액세스의GraphicsContext
액세스를 노출합니다. 추가했습니다. (I64a2f, b/288494724) - 하위 수준 IME 관련 테스트 및 기타 하위 수준 IME 사용 사례를 작성하는 데 도움이 되는
InterceptPlatformTextInput
를 도입했습니다.PlatformTextInputTestOverride
가 지원 중단되었습니다. 추가했습니다. (I862ed, b/322680547) GraphicsLayer.setOutline(Outline)
확장 함수를 추가했습니다. 추가했습니다. (Ib81f4)GraphicsContext
함수 생성자를 도입하여GraphicsLayer
인스턴스를 만드는 팩토리를 만듭니다. (Ib98d6, b/288494724)- 다른 곳에서 그리고 다양한 시각 효과를 최종 결과에 적용하는 데 사용할 수 있는 그리기 명령어를 캡처하는 데 있어 개발자가 정의한 유연성을 제공하기 위해
GraphicsLayer
API를 노출했습니다. 추가했습니다. (I80245, b/288494724) - 지정된 직사각형 영역으로 덮인 텍스트 범위를 반환하는
Paragraph#getRangeForRect
를 도입합니다. 추가했습니다. (Iee516, b/325660505) onLinkClicked
인수가 있는BasicText
의 실험용 재정의를 삭제했습니다. 향후 하이퍼링크 지원을 위한 대체 API가 제공될 예정입니다. 추가했습니다. (I107d5)
버그 수정
- 선택적 시각 효과와 변환 합성을 사용하여 그리기 명령어의 캡처 및 재생을 지원하는
GraphicsLayer
예상/실제 API 정의를 추가했습니다.GraphicsLayer
인스턴스 생성 및 관리를 포함한 그래픽 종속 항목을 포함하는GraphicsContext
인터페이스를 도입했습니다. 추가했습니다. (I4a8d6, b/288494724) - 다른 뷰 사이에 삽입된
ComposeView
내에 포커스가 고정되는 1D 포커스 검색과의 상호 운용성 문제를 수정했습니다. 추가했습니다. (I08fd4)
외부 기여
- Compose 기반 도우미 API를 Compose UI 외부에서 사용할 수 있도록
LocalLifecycleOwner
가 Compose UI에서lifecycle-runtime-compose
로 이동했습니다. 도움을 주신 Jake Wharton에게 감사드립니다. 추가했습니다. (I6c41b, b/328263448) - 모든 편향 기반 정렬 하위유형에서 편향 부동 소수점 속성을 일관되게 노출합니다. 추가했습니다. (I69f0f, b/328088992)
버전 1.7.0-alpha04
2024년 3월 6일
androidx.compose.ui:ui-*:1.7.0-alpha04
이 출시되었습니다. 버전 1.7.0-alpha04에 포함된 커밋을 확인하세요.
API 변경사항
- Android U 이후 기기에서 BasicTextField2의 스타일러스 필기 입력 기능을 지원합니다. 추가했습니다. (I002e4)
- 이 CL에서는 Compose에서 스크롤되는 구성요소에 관한 정보를 a11y 시스템으로 전달할 수 있도록
GetScrollViewportLength
시맨틱 작업을 추가합니다. 이 CL은 기본 스크롤 가능 목록에서 해당 속성의 용도도 적용합니다. 추가했습니다. (Ic5fa2) - 이제
FocusRequester.createRefs
가 안정화되었습니다. (I4d92c, b/261436820) - 수정자 노드가 컴포지션 로컬을 읽지 않고도 현재 Android
View
를 가져올 수 있도록DelegatableNode.requireView()
를 도입했습니다. 추가했습니다. (I40768) - 경로의 방향을 반대로 바꾸는 새 API
Path.reverse()
(I36348) KeyboardOptions
에hintLocales
를 추가하여 기본 언어를 미리 설정할 수 있도록 특정 언어로 IME에 힌트를 얻는 기능을TextFields
에 제공합니다.- 기본 플랫폼 객체를 반환하는
Locale
에서platformLocale
속성을 노출합니다. 예:java.util.Locale
입니다. 추가했습니다. (I921c6)
버전 1.7.0-alpha03
2024년 2월 21일
androidx.compose.ui:ui-*:1.7.0-alpha03
이 출시되었습니다. 버전 1.7.0-alpha03에 포함된 커밋을 확인하세요.
API 변경사항
- MaxLines 및 오버플로를 사용한
ContextualFlowRow
및 향상된FlowRow
/Column
를 소개합니다.ContextualFlowRow
및ContextualFlowColumn
의 첫 출시와 더불어 이제 maxLines 및 오버플로 지원을 갖춘 실험용FlowRow
및FlowColumn
의 개선사항을 발표하게 되어 기쁩니다. 이 업데이트는 성능에 최적화된 구성요소를 제공하도록 설계되었습니다. 즉,ContextualFlow*
는 작은maxLines
구성을 사용하는 다수의 항목에 적합하고 동적 +N 더보기 버튼에 적합하며FlowRow
및FlowColumn
는 항목이 100개 미만인 소수의 항목에 적합합니다. 중요: 교차 축 최댓값에 맞는지 여부와 관계없이 모든 항목이 구성되는FlowRow
또는FlowColumn
의 기존 동작을 유지하려면 초기화 중에overflow
를FlowRowOverflow.Visible
또는FlowColumnOverflow.Visible
로 설정합니다.ContextualFlowRowSample
및FlowRowSample
에서 새로운 기능의 예를 살펴보세요. 추가했습니다. (Ib9135, b/293577082) - 허용되는 최대 문자 수를 필터링하는 텍스트 필드에 설정해야 하는
maxTextLength
시맨틱 속성을 추가합니다. 추가했습니다. (I24d9f, b/170648072) Modifier.inspectable
래퍼가 지원 중단되었습니다. 이 API는 수정자의 무효화를 필요 이상으로 많이 생성하므로 사용하지 않는 것이 좋습니다. 개발자는 수정자 속성을 도구에 노출하려는 경우ModifierNodeElement
에inspectableProperties()
메서드를 구현하는 것이 좋습니다. 추가했습니다. (Ib3236)WindowManager.LayoutParams
플래그를 완전히 제어할 수 있는PopupProperties
의 새 생성자 추가했습니다. (Ibb33e, b/312485503)onPlaced
를 재정의하고 직접 속성에 좌표를 저장할 필요 없이Modifier.Node
의 현재LayoutCoordinates
를 가져오는 방법으로DelegatableNode.requireLayoutCoordinates()
를 도입했습니다. 추가했습니다. (Ia8657)onPlaced
를 재정의하고 직접 속성에 좌표를 저장할 필요 없이Modifier.Node
의 현재LayoutCoordinates
를 가져오는 방법으로DelegatableNode.currentLayoutCoordinates
를 도입했습니다. (Iaebaa 참조)androidx.compose.foundation.text2
패키지의BasicTextField2
및 관련 API를androidx.compose.foundation.text
로 이동합니다. 추가했습니다. (I9f635)- 명시적 수정자 노드에서 맞춤 접근 방식 로직 생성을 지원하는 새
ApproachLayoutModifierNode
API를 추가했습니다. 또한 인스턴스화 시 타겟을 알 수 없는 애니메이션을 위한 새로운 실험용DeferredTargetAnimation
API를 추가했습니다. 추가했습니다. (I60745) - 새로운
Path
API를 사용하여 경로의 방향을 쿼리하고Path
에서 윤곽을 추출할 수 있습니다. 추가했습니다. (I63d04) Path
에 특정 지점이 포함되어 있는지 확인하는PathHitTest
및Path.contains(Offset)
를 추가했습니다. 추가했습니다. (I3b218)- 이제
TextLayoutResult
에서getLineBaseline(lineIndex)
메서드를 노출합니다. 이를 통해 기존의 편의 속성firstBaseline
및lastBaseline
외에도 텍스트의 임의 줄의 기준선을 읽을 수 있습니다. 추가했습니다. (Ide4e8, b/237428541) - 두
AnnotatedStrings
의 주석만 비교하는 메서드를 추가했습니다. 추가했습니다. (I32659)
버그 수정
SemanticsPropertyReceiver.performImeAction
및SemanticsActions.PerformImeAction
와의 하위 호환성 문제가 수정되었습니다. 추가했습니다. (Id0528, b/322269946)
버전 1.7.0-alpha02
2024년 2월 7일
androidx.compose.ui:ui-*:1.7.0-alpha02
이 출시되었습니다. 버전 1.7.0-alpha02에 포함된 커밋을 확인하세요.
API 변경사항
SemanticsPropertyReceiver.performImeAction
의 바이너리 호환성 문제를 수정했습니다. 추가했습니다. (I65865, b/322269946)usePlatformDefaultWidth
매개변수를 사용하는PopupProperties
생성자가 더 이상 실험용이 아닙니다. 추가했습니다. (I8f8d2)- 제한 시간 메시지에 포함할 조건의 문자열 설명을 사용하는
ComposeTestRule.waitUntil
오버로드를 추가했습니다. 추가했습니다. (I9413e) - 동일한 수정자 체인에 추가된 시맨틱 속성을 삭제하는 새 시맨틱 API
unset()
새 시맨틱 속성isOpaque
가 추가되었습니다. 추가했습니다. (I8c583, b/317966058, b/246056649) PointerInputChange
의 공개 API에 있는 복사 메서드에서originalEventPosition
를 삭제했습니다. 추가했습니다. (I7bead)
버그 수정
- 탭과 라디오 버튼이 아닌 버튼을 선택할 때 클릭할 수 있도록 하는 a11y 버그를 수정했습니다. 추가했습니다. (I2181c)
- 이제
VelocityTracker
에서 기본적으로 점을 추가하는 기능이 수정되었습니다. 문제가 있는 경우VelocityTrackerAddPointsFix
를 false로 설정하여 수정사항을 사용 중지할 수 있습니다. 추가했습니다. (Ib3877, b/269487059) TextStyle
및ParagraphStyle
의 이전 버전과 바이너리 비호환성 문제가 수정되었습니다. 추가했습니다. (I179f0, b/320819734)
외부 기여
- 플랫폼별 매개변수가 없는 새로운
DialogProperties
생성자가 추가되었습니다. 추가했습니다. (I45829) - 플랫폼별 매개변수가 없는 새로운
PopupProperties
생성자가 추가되었습니다. 추가했습니다. (I9a038)
버전 1.7.0-alpha01
2024년 1월 24일
androidx.compose.ui:ui-*:1.7.0-alpha01
이 출시되었습니다. 버전 1.7.0-alpha01에 포함된 커밋을 확인하세요.
API 변경사항
- 이미지와 같은 임의의 콘텐츠를 지원하도록
ClipEntry
및ClipMetadata
를 추가하여ClipboardManager
를 확장했습니다. DeviceConfigurationOverride
API를ui-test
에 추가하여 로컬에서 허용합니다. 테스트 중인 콘텐츠의 동작을 재정의(예: 사용 가능한 크기, 언어, 레이아웃 방향, 글꼴 크기 또는 테마를 설정할 수 있습니다
버전 1.6
버전 1.6.8
2024년 6월 12일
androidx.compose.ui:ui-*:1.6.8
이 출시되었습니다. 버전 1.6.8에 포함된 커밋을 확인하세요.
버그 수정
- 글꼴 크기가 정의된 가장 낮은 표보다 작을 때 글꼴 크기 조정의 불일치 문제를 해결했습니다. 이 경우 선형 1x 배율과 가장 낮게 정의된 표 사이에 보간합니다. 그러면 배율이 커질수록 글꼴 크기가 일정하게 증가합니다. 추가했습니다. (Icbae3)
버전 1.6.7
2024년 5월 1일
androidx.compose.ui:ui-*:1.6.7
이 출시되었습니다. 버전 1.6.7에 포함된 커밋을 확인하세요.
버전 1.6.6
2024년 4월 17일
androidx.compose.ui:ui-*:1.6.6
이 출시되었습니다. 버전 1.6.6에 포함된 커밋을 확인하세요.
버그 수정
- 드물게 발생하는
BasicTextField
비정상 종료를 수정합니다.
버전 1.6.5
2024년 4월 3일
androidx.compose.ui:ui-*:1.6.5
이 출시되었습니다. 버전 1.6.5에 포함된 커밋을 확인하세요.
버전 1.6.4
2024년 3월 20일
androidx.compose.ui:ui-*:1.6.4
이 출시되었습니다. 버전 1.6.4에 포함된 커밋을 확인하세요.
버전 1.6.3
2024년 3월 6일
androidx.compose.ui:ui-*:1.6.3
이 출시되었습니다. 버전 1.6.3에 포함된 커밋을 확인하세요.
버전 1.6.2
2024년 2월 21일
androidx.compose.ui:ui-*:1.6.2
이 출시되었습니다. 버전 1.6.2에 포함된 커밋을 확인하세요.
버전 1.6.1
2024년 2월 7일
androidx.compose.ui:ui-*:1.6.1
이 출시되었습니다. 버전 1.6.1에 포함된 커밋을 확인하세요.
버그 수정
SemanticsPropertyReceiver.performImeAction
및SemanticsActions.PerformImeAction
와의 하위 호환성 문제가 수정되었습니다. 추가했습니다. (Ie0bb2, b/322269946)- 이제 레이아웃에서 비정상적으로 큰 크기를 반환하는 경우 측정하는 동안 오류가 발생합니다. 이러한 종류의 오류는 일반적으로 측정에서
Constraints.Infinity
를 확인하지 않고 최대 제약 조건을 직접 사용할 때 발생합니다. 이 검사는 개발자가 레이아웃이 포함된 레이아웃에서가 아니라 크기가 잘못된 레이아웃의 문제를 찾는 데 도움이 됩니다. 추가했습니다. (I339a9)
버전 1.6.0
2024년 1월 24일
androidx.compose.ui:ui-*:1.6.0
이 출시되었습니다. 버전 1.6.0에 포함된 커밋을 확인하세요.
버전 1.6.0-rc01
2024년 1월 10일
androidx.compose.ui:ui-*:1.6.0-rc01
이 출시되었습니다. 버전 1.6.0-rc01에 포함된 커밋을 확인하세요.
버그 수정
- 추가 리컴포지션을 최소화하여 성능을 개선하도록 벡터 그래픽 구현을 최적화했습니다.
버전 1.6.0-beta03
2023년 12월 13일
androidx.compose.ui:ui-*:1.6.0-beta03
이 출시되었습니다. 버전 1.6.0-beta03에 포함된 커밋을 확인하세요.
새로운 기능
- 이제 노드를 분리하지 않고도
LayoutCoordinates
를 분리할 수 있습니다. Compose Layout Inspector에서 방지합니다. (If693)
버그 수정
PlatformImeOptions
는 이제 인터페이스가 아닌 구체적인 클래스입니다. 추가했습니다. (If40a4)- 루트가 재구성될 때마다 새 값을 제공하는
LocalSoftwareKeyboardController
및LocalTextInputService
로 인한 추가 다운스트림 리컴포지션을 수정했습니다. 추가했습니다. (I42190, b/310510985)
버전 1.6.0-beta02
2023년 11월 29일
androidx.compose.ui:ui-*:1.6.0-beta02
이 출시되었습니다. 버전 1.6.0-beta02에 포함된 커밋을 확인하세요.
버전 1.6.0-beta01
2023년 11월 15일
androidx.compose.ui:ui-*:1.6.0-beta01
이 출시되었습니다. 버전 1.6.0-beta01에 포함된 커밋을 확인하세요.
API 변경사항
- 이제
DragAndDropTarget
수정자는 수신DragAndDropTarget
를 명시적으로 가져오며 드래그 앤 드롭 세션을 선택할 람다가 있습니다. 이제DragAndDropModifierNode
에는 두 개의 팩토리 함수가 있습니다. 하나는 전송 수신용이고 다른 하나는 데이터 전송용입니다. (I69481) maximumFlingVelocity
가 부동 소수점 수로 표시되도록 업데이트했습니다.maximumFlingVelocity
통합을 더 명확하게 설명하기 위해 문서를 업데이트했습니다. 추가했습니다. (I8adc7)DragAndDropModifierNode
팩토리의onDragAndDropStart
이름이acceptDragAndDropTransfer
로 변경되었습니다.드래그 앤 드롭 세션에서 허용할 수 있도록acceptsDragAndDropTransfer
가dragAndDropTarget
수정자에 추가되었습니다. 이 람다는 드래그 앤 드롭 세션에 관심이 있다면 실행 가능한DragAndDropTarget
를 반환합니다. 드래그 이벤트를 처리하는 다른 람다는 이 람다로 대체되었습니다. 드래그 앤 드롭 세션에서 수신하는DragAndDropTarget
팩토리 함수를 추가했습니다. (Iebf3a)DragAndDropModifierNode.drag
유형으로서DragAndDropInfo
를 삭제했습니다. 이제transferData
, 장식 크기, 드래그 장식DrawScope
람다의 매개변수를 사용합니다.DragAndDropTarget
에는 단일 추상 메서드가 아닌 특정 드래그 앤 드롭 이벤트를 위한 메서드가 있습니다.제공된
DragAndDropTarget
가 지정된 드래그 앤 드롭 세션에만 유효함을 더 잘 전달하기 위해DragAndDropModifierNode
의 팩토리 함수에서onDragAndDropEvent
의 이름을onDragAndDropStart
로 바꾸었습니다.DragAndDropEventType
를 삭제했습니다. (I645b1)PlatformTextInputModifierNode.runTextInputSession
에서establishTextInputSession
로 이름이 변경되었습니다. 추가했습니다. (I03cd0)더 쉽게 이해할 수 있도록 순회 가능한 노드 API 이름을 개선합니다. 추가했습니다. (Ia4474)
OriginalText
를TextSubstitution
로 바꿉니다. 추가했습니다. (Ifa5a8)PlatformTextInputModifierNode.textInputSession
에서runTextInputSession
로 이름이 변경되었습니다. 추가했습니다. (Ie9c6b)향후 재사용되도록 유지되는
SubcomposeLayout
의 하위 요소 (및 이에 기반하는LazyColumn
와 같은 레이아웃)는 비활성화된 것으로 간주됩니다. 이러한 노드를 테스트하기 위해 새로운assertIsDeactivated()
테스트 API가 도입되었습니다. 나머지 테스트 API는 기본적으로 비활성화된 노드를 필터링합니다. 추가했습니다. (I2ef84, b/187188981)FocusDirection.In
및FocusDirection.Out
를 삭제했습니다. 대신FocusDirection.Enter
및FocusDirection.Exit
를 사용합니다. (I2f660)Material
SwipeToReveal
API (카드 및 칩용)는 이제 데이터 클래스 기반 인스턴스가 아닌 슬롯 기반 API (Compose에서 권장함)를 사용하여 이러한 슬롯을 만듭니다. 브레이킹 체인지입니다. 새 API 사용 방법에 대한 예시는 데모 및 샘플 코드를 참고하세요. 추가했습니다. (Ia8943)FontStyle(int)
생성자가 지원 중단되었습니다. 대신FontStyle.Normal
또는FontStyle.Italic
를 사용하세요. 추가했습니다. (I66610)FontScalable
인터페이스의 이름을FontScaling
로 바꿨습니다. (Ie804a)
버그 수정
- 텍스트 편집기에 포커스가 없는 경우
SoftwareKeyboardController.show()
에 더 이상 소프트웨어 키보드가 표시되지 않습니다. 추가했습니다. (I2165a, b/301477279) - 이제 동일한 Compose 뷰에서 Down 이벤트를 수신하지 않은 키의 하드웨어 키 Up 이벤트는 무시됩니다. 추가했습니다. (Ib37b4, b/305518328)
ArcLine
에 Sweep Gradient를 위한 렌더기 지원을 추가합니다. 추가했습니다. (I4d5bb)PageSize.Fixed
의 등호 및 해시코드를 구현합니다. 추가했습니다. (Ie3ede, b/300134276)- 창 인셋 변경사항과 관련된 바이너리 호환성 문제를 수정합니다. (Iee695)
- Material 3 칩/버튼의 머티리얼 코어 레이어를 삭제합니다. microbenchmark가 없을 때 더 나은 성능을 보이기 때문입니다. 추가했습니다. (I55555)
- 이제 Compose 테스트에
effectContext
로 전달된TestDispatcher
가 테스트 및 프레임 시계를 만드는 데 사용됩니다. 추가했습니다. (Ia7178)
버전 1.6.0-alpha08
2023년 10월 18일
androidx.compose.ui:ui-*:1.6.0-alpha08
이 출시되었습니다. 버전 1.6.0-alpha08에 포함된 커밋을 확인하세요.
API 변경사항
Modifier.dragAndDrawSource
의onDrawDragShadow
람다 이름이drawDragDecoration
로 변경되었고DragAndDropInfo
의 크기 매개변수 이름이dragDecorationSize
로 변경되었습니다. 추가합니다. (Id0e30, b/303904810)SemanticsNodeInteraction.isDisplayed()
및SemanticsNodeInteraction.isNotDisplayed()
를 도입하여 일치하는 노드가 어설션하지 않고 표시되는지 확인합니다. 추가했습니다. (I2c196, b/302100809)null
를 대체하기 위해ParagraphTextStyle
의TextAlign
,TextDirection
,Hyphens
,LineBreak
필드에 특수Unspecified
값을 도입했습니다. 이러한 클래스는 인라인 클래스이므로 nullable을 Unspecified로 대체하여 원시 유형 박싱을 방지합니다. 언급된 매개변수를 null이 아닌 유형으로 허용하도록TextStyle
및 단락 스타일의 생성자, getter, 기타 메서드가 업데이트되었습니다. 추가했습니다. (I4197e, b/299490814)- XML에서
GoogleFont
를 읽기 위한GoogleFont
오버로드를 추가합니다. 추가했습니다. (If8f59) LoremIpsum
PreviewParameterProvider
을(를) 공개 수업으로 설정했습니다. 추가합니다. (I41bf5, b/266918816, b/300116360)
버그 수정
- 이제
FontFamilyResolver
는 캐시 관리 코루틴에Dispatchers.Main
를 사용합니다. 추가했습니다. (Ie8dd9) - 이제
AndroidViewBinding
가 (이전에 사용한commit
대신)commitNow
를 사용하여 레이아웃에FragmentContainerView
를onRelease
의 일부로 포함하여 확장된Fragment
인스턴스를 동기식으로 삭제하므로 변경 시 컴포지션을 교체하는 실시간 편집 메서드의 문제가 수정되었습니다. 추가했습니다. (I58fbf)
버전 1.6.0-alpha07
2023년 10월 4일
androidx.compose.ui:ui-*:1.6.0-alpha07
이 출시되었습니다. 버전 1.6.0-alpha07에 포함된 커밋을 확인하세요.
API 변경사항
- 맞춤 텍스트 편집기용 테스트를 작성하기 위한
PlatformTextInputMethodTestOverride
를 도입했습니다. 추가했습니다. (Id159b) - 드래그 앤 드롭 세션을 시작하는
dragAndDropSource
수정자와 드래그 앤 드롭 세션에서 수신하기 위한dragAndDropTarget
수정자를 추가합니다. 추가했습니다. (Ib7828, b/286038936) - 할당을 방지하는
ColorList
및ColorSet
컬렉션을 추가했습니다. 추가했습니다. (I744bd) - 비선형 글꼴 크기 조정을 사용 중지하는
DisableNonLinearFontScalingInCompose
임시 플래그를 추가했습니다. 정리할 시간이 필요한 경우 테스트에서DisableNonLinearFontScalingInCompose = true
를 설정합니다. 이 플래그는 Compose 1.6.0-beta01에서 삭제됩니다. 추가했습니다. (Ic9486)
버그 수정
- XML 벡터 드로어블 파싱을 최적화했습니다. 추가했습니다. (Ibb015)
버전 1.6.0-alpha06
2023년 9월 20일
androidx.compose.ui:ui-*:1.6.0-alpha06
이 출시되었습니다. 버전 1.6.0-alpha06에 포함된 커밋을 확인하세요.
API 변경사항
- 머티리얼 아이콘 추가 최적화 추가했습니다. (I3e08d)
- 위/아래 수정자 트리를 순회하여 유사한 노드를 찾는 기능을 추가합니다. 추가했습니다. (I2d234)
focusRestorer()
수정자에onRestoreFailed()
콜백을 추가했습니다. (Ie1d43)- 다양한 그래픽 API에 androidx 주석을 추가하여
ColorInt
,FloatRange
,IntRange
,Size
등을 지정합니다. 추가했습니다. (Id65c8, b/290950582) PreviewScreenSizes
정의에showSystemUi=true
를 추가합니다. (Ib61d3)
동작 변경사항
- 이제 Compose에서 비선형 글꼴 크기 조정을 사용하여 가독성과 접근성을 개선합니다. 글꼴 크기 > 시스템 설정에서 100% 로 설정하면 작은 텍스트는 일반적으로 크기가 커지지만 이미 큰 텍스트는 약간만 커집니다. 또한 SP에 정의된 행 높이는 의도된 100% 배율에 비례하도록 자동으로 조정됩니다. 자세한 내용은 글꼴 크기 조정 권장사항을 참조하세요. 추가했습니다. (I11518)
버전 1.6.0-alpha05
2023년 9월 6일
androidx.compose.ui:ui-*:1.6.0-alpha05
이 출시되었습니다. 버전 1.6.0-alpha05에 포함된 커밋을 확인하세요.
API 변경사항
AndroidComposeViewAccessibilityDelegateCompat
에서 콘텐츠 캡처를 사용 설정합니다. 추가했습니다. (Ib2969)ScrollView
및RecyclerView
와 같은 View 구성요소의 플링 속도는ViewConfiguration.ScaledMaximumFlingVelocity
로 제한됩니다. 이제 Compose에Draggable
에 적용되는 자체 버전의maximumFlingVelocity
가 포함됩니다. 추가합니다. (Ibf974)- 플랫폼 드래그 앤 드롭 API를 지원하는 초기 스캐폴딩을 추가합니다. (If84ce)
RotaryScrollEvent
에deviceId
를 추가합니다. (Iba3bf)- 최신 기기를 포함하도록
ui-tooling
Devices API를 업데이트했습니다. (Ib25b4)
버전 1.6.0-alpha04
2023년 8월 23일
androidx.compose.ui:ui-*:1.6.0-alpha04
이 출시되었습니다. 버전 1.6.0-alpha04에 포함된 커밋을 확인하세요.
API 변경사항
ReusableComposition
를 비활성화하여 관찰을 삭제하지만 노드는 그대로 유지하는 메서드를 추가했습니다. 비활성화된 음악작품은setContent
를 호출하여 다시 활성화할 수 있습니다. 추가했습니다. (Ib7f31)- 하위 컴포지션의 수명 주기 관리와 재사용을 위한
ReusableComposition
인터페이스를 추가했습니다. 추가했습니다. (I812d1, b/252846775) Modifier.focusGroup
가 안정적인 API로 승격되었습니다. 추가했습니다. (I7ffa3)- 다양한 그래픽 API에 androidx 주석을 추가하여
ColorInt
,FloatRange
,IntRange
,Size
등을 지정합니다. 추가했습니다. (I70487, b/290950582) - 매개변수의 검사 가능성을 높이기 위해 구체적인 서브클래스 유형을 포함하도록
ColorFilter
API를 업데이트했습니다. 추가했습니다. (I5fe29) - wear-tooling-preview 라이브러리를 도입하여 UI 미리보기에 사용할 수 있는 유효한 Wear 기기를 나열합니다. (Ib036e)
- Density 인터페이스의 글꼴 크기 조정 부분을 처리하기 위한
FontScalable
인터페이스를 만들었습니다. 추가했습니다. (I2cf3f)
버전 1.6.0-alpha03
2023년 8월 9일
androidx.compose.ui:ui-*:1.6.0-alpha03
이 출시되었습니다. 버전 1.6.0-alpha03에 포함된 커밋을 확인하세요.
API 변경사항
- 들어가기 및 나가기 도중 애니메이션 컨테이너의 크기에 따라 콘텐츠 크기를 조정하는 새로운 유형의 들어가기/나가기 전환 종료 애니메이션.
LookaheadScope
컴포저블 함수와 인터페이스가 이제 안정화되었습니다. (Ifb2ce) privateImeOptions
구성 지원을 추가했습니다. (Idb772)
버그 수정
- 이제 계산에서 읽은 상태가 변경되면
PopupPositionProvider.calculatePosition
가 팝업의 위치를 자동으로 업데이트합니다. 추가했습니다. (I676a1, b/292257547) - 키보드를 표시하고
readOnly
가 true일 때 수정할 수 있는 텍스트 필드를 수정했습니다. 또한 포커스가 있는 동안readOnly
가 true에서 false로 변경될 때 키보드가 표시되지 않는 문제를 수정했습니다. 추가했습니다. (I34a19, b/246909589) - UI 테스트에서 전역 어설션의 적용이 확장되었습니다. 추가했습니다. (I1f90d)
버전 1.6.0-alpha02
2023년 7월 26일
androidx.compose.ui:ui-*:1.6.0-alpha02
이 출시되었습니다. 버전 1.6.0-alpha02에 포함된 커밋을 확인하세요.
API 변경사항
- 다른 컴포지션 대리자 서비스가 원본 컴포지션을 조회하는 데 위임하는 컴포지션 구현을 허용하는 컴포지션 구현자가 구현할 수 있는 서비스 로케이터 인터페이스를 추가했습니다. 이를 directy라고 부르면 안 되며, 런타임에서 UI 모듈과 같이 컴포저의 래핑된 버전에서 찾을 수 있는 실험용 API를 만들 수 있도록 하는 데 사용됩니다. 추가했습니다. (I296b9)
PlatformTextInput*
API를 완전히 새롭게 디자인했습니다. (I6c93a, b/274661182, b/267235947, b/277380808)SoftwareKeyboardController
및LocalSoftwareKeyboardController
는 더 이상 실험용이 아닙니다.LocalSoftwareKeyboardController
도 이제 적절한CompositionLocal
입니다. 추가했습니다. (I4c364)LookaheadLayout
및LookaheadLayoutScope
는 일부 출시에서 지원 중단되었으며 이제 삭제되었습니다. 대체 API는 모든 레이아웃과 호환 가능한LookaheadScope
입니다. 추가했습니다. (I12ac3)- 테스트에서 포커스를 요청하는 더 편리하고 검색 가능한 방법으로
SemanticsNodeInteraction.requestFocus
를 추가했습니다. 추가했습니다. (Ie8722) - 향후 프레임워크에서 사용할 전역 어설션을 등록하는 실험용 API를 추가합니다. 추가했습니다. (I12d77)
버그 수정
- 이제
AndroidView
의update
콜백의 첫 번째 호출은AndroidView
를 도입하는 컴포지션이 적용될 때 실행되는 대신 뷰가 연결될 때까지 지연됩니다. 이를 통해 읽은 상태가 효과에 의해 즉시 변경되는 경우update
콜백이 무효화되지 않는 버그가 수정되었습니다. 추가했습니다. (Ie9438, b/291094055)
버전 1.6.0-alpha01
2023년 6월 21일
androidx.compose.ui:ui-*:1.6.0-alpha01
이 출시되었습니다. 버전 1.6.0-alpha01에 포함된 커밋을 확인하세요.
새로운 기능
LazyList
에서 전방 탐색 기능을 지원합니다. 이렇게 하면 전방 탐색 패스의LazyList
가 모든 애니메이션 (예: 항목 배치 애니메이션,AnimatedVisibility
등)을 우회하고 모든 하위 요소의 미리보기 크기 및 위치를 계산할 수 있습니다. 전방 탐색 통과 후에는LazyList
의 하위 요소가 전방 탐색 패스에서 보이는 현실과 독립적으로 애니메이션될 수 있습니다.
동작 변경사항: 이제 Compose에서 includeFontPadding이 기본적으로 false임
이제 Compose에서 includeFontPadding
가 기본적으로 false (21d806)입니다.
includeFontPadding
는 텍스트 기준선 위 또는 아래로 확장될 수 있는 문자를 수용하기 위해 텍스트의 첫 줄과 마지막 줄에 추가 패딩을 포함할지 여부를 제어하는 기존 속성입니다.
이 Compose 버전을 업데이트하면 표시하는 모든 텍스트의 첫 줄과 마지막 줄 위에 있는 추가 패딩을 삭제하여 UI에서 모든 텍스트가 렌더링되는 방식이 수정됩니다.
UI 요구사항과 사용 중인 글꼴 측정항목에 따라 최소한의 변경이 이루어져야 합니다. 하지만 다음과 같은 차단 기능이 발생할 수 있습니다. - 스크린샷 테스트가 손상되었습니다. 필요한 경우 UI를 수정하고 골드 이미지를 다시 생성합니다. - 텍스트가 약간 잘못 정렬되었습니다. 맞춤 네거티브 패딩을 삭제하거나 필요한 경우 패딩을 추가하세요.
각 텍스트에 PlatformTextStyle
를 사용하여 includeFontPadding
을 선택할 수 있습니다.
Text(
text = myText,
style = TextStyle(
lineHeight = 2.5.em,
platformStyle = PlatformTextStyle(
includeFontPadding = true/false
)
/* … */
)
)
Material 스타일을 구성하여 모든 텍스트에 includeFontPadding
를 사용하도록 선택할 수 있습니다. 매개변수 이름은 M2와 M3 간에 다릅니다.
val Typography = Typography(
body1 = TextStyle(
fontFamily = /* … */,
fontSize = /* … */,
platformStyle = PlatformTextStyle(
includeFontPadding = false
)
/* … */
)
)
MaterialTheme(
typography = Typography,
/* … */
)
Compose includeFontPadding
에 관한 자세한 내용은 개발자 문서와 이 블로그 게시물을 참고하세요.
이 변경사항과 관련된 문제/버그가 발생하면 Issue Tracker를 사용하여 버그를 신고하세요.
API 변경사항
InputConnection#requestCursorUpdates
를 지원합니다. (I0c69b)FocusRequester.saveFocusedChild
및FocusRequester.restoreFocusedChild
를 추가했습니다. (Ic557e, b/272302679, b/275157318)ResourceResolutionException
유형을 추가하여 로드되지 못한 애셋 경로의 설명과 함께 비트맵 애셋을 로드하려고 할 때 발생하는 throwable을 래핑합니다. 추가했습니다. (I19f44, b/230166331, b/278424788)- 성능 및 메모리 할당을 위한 접근성을 최적화했습니다. 추가했습니다. (Iede48)
- 텍스트 번역을 지원하기 위해 시맨틱 속성과 작업이 추가되었습니다. 추가했습니다. (I4a6bc)
- 현재 측정 패스가 미리보기 패스인지 여부를 나타내는
IntrinsincMeasureScope
및 구현 (예:MeasureScope
)의 새 속성입니다. 추가했습니다. (I7a812) - 대체 밀도/레이아웃 방향 및 크기를 사용하여 렌더링을 다른 캔버스로 재타겟팅하는 기능을 도입하도록
DrawScope
API를 업데이트했습니다. - 밀도와 레이아웃 방향의 구성을 지원하고 캔버스를 구성할 수 있도록
DrawContext
를 업데이트했습니다. 추가했습니다. (Ie1f9b, b/225408150) - 문자 경계 상자를 계산하는
Paragraph#fillBoundingBoxes
를 추가했습니다. (If30ee) - 공통
MultiPreviews
집합을 추가했습니다. (Ia5a27)
버그 수정
- 맞춤
FocusTarget
를 만드는 데 사용할 수 있는FocusTargetModifierNode
인터페이스를 추가했습니다. 추가했습니다. (I9790e) TextMeasurer
생성자의fallback*
매개변수 이름을default*
로 바꿨습니다. 추가했습니다. (I940a5)SemanticsPropertyReceiver.performImeAction
의 이름이onImeAction
으로,SemanticsActions.PerformImeAction
의 이름이OnImeAction
으로 변경되었습니다. 추가했습니다. (I8e841)- 중첩된 스크롤에서 마우스 스크롤을 드래그와 구별하기 위해 Wheel을 추가합니다 (특히
NestedScrollConnection
에서). 추가했습니다. (Ie57e4) - 반환된 객체가 원래
android.graphics.Paint
를 래핑하므로toComposePaint
를 대체하는asComposePaint
API를 추가했습니다. (I22b4c) SemanticsProperties.imeAction
를 지원 중단하고SemanticsActions.performImeAction
의 새 매개변수로 대체합니다. 추가했습니다. (I4a587)- 마우스로 선택하는 기능이 지원됩니다. 터치 기반 선택은 단어 단위로 확장되고 문자 단위로 축소됩니다. 추가했습니다. (Ic0c6c, b/180639271)
- 범위를 벗어난 오프셋의
AssertionError
을 발생시키는 데 사용했던Paragraph
메서드가 이제MultiParagraph
처럼IllegalArgumentException
을 발생시킵니다. 추가했습니다. (I549d3, b/243338896)
버전 1.5
버전 1.5.4
2023년 10월 18일
androidx.compose.ui:ui-*:1.5.4
이 출시되었습니다. 버전 1.5.4에 포함된 커밋을 확인하세요.
버전 1.5.3
2023년 10월 4일
androidx.compose.ui:ui-*:1.5.3
이 출시되었습니다. 버전 1.5.3에 포함된 커밋을 확인하세요.
버그 수정
- (b/301209788)
TextField
가 한국어 입력에 포커스를 맞추고 입력할 때 이전 명령어를 잘못 적용하여 문자가 손실되는 경우가 있었습니다.
버전 1.5.2
2023년 9월 27일
androidx.compose.ui:ui-*:1.5.2
이 출시되었습니다. 버전 1.5.2에 포함된 커밋을 확인하세요.
버그 수정
- 백그라운드 스레드에서 접근성 스크롤 API에 액세스했을 때 발생하는 비정상 종료 해결 방법을 추가했습니다.
- 시맨틱 트리에 추가되는 연결되지 않은 노드를 수정합니다.
버전 1.5.1
2023년 9월 6일
androidx.compose.ui:ui-*:1.5.1
이 출시되었습니다. 버전 1.5.1에 포함된 커밋을 확인하세요.
버그 수정
- 키보드를 표시하고
readOnly
가 true일 때 수정할 수 있는 텍스트 필드를 수정했습니다. 또한 포커스가 있는 동안readOnly
가 true에서 false로 변경될 때 키보드가 표시되지 않는 문제를 수정했습니다. 추가했습니다. (I34a19, b/246909589)
버전 1.5.0
2023년 8월 9일
androidx.compose.ui:ui-*:1.5.0
이 출시되었습니다. 버전 1.5.0에 포함된 커밋을 확인하세요.
버전 1.5.0-rc01
2023년 7월 26일
androidx.compose.ui:ui-*:1.5.0-rc01
이 출시되었습니다. 버전 1.5.0-rc01에 포함된 커밋을 확인하세요.
버그 수정
movableContentOf()
내에서SubcomposeLayout
를 사용할 때 발생하는 비정상 종료 문제를 수정했습니다.
버전 1.5.0-beta03
2023년 6월 28일
androidx.compose.ui:ui-*:1.5.0-beta03
이 출시되었습니다. 버전 1.5.0-beta03에 포함된 커밋을 확인하세요.
버그 수정
- 맞춤 FocusTarget을 만드는 데 사용할 수 있는 FocusTargetModifierNode 인터페이스를 추가했습니다. 추가했습니다. (Ifb1d6)
usePlatformDefaultWidth=true
일 때 하위 창의 크기가 예상대로 조절되지 않을 수 있는 대화상자 및 Popup 컴포저블 관련 문제를 수정했습니다. 추가했습니다. (I112ee)
버전 1.5.0-beta02
2023년 6월 7일
androidx.compose.ui:ui-*:1.5.0-beta02
이 출시되었습니다. 버전 1.5.0-beta02에 포함된 커밋을 확인하세요.
API 변경사항
- Compose에서 사용할
android.graphics.Paint
인스턴스를 사용할 수 있도록asComposePaint
API를 추가했습니다.
버그 수정
- 반환된 객체가 원래
android.graphics.Paint
를 래핑하므로toComposePaint
를 대체하는asComposePaint
API를 추가했습니다. (I22b4c)
버전 1.5.0-beta01
2023년 5월 24일
androidx.compose.ui:ui-*:1.5.0-beta01
이 출시되었습니다. 버전 1.5.0-beta01에 포함된 커밋을 확인하세요.
API 변경사항
- 리컴포지션, 색상 애니메이션,
AndroidComposeView
의 할당을 삭제했습니다. (Ib2bfa) - 위임을 허용하도록 도우미 재미있는
CacheDrawModifierNode()
를 추가합니다. (Icf8f9) MeasureScope
에서 액세스할 수 있는isLookingAhead
속성을 도입하여 전방 결과를 관찰하고 원하는 경우 기본 패스에 영향을 줍니다. 추가했습니다. (Ibf4c3)- 새로운 시맨틱 속성
traversalIndex
가TalkBack
순회에서 노드를 재정렬하는 데 사용되는 부동 소수점 수입니다 (더 낮은 값이 앞에 옴). 추가했습니다. (I9a81b, b/186443263) - 시맨틱 속성
isContainer
의 이름을isTraversalGroup
로 바꿨습니다. (I121f6) - 이제
ColorProducer
에produce
대신operator fun invoke
가 있습니다. (I4a9a2) Path
변환 API를 추가하여 경로 객체에 변환/확장/회전 변환을 적용합니다. 추가했습니다. (I23434, b/233772232)ColorProducer
의 메서드는produce
입니다. 추가했습니다. (I78bde)toFrameworkColorSpace
의 이름을toAndroidColorSpace
로 바꿉니다. (I4f547)ColorLambda
의 이름을ColorProducer
로 바꿉니다. 추가했습니다. (I73b1a)- Android 색상 공간 유형과 Compose 색상 공간 유형 간에 변환하는 API를 도입합니다. 추가했습니다. (Ie7db4, b/279979665)
- 텍스트 색상을 효율적으로 애니메이션하거나 설정할 수 있도록
BasicText
에 색상 매개변수를 추가했습니다. 추가했습니다. (Iffd88, b/246961787) TextRange.constrain
에서TextRange.coerceIn
로 이름이 변경되었습니다. 추가했습니다. (I31be2)- 전체 매개변수 목록과 함께 최적화된
TextStyle.merge(...)
를 추가했습니다. 추가했습니다. (Iad234, b/246961787) Brush
,DrawStyle
,TextMotion
,DrawScope.drawText
,Paragraph.paint(Brush)
,MultiParagraph.paint(Brush)
를 포함하는 많은 Text API가 안정화되었습니다. (I2f740, b/261581564, b/261581931, b/261561245)PlatformTextStyle.includeFontPadding
의 지원이 중단되었습니다. 원래 의도는 이 필드를 삭제하는 것이었지만, 피드백에 따르면 개발자에게 이 구성 옵션이 필요한 것으로 나타납니다. 따라서 필드에서 지원 중단이 삭제되었습니다. (I98e96, b/277703184)- 공개
TextRange.constrain
메서드를 추가했습니다. 추가했습니다. (I97912) - 이제
TalkBack
와 같은 접근성 서비스를 통해AnnotatedString
의UrlAnnotation
를 열 수 있습니다. 추가했습니다. (If4d82, b/253292081) - 텍스트 필드에
InsertTextAtCursor
시맨틱 작업을 추가했습니다. 추가했습니다. (I11ed5) LineHeightStyle.Alignment(topRatio)
생성자가 안정적인 API로 승격됩니다. 추가했습니다. (I79c32, b/261565383)TextMeasurer
및 관련 API가 더 이상 실험용이 아닙니다. 추가했습니다. (I74647, b/261581753)- 텍스트 편집기 노드에서 IME 작업을 호출하는
PerformImeAction
시맨틱 작업을 추가했습니다. 추가했습니다. (Ic606f, b/269633506) PlatformTextInput
API가 더 이상 Android용 실험용이 아닙니다. 추가했습니다. (I668eb)Enum.valueOf
의 값 매개변수 이름이 변경되었습니다. (Ia9b89)- enum valueOf에서 더 많은 예외가 발생합니다. (I818fe)
- 플랫폼 API와 직접 통신하는 맞춤 텍스트 입력 구현을 빌드하기 위한 새로운 하위 수준
PlatformTextInputAdapter
API를 도입했습니다. 추가했습니다. (I58df4) - 캔버스에 텍스트를 그릴 때 여러 블렌딩 알고리즘이 지원되도록
DrawScope.drawText
,Paragraph.paint
,MultiParagraph.paint
메서드에BlendMode
매개변수를 추가했습니다. (I57508) Font.MaximumAsyncTimeout
의 이름을Font.MaximumAsyncTimeoutMillis
로 바꿉니다. 이름 변경만 가능합니다. (I07af5)@Preview
참조 기기의 DPI 값을 업데이트했습니다. (Id6151, b/254528382)- 텍스트 브러시를 효율적으로 적용하거나 설정할 수 있도록
brush
,alpha
매개변수를BasicText
에 추가합니다. - :ui:ui-unit에서 Float, Double, Long, Int, Short의 박스 없는 람다 유형을 정의합니다. (I6f18d, b/246961787)
버그 수정
- 포인터 속도 추적에서 여러 할당을 삭제했습니다. (I26bae)
- 레이아웃 및 포인터 입력 관리에서 할당을 줄였습니다. (I5333a)
- 벡터 메모리 사용량 및 첫 번째 프레임 렌더링을 최적화합니다. (I2f3c6)
- 캔버스로 선과 점을 그릴 때 할당이 삭제되었습니다. (I9f535)
AndroidFont.fontVariationSettings
문서를 추가합니다. (I7d9e2)
외부 기여
- Vector API의 성능을 개선하고 할당을 줄였습니다. (I906cb)
버전 1.5.0-alpha04
2023년 5월 10일
androidx.compose.ui:ui-*:1.5.0-alpha04
이 출시되었습니다. 버전 1.5.0-alpha04에 포함된 커밋을 확인하세요.
새로운 기능
Modifier.Node
위임 개선사항DelegatingNode
에서 다른Modifier.Node
인스턴스에 위임하는 향상된 기능을 추가했습니다.delegate
및undelegate
API를 사용하면 됩니다. 이번 변경 이전에는 위임 노드의 모든 API를 위임된 노드에 명시적으로 위임해야 했습니다. 이번 변경 후에는DelegatingNode
가 명시적으로 재정의하지 않는 한 노드 인터페이스가 암시적으로 위임됩니다. (67352bc)
API 변경사항
- 위임할 수 있는
NestedScroll Modifier.Node
인NestedScrollModifierNode
를 도입합니다. 추가했습니다. (I69513) AndroidViewBinding
컴포저블에onReset
및onRelease
매개변수를 추가하여AndroidView
컴포저블을 미러링하고ViewBinding
를 사용한 뷰 재사용을 지원합니다. 추가했습니다. (I00b1e, b/276802519)- 더 빠른 재사용으로 빈번한 경로 조작의 사용 사례를 지원하도록 되감기 작업을 지원하도록 Compose Path API를 업데이트했습니다. 추가했습니다. (I7b797)
- 전체 매개변수 목록과 함께 최적화된
TextStyle.merge(...)
를 추가했습니다. 추가했습니다. (Iad234, b/246961787) Brush
,DrawStyle
,TextMotion
,DrawScope.drawText
,Paragraph.paint(Brush)
,MultiParagraph.paint(Brush)
를 포함하는 많은 Text API가 안정화되었습니다. (I2f740, b/261581564, b/261581931, b/261561245)PlatformTextStyle.includeFontPadding
에 대한 지원이 해제되었습니다. 원래 의도는 이 필드를 삭제하는 것이었지만, 피드백에 따르면 개발자에게 이 구성 옵션이 필요한 것으로 나타납니다. 따라서 필드에서 지원 중단이 삭제되었습니다. (I98e96, b/277703184)
버그 수정
Dialog
컴포저블에 의해 생성되지 않은 대화상자 내의 텍스트 필드에 키보드가 표시되지 않는 회귀 문제를 수정했습니다. 추가했습니다. (I82551, b/262140644)
버전 1.5.0-alpha03
2023년 4월 19일
androidx.compose.ui:ui-*:1.5.0-alpha03
이 출시되었습니다. 버전 1.5.0-alpha03에 포함된 커밋을 확인하세요.
새로운 기능
LookaheadScope
의SubcomposeLayout
에 관한 새로운 기본 동작: 조건부 슬롯이 없는SubcomposeLayouts
(예:TabRow
,Scaffold
,BoxWithConstraints
등)이 이제 전방 애니메이션과 원활하게 작동합니다.
API 변경사항
- 전방 탐색 패스의 측정 정책을 재사용하는 새로운 기본
intermediateMeasurePolicy
를 사용하면Scaffold
,TabRow
,BoxWithConstraints
와 같은 조건부 슬롯이 없는SubcomposeLayout
하위유형을 기본적으로 미리보기와 함께 사용할 수 있습니다. 추가했습니다. (Id84c8) - Android 창용으로 생성된 Recomposer는 이제
ON_STOP
알림을 수신할 때 모든 컴포지션이 아닌withFrameNanos
호출만 차단합니다. 즉, 중지된 활동과 연결된 창은 데이터 변경을 위해 계속 재구성되지만 애니메이션 또는 다른withFrameNanos
호출자는 차단됩니다. 추가했습니다. (Id9e7f, b/240975572) motionEventSpy
를 안정화 버전으로 변경합니다. 추가했습니다. (Ic5ec4, b/261560988)- 공개
TextRange.constrain
메서드를 추가했습니다. 추가했습니다. (I97912) - 개발자가 이 호환성 API를 사용하여
includeFontPadding
false 설정을 전환하고 테스트하도록 장려하기 위해PlatformTextStyle.includeFontPadding
는 더 이상 지원 중단되지 않습니다. 추가했습니다. (I98e96, b/277703184)
버전 1.5.0-alpha02
2023년 4월 5일
androidx.compose.ui:ui-*:1.5.0-alpha02
이 출시되었습니다. 버전 1.5.0-alpha02에 포함된 커밋을 확인하세요.
API 변경사항
- 전방 탐색 기반 애니메이션 중에 측정/레이아웃 로직을 처리하기 위한 추가적인 중간 측정 정책을 사용하는 새로운
SubcomposeLayout
API가 추가되었습니다. 추가했습니다. (I017d3) - 이제 PointerInput이 지연되며 성능 향상을 위해 Modifier.Node를 사용합니다 (사소한 동작 변경사항에 관해 참고). 추가합니다. (15dab9)
- Key 이벤트가 있는 실험용 API를 안정화 버전으로 변경합니다. 추가했습니다. (I9c7d8, b/261566839, b/261567368)
- 실험용 API를
PointerInputChange
에서 안정화 버전으로 변경합니다. (I1b543, b/261560988, b/261565762, b/261565749) - 더 복잡한
Modifier.Node
구현을 위해SuspendingPointerInputModifierNode
를 인스턴스화하는 방법이 추가되었습니다. 추가했습니다. (Ic4933) - 이제
TalkBack
와 같은 접근성 서비스를 통해AnnotatedString
의UrlAnnotation
를 열 수 있습니다. 추가했습니다. (If4d82, b/253292081) - 소프트 키보드로 전송되기 전에 하드웨어 키를 가로채는 API를 추가했습니다. (I4f4c6, b/186800395)
- 텍스트 필드에
InsertTextAtCursor
시맨틱 작업을 추가했습니다. 추가했습니다. (I11ed5) - 이제 텍스트 관련 테스트 작업 (예:
performTextInput
)이 필드를 클릭하는 대신 시맨틱 작업을 사용하여 직접 포커스를 요청합니다. 추가했습니다. (I6ed05)
버그 수정
- 이제 텍스트 테스트 작업을 하려면 텍스트 필드를 사용 설정해야 합니다. 추가했습니다. (Iab328)
버전 1.5.0-alpha01
2023년 3월 22일
androidx.compose.ui:ui-*:1.5.0-alpha01
이 출시되었습니다. 버전 1.5.0-alpha01에 포함된 커밋을 확인하세요.
API 변경사항
- 이제 Modifier.MiddleLayout에 명시적인 LookaheadScope가 필요하지 않습니다. 중간 레이아웃의 측정 블록에는 편리한 CoroutineScope, LookaheadScope, MeasureScope를 제공하는 IntermediateMeasureScope가 수신기로 있습니다.(Ibe2e5)
- LookaheadLayout이 더 이상 레이아웃이 아닌 LookaheadScope로 대체되었습니다. 이렇게 하면 LookaheadScope의 차드 콘텐츠를 상위 요소의 MeasurePolicy에서 직접 제어할 수 있습니다. 추가했습니다. (Ibe2e5)
- Modifier.Node가 코루틴을 실행할 수 있도록
Modifier.Node#coroutineScope
를 추가합니다. 추가했습니다. (I76ef9) - CompositionLocalConsumerModifierNode 인터페이스를 구현하여 Modifier.Nodes가 CompositionLocals를 읽을 수 있도록 허용합니다. 추가했습니다. (Ib44df)
- @Deprecated 클래스를 속성에 전파 추가했습니다. (I882d1)
버전 1.4
버전 1.4.3
2023년 5월 3일
androidx.compose.ui:ui-*:1.4.3
이 출시되었습니다. 버전 1.4.3에 포함된 커밋을 확인하세요.
버그 수정
AndroidView
가 특정 수정자와 함께 사용될 때 올바르게 배치되지 않을 수 있는 문제를 수정했습니다. 추가했습니다. (I4dc77, b/274797771)DropDown
메뉴에 영향을 미치는 2D 포커스 검색의 버그를 수정했습니다. (b/276811828)- 람다가 처음 호출될 때만 들어가기/나가기 블록을 실행하던 맞춤 포커스 들어가기/나가기 속성의 버그를 수정했습니다. (b/277234245)
focusProperties
를 읽는 동안 비정상 종료를 일으키는 포커스 시스템의 회귀 문제를 수정했습니다. b/271324781 및 b/274897776을 참조하세요.
버전 1.4.2
2023년 4월 19일
androidx.compose.ui:ui-*:1.4.2
이 출시되었습니다. 버전 1.4.2에 포함된 커밋을 확인하세요.
버그 수정
AndroidView
가 수정자를 올바르게 재사용하지 않아 예기치 않은 동작 및 비정상 종료가 발생할 수 있는 문제를 수정했습니다. 추가했습니다. (Ib67ee, b/275919849)Dialog
컴포저블에서 만들지 않은 대화상자 내의 텍스트 필드에 키보드가 표시되지 않는 회귀 문제를 수정했습니다. (I82551, b/262140644)
버전 1.4.1
2023년 4월 5일
androidx.compose.ui:ui-*:1.4.1
이 출시되었습니다. 버전 1.4.1에 포함된 커밋을 확인하세요.
버그 수정
ParentDataModifier
가AndroidView
에 영향을 미치지 않는 문제를 수정했습니다. (b/274797771)
버전 1.4.0
2023년 3월 22일
androidx.compose.ui:ui-*:1.4.0
이 출시되었습니다. 버전 1.4.0에 포함된 커밋을 확인하세요.
1.3.0 이후 중요 변경사항
- 지연 목록 항목을 고정할 수 있는 새로운
PinnableContainer
API를 추가했습니다. 지연된 항목을 범위 밖으로 스크롤할 때 항목이 삭제되지 않습니다. 예를 들어Modifier.focusable()
은 이 메커니즘을 사용하여 현재 포커스가 설정된 항목을 고정합니다. (Ib8881, b/259274257, b/195049010) - 포커스 시스템은 새로운 실험용
Modifier.Node
API를 사용하여 다시 작성됩니다. (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589) - Surface의
IsContainer
시맨틱 속성을 추가했습니다. 이 속성은 나중에 노출 영역과 같은 요소의 시맨틱 의미를 기준으로 순회 순서를 결정하는 데에 사용됩니다. (I63379) - 새로운 접근성 역할
DropdownList
를 추가했습니다. 이는android.widget.Spinner
에 포커스를 둘 때TalkBack
의 동작을 복제하는 데 사용할 수 있습니다. (I177e5, b/236159001) - 이제
PlatformTextStyle(emojiSupportMatch)
를 사용하여 단일 단락에서 그림 이모티콘 지원 처리를 선택적으로 사용 중지할 수 있습니다. (Ia7100, b/139326806) - 이제 Android Compose UI 테스트가 프레임을 실행하여 유휴 상태가 될 때(예:
waitForIdle
을 통해) 각 프레임의 레이아웃 패스를 실행합니다. 이는 레이아웃 애니메이션의 개별 프레임에서 어설션하는 테스트에 영향을 미칠 수 있습니다. (I8ea08, b/222093277) - 텍스트를
Static(default)
또는 애니메이션으로 정의하기 위한 실험용TextMotion
을TextStyle
에 추가했습니다. 애니메이션을 통해 텍스트가 크기 조정되거나 변환되거나 회전되는 경우TextMotion.Animated
를 사용합니다. (I24dd7)
버전 1.4.0-rc01
2023년 3월 8일
androidx.compose.ui:ui-*:1.4.0-rc01
이 출시되었습니다. 버전 1.4.0-rc01에 포함된 커밋을 확인하세요.
API 변경사항
onReset
매개변수를 허용하는 구성 가능한AndroidView
함수의 오버로드를 추가했습니다. 이를 통해 컴포지션의 노드가 삭제되고 호환되는 방식으로 재사용될 때 View 인스턴스를 재사용할 수 있습니다. 뷰의LazyRows
및LazyColumns
에 특히 유용합니다. 추가했습니다. (I3f10d, b/230099236)- 플랫폼 API와 직접 통신하는 맞춤 텍스트 입력 구현을 빌드하기 위한 새로운 하위 수준
PlatformTextInputAdapter
API를 도입했습니다. 추가했습니다. (I58df4)
버그 수정
- 이제
BasicTextField
의SetText
시맨틱 작업이 IME 업데이트 및 테스트 함수 (예:performTextReplacement
)와 동일한 코드 경로를 사용하여 텍스트 버퍼를 업데이트합니다. - 텍스트 테스트 함수
performTextClearance
,performTextReplacement
,performTextSelection
는 이제SemanticsActions
를 사용합니다. 추가했습니다. (I0807d, b/269633168, b/269624358)
버전 1.4.0-beta02
2023년 2월 22일
androidx.compose.ui:ui-*:1.4.0-beta02
가 출시되었습니다. 버전 1.4.0-beta02에 포함된 커밋을 확인하세요.
API 변경사항
modifierElementOf()
API를 삭제했습니다.ModifierNodeElement
에서 직접 확장하세요. (I2256b)Layout
이 재사용되는 사례(예:LazyColumn
의 항목)를 적절하게 처리할 수 있도록 일부 로컬 상태를 재설정하는 새Modifier.Node.onReset()
콜백을 추가했습니다. 포커스 상태를 적절하게 재설정하도록FocusTargetModifierNode
를 수정했습니다. (I65495, b/265201972)- 캔버스에 텍스트를 그릴 때 여러 블렌딩 알고리즘이 지원되도록
DrawScope.drawText
,Paragraph.paint
,MultiParagraph.paint
메서드에BlendMode
매개변수를 추가했습니다. (I57508)
버그 수정
- 접근성 포커스 순서 알고리즘을 개선했습니다. 예를 들어 상단/하단 막대가 첫 번째/마지막 막대를 각각 더 자주 읽습니다. (74e9c5)
버전 1.4.0-beta01
2023년 2월 8일
androidx.compose.ui:ui-*:1.4.0-beta01
이 출시되었습니다. 버전 1.4.0-beta01에 포함된 커밋을 확인하세요.
API 변경사항
PinnableContainer.PinnedHandle.unpin()
의 이름을release()
로 바꾸었습니다. (I4667a)waitUntilNodeCount
,waitUntilAtLeastOneExists
,waitUntilExactlyOneExists
,waitUntilDoesNotExist
를ComposeTestRule
에 실험용 API로 추가하여 모든 매처와 노드 수를 허용하도록waitUntil
API를 확장했습니다. 자세한 내용은ComposeTestRule
을 참고하세요. (Ifa1b9, b/226934294)Font.MaximumAsyncTimeout
의 이름을Font.MaximumAsyncTimeoutMillis
로 바꿉니다. (I07af5)GoogleFont.Provider.AllFontsListUri
를 삭제하고 ktdoc로 연결했습니다. (I16f29)
버그 수정
AndroidFont.fontVariationSettings
문서를 추가합니다. (I7d9e2)
버전 1.4.0-alpha05
2023년 1월 25일
androidx.compose.ui:ui-*:1.4.0-alpha05
가 출시되었습니다. 버전 1.4.0-alpha05에 포함된 커밋을 확인하세요.
API 변경사항
CoroutineContext
매개변수를 허용하는runComposeUiTest
함수와create*ComposeRule
함수에 새로운 실험용 오버로드를 도입했습니다. 컨텍스트는 테스트 컴포지션 및 컴포지션의 모든LaunchedEffect
및rememberCoroutineScope()
호출에 사용됩니다. (I10614, b/265177763)- 1차원 속도를 추적하는 새 API를 추가했습니다. (If5a82)
- 이제
FocusRequester
가@Stable
로 표시됩니다. (I580ee) usePlatformDefaultWidth
매개변수를 사용하는DialogProperties
생성자에서 실험용 주석을 삭제합니다. (Ic4048)PathMeasure.getPosition()
및PathMeasure.getTangent()
를 사용하여 경로의 거리에서 계산 위치 및 탄젠트에 함수를 추가했습니다. (I3b47c)PlatformParagraphStyle
에 실수로 노출된 공개 setter를 삭제했습니다. (I07f47)- 인라인/지원 중단된 숨겨진 함수의 유형/null 허용 여부가 추가되었습니다. (I24f91)
- 할당이 0인 주석을 쿼리하도록
AnnotatedString.hasStringAnnotations
를 추가합니다. (I94dfe, b/246960758) String
을 텍스트로 가져오는TextMeasurer.measure
함수의 새 오버로드를 추가했습니다. (I47b2d, b/242705342)- TextStyle의
LineBreak
및Hyphens
API가 안정화 버전으로 전환되었습니다. (Ic1e1d)
외부 기여
TextInputSession
및TextInputService
의notifyFocusedRect
메서드가 다시 지원 중단되지 않습니다. (I23a04, b/262648050)
버전 1.4.0-alpha04
2023년 1월 11일
androidx.compose.ui:ui-*:1.4.0-alpha04
가 출시되었습니다. 버전 1.4.0-alpha04에 포함된 커밋을 확인하세요.
새로운 기능
- 지연 목록 항목을 고정할 수 있는 새로운
PinnableContainer
API를 추가했습니다. 지연된 항목을 범위 밖으로 스크롤할 때 항목이 삭제되지 않습니다. 예를 들어Modifier.focusable()
은 이 메커니즘을 사용하여 현재 포커스가 설정된 항목을 고정합니다. (Ib8881, b/259274257, b/195049010) - 포커스 시스템은 새로운 실험용
Modifier.Node
API를 사용하여 다시 작성됩니다. (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589) - Surface의
IsContainer
시맨틱 속성을 추가했습니다. 이 속성은 나중에 노출 영역과 같은 요소의 시맨틱 의미를 기준으로 순회 순서를 결정하는 데에 사용됩니다. (I63379) - 새로운 접근성 역할(
DropdownList
)을 추가했습니다. 이는android.widget.Spinner
에 포커스를 둘 때TalkBack's
동작을 복제하는 데 사용할 수 있습니다. (I177e5, b/236159001) - 이제
PlatformTextStyle(emojiSupportMatch)
를 사용하여 단일 단락에서 그림 이모티콘 지원 처리를 선택적으로 사용 중지할 수 있습니다. (Ia7100, b/139326806) - 이제 Android Compose UI 테스트가 프레임을 실행하여 유휴 상태가 될 때(예:
waitForIdle
을 통해) 각 프레임의 레이아웃 패스를 실행합니다. 이는 레이아웃 애니메이션의 개별 프레임에서 어설션하는 테스트에 영향을 미칠 수 있습니다. (I8ea08, b/222093277) - 텍스트를
Static(default)
또는 애니메이션으로 정의하기 위한 실험용TextMotion
을TextStyle
에 추가했습니다. 애니메이션을 통해 텍스트가 크기 조정되거나 변환되거나 회전되는 경우TextMotion.Animated
를 사용합니다. (I24dd7)
API 변경사항
- 다른
DrawScope
함수와 일치하도록drawText
의maxSize: IntSize
인수를size: Size
로 대체했습니다.size
는 기본적으로Size.Unspecified
로 설정되며 이전 기본 동작은 변경되지 않습니다. (Icd27d) - 지원 중단된 실험용 글꼴 생성자를 삭제했습니다. (I8a724, b/261435386)
- 이제 UI 도구 데이터 클래스
Group
에 그룹이 구성 가능한 인라인 함수 호출인지를 나타내는isInline
필드가 있습니다.isInline
이true
이면 구성 가능한 인라인 함수가 호출됩니다. 그러나 인라인 함수 정보를 생성하지 않는 Compose 컴파일러 플러그인 버전으로 컴파일된 모듈의 구성 가능한 인라인 함수 호출에 대한 값은 false일 수 있습니다. (Idb846) - 다수의 이전 실험용 API를 안정화 버전으로 전환했습니다.
- 이제 Rotary Scroll Event API가 안정화되었습니다. (I42ad3, b/261561229)
- 이제
FontVariation
API가 안정화되었습니다. (I8779f, b/241016309) - 이제 모든
Font()
생성자가 안정화된 API입니다. (I5948b, b/261435386) - 이제
DeviceFontFamilyName
이 안정화되었습니다. (I8b640, b/261435386) - 이제
variationSettings
가 있는AndroidFont
생성자가 안정화된 API이며 새로운 유형의 글꼴 설명자를 만드는 데 사용될 수 있습니다. (I5adcc, b/261565807) - 이제
createFontFamilyResolver
API가 안정화되었습니다. 이 API는 비동기식으로 글꼴을 로드하는 중에 포착되지 않은 예외를 포착하는 데 사용할 수 있습니다. (Ibb481, b/261435386) - 이제
Font.loadingStrategy
API가 안정화되었습니다. (I5937c, b/261435386) - 이제
GoogleFont
API가 안정화되었습니다. (Ic90b0, b/261435386) - 이제
TextUnit(float, TextUnitType)
은 안정화된 API입니다. (I90c84, b/261561612) - 이제
pluralStringResource
는 안정화된 API입니다. (I09849, b/261439703)
버전 1.4.0-alpha03
2022년 12월 7일
androidx.compose.ui:ui-*:1.4.0-alpha03
이 출시되었습니다. 버전 1.4.0-alpha03에 포함된 커밋을 확인하세요.
API 변경사항
PointerIcon
에서ExperimentalComposeUiApi
를 삭제했습니다. (I23af8)- 페이지 접근성 작업
PageUp
,PageDown
,PageLeft
,PageRight
를 도입했습니다. 이 작업은 API 29부터 사용할 수 있습니다. (Ida4ab) rememberNestedScrollConnection
매개변수 뷰를 루트 뷰에서 호스트 뷰로 업데이트했습니다. (Ia5200)- 쿼리 상위 항목 스크롤 정보에 Modifier API를 추가했습니다. (I2ba9d, b/203141462)
- 동작이 스크롤 이벤트가 될 가능성이 있는 경우 누르기 상호작용이 올바르게 지연되도록
Clickable
을 수정했습니다. Clickables
가Scrollable ViewGroup
내에서 사용될 때 물결 효과가 올바르게 지연되지 않는 문제를 수정했습니다.- 동작이 스크롤 이벤트가 될 가능성이 있는 경우 누르기가 올바르게 지연되도록 창 및 시트를 업데이트했습니다.
graphicsLayer
가 항상 중간 버퍼로 렌더링된다는 사실을 나타내기 위해CompositingStrategy.Always
의 이름을Offscreen
으로 바꿨습니다. (I47dc1)- 여러 콘텐츠 슬롯을 포함하는 레이아웃 오버로드가 안정화되었습니다. (I10566, b/248294649)
- 테스트 동작 및 성능을 검사하기 위해 Perfetto 트레이스(시스템 트레이스라고도 함)를 캡처하도록 새로운 실험용 API
PerfettoTrace.record {}
및PerfettoTraceRule
을 추가했습니다. (I3ba16) - Compose 규칙을 사용하는 UI 테스트에서,
withFrameNanos
콜백 중에 재개된 연속은 모든 프레임 콜백의 실행이 완료될 때까지 전달되지 않습니다. 이는 정상적으로 실행될 때의 Compose 동작과 일치합니다. 그러나 기존의 동작을 사용하는 테스트는 실패할 수 있습니다. 이는withFrameNanos
또는withFrameMillis
를 직접 호출하는 코드에만 영향을 미쳐야 하고 콜백 내부로 이동해야 할 수도 있는 이러한 함수에 전달되는 로직이 콜백 외부에 있어야 합니다. 예시를 보려면 이 CL의 애니메이션 테스트 변경사항을 참고하세요. withFrameNanos
콜백 후 호출자의 코루틴을 재개하기 전에 코드를 실행하도록TestMonotonicFrameClock
생성자 및 팩토리 함수에 선택적 매개변수onPerformTraversals: (Long) -> Unit
을 추가했습니다. (Idb413, b/254115946, b/222093277, b/255802670)- Compose에 EmojiCompat을 추가했습니다. (Ibf6f9, b/139326806)
- 동적 색상을 지원하기 위해
@Preview
에 새 배경화면 매개변수를 추가했습니다. (I9f512)
버그 수정
- 이제
Recomposer
가 변경사항 적용을 완료하면 스냅샷 적용 알림이 전송됩니다. (Iad6c0, b/222093277) - 멀티 윈도우 스크린샷을 캡처할 수 있도록
captureToImage
에 변경사항을 도입했습니다. 이는 Compose 팝업을 사용하는 스크린샷 테스트에 유용합니다. (I169c5)
종속 항목 업데이트
- 이제 Compose UI 및 Compose Material이 Lifecycle 2.5.1에 종속됩니다. (I05ab0, b/258038814)
버전 1.4.0-alpha02
2022년 11월 9일
androidx.compose.ui:ui-*:1.4.0-alpha02
가 출시되었습니다. 버전 1.4.0-alpha02에 포함된 커밋을 확인하세요.
API 변경사항
graphicsLayer
의 현재 크기를 노출하도록GraphicsLayerScope
를 업데이트했습니다. 이는 컴포저블 크기의 함수로graphicsLayer
변환을 계산하는 데 유용합니다. (If8c43,b/181387080)graphicsLayer
콘텐츠를 렌더링하기 위해 오프스크린 합성 레이어를 활용할 시점을 결정하는CompositingStrategy
를 도입했습니다. Auto는 알파가 적용되거나RenderEffect/Overscroll
인 경우 레이어를 내부적으로 활용하는 기본 동작을 유지합니다. Always는ModulateAlpha
가 오프스크린 버퍼를 활용하지 않고 대신graphicsLayer
내에서 기록된 각 그리기 명령을 조정하는 오프스크린 버퍼를 항상 도입합니다.ModulateAlpha
사용은 여전히RenderEffect/Overscroll
사용의 오프스크린 버퍼를 활용합니다. (I25e82, b/256382834)- 레이아웃 및 그리기의 전체 계층 구조를 무효화할 수 있도록
invalidateSubtree()
를Modifier.Node
에 추가했습니다. (I4bd90) rememberNestedScrollInteropConnection
을 안정화 버전으로 승격합니다. 루트 뷰를rememberNestedScrollInteropConnection
에 전달하는 기능을 도입했습니다. 이렇게 하면 특히 비표준 뷰(예:ModalBottomSheetDialog
)에서 맞춤 뷰가 스크롤 제약 조건에 더 잘 반응할 수 있습니다. (I9e107)- 이전에 읽은 값이 변경될 때 알림을 받아야 하는
Modifier.Node
구현에서 사용할 수 있는ObserverNode
인터페이스를 추가했습니다. (I5728b, b/247716483) - 네이티브
android.graphics.Paint
를 허용하는 새 생성자를Paint
에 추가했습니다. 기존 네이티브 Paint 객체를 Compose Paint로 변환하는 확장 함수toComposePaint()
도 추가했습니다. (Ica91b) - Android에서 사용할 새
FontFamily.Resolver.resolveAsTypeface
를 추가합니다. (I8950b) - 도구에서 컴포저블의 내부 상태를 변경할 수 있도록
ToolingState
를 추가합니다. (Ie6614) - 새로 추가된 애니메이션을 더 잘 지원하도록 도구를 리팩터링합니다. (I8677b)
- material 및 material3 텍스트
TextField
및OutlinedTextField
에minLines
매개변수를 추가했습니다. 이를 통해 구성요소의 최소 높이를 줄 수로 설정할 수 있습니다. (I4af1d)
버전 1.4.0-alpha01
2022년 10월 24일
androidx.compose.ui:ui-*:1.4.0-alpha01
이 출시되었습니다. 버전 1.4.0-alpha01에 포함된 커밋을 확인하세요.
API 변경사항
- 동작 감지기용 메서드
awaitEachGesture()
가 새로 추가되었습니다. 이 메서드는forEachGesture()
와 유사하게 작동하지만, 반복과 반복 사이에 이벤트가 손실되지 않도록 동작 루프가 전적으로AwaitPointerEventScope
내에서 작동합니다. forEachGesture()
로 인해 동작 간에 이벤트가 손실될 수 있으므로 이 메서드가 지원 중단되고awaitEachGesture()
로 대체되었습니다. (Iffc3f, b/251260206)- androidx에서 접근성 객체의 재사용이 지원 중단되었습니다. 지원되는 가장 오래된 버전에서도 성능상의 변화가 미미한 것으로 확인되었습니다. (I0a961)
- 윤곽선 텍스트 그리기를 지원하기 위해
TextStyle
및SpanStyle
에 실험용 속성으로DrawStyle
이 추가되었습니다. (If24b8, b/155421273) - 이제
AnnotatedString.Builder
가kotlin.text.Appendable
을 구현합니다. (I1a061, b/231030444) AnnotatedString.Builder
에AnnotatedString
의 하위 문자열 및 교차하는 스타일을 추가하는append(AnnotatedString, start: Int, end: Int)
메서드가 추가되었습니다.Paragraph
및MultiParagraph
페인트 함수에 윤곽선 텍스트 그리기를 지원하는DrawStyle
매개변수가 추가되었습니다. (Ic8102, b/155421273)
외부 기여
- 미리보기에 TV 기기를 추가해주신
vighnesh
님께 감사드립니다. (Ie15cd)
버전 1.3
버전 1.3.3
2023년 1월 11일
androidx.compose.ui:ui-*:1.3.3
이 출시되었습니다. 버전 1.3.3에 포함된 커밋을 확인하세요.
버그 수정
- 활동이 Compose View의 상태를 저장할 때 Android 9에서 가끔 발생하는 비정상 종료 문제를 해결했습니다. (I0b755, b/260322832)
버전 1.3.2
2022년 12월 7일
androidx.compose.ui:ui-*:1.3.2
가 출시되었습니다. 버전 1.3.2에 포함된 커밋을 확인하세요.
버그 수정
protobuf-javalite:3.19.4
에서 보안 알림이 발생하지 않도록 하는 Profobuf 3.21.8을 사용하도록 업데이트했습니다(CVE-2022-3171). (b/255545055)
버전 1.3.1
2022년 11월 9일
androidx.compose.ui:ui-*:1.3.1
이 출시되었습니다. 버전 1.3.1에 포함된 커밋을 확인하세요.
버전 1.3.0
2022년 10월 24일
androidx.compose.ui:ui-*:1.3.0
이 출시되었습니다. 버전 1.3.0에 포함된 커밋을 확인하세요.
1.2.0 이후 중요 변경사항
- 새로운 실험용 API 모음
LookaheadLayout
(이전에 가능하지 않았던 애니메이션 동작 지원) - 새로운 실험용 API 모음
Modifier.Node
(Modifier.composed
의 고성능 대안) - 창 인셋 지원이 개선되었습니다.
- LazyLists의 D패드 및 하드웨어 키보드를 위한 포커스 지원.
- 대화상자와 팝업에서 지원되는 고도가 8dp로 감소했습니다(일부 맞춤 디자인 시스템의 동작 브레이킹 체인지 - 근거는 beta01 출시 노트 참고).
- 브레이킹 체인지 없는 사소한 API 개선 다수
- 여러 가지 버그 수정 및 성능 개선
버전 1.3.0-rc01
2022년 10월 5일
androidx.compose.ui:ui-*:1.3.0-rc01
이 출시되었습니다. 버전 1.3.0-rc01에 포함된 커밋을 확인하세요.
API 변경사항
- Text에서 자동 하이픈 연결을 지원하는 새로운 실험용 API 하이픈을 추가했습니다. (Iaa869)
버그 수정
DeviceFontFamilyName
글꼴은 기본적으로wght
및ital
변형 설정을 구성하지 않으며, 대신 로드된Typeface
에 플랫폼 설정을 사용합니다. (Ia7a6d, b/246989332)LazyColumn
메모리 누수를 수정했습니다. 수정자가 재사용될 때onModifierLocalsUpdated
가 기본값을 사용하여 호출되지 않고 있었습니다. (b/230168389)
버전 1.3.0-beta03
2022년 9월 21일
androidx.compose.ui:ui-*:1.3.0-beta03
이 출시되었습니다. 버전 1.3.0-beta03에 포함된 커밋을 확인하세요.
API 변경사항
- Text에서 줄바꿈을 맞춤설정하는 옵션을 추가합니다. (I86907)
- 최소 너비 제약 조건을 지원하기 위해
TextMeasurer.measure
메서드의size:IntSize
인수를constraints: Constraints
로 변경했습니다. (I37530, b/242707525)
버그 수정
- 이제 AndroidX 활동의
BackHandler
API가Dialog
컴포저블 내에서 작동합니다. (I35342)
버전 1.3.0-beta02
2022년 9월 7일
androidx.compose.ui:ui-*:1.3.0-beta02
가 출시되었습니다. 버전 1.3.0-beta02에 포함된 커밋을 확인하세요.
API 변경사항
- 여러 컴포저블 콘텐츠 람다 목록을 허용하는 레이아웃에 대한 실험용 오버로드를 추가했습니다. 이를 통해 다른 콘텐츠 람다에 투입된 측정 항목을 다르게 처리할 수 있습니다. (Ic1b4e)
실험용 Focus API 변경사항:
FocusDirection.In
및FocusDirection.Out
이 지원 중단되고FocusDirection.Enter
및FocusDirection.Exit
으로 대체되었습니다. (Ia4262, b/183746982)FocusManager.moveFocus(Enter)
및FocusManager.moveFocus(Exit)
의 맞춤 동작을 지정하기 위해 두 개의 새로운 포커스 속성 들어가기와 나가기 작업을 추가했습니다. (I5f3f9, b/183746982)- 이제
FocusRequester.Cancel
을 사용하여 포커스 이동을 취소할 수 있습니다.FocusRequester.Cancel
은 위, 아래, 왼쪽, 오른쪽, 다음, 이전, 시작, 끝, 들어가기, 나가기와 같은 포커스 속성에서 사용할 수 있습니다. (Ib300f)
버전 1.3.0-beta01
2022년 8월 24일
androidx.compose.ui:ui-*:1.3.0-beta01
이 출시되었습니다. 버전 1.3.0-beta01에 포함된 커밋을 확인하세요.
수정자 노드 리팩터링
Modifier/Modifier.Element
인스턴스를 처리하고 LayoutNodes
에서 동작을 조정하는 레이어가 대부분 리팩터링되었습니다. 리팩터링은 Compose에 있는 많은 수정자의 공개 API에 영향을 미치지 않았으며 구현 전용 변경사항으로 볼 수 있습니다. 하지만 이 변경사항은 여러 가지 이유로 중요합니다. (Ie4313)
변경사항 요약
추가된 실험용 Modifier.Node
API는 레이아웃 노드의 수명 주기와 함께 유지되고 이를 생성한 해당 Modifier.Element
의 레이아웃 노드 및 사용량별로 할당되는 인스턴스에서 상태를 유지할 수 있는 추상화를 제공합니다.
일반적으로 이 추상화는 Modifier.composed
API의 메커니즘에 의존하지 않고 스테이트풀(Stateful) 수정자를 생성하는 대체 메커니즘을 제공합니다.
위험
이 변경사항은 이전 버전과 엄격하게 바이너리 호환되며 실용적이고 합리적인 한 관찰 가능한 동작 측면에서 이전 버전과 호환됩니다. 그렇지만 이 리팩터링의 영향을 받지 않은 Compose의 하위 시스템은 거의 없으며 테스트에서 다루지 않았고 아직 발견되어 수정되지 않은 방식으로 동작이 변경되었을 가능성이 높습니다.
주의해서 이 버전으로 업그레이드하세요. 문제가 있다고 생각되면 Google에 알려주시기 바랍니다.
실험용 API
모두 '수정자 노드'라는 새로운 개념과 관련된 여러 실험용 API가 추가되었습니다. Modifier.Node는 다음의 결과로 만들어집니다.
fun modifierElementOf(…): Modifier
abstract class ModifierNodeElement
abstract class Modifier.Node
abstract class DelegatingNode
interface LayoutModifierNode
interface DrawModifierNode
interface SemanticsNode
interface PointerInputNode
interface ModifierLocalNode
interface ParentDataModifierNode
interface LayoutAwareModifierNode
interface GlobalPositionAwareModifierNode
interface IntermediateLayoutModifierNode
동작 브레이킹 체인지
대화상자 및 팝업에서 지원되는 최대 높이가 8dp로 줄었습니다.
Compose 대화상자 및 팝업에서 지원되는 최대 높이가 30dp에서 8dp로 줄었습니다. 이 변경사항은 머티리얼과 UI 맞춤 대화상자 및 팝업에 모두 영향을 미칩니다. 이 변경사항의 목적은 Android S 미만 버전에서의 접근성 버그를 완화하고, 이러한 창 내의 접근성 서비스가 대화상자나 팝업 내부의 콘텐츠와 상호작용할 수 있도록 보장하는 것입니다.
높이가 8dp보다 높은 수준으로 설정된 맞춤 대화상자나 팝업 구현을 만드는 경우에만 이번 변경사항의 영향을 받습니다. 대화상자 또는 팝업의 높이를 낮춰 보세요. 이 새로운 동작을 선택 해제해야 하는 경우 원하는 높이로 설정된 자체 대화상자 또는 팝업을 포크하는 것을 고려해 보세요. 접근성에 부정적인 영향을 미칠 수 있으며 접근성 서비스에서 대화상자나 팝업의 하단 부분을 조작하고 읽을 수 있도록 하는 것은 개발자의 책임이므로 권장되지 않습니다.
API 변경사항
painterResource
가 구성 변경 시 업데이트되지 않는 문제를 수정했습니다. (I58e73, b/228862715)rememberTextMeasurer
가 더 이상FontFamily.Resolver
또는Density
,LayoutDirection
매개변수를 사용하지 않습니다. 이러한 매개변수에 맞춤 값을 제공하려면TextMeasurer
생성자를 사용하세요. (Ia1da3)- 대화상자에서
WindowInsets
를 지원할 수 있도록DialogProperties.decorFitsSystemWindows
속성을 추가했습니다. (I57742, b/229378542) - 바이너리 호환성을 유지하기 위해 글꼴 생성자를 원래 kotlin 파일로 다시 이동했습니다. 마지막 공개 버전에서 변경된 사항이 없습니다. (Ieb2f3)
- 여러 등호 정의에서 불필요한 연산자를 삭제했습니다. 이는 아무 효과가 없습니다. (I6c309)
FontVariation.Setting
이 향후 클램핑 API를 허용하는 봉인 인터페이스입니다. (I11021, b/143703328)CompositionGroup.findParameters
를SlotTree.kt
에 추가합니다. 이를 통해 도구가 전체 슬롯 표를 파싱할 필요 없이CompositionGroup
의 매개변수를 검색할 수 있습니다. (I124fe)
버전 1.3.0-alpha03
2022년 8월 10일
androidx.compose.ui:ui-*:1.3.0-alpha03
이 출시되었습니다. 버전 1.3.0-alpha03에 포함된 커밋을 확인하세요.
API 변경사항
- 이제
LayoutCoordinates.findRootCoordinates()
가 공개됩니다. (I7fa37, b/204723384) PlacementScope
에LayoutCoordinates
를 가져오는 실험용 API를 추가했습니다. 개발자는 이 API를 사용해 현재 레이아웃의 위치를 기준으로 하위 요소를 어디에 배치할지 알 수 있습니다. (I5482b, b/238632578)- 하나의
LayoutCoordinates
에서 다른 항목으로 매트릭스 변환을 가져오는LayoutCoordinates.transformFrom
을 추가했습니다. (Ic5ab1, b/238632578) SemanticsModifier.id
를 지원 중단하고 대신 시맨틱 ID를LayoutInfo.semanticsId
로 이동했습니다. (Iac808, b/203559524)- 이제 API 수준 26 이상의 리소스 글꼴에서 글꼴 변형 설정을 지원합니다. (I900dd, b/143703328)
DeviceFontFamilyNameFont
에서 가변 글꼴을 지원합니다. (Ic1279, b/143703328)- 이제 글꼴 생성자가 O+ 기기에서 가변 글꼴을 구성하기 위해
FontVariation.Setting
목록을 허용합니다. (I11a9d, b/143703328) - 가변 글꼴을 정의하고 사용하기 위한
FontVariation
API를 추가했습니다. (I3c40c, b/143703328) - 이제
LineHeightStyle.Alignment
생성자가 공개됩니다(실험용). (I4bbbe, b/235876330) - 이제 Paragraph가 예상/실제이며 Android 및 데스크톱에서 정의됩니다. (Id387e, b/239962983)
- 이제 인터페이스 Paragraph가 봉인됩니다. Paragraph를 서브클래스로 분류하는 사용 사례는 없으며, 이 변경사항이 본인에게 영향을 주는 경우 Google에 문의해 주시기 바랍니다. (If5247, b/239962983)
PlatformTextStyle
및LineHeightStyle
에서 실험용 주석을 삭제했습니다. (I64bef)TextInputService.show|hideSoftwareKeyboard
가 지원 중단되었습니다. 대신 앱 코드에서는SoftwareKeyboardController
를, IME 관리 코드에서는TextInputSession
을 (I14e4c, b/183448615)- 기존 애니메이션 유형을 위한 새로운 API를 추가했습니다. (I26179)
버그 수정
- SDK 33 이상에서
POST_NOTIFICATIONS
권한을 부여해야 하는 API에@RequiresPermission
이 추가되었습니다. (Ie542e, b/238790278)
버전 1.3.0-alpha02
2022년 7월 27일
androidx.compose.ui:ui-*:1.3.0-alpha02
가 출시되었습니다. 버전 1.3.0-alpha02에 포함된 커밋을 확인하세요.
API 변경사항
- 압력을 검색하는 새 속성
PointerInputChange#pressure
를 추가했습니다. (I45a5e, b/205164819) - 컴포지션에서
TextMeasurer
인스턴스를 쉽게 만들고 기억하는rememberTextMeasurer
를 추가했습니다. (I8d66e) Rect
,RoundRect
,MutableRect
가 이제contains
함수를 호출하는 Kotlinin
문법을 지원합니다. (Ie42b0, b/238642990)KeyInjectionScope
에서 불필요한 함수를 삭제합니다. API의 더 간단한 부분으로 쉽게 구현할 수 있기 때문입니다. 삭제된 함수에는pressKeys
,keysDown
,keysUp
이 포함됩니다. (I81d77)KeyInjectionScope
의 상수 및 매개변수 이름을 리팩터링하여 해당 상수 및 매개변수 단위가 밀리초인 접미사 'Millis'를 포함합니다. (Iabef5)- 텍스트 수정 문제를 해결하는 데 도움이 되도록
toStringForLog()
메서드를EditCommand
에 추가했습니다. (I53354, b/228862731) Canvas
및drawBehind
와 같은DrawScope
에서 작동하는 컴포저블과 수정자 위에서 다양한 스타일의 텍스트를 그리는 방법을 제공하기 위해DrawScope
에drawText
확장 함수를 추가했습니다. (I16a62, b/190787898)- Compose 런타임과 별개로
BasicText
와 동일한 결과를 생성하는 임의의 텍스트 레이아웃 계산을 지원하는TextMeasurer
라는 새로운 실험용 API를 도입합니다. (I17101) mapTree
를SlotTree.kt
에 추가합니다. 이를 통해 도구는 asTree와 같이 먼저 메모리 내에서 복사하지 않고도SlotTree
를 검사할 수 있습니다. Layout Inspector의 경우 성능이 약 10배 향상됩니다. (I5e113)- 개발자가 라이브러리에서
MultiPreview
주석을 작성하고 재사용할 수 있도록 Compose 미리보기를 변경하여 바이너리 출력 파일에 저장되도록 했습니다. (I85699, b/233511976)
버그 수정
Velocity
Tracker에InputEventChange
이벤트를 추가할 때 이제 위치 대신 델타를 고려하므로 타겟 요소가 이동하더라도 모든 사례에서 속도가 올바르게 계산됩니다. (Icea9d, b/216582726, b/223440806, b/227709803)- 주석이 있을 때
AnnotatedString.toUpperCase
로 인해 발생하는 NPE를 수정했습니다. (I0aca2, b/210899140)
버전 1.3.0-alpha01
2022년 6월 29일
androidx.compose.ui:ui-*:1.3.0-alpha01
이 출시되었습니다. 버전 1.3.0-alpha01에 포함된 커밋을 확인하세요.
API 변경사항
- 실제 측정/레이아웃 전에 전방 탐색 패스를 지원하는 새
LookaheadLayout
을 추가했습니다. 이를 통해 레이아웃이 변경될 때 레이아웃을 사전에 계산할 수 있는 반면 사후 전방 탐색 측정/레이아웃을 허용하여 사전 계산된 크기/위치를 사용하면 타겟에 대한 크기와 위치에 애니메이션을 적용할 수 있습니다.SubcomposeLayouts
는 아직 지원되지 않지만, 향후 출시될 예정입니다. (I477f5) - 전체
Text
의 불투명도를 수정하기 위해TextStyle
과SpanStyle
의 브러시 버전을 선택적 알파 매개변수에 추가합니다. (Ic2fac, b/234117635) AnnotatedString
에TalkBack
링크 지원을 위해UrlAnnotation
주석 유형과 관련 메서드를 도입했습니다. (I1c754, b/231495122)- 유틸리티 함수를 런타임으로 이동했습니다. (I4f729)
버그 수정
TextLayoutResult.getLineForOffset
에서 예외가 발생하지 않습니다. (Idc5d6, b/235876324)
외부 기여
- 구성 가능한 함수 내에서 또는 snapshotFlow를 통해 상태를 관찰하는 새 API
WindowInfo.keyboardModifiers
를 추가했습니다. (Icdb8a)
버전 1.2
버전 1.2.1
2022년 8월 10일
androidx.compose.ui:ui-*:1.2.1
이 출시되었습니다. 버전 1.2.1에 포함된 커밋을 확인하세요.
버그 수정
- 검사기의 nullpointer를 수정했습니다. (b/237987764)
- 검사기에서 remember 도중 클래스 변환 예외를 수정했습니다. (b/235526153)
버전 1.2.0
2022년 7월 27일
androidx.compose.ui:ui-*:1.2.0
이 출시되었습니다. 버전 1.2.0에 포함된 커밋을 확인하세요.
1.1.0 이후 중요 변경사항
포커스 순회 개선:
- 이제 새로운
BeyondBoundsLayout
핵심 API를 사용하여 Lazy 목록의 포커스 기반 스크롤이 작동합니다. FocusOrder
및FocusProperties
의 새로운 동작 맞춤설정 API- 물리적 키보드 또는 TV 리모컨을 사용한 동작 개선
- 이제 새로운
새로운 API:
- 창 인셋
- 동작 기반, 무한, 레이아웃 애니메이션의 핵심 프리미티브
GraphicsLayer
기능(RenderEffect
포함)
여러 가지 버그 수정 및 성능 개선
버전 1.2.0-rc03
2022년 6월 29일
androidx.compose.ui:ui-*:1.2.0-rc03
이 출시되었습니다. 버전 1.2.0-rc03에 포함된 커밋을 확인하세요.
- 1.2.0-rc02 이후 변경사항 없음
버전 1.2.0-rc02
2022년 6월 22일
androidx.compose.ui:ui-*:1.2.0-rc02
가 출시되었습니다. 버전 1.2.0-rc02에 포함된 커밋을 확인하세요.
버전 1.2.0-rc01
2022년 6월 15일
androidx.compose.ui:ui-*:1.2.0-rc01
이 출시되었습니다. 버전 1.2.0-rc01에 포함된 커밋을 확인하세요.
API 변경사항
- Compose 라이브러리의 인터페이스는 이제 jdk8 기본 인터페이스 메서드를 사용하여 빌드됩니다. (I5bcf1)
- 다른 키를 길게 누르거나 켜는 동안 키 누름을 삽입할 수 있도록 고차 함수를
KeyInjectionScope
에 추가했습니다. 이러한 함수에는withKeysDown
,withKeysToggled
등이 포함됩니다. 또한, 특정 메타 키가 눌렸는지 확인하는 속성도 추가되었습니다(예: 제어 키가 눌렸는지 확인하는isCtrlDown
). 각 함수에 관한 문서는KeyInjectionScope
를 참고하세요. (I9f6cd, b/229831515) - 맞춤 오버스크롤 효과를 허용하는
Modifier.scrollable
오버로드와 함께 맞춤 오버스크롤 효과가 가능한 실험용OverscrollEffect
가 도입되었습니다. - 실험용
LocalOverScrollConfiguration
이foundation.gesture
에서 기초 패키지로 이동되었으며 이름이LocalOverscrollConfiguration
으로 바뀌었습니다. (If19fb, b/204650733) runComposeUiTestWithoutActivity {}
의 이름을runEmptyComposeUiTest {}
로 바꿉니다. 이렇게 하면 이름이createEmptyComposeRule()
에 맞춰집니다. (I6fed7)
버전 1.2.0-beta03
2022년 6월 1일
androidx.compose.ui:ui-*:1.2.0-beta03
이 출시되었습니다. 버전 1.2.0-beta03에 포함된 커밋을 확인하세요.
API 변경사항
pressKeyTimes
와isCapsLockOn
, 친구를KeyInjectionScope
에 추가했습니다. 또한 이 API는 이제 마우스와 키보드가 결합된 삽입 패턴을 지원합니다(예: 메타 키를 누른 상태에서 마우스 버튼을 클릭). (I4c8da, b/229831515)- 키 이벤트 삽입을 위한 실험용 지원을 추가했습니다.
performKeyInput
을 사용하여 키 이벤트를 전송하거나performMultiModalInput
을 사용한 다중 모달 입력 동작 중에MultiModalInjectionScope
의key
속성을 통해 키 이벤트를 전송합니다. API 문서는KeyInjectionScope
을 참고하세요. (Ic5000, b/229831515) - Android에서 지원하는 Google Fonts의 표준 인터넷 소스를 가져오기 위한 새
GoogleFont.Provider.AllFontsListUri
를 추가합니다. - GoogleFonts가 Compose에서 로드되지 않을 때 다시 발생하는 오류 메시지를 개선합니다. (I0416c)
버그 수정
- Velocity Tracker에
InputEventChange
이벤트를 추가할 때 이제 위치 대신 델타를 고려하므로 타겟 요소가 이동하더라도 모든 사례에서 속도가 올바르게 계산됩니다. (I51ec3, b/216582726, b/223440806, b/227709803) - 이제 활동을 나갔다가 다시 들어가지 않아도 빠른 설정 타일에서 전환한 직후 컴포저블에
Show Layout Bounds
설정이 적용됩니다. (I843d5, b/225937688) - 접근성 문자열 조회 시 글꼴 로드가 트리거되지 않습니다. 이전에는
StyleSpans
글꼴을 로드하려고 했으므로FontFamily.Resolver
를 덮어쓴 경우 비정상 종료가 발생했습니다. (I4609d) - 커서가 텍스트 필드 끝에 있을 때 앞으로 삭제 키를 눌러도 더 이상 다운되지 않습니다.
- 이제
DeleteSurroundingTextCommand
와DeleteSurroundingTextInCodePointsCommand
는 생성자 인수가 음수가 아니어야 합니다. (Ica8e6, b/199919707)
버전 1.2.0-beta02
2022년 5월 18일
androidx.compose.ui:ui-*:1.2.0-beta02
가 출시되었습니다. 버전 1.2.0-beta02에 포함된 커밋을 확인하세요.
API 변경사항
- 다른 미리보기 유형에서 기능을 재사용합니다. (I19f39)
버그 수정
- 단순히 폐기되지 않을 때가 아니라 폐기될 때를 더 잘 반영하기 위해
ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer
의 이름을DisposeOnDetachedFromWindowOrReleasedFromPool
로 바꾸었습니다. (If15ca)
버전 1.2.0-beta01
2022년 5월 11일
androidx.compose.ui:ui-*:1.2.0-beta01
이 출시되었습니다. 버전 1.2.0-beta01에 포함된 커밋을 확인하세요.
새로운 기능
- 이 출시는 1.2의 첫 번째 베타 버전입니다.
API 변경사항
- 표시 가능한 범위를 넘어 항목을 배치할 때
LazyList
의 맞춤 구현에서 사용할 수 있는 실험용BeyondBoundsInterval
을 추가했습니다. (Ifabfb, b/184670295) - 이제
Modifier.composed
의 키가 지정된 버전이 안정적인 API입니다. (Ie65e4, b/229988420) - 컴포지션 로컬을 사용하여 현재 뷰 정보를 가져오도록
rememberNestedScrollConnection
API를 단순화했습니다. (I67ca7) - 이제
@ComposableTarget
주석과@ComposableTargetMarker
로 표시된 주석을@file
접두사를 사용하여 파일 범위에서 사용할 수 있습니다. 파일 범위에서 타겟 주석을 사용하면 컴파일러는 파일의 모든 구성 가능한 함수가 연결된 Applier를 타겟팅한다고 가정하게 됩니다. 예를 들어@file:UiComposable
을 사용하면 모든@Composable
함수가 Compose UI Applier를 타겟팅한다고 선언합니다. 다른 Applier를 타겟팅해야 하는 함수는 원하는 Applier에 맞는 타겟 마커 주석을 명시적으로 제공해야 합니다. (I40804) 플랫폼에 독립적인 새 실험용 테스트 API
interface ComposeUiTest
와fun runComposeUiTest(block: ComposeUiTest.() -> Unit)
을 도입했습니다. 이 API는TestRule
이 없어도 Compose UI 테스트를 실행하는 데 사용할 수 있습니다.ComposeTestRule
없이 테스트를 실행하려면 테스트를runComposeUiTest
에 람다로 전달하고 수신기 범위ComposeUiTest
의 메서드와 멤버를 사용합니다. 이는ComposeContentTestRule
의 메서드 및 멤버와 동일합니다.Android 전용
interface AndroidComposeUiTest
및fun runAndroidComposeUiTest(block: AndroidComposeUiTest.() -> Unit)
이 추가되어AndroidComposeTestRule
과 마찬가지로 기본 활동에 액세스할 수 있습니다. 더 세밀한 관리를 위해class AndroidComposeUiTestEnvironment
를 직접 인스턴스화할 수 있습니다.데스크톱 구현은
class DesktopComposeUiTest
이지만, 현재 데스크톱 전용 실행 함수는 제공되지 않습니다.테스트를
ComposeTestRule
에서ComposeUiTest
로 이전하려면 이 Android 예와 같이 하면 됩니다. 이전하기 전:@RunWith(AndroidJUnit4::class) class MyTest { @get:Rule val rule = createComposeRule() @Test fun test() { rule.setContent { Text("Hello Compose!") } rule.onNodeWithText("Hello Compose!").assertExists() } }
이전한 후:
@RunWith(AndroidJUnit4::class) class MyTest { @Test @OptIn(ExperimentalTestApi::class) fun test() = runComposeUiTest { setContent { Text("Hello Compose!") } onNodeWithText("Hello Compose!").assertExists() } }
현재
ComposeContentTestRule
및ComposeTestRule
은ComposeUiTest
에서 확장되지 않습니다. 즉,ComposeUiTest
의 확장 함수는 아직TestRule
인터페이스에서 호출할 수 없습니다.ComposeUiTest
가 안정화 API로 전환되면ComposeContentTestRule
과ComposeTestRule
이ComposeUiTest
에서 확장되어 변경됩니다. (Ib4e90)LineHeightBehavior
의 이름을LineHeightStyle
로 바꿨습니다.LineVerticalAlignment
의 이름을LineHeightStyle.Alignment
로 바꿨습니다.LineHeightTrim
의 이름을LineHeightStyle.Trim
으로 바꿨습니다.LineHeightStyle
의 기본 생성자 값을 삭제했습니다. (I582bf, b/181155707)TextStyle
및SpanStyle
에Brush
를 추가하여 그라데이션 색으로 텍스트를 그리는 방법을 제공합니다. (I53869, b/187839528)LineHeightBehavior
의trimFirstLineTop
,trimLastLineBottom
속성을 단일 enum(LineHeightTrim
)으로 변경했습니다.LineHeightTrim
에는 2개의 불리언으로 정의된 4개의 상태 값(FirstLineTop
,LastLineBottom
, 모두, 모두 아님)이 있습니다. (Ifc6a5, b/181155707)LineHeightBehavior
가TextStyle
및ParagraphStyle
에 추가되었습니다.LineHeightBehavior
는 줄 높이를 첫 번째 줄의 상단과 마지막 줄의 하단에 적용할지를 제어합니다. 또한,TextStyle(lineHeight)
에서 제공하는 공간의 선 정렬도 정의합니다.예를 들어,
LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false)
를 통해 CSS가 정의한 것과 비슷한 동작을 가져올 수 있습니다.trimFirstLineTop
,trimLastLineBottom
구성은includeFontPadding
이 false인 경우에만 올바르게 작동합니다. (I97332, b/181155707)PlatformParagraphStyle.lerp
및PlatformSpanStyle.lerp
함수가 최상위 함수로 변경되었습니다. (I9a268)
버그 수정
- 이제
PointerInputChange::copy
문서가 단순 복사본임을 올바르게 표시합니다. (I182f5) - 높이가 제한되고 모든 텍스트 줄이 담기지 않는 경우 생략 부호를 지원합니다. (Ie528c, b/168720622)
- 기본
includeFontPadding
을 사용 설정했습니다.TextStyle.platformTextStyle
속성을 사용하여includeFontPadding
을 사용 중지할 수 있습니다. 조만간 기본 동작을 변경할 예정이지만 그때까지는 이 방법을 사용하여 줄 높이 개선사항을 더 원활하게 통합하고(aosp/2058653)TextField
클리핑 문제를 해결할 수 있습니다. (I01423, b/171394808)
외부 기여
- 이제 세로로 스크롤하면 Android에서
MouseInjectionScope.scroll(delta = someDelta)
가 반전됩니다(someDelta가 양수이면 아래로 스크롤됨). (Ifb697, b/224992993)
버전 1.2.0-alpha08
2022년 4월 20일
androidx.compose.ui:ui-*:1.2.0-alpha08
이 출시되었습니다. 버전 1.2.0-alpha08에 포함된 커밋을 확인하세요.
API 변경사항
- 발전을 통해 향후 국제화 과정을 제대로 지원할 수 있도록
pluralStringResource
함수를 실험용으로 표시했습니다. (If24e4) - 이제 Paragraph 및 MultiParagraph에서 Constraints 매개변수를 허용합니다.
Constraints.maxHeight
를 전달하는 것은 현재 작동하지 않지만 나중에 높이를 기준으로 줄임표를 추가하는 등 일부 계산이 가능해집니다. (I6afee, b/168720622) - 이제
SubcomposeSlotReusePolicy.getSlotsToRetain()
이 내부에 새 항목 추가를 허용하지 않는 맞춤 MutableSet 같은 클래스를 허용합니다. (Icd314) - 이제 PointerIcon이
@Stable
인터페이스입니다. (I9dafe) PointerInputChange
에서 부분 소비(아래쪽 OR 위치)를 지원 중단했습니다.consume()
을 사용하여 변경사항을 완전히 사용할 수 있습니다.isConsumed
를 사용하여 다른 사용자가 이전에 변경사항을 사용했는지 확인할 수 있습니다.- 이제
PointerInputChange::copy()
가 항상 얕은 복사본을 만듭니다. 즉, 사본 중 하나가 소비되면PointerInputChange
의 사본이 사용됩니다. 결합되지 않은PointerInputChange
를 만들려면 생성자를 대신 사용하세요. (Ie6be4, b/225669674) - Compose > View 방향으로 Compose와 View 간의 중첩 스크롤 상호 운용성을 사용 설정합니다. 즉, Compose 상위 요소가 중첩 스크롤 뷰에서 중첩 스크롤 델타를 수신할 수 있습니다. (If7949, b/174348612)
- 새로운
SemanticsProperty testTagsAsResourceId
를 Compose가 뷰 시스템용으로 설계된 UIAutomator 테스트를 준수하도록 하는 데 사용할 수 있습니다. (I39c20) FontFamily.SansSerif
를 사용할 때 Android의 시스템 글꼴에 사용 가능한 모든 가중치를 표시합니다. 이렇게 하면 API 21~28에서 내부적으로 sans-serif-medium 같은 대체 글꼴 이름이 사용됩니다. 이는 동작 변경사항입니다. 이전에는 API 21~28에서 가중치 400과 700만 지원되었기 때문입니다. (I380fe, b/156048036, b/226441992)- Paragraph 및 Multiparagraph 지시자가 위치 인수를 선택적 인수 앞에 재정렬했습니다. (Idafaa)
- 이제
AndroidFont
가 typefaceLoader를 생성자 매개변수로 사용합니다. (I2c971)
버전 1.2.0-alpha07
2022년 4월 6일
androidx.compose.ui:ui-*:1.2.0-alpha07
이 출시되었습니다. 버전 1.2.0-alpha07에 포함된 커밋을 확인하세요.
API 변경사항
- 새 함수
Snapshot.withoutReadObservation { ... }
을 추가했습니다. 이를 통해 사용자는 이 블록 중에 읽은 상태 값의 변경사항을 구독하지 않고 전달된 람다를 실행할 수 있습니다. 스냅샷 기반 스레드에서 안전하게 읽고 쓸 수 있는 이점을 원하지만 불필요한 재구성 또는 재측정을 유발하지 않고 값을 읽고자 하는 사용 사례에 유용할 수 있습니다. (I9f365, b/214054486) - 개발자는
ComposeView
의consumeWindowInsets
확장 속성을 사용하여 AndroidWindowInsets
사용을 중지할 수 있습니다. 이렇게 하면 계층 구조에 있는 별도의ComposeViews
가 서로 간섭하지 않고 각각WindowInsets
를 적용할 수 있습니다. (I0ef08, b/220943142) - IME에 소수 구분자를 특별히 포함하기 위해
Keyboard.Number
의 대안으로KeyboardType.Decimal
을 추가했습니다. (Iec4c8, b/209835363) PointerEventType.Scroll
및PointerEvent.scrollDelta
는 이제 안정적인 API입니다. (I574c5, b/225669674)- 뷰 클래스 협력을 위해 View와 Compose 간의 중첩 스크롤 상호 운용성을 사용 설정합니다. 즉, Compose가 이제 스크롤 델타를 (협력하는) 뷰 상위 요소로 전달할 수 있습니다. (I5d1ac, b/174348612)
- 시스템 전체의 텍스트 굵게 표시 접근성 설정을 통합하도록
FontFamily.Resolver
를 업데이트했습니다. (I6c1e7) Font(AssetManager, String, ...)
를 지원 중단하고Font(String, AssetManager, ...)
로 대체했습니다. 이는 실험용 API입니다. (I1c7a4)- 글꼴 대체 체인 중에 시스템에서 설치된 글꼴을 선택적으로 조회할 수 있는 새로운 글꼴 설명자
Font(DeviceFontFamilyName)
를 추가합니다. (I30468, b/219754572) - TextStyle/ParagraphStyle에
includeFontPadding
의 임시 호환성 구성을 추가했습니다.includeFontPadding
은TextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false))
을 통해 변경할 수 있습니다. 이는 이전을 사용 설정하기 위한 임시 구성 옵션이며 삭제됩니다. (If47be, b/171394808) - 디버깅 도움말을 위해
GoogleFont.Provider.isAvailableOnDevice
확장 프로그램을 추가합니다. (I64e31) @ArrayRes
와 함께 사용할GoogleFont.Provider
생성자를 추가합니다. (Ic5ee1, b/225984280)Compose GoogleFont
가 이제Font(GoogleFont)
이며 그 외의 경우 API가 안정적으로 유지됩니다. (I125f2)
버그 수정
- 내부 패딩이 사용되도록 린트 검사를 material/Scaffold에 추가했습니다. (Ifb111)
버전 1.2.0-alpha06
2022년 3월 23일
androidx.compose.ui:ui-*:1.2.0-alpha06
이 출시되었습니다. 버전 1.2.0-alpha06에 포함된 커밋을 확인하세요.
API 변경사항
- 포커스를 포커스 가능 타겟에 요청하는
RequestFocus
시맨틱 작업을 추가했습니다. (I17b71) - 현재 레이아웃 방향이 RTL인 경우
VectorPainter
의 콘텐츠를 뒤집을 수 있는 자동 미러링을 지원하도록 벡터 드로어블 파싱을 업데이트했습니다. (I79cd9, b/185760237) API 호환성을 위해 그림자/주변 색상이
Modifier.graphicsLayer
의 후행 매개변수가 되도록 업데이트되었습니다. (I3f864, b/160665122)브레이킹 체인지 없는 API 변경을 위해
GraphicsLayerScope
의 그림자/주변 색상에 기본 구현을 추가했습니다.RSB 이벤트에 이벤트 시간을 추가했습니다. (Ief8ae)
이제
FocusOrder
가FocusProperties
에 병합되었으며focusProperties()
에서 이제focusOrder()
의 모든 기능을 사용할 수 있습니다.FocusOrder
및focusOrder()
가 지원 중단되었습니다.focusRequester
를 허용하는focusOrder()
를focusProperties()
가 결합된focusRequester()
수정자로 대체해야 합니다. 이를 통해 수정자는 관심사를 더 강력하게 분리할 수 있습니다. (I601b7)이제
RecyclerView
와Compose
를 모두 업그레이드하면 Compose 뷰를 하위 요소로 사용하는 RecyclerView의 스크롤 성능이 훨씬 향상됩니다.내장된 기본 전략을 검색하는 수단으로
ViewCompositionStrategy.Default
를 추가합니다.새로운 기본 전략인
ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer
를 추가합니다. RecyclerView와 같은 풀링 컨테이너를 적절하게 처리하는 역할을 합니다. (If7282)다중 미리보기 기능을 추가하는 첫 번째 단계로 주석 클래스에 @Preview로 주석을 달 수 있는 지원을 추가했습니다. 이러한 주석은 컴포저블 메서드나 기타 주석 클래스에 주석을 달 때 사용할 수 있으며, 그러면 지정된 @Preview에 간접적으로 주석이 달린 것으로 간주될 수 있습니다. (I12eff)
@Preview의 기기 목록에 참조 기기가 추가되었습니다. (I071c9)
버그 수정
- @UiComposable 대신 적절하고 구성 가능한 주석 @VectorComposable을 사용하도록 벡터 그래픽 API를 업데이트했습니다. (I942bc)
AnnotatedString.Builder.withStyle
에서 교차 인라인을 삭제합니다. (If84d5)
외부 기여
- compose-ui:
GraphicsLayerScope
에ambientShadowColor
및spotShadowColor
속성을 추가합니다. (I1ba1a, b/160665122) - 이제 복수형 리소스가
pluralStringResource
함수를 통해 지원됩니다. (Ib2f23, b/191375123)
버전 1.2.0-alpha05
2022년 3월 9일
androidx.compose.ui:ui-*:1.2.0-alpha05
가 출시되었습니다. 버전 1.2.0-alpha05에 포함된 커밋을 확인하세요.
API 변경사항
TextToolbar
는 이제ActionCallback
대신 람다 인수를 사용합니다. (Ib2eb9, b/197950089)- Tiramisu DP2와 일치하도록 코어와 appcompat의 null 허용 여부를 업데이트했습니다. (I0cbb7)
- 측정된 인터페이스가 이제 parentData 속성을 노출합니다. (I3313f)
- 이제
Modifier.onPlaced
및OnPlacedModifier
인터페이스가 안정화되었습니다. (Ib5482) - 만세! 이제 Compose 애니메이션이 개발자 옵션의 'Animator 길이 배율' 설정을 지원합니다. (I5a4fc, b/161675988)
BeyondBoundsLayout
수정자 로컬을 추가했습니다. (If8b51, b/184670295)- 텍스트: 이제 includeFontPadding은 기본적으로 꺼져 있습니다.
includeFontPadding=false
의 결과로 발생하는 클리핑 문제가 처리되며 세로로 긴 스크립트의 경우 클리핑이 발생하지 않습니다. (I31c84, b/171394808)
버그 수정
- 이미 콘텐츠가 있는데 콘텐츠를 설정하려고 하면
ComposeContentTestRule.setContent
에서IllegalStateException
이 발생합니다. (I888a5, b/199631334) - Android에서 클립보드를 읽는 동안 클립보드 콘텐츠로 인해 발생하는 비정상 종료 문제를 해결했습니다. (I06020, b/197769306)
- RSB 스크롤 샘플을 개선했습니다. (I6a596)
외부 기여
- Kotlinx 코루틴 1.6.0을 사용하도록 업데이트했습니다. (I3366d)
버전 1.2.0-alpha04
2022년 2월 23일
androidx.compose.ui:ui-*:1.2.0-alpha04
가 출시되었습니다. 버전 1.2.0-alpha04에 포함된 커밋을 확인하세요.
API 변경사항
구성 가능한 함수가 사용 목적으로 설계되지 않은 Applier를 타겟팅하도록 호출되면 컴파일 시간 보고를 허용하는
ComposableTarget
,ComposableTargetMarker
및ComposableOpenTarget
을 추가했습니다.대부분의 경우 Compose 컴파일러 플러그인에서 주석을 추론할 수 있으므로 이러한 주석을 직접 사용할 일은 거의 없습니다. 추론할 수 없는 경우는 맞춤 Applier, 구성 가능한 추상 함수(예: 인터페이스 메서드), 구성 가능한 람다인 필드나 전역 변수(로컬 변수 및 매개변수가 추론됨)를 생성 및 사용하는 경우 또는
ComposeNode
나 구성 가능한 관련 함수를 사용하는 경우입니다.맞춤 Applier의 경우
ComposeNode
또는ReusableComposeNode
를 호출하는 구성 가능한 함수는 함수와 구성 가능한 람다 매개변수 유형에ComposableTarget
주석을 추가해야 합니다. 하지만ComposableTarget
을 직접 사용하는 대신ComposableTargetMarker
주석이 달린 주석을 만들어 표시된 주석을 사용하는 것이 좋습니다.ComposableTargetMarker
로 표시된 구성 가능한 주석은 applier 매개변수로 속성 클래스의 정규화된 이름을 갖는ComposbleTarget
과 동일합니다.ComposableTargetMarker
를 사용하는 예는anroidx.compose.ui.UiComposable
을 참고하세요. (I38f11)Font(resId, ...)
는 이제 안정적인 API에서 loadingStrategy를 사용합니다. (Ief3d2)FontLoadingStrategy
는 이제 안정적인 API입니다. (I1ee35, b/174162090)Text에서 비동기 글꼴 로드를 지원합니다. (I77057, b/214587005)
맞춤
Font.ResourceLoader
를FontFamily.Resolver
로 변환하기 위한 브리지 API를 추가했습니다. (Ia0060)
버그 수정
- 제공된
FontFamily.Resolver
는 Popup과 같은 하위 컴포지션에 전달됩니다. - 제공된
Font.ResourceLoader
는 Popup과 같은 하위 컴포지션에 전달됩니다. (I48fa5)
버전 1.2.0-alpha03
2022년 2월 9일
androidx.compose.ui:ui-*:1.2.0-alpha03
이 출시되었습니다. 버전 1.2.0-alpha03에 포함된 커밋을 확인하세요.
API 변경사항
TextInputSession
및TextInputService
의notifyFocusedRect
메서드가 이제 지원 중단되며 호출되지 않습니다. 대신BringIntoViewRequester
를 사용하세요. (Ia4302, b/192043120, b/216842427, b/178211874)RenderNode
스텁 클래스에destroyDisplayListData
메서드를 도입했습니다. (I1e659, b/216660268)- 사전 작성된
SubcomposeLayout
의 하위 요소를 미리 측정할 수 있는 새 API를 추가했습니다. (I857ea) 컴포저블 람다를, 호출되는 새 위치로 상태 및 상응하는 노드를 이동시키는 람다로 변환하는
movableContentOf
를 추가했습니다. 이전 호출이 컴포지션을 종료하면 상태가 일시적으로 유지되고 새 람다 호출이 컴포지션에 진입하면 상태 및 관련 노드가 새 호출 위치로 이동됩니다. 새로 추가된 호출이 없으면 상태는 완전히 삭제되고 관찰자가 알림을 받습니다.동일한 컴포지션에서
movableContentOf
람다가 여러 번 호출되면 호출마다 새 상태와 노드가 생성되고, 호출이 컴포지션을 종료하고 새 호출이 진입함에 따라 상태는 호출되는 순서로 첫 번째 종료 호출에서 진입 호출로 이동됩니다. 새 호출로 요청하지 않은 모든 상태는 완전히 삭제됩니다. (Ib4850)이제
LocalFontFamilyResolver.current
를 통해FontFamilyResolver
를 사용할 수 있습니다.Compose 사용 외부에서 새로운 FontFamily 리졸버를 만드는
createFontFamilyResolver(context)
및createFontFamilyResolver(context, coroutineScope)
를 추가했습니다.Paragraph 및 MultiParagraph에서 이제
FontFamily.Resolver
를 사용합니다.이제
TextLayoutResult.layoutInput.fontFamilyResolver
에 이 레이아웃에 사용되는 리졸버가 포함되며TextLayoutResult.layoutInput.resourceLoader
는 더 이상 사용되지 않으므로 지원 중단되었습니다. (Id5a45, b/174162090)대체 동작으로 비동기 및 선택적 글꼴 로드를 지원합니다. 이 경로는 Text 및 TextField에서 사용되며 FontFamilyResolver를 통해 노출됩니다.
FontFamilyResolver.preload
를 통한 글꼴 미리 로드를 지원합니다.FontFamilyResolver.setAsyncLoadContext
를 사용하여 비동기 글꼴 로드에 사용되는 전역 코루틴 컨텍스트를 설정할 수 있습니다. (I87fe8, b/174162090)Android에서 새로운 유형의 글꼴 리소스 설명자를 제공하는 새로운 하위 수준 API인
AndroidFont
를 추가했습니다. 예를 들어 앱별 백엔드에서 글꼴을 로드하거나 기기에 사전 설치된 글꼴을 선택적으로 찾거나 현재 글꼴 팩토리에서 제공하지 않는 리소스에서 글꼴을 로드합니다.선택적 및 비동기 글꼴 로드를 지원하도록
Font.ResourceLoaded
API를 확장했습니다. 애플리케이션 개발자는 이 API를 직접 사용하지 않는 것이 좋습니다. 새로운 유형의 글꼴을 추가하려면AndroidFont
를 참고하세요.Font.AndroidResourceLoader
확장 함수를 사용하면 컴포지션 외부에 있을 때Font.ResourceLoader
를 구성할 수 있습니다.리소스 글꼴이 다운로드 가능한 글꼴 XML을 참조할 때 비동기 로드를 허용하도록 리소스 기반 글꼴에
loadingStrategy
매개변수를 추가했습니다. (Ie5aea, b/174162090)Typeface(FontFamily)
생성자가 지원 중단되었습니다. 이전에는 글꼴 미리 로드에 사용되었으며 다운로드 가능한 글꼴의 경우에는 최대 10초가 걸릴 수 있습니다. 다운로드 가능한 글꼴을 사용하면 이 호출이 10초 동안 차단될 수 있습니다. 대신FontFamilyResolver.preload
를 사용하세요.fontResource(FontFamily): Typeface
는 지원 중단되었습니다. 이전에는 글꼴 미리 로드에 사용되었으며 다운로드 가능한 글꼴의 경우에는 최대 10초가 걸릴 수 있습니다. 대신FontFamilyResolver.preload
를 사용하세요. (If8e7c, b/174162090)maxSlotsToRetainForReuse
를 허용하는SubcomposeLayoutState
생성자가 이제 지원 중단됩니다. 대신SubcomposeSlotReusePolicy
를 허용하는 새 생성자가 있습니다. 새 인터페이스를 통해 향후 재사용을 위해 유지해야 하는 슬롯을 더 세밀하게 제어할 수 있습니다. (I52c4d)HSV 및 HSL 함수를
Color
에서 비실험용 API로 노출합니다. Oklab 색상 공간은 이제 공개 API입니다. (I08fb6, b/180731008)공개 API에 있도록 의도하지 않았으며 어떤 작업도 하지 않은
AndroidComposeTestRule.AndroidComposeStatement
가 지원 중단되었습니다. (Ibc46b)내부 생성 kt 클래스 이름을 바꿨습니다. (Ia0b9e, b/174162090)
FontLoadingStrategy.values
를 삭제했습니다. (I42a9d, b/174162090)전역 글꼴 로더가 이제
FontFamilyResolver
입니다. (I4f773, b/174162090)데스크톱용 새 글꼴 로드 시스템을 사용합니다. (I9ce5c, b/174162090)
FontFamily.Resolver.resolve
가State<Any>
를 반환합니다. (I4406c, b/174162090)
버그 수정
- 소프트 입력 모드가
ADJUST_PAN
일 때 TextField에 포커스가 있고 키보드가 표시되는 경우 TextField가 이제 키보드 위에 유지됩니다. (I8eaeb, b/190539358, b/192043120) - 데스크톱에서
FontFamily.Resolver
에 컴포지션 로컬을 사용합니다. - 데스크톱
FontLoader
가 지원 중단되었습니다. - 데스크톱의 새로운
createFontFamilyResolver
팩토리 (I6bbbb, b/174162090) - 텍스트 필드 간 포커스를 변경할 때 소프트 키보드 입력 유형이 더 이상 깜박이지 않습니다. (I1bf50, b/187746439)
버전 1.2.0-alpha02
2022년 1월 26일
androidx.compose.ui:ui-*:1.2.0-alpha02
가 출시되었습니다. 버전 1.2.0-alpha02에 포함된 커밋을 확인하세요.
API 변경사항
- 측면 버튼이 회전하는 Wear 기기의
Modifier.onRotaryScrollEvent()
및Modifier.onPreRotaryScrollEvent()
를 추가했습니다. (I18bf5, b/210748686) - 실험용
View.createLifecycleAwareRecomposer
확장 프로그램을 추가합니다. (I0cde6)
외부 기여
- 이제
PointerEvent.scrollDelta.y
가 Android에서 반전됩니다. 마우스 휠을 오른쪽으로 기울이면 이제 -1이 아닌 1을 반환합니다. (Ia9811)
버전 1.2.0-alpha01
2022년 1월 12일
androidx.compose.ui:ui-*:1.2.0-alpha01
이 출시되었습니다. 버전 1.2.0-alpha01에 포함된 커밋을 확인하세요.
API 변경사항
FontFamily.canLoadSynchronously
가 지원 중단되었습니다. 이 속성에는 시맨틱 의미가 없습니다. (Ica5ef)- Layout Inspector에서 변하지 않는 ID를 생성하도록 ID 필드가
CompositionData
에 추가되었습니다. (Ic116e) - 미리보기 기기 목록에 Wear OS 기기 ID가 추가되었습니다. (I93232)
종속 항목 업데이트
- 이제 Kotlin
1.6.10
에 종속됩니다.
버전 1.1
버전 1.1.1
2022년 2월 23일
androidx.compose.ui:ui-*:1.1.1
이 출시되었습니다. 버전 1.1.1에 포함된 커밋을 확인하세요.
버그 수정
androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList
에서 발생하는NullPointerException
을 수정합니다. (aosp/1947059, b/206677462)- Android에서 클립보드를 읽는 동안 클립보드 콘텐츠로 인해 발생하는 비정상 종료 문제를 해결했습니다. (I06020, b/197769306)
LazyVerticalGrid
의 RTL을 수정했습니다. (aosp/1931080, b/207510535)
버전 1.1.0
2022년 2월 9일
androidx.compose.ui:ui-*:1.1.0
이 출시되었습니다. 버전 1.1.0에 포함된 커밋을 확인하세요.
1.0.0 이후 중요 변경사항
- Android 12 오버스크롤 효과의 공개 버전 지원
- 터치 영역 크기 조정 개선
- Compose 1.0의 경우 Material 구성요소는 Material 접근성 가이드라인 터치 영역 크기에 맞게 레이아웃 공간을 확장합니다. 예를 들어 Button의 크기를 더 작게 설정하더라도 버튼 터치 영역은 최소 48x48dp로 확장됩니다. 이렇게 하면 Compose Material이 Material Design 구성요소의 동작과 동일하게 정렬되어 뷰와 Compose를 함께 사용할 때 일관되게 동작합니다. 또한 이러한 변경을 통해 Compose Material 구성요소를 사용하여 UI를 만들 때 터치 영역 접근성에 관한 최소 요구사항이 충족됩니다.
- Navigation Rail의 공개 버전 지원
- 다수의 이전 실험용 API의 공개 버전 전환
- 최신 버전의 Kotlin 지원
버전 1.1.0-rc03
2022년 1월 26일
androidx.compose.ui:ui-*:1.1.0-rc03
이 출시되었습니다. 버전 1.1.0-rc03에 포함된 커밋을 확인하세요.
버그 수정
- Compose Material 1.1.0-rc03을 지원하도록 업데이트했습니다.
버전 1.1.0-rc01
2021년 12월 15일
androidx.compose.ui:ui-*:1.1.0-rc01
이 출시되었습니다. 버전 1.1.0-rc01에 포함된 커밋을 확인하세요.
버그 수정
- 접근성 스크롤 작업 누락을 일으키는 버그를 수정했습니다. (I7cbfb)
- 이제
HardwareRenderer.isDrawingEnabled()
가false
이면 호출 시간 동안 이를 사용 설정하여SemanticsNodeInteraction.captureToImage()
도 작동합니다. (Idf3d0)
버전 1.1.0-beta04
2021년 12월 1일
androidx.compose.ui:ui-*:1.1.0-beta04
가 출시되었습니다. 버전 1.1.0-beta04에 포함된 커밋을 확인하세요.
새로운 기능
- Kotlin
1.6.0
과 호환되도록 업데이트했습니다.
API 변경사항
androidx.core.view
에서 null 허용 여부를 정리했습니다. (I7078a, b/204917439)- 사용자가 PointerInputchange를 전체로 소비하거나 소비 여부를 확인할 수 있는 실험용 API를 추가했습니다. (I2e59d)
- UI 레이어에 마우스 스크롤 휠 이벤트 지원을 추가했습니다. (Ia14eb, b/198214718)
- 동등성을 비교하고 최적화를 건너뛰는 데 적합한 키를 허용하는 실험용
Modifier.composed
오버로드를 추가했습니다. (Ice799, b/205851704) - 이제
ComposeNotIdleException
이Throwable
에서 직접 확장되지 않고Exception
에서 확장됩니다. 즉,Exception
을 포착한 catch 절이 이제ComposeNotIdleException
을 포착할 수도 있습니다. 이전에는 포착하지 않았습니다. (I9c217)
버그 수정
- IME 가시성이 변경될 때 텍스트 핸들이 이동하지 않는 문제를 수정했습니다. (I25f2e)
버전 1.1.0-beta03
2021년 11월 17일
androidx.compose.ui:ui-*:1.1.0-beta03
이 출시되었습니다. 버전 1.1.0-beta03에 포함된 커밋을 확인하세요.
API 변경사항
- 배치 변경사항을 준수할 수 있도록 새로운 수정자 Modifier.onPlaced를 추가했습니다. 적용된 배치 변경사항에 따라 하위 수정자의 오프셋이 추가로 변경될 수 있습니다. (I558fd)
InjectionScope.flush()
와InjectionScope.dispose()
를 삭제했습니다. 모든 이벤트 플러시와 범위 삭제가 이제 전과 같이 호출된 perform*Input() 메서드 끝에서 발생합니다. (I2bed8)MultiModalInjectionScope.Touch
와MultiModalInjectionScope.Mouse
를 삭제했습니다. 다중 모달 동작의 터치 및 마우스 이벤트를 삽입하기 위해 이제MultiModalInjectionScope.touch()
및MultiModalInjectionScope.mouse()
를 사용할 수 있습니다. 둘 다 모달리티의 수신기 범위가 있는 람다를 허용합니다. (Idde18)
버그 수정
- 이제
TouchInjectionScope.swipeWithVelocity
의 기본durationMillis
값이 스와이프가 가능하도록 계산됩니다. (I19deb)
버전 1.1.0-beta02
2021년 11월 3일
androidx.compose.ui:ui-*:1.1.0-beta02
가 출시되었습니다. 버전 1.1.0-beta02에 포함된 커밋을 확인하세요.
API 변경사항
- 스크롤하여 항목을 뷰로 가져오도록 상위 요소에 요청을 전송할 수 있는 실험용 BringIntoView API를 추가했습니다. (Ib918d, b/195353459)
- 도구 지원을 위한 새로운 Animation API가 있습니다. 특히, 이 API를 통해 전환에서 애니메이션과 구성을 검사하는 도구를 사용할 수 있습니다. (I4116e)
외부 기여
- Modifier.pointerHoverIcon을 추가했습니다. (I95f01)
버전 1.1.0-beta01
2021년 10월 27일
androidx.compose.ui:ui-*:1.1.0-beta01
이 출시되었습니다. 버전 1.1.0-beta01에 포함된 커밋을 확인하세요.
API 변경사항
- 스크롤하여 항목을 뷰로 가져오도록 요청을 상위 요소에 보낼 수 있는 실험용 API인
BringIntoView
를 추가했습니다. (Ib918d, b/195353459) - 도구 지원을 위한 새로운 Animation API가 있습니다. 특히, 이 API를 통해 전환에서 애니메이션과 구성을 검사하는 도구를 사용할 수 있습니다. (I4116e)
버전 1.1.0-alpha06
2021년 10월 13일
androidx.compose.ui:ui-*:1.1.0-alpha06
이 출시되었습니다. 버전 1.1.0-alpha06에 포함된 커밋을 확인하세요.
API 변경사항
ViewRootForInspector
및LayoutInfo.ownerViewId
에서ExperimentalComposeUiApi
를 삭제합니다. (I5c2e3)- Layout에 하위 요소가 없는 오버로드가 추가되었으며 효율성이 개선되었습니다. (Ib0d9a)
- 교차 모듈을 호출해야 하는 컴포저 메서드에서
InternalCompilerApi
를 삭제했습니다. (I1aa0b) - 이제
SemanticsNodeInteraction.performSemanticsAction
이 함수가 호출된SemanticsNodeInteraction
을 반환합니다. (I9e5db) - TouchMode/NonTouchMode를 감지하도록 LocalInputModeManager CompositionLocal을 추가했습니다. (I6a83c, b/175899786)
- 소비자가 길게 누르기 제한 시간과 같은 항목의 올바른 값을 가져올 수 있도록
LayoutInfo
에viewConfiguration: ViewConfiguration
을 추가했습니다. (I76ca6)- 테스트에서 길게 누르기 제한 시간이나 터치 슬롭과 같은 항목에 따라 입력 삽입을 조정할 수 있도록
InjectionScope
에viewConfiguration: ViewConfiguration
이 추가되었습니다. - 터치 입력과 마우스 입력 모두, 길게 누르기와 두 번 탭의 기본 지속 시간이
InjectionScope.viewConfiguration
의 값에 기반하도록 변경했습니다.
- 테스트에서 길게 누르기 제한 시간이나 터치 슬롭과 같은 항목에 따라 입력 삽입을 조정할 수 있도록
- TextField와 DropdownMenu가 내부에 있는 ExposedDropdownMenuBox에 따라 ExposedDropdownMenu를 구현합니다. (If60b2)
- dismissOnOutsideClick을 PopupProperties에 추가했습니다. 지원 중단된 dismissOnClickOutside를 대체합니다. 새 속성은 클릭 위치와 앵커 경계를 수신하여 onDismissRequest의 호출 여부를 더욱 세밀하게 제어합니다. 예를 들어 이 속성은 앵커에 적용된 터치와 관련해 앵커 해제를 방지하는 데 유용할 수 있습니다.
- updateAndroidWindowManagerFlags를 PopupProperties에 추가했습니다. 팝업에서 Android WindowManager에 전달된 플래그를 하위 수준으로 제어합니다. 람다의 매개변수는 PopupProperties 값에서 계산된 플래그가 되고 이 플래그는 결과적으로 WindowManager 플래그가 됩니다(예: 포커스 가능). 람다의 결과는 Android WindowManager에 전달되는 최종 플래그입니다. 기본적으로 updateAndroidWindowManagerFlags는 매개변수에서 계산된 플래그를 그대로 둡니다. 이 API는 팝업에 매우 특정한 동작 요구사항이 있는 경우에만 주의해서 사용해야 합니다. (I6e9f9)
Recomposer.state
를 지원 중단하고Recomposer.currentState
로 대체하여 유형을 StateFlow로 변경했습니다. (Ic2ab3, b/197773820)flush()
및dispose()
을InjectionScope
에 추가했습니다. 큐에 추가된 모든 이벤트를 즉시 플러시하려는 경우 및 범위를 삭제하려는 경우에 각각 사용하세요. (Ifb73a)- 스크롤 가능한 컨테이너를 주어진 매처와 일치하는 콘텐츠까지 스크롤하는
performScrollToNode(matcher: SemanticsMatcher)
를 추가했습니다. (Ic1cb8) - 이제
InjectionScope
가Density
를 구현하므로performTouchInput
과 친구에서 px와 dp 간에 쉽게 변환할 수 있습니다. (I8fe1f)
버그 수정
- 이제 AndroidView가 ViewTreeLifecycleOwner 및 ViewTreeSavedStateRegistryOwner를 통해 LocalLifecycleOwner 및 LocalSavedStateRegistryOwner를 뷰에 전파합니다. (I38f96, b/179708470)
- WearOS SwipeToDismissBox가 때때로 스와이프를 처리하지 않는 문제를 수정했습니다. (I9387e)
- 삽입된 입력 이벤트 간의 기본 시간을 10ms에서 16ms로 변경했습니다. 이를 통해 특정 스와이프와 같은 입력 동작을 실행하는 테스트의 결과가 변경될 수 있습니다. (I829fd)
버전 1.1.0-alpha05
2021년 9월 29일
androidx.compose.ui:ui-*:1.1.0-alpha05
가 출시되었습니다. 버전 1.1.0-alpha05에 포함된 커밋을 확인하세요.
API 변경사항
- 수정자 간 통신 지원을 추가했습니다. (Id5467, b/198826874)
- PointerEventChange에 실험용 기록 포인터를 추가했습니다. (Ic1fd8, b/197553056, b/199921305)
density: Density
및layoutDirection: LayoutDirection
을LayoutInfo
에 추가했습니다. 이를 통해LayoutInfo
사용자는LayoutInfo
에 노출된 측정기준과 위치를 올바르게 해석할 수 있습니다. (I002f1)- 마우스 이벤트 삽입을 위한 실험용 지원을 추가했습니다.
performMouseInput
을 사용하여 마우스 이벤트 전송을 시작하거나performMultiModalInput
을 사용한 다중 모달 입력 동작 중에MultiModalInjectionScope
의Mouse
속성을 통해 마우스 이벤트를 전송합니다. 사용 가능한 API 문서는MouseInjectionScope
를 참고하세요. (Iaa4a8, b/190493367)
버그 수정
- 스크롤과 관련하여 스크롤 가능 항목(지연 및 비지연 모두 해당됨)에 대한 접근성 지원 문제를 해결했습니다. (I6cdb0)
TouchInjectionScope.swipeWithVelocity
를 개선했습니다. 이제 더 광범위한 입력 변수를 허용하고 스와이프를 만들 수 없는 경우 입력 변경사항을 제안합니다. (I40fbe, b/182477143)
버전 1.1.0-alpha04
2021년 9월 15일
androidx.compose.ui:ui-*:1.1.0-alpha04
가 출시되었습니다. 버전 1.1.0-alpha04에 포함된 커밋을 확인하세요.
API 변경사항
- 이제
PointerEvent
에 마우스 오버 이벤트를 지원하는PointerEventType
이 있습니다. (I091fa) - 하위 요소가 상위 요소의 포인터 입력 경계 외부의 포인터 입력을 허용하도록 합니다. 상위 요소는 PointerInputScope.alwaysInterceptChildEvents 속성을 사용하여 이러한 호출을 가로챌 수 있습니다. (I9eae3, b/192479655)
performGesture
와GestureScope
은 지원 중단되었으며performTouchInput
과TouchInjectionScope
으로 대체되었습니다. (Ia5f3f, b/190493367)- 개발자가 터치 영역이 접근성 최소 수준을 충족하는지 확인할 수 있도록 최소 터치 영역 크기를 포함하는
touchBoundsInRoot
를SemanticsNode
에 추가했습니다. (I2e14b, b/197751214) - 수정자 inspectable의 구현을 다시 실행합니다. (I927bc, b/191017532)
- 수정자 composed와 일치하도록 inspectable의 매개변수 이름을 변경했습니다. (I3a482, b/191017532)
다른 모달리티(예: 마우스)를 준비하기 위해
performTouchInput
과TouchInjectionScope
의 대체 요소로performTouchInput
과TouchInjectionScope
을 도입했습니다.TouchInjectionScope
에는GestureScope
과 동일한 메서드가 있지만, 이름이updatePointerTo
와updatePointerBy
로 바뀐movePointerTo
와movePointerBy
는 예외입니다. 다른 모든 메서드는 동일합니다.TouchInjectionScope
의 동작은GestureScope
과 거의 동일하며, 두 가지 작은 세부정보가 있습니다.- 이동 이벤트를 전송하지 않고 포인터를 이동하는 동안 다운 이벤트를 전송하면(즉,
move()
가 아닌updatePointerTo()
를 사용했고 그다음down()
이 호출됨) 다운 이벤트를 전송하기 전에 이전 구현이 이벤트 시간을 앞당기고 이동 이벤트를 전송합니다. 새 구현은 계속해서 이동 이벤트를 보내지만, 이 특정 시나리오에서는 이벤트 시간을 앞당기지 않습니다. - 위와 같이 이동 이벤트를 전송하지 않고 포인터를 이동하는 동안 업 이벤트를 전송하면 이전 구현에서는 위로 이벤트를 전송하기 전에 이벤트 시간을 앞당기고 이동 이벤트를 전송합니다. 새로운 구현은 둘 다 하지 않습니다. 포인터의 새 위치는 업 이벤트를 통해서만 반영됩니다.
마지막으로
TouchInjectionScope
은 특정 포인터의 현재 위치를 가져오기 위한 새로운 메서드currentPosition(pointerId: Int)
를 도입합니다. (If1191, b/190493367)- 이동 이벤트를 전송하지 않고 포인터를 이동하는 동안 다운 이벤트를 전송하면(즉,
버그 수정
- 클립이 최소 터치 영역의 목표치를 충족할 수 있도록 클립 영역을 넘어 터치 영역 경계로 확장하는 것을 허용합니다. (I43e10, b/171509422)
- Android 12 기기에 스트레치 오버스크롤 지원을 추가했습니다. (Iccf3c, b/171682480)
버전 1.1.0-alpha03
2021년 9월 1일
androidx.compose.ui:ui-*:1.1.0-alpha03
이 출시되었습니다. 버전 1.1.0-alpha03에 포함된 커밋을 확인하세요.
새로운 기능
- Kotlin
1.5.30
에 종속되도록 Compose1.1.0-alpha03
을 업데이트했습니다. (I74545)
API 변경사항
- 다른 수정자를 래핑하기 위해
Modifier.inspectable
을 추가했습니다. (I1909b, b/191017532) - 블러 사용 사례를 클립 플래그와 TileMode의 보다 일반적인 조합으로 단순화하기 위해
BlurredEdgeTreatment
API를 추가했습니다. 대부분의 사용 사례에서 블러 콘텐츠는 원래 콘텐츠 경계 밖에서 렌더링되고 경계 밖에 있는 영역은 투명한 검은색으로 블러 처리됩니다. 또는 콘텐츠 경계를 넘어 확장되는 블러 커널의 가장 가까운 가장자리를 샘플링하여 경계까지 콘텐츠를 자릅니다. (I6b4b7, b/166927547) - Compose Desktop에 RenderEffect 지원을 추가했습니다. 컴포지션 계층 구조의 일부에 블러 시각 효과를 적용하기 위한 간단한 방법으로 OffsetEffect와 블러 수정자를 도입했습니다. (I0f6aa, b/166927547)
- 레이어 자체의 콘텐츠를 변경하기 위해
Modifier.graphicsLayer
에 선택적으로 구성할 수 있는 RenderEffect API를 도입했습니다. 이 API는 컴포지션 계층 구조 내에서 컴포저블과 하위 컴포저블의 콘텐츠를 블러 처리하는 데 사용할 수 있습니다. (I47c4d, b/166927547) - 이제 AwaitPointerEventScope에 withTimeout() 및 withTimeoutOrNull()이 있습니다. (I507f0, b/179239764, b/182397793)
- 접근성을 보장하기 위해 시맨틱 및 포인터 입력에 사용할 최소 터치 영역 크기를 ViewConfiguration에 추가했습니다. (Ie861c)
- 블러 기반 RenderEffects의 가장자리 동작을 정의하는 데 유용한 TileMode.Decal 지원 기능을 추가했습니다. (I7e8ed, b/166927547)
- 이제
performScrollToIndex
,performScrollToKey
,hasScrollToIndexAction
,hasScrollToKeyAction
은 안정적인 API입니다. (I142ae, b/178483889) - 잘린 경계를 가져오기 위한 테스트 메서드를 추가했습니다. (I6b28e)
버그 수정
- Shape 매개변수가 null인지 명시적으로 확인하기 위해 BlurredEdgeTreatment에서 isBounded 메서드를 삭제했습니다. (I85d68)
버전 1.1.0-alpha02
2021년 8월 18일
androidx.compose.ui:ui-*:1.1.0-alpha02
가 출시되었습니다. 버전 1.1.0-alpha02에 포함된 커밋을 확인하세요.
API 변경사항
- 이제 PointerEvent가 마우스 버튼 상태와 키보드 특수키 상태를 읽을 수 있도록 지원합니다. (I6310c, b/180075467)
- 삽입된 동작에서 이제 MainTestClock의 시간을 시간의 정보 소스로 사용합니다.
performGesture
에 삽입된 이벤트의 현재 시간은 MainTestClock의 현재 시간으로 초기화됩니다. (Ifb364, b/192064452) DpRect(DpOffset, DpSize)
생성자를 추가했습니다. (I2cf16, b/194219828)- DpSize 클래스를 추가했습니다. (I7abb1, b/194219828)
버그 수정
- ColorStateLists를 VectorDrawables의 루트 색 번짐 속성으로 지원하기 위해 벡터 그래픽 xml 파싱을 업데이트했습니다. (I86915, b/195668138)
버전 1.1.0-alpha01
2021년 8월 4일
androidx.compose.ui:ui-*:1.1.0-alpha01
이 출시되었습니다. 버전 1.1.0-alpha01에 포함된 커밋을 확인하세요.
API 변경사항
- 이제
RelocationRequester.bringIntoView
는 컴포저블의 일부를 뷰에 가져올 수 있도록 하는 매개변수로 직사각형을 허용합니다. (Ice2c5, b/194330245) AnimatedImageVector
및 관련 API가 이제 새androidx.compose.animation:animation-graphics
모듈에 있습니다. (I60873)- 재배치 요청을 처리하기 위해 실험용 수정자를 추가했습니다. (I65a97, b/178211874)
ColorPainter와 유사한 Painter 내에 임의의 Brush 그리기를 지원하기 위해 BrushPainter API를 도입했습니다.
BrushPainter 내에서 쿼리되는 고유 크기 매개변수를 포함하도록 Brush API를 업데이트했습니다. (Ia2752, b/189466433)
선택적 FilterQuality 매개변수를 사용하기 위해 소스 및 대상 사각형을 사용하는 DrawScope#drawImage 메서드를 업데이트했습니다. 이 기능은 픽셀 기반 아트용으로 확장할 때 모자이크로 표현하도록 의도된 픽셀 아트에 유용합니다. 선택적 FilterQuality 매개변수도 사용할 수 있도록 BitmapPainter와 Image 컴포저블을 업데이트했습니다. (Ie4fb0, b/180311607)
동작에서 이벤트 타이밍을 더 잘 제어하도록
GestureScope.advanceEventTime
메서드를 추가했습니다. (Ibf3e2)
버그 수정
- 그리기 수정자의 체이닝을 더 잘 지원하려면 Modifier.paint 구현에서 drawsContent를 호출해야 합니다.
이전에는 Modifier.paint가 Modifier 체인의 리프 노드가 될 것으로 예상했지만, 그렇게 하면 컴포저블 컨테이너(예: 상자)에서 구성할 수 없거나 추가 장식을 맨 위에(예:
Modifier.paint().border()
) 추가할 수 없습니다. 지정된 페인터의 콘텐츠를 그린 후 Modifier.paint가 drawContent를 호출하게 하여 수정자 패턴을 사용하는 동작의 동작 일관성이 향상됩니다. (Ibb2a7, b/178201337, b/186213275) - 대화상자가 이제 플랫폼 크기 조정 동작을 따릅니다. 이 동작을 재정의하려면
usePlatformDefaultWidth
를 false로 설정합니다. (Iffaed, b/192682388) InfiniteAnimationPolicy
를 :compose:ui로 이동했습니다. (I5eb09, b/160602714)- 지연 목록 및 일반 스크롤 구성요소를 대상으로 하는 시맨틱 작업을 통한 스크롤이 이제 애니메이션 처리됩니다. (Id9066, b/190742024)
버전 1.0
버전 1.0.5
2021년 11월 3일
androidx.compose.ui:ui-*:1.0.5
가 출시되었습니다. 버전 1.0.5에 포함된 커밋을 확인하세요.
버그 수정
- derivedStateOf 인스턴스를 추적할 때 발생하는 비정상 종료 문제를 수정했습니다. (aosp/1792247)
버전 1.0.4
2021년 10월 13일
androidx.compose.ui:ui-*:1.0.4
가 출시되었습니다. 버전 1.0.4에 포함된 커밋을 확인하세요.
종속 항목 업데이트
- Kotlin
1.5.31
에 종속되도록 업데이트했습니다.
버전 1.0.3
2021년 9월 29일
androidx.compose.ui:ui-*:1.0.3
이 출시되었습니다. 버전 1.0.3에 포함된 커밋을 확인하세요.
종속 항목 업데이트
- Kotlin
1.5.30
에 종속되도록 업데이트했습니다.
버전 1.0.2
2021년 9월 1일
androidx.compose.ui:ui-*: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.ui:ui-*:1.0.1
이 출시되었습니다. 버전 1.0.1에 포함된 커밋을 확인하세요.
종속 항목 업데이트
- Kotlin
1.5.21
에 종속되도록 업데이트했습니다.
버전 1.0.0
2021년 7월 28일
androidx.compose.ui:ui-*: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 향후 버전 및 AGP7.1
버전에서 해결될 예정입니다. (b/194289155)
버전 1.0.0-rc02
2021년 7월 14일
androidx.compose.ui:ui-*:1.0.0-rc02
가 출시되었습니다. 버전 1.0.0-rc02에 포함된 커밋을 확인하세요.
버그 수정
- 대화상자가 이제 플랫폼 크기 조정 동작을 따릅니다. 이 동작을 재정의하려면
usePlatformDefaultWidth
를 false로 설정합니다. (Iffaed, b/192682388)
버전 1.0.0-rc01
2021년 7월 1일
androidx.compose.ui:ui-*:1.0.0-rc01
이 출시되었습니다. 버전 1.0.0-rc01에 포함된 커밋을 확인하세요.
새로운 기능
- ui-tooling 모듈을
ui-tooling
및ui-tooling-preview
로 분할합니다. (Iefa28, b/190649014)
API 변경사항
- 지원 중단된 실험용
FocusManager#moveFocusIn
및FocusManager#moveFocusOut
이 삭제되었습니다. (I227d7, b/170154986, b/186567354, b/168510304) - 이제 캔버스에서 접근성을 위해 contentDescription 매개변수를 지원합니다. (Ib547c)
PopupProperties
의useDefaultMaxWidth
이름이usePlatformDefaultWidth
로 바뀌었습니다. (I05710)- 이제 대화상자에서 전체 화면 너비를 사용할 수 있습니다. (I83929, b/190810877)
- HSV 및 HSL 색상 표현에 관한 실험용 지원이 추가되었습니다. (Id7cf8, b/180731008)
동작 변경사항
- 이제 Compose
@Preview
는 기존 소유자에 종속되는 API(예:rememberLauncherForActivityResult()
)를 사용하는 컴포저블을 미리 볼 수 있는LocalActivityResultRegistryOwner
를 제공합니다. (Ib13d1, b/185693006) - 이제 Compose
@Preview
는 기존 소유자에 종속되는 API(예:BackHandler
)를 사용하는 컴포저블을 미리 볼 수 있는LocalOnBackPressedDispatcherOwner
를 제공합니다. (Ia1c05, b/185693006)
버그 수정
InfiniteAnimationPolicy
를androidx.compose.ui:ui
로 이동했습니다. (I5eb09, b/160602714)- 모듈 구조를 변경하기 위해 AnimatedImageVector가 일시적으로 삭제되었습니다. (I41906, b/160602714)
버전 1.0.0-beta09
2021년 6월 16일
androidx.compose.ui:ui-*:1.0.0-beta09
가 출시되었습니다. 버전 1.0.0-beta09에 포함된 커밋을 확인하세요.
API 변경사항
- enum Role 및 LiveRegionMode를 비공개 생성자가 있는 인라인 클래스로 변경합니다. (Id1890)
- KeyboardCapitalization이 인라인 클래스로 변환됩니다. (Id5a1c)
- HapticFeedbackType을 인라인 클래스로 변경합니다. (I255ec)
- Modifier.pointerInteropFilter가 @ExperimentalComposeUiApi입니다. (Iede6c)
- TextAlign, FontSynthesis, TextDirection이 이제 인라인 클래스입니다. (I212fe)
- TextOverflow를 인라인 클래스로 변경합니다. (I433af)
- FontStyle이 이제 인라인 클래스입니다. (I9e48b)
버그 수정
- 현재 키 상수는 @ExperimentalComposeUiApi입니다. 코드를 사용하면 안정화 전에 비공개 상수를 선언할 수 있습니다. (Ia5d48)
- Compose 테스트를 이제 Robolectric에서 실행할 수 있습니다. 지금까지 확인된 제한사항은 다음과 같습니다.
- 네이티브 비트맵이 없으므로
ImageBitmap()
으로 인해 NullPointerException이 발생합니다. - 그리기가 없으므로
captureToImage()
가 다음 그리기 패스를 무기한 대기합니다. 즉, 교착 상태에 빠집니다. - 로드된 글꼴이 없으므로 모든 텍스트가 잘못 측정됩니다. 모든 문자의 높이는 약 20px로, 너비는 1px로 고정됩니다.
ComposeTestRule.waitUntil {}
은 대기하는 동안 기본 스레드를 실행하지 않으므로ComposeTestRule.mainClock.advanceTimeUntil {}
과 사실상 동일하게 됩니다. 앞으로 제한사항이 더 많이 확인될 것으로 예상됩니다. (I284fa)
- 네이티브 비트맵이 없으므로
추가된 프로필 규칙
이번 출시에서는 다음 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>
는 메서드의 서명이며 이름, 매개변수 유형, 메서드의 반환 유형을 포함합니다. 예를 들어LayoutNode
의fun isPlaced(): Boolean
메서드는 서명이isPlaced()Z
입니다.이러한 패턴에는 단일 규칙이 여러 메서드나 클래스를 포괄하도록 와일드 카드(
**
,*
,?
)가 포함될 수 있습니다.
규칙의 기능은 무엇인가요?
H
플래그는 'Hot' 메서드임을 나타내며, 이러한 메서드는 미리 컴파일해야 합니다.S
플래그는 시작 시 호출되는 메서드임을 나타내며, 컴파일 비용을 발생시키지 않고 시작 시 메서드를 해석하지 않으려면 이러한 메서드를 미리 컴파일해야 합니다.P
플래그는 시작 후에 호출되는 메서드임을 나타냅니다.이 파일에 있는 클래스는 시작 중에 사용된다는 사실을 나타내며, 클래스 로드 비용을 발생시키지 않으려면 클래스를 힙에 미리 할당해야 합니다.
어떤 방식으로 작동하나요?
- 라이브러리는 이러한 규칙을 정의할 수 있고 규칙은 AAR 아티팩트에 패키징됩니다. 그런 다음, 이러한 아티팩트를 포함하는 앱을 빌드하면 규칙이 함께 병합되어 앱과 관련된 압축 바이너리 ART 프로필을 빌드하는 데 사용됩니다. 그러면 ART에서 앱을 기기에 설치할 때 예정보다 앞서 애플리케이션의 특정 하위 집합을 컴파일하여 애플리케이션의 성능을 향상하도록(특히, 첫 번째 실행 성능) 이 프로필을 활용할 수 있습니다. 디버그 가능한 애플리케이션에는 영향을 주지 않습니다.
버전 1.0.0-beta08
2021년 6월 2일
androidx.compose.ui:ui-*:1.0.0-beta08
이 출시되었습니다. 버전 1.0.0-beta08에 포함된 커밋을 확인하세요.
API 변경사항
NestedScrollSource
enum은 인라인 클래스로 대체되었습니다. (Ie321b, b/187055290)FocusManager.clearFocus(forcedClear = true)
의 이름이FocusManager.clearFocus(force = true)
로 바뀌었습니다. (Ia0c41)- 새로운 enum 값이 추가될 때 구문이 완전하지 않은 경우 발생하는 문제를 피하도록 인라인 클래스의 enum 사용법을 리팩터링했습니다. (I2b5eb)
PopupProperties
에서@ExperimentalComposeUiApi
를 삭제합니다. (I01fa6)PointerType
이 enum에서 인라인 클래스로 변경되었습니다. (If5058)- ContentDescription 및 Text 시맨틱 속성은 더 이상 단일 값이 아니라 목록입니다. 이렇게 하면 연결하지 않고 그대로 병합할 수 있습니다. 이러한 변경사항을 활용하는 더 나은 테스트 API도 제공됩니다. (Ica6bf, b/184825850)
Modifier.focusModifier()
가 지원 중단되었으며Modifier.focusTarget()
으로 대체되었습니다. (I6c860)Modifier.onSizeChanged()
및Modifier.onGloballyPositioned()
는 더 이상 인라인 함수가 아닙니다. (I727f6, b/186109675)KeyboardType
enum은 인라인 클래스로 대체되었습니다. (I73045, b/187055290)FocusState
enum을FocusState
인터페이스로 대체했습니다. (Iccc1a, b/187055290)- ImeAction enum은 인라인 클래스로 대체되었습니다. (I18be5, b/187055290)
PlaceholderVerticalAlign
은 인라인 클래스로 변환됩니다. (If6290)- TextUnitType은 이제 인라인 클래스입니다. (I4cba9)
AnnotatedString.withAnnotation
함수는 이제 ExperimentalComposeApi가 아니라 ExperimentalTextApi입니다. (I0cd0a)- TextUnitType이 포함된 TextUnit 생성자는 이제 ExperimentalComposeApi가 아니라 ExperimentalTextApi입니다.
버그 수정
- 스크롤 후에 LazyColumn/Row 항목이 부분적으로 표시되던 beta07의 버그를 수정했습니다. (I8c9ac, b/188566058)
- 이제
detectDragGesures
,detectVerticalGestures
,detectHorizontalGestures
는 자동으로 위치 변경사항을 사용하므로 onDrag 콜백에서 change.consumePositionChange를 호출하지 않아도 됩니다. (I42fc4, b/185096350, b/187320697) - 정렬 선을 제공하는 LayoutModifiers를 수정했습니다. 하위 요소의 정렬 선이 변경되었을 때 상위 요소가 다시 측정되지 않는 버그를 수정했습니다. (I4401f, b/174315652)
- 모든 수정자를 적용한 후 수정자 체인에서 레이아웃 좌표가 아닌 이 수정자의 좌표를 보고하도록
Modifier.onGloballyPositioned()
를 수정했습니다. 즉, 이제 수정자의 순서가 보고되는 좌표에 영향을 미칩니다. (Ieb67d, b/177926591)
버전 1.0.0-beta07
2021년 5월 18일
androidx.compose.ui:ui-*:1.0.0-beta07
이 출시되었습니다. 버전 1.0.0-beta07에 포함된 커밋을 확인하세요.
API 변경사항
- 검사기에서 사용할
ViewRootForInspector
인터페이스를 추가했습니다. (Ib70df) - 이제
SubcomposeLayoutState
가 재사용 가능한 슬롯 수 설정을 지원합니다. 레이아웃은 다음번에 새 슬롯이 필요할 때 슬롯을 재사용하기 위해 슬롯을 삭제하는 대신 최대 이 개수의 슬롯을 활성 상태로 유지합니다. (Ieb981) - KeyEventType enum은 인라인 클래스로 대체되었습니다. (Id670a, b/187055290)
FocusDirection
enum은 인라인 클래스로 대체되었습니다. (Ib6d03, b/187055290, b/184086802)- SubcomposeLayout 상태를 호이스팅할 수 있는 기능이 도입되었습니다. 이 기능을 사용하면 필요한 slotId에 콘텐츠를 미리 작성할 수 있기 때문에 다음번 측정 패스의 속도가 더 빨라집니다. 지정된 slotId로 하위 콘텐츠를 작성해 놓으면 다음번에 작성할 필요가 없기 때문입니다. (I42580, b/184940225)
- 클립 선택 핸들을 추가했습니다. (Iff80d, b/183408447)
- LayoutInspector 지원과 관련된 미사용 API를 삭제했습니다. (I2ac78)
버그 수정
- 이제 LazyColumn/Row는 이미 스크롤되었더라도 이전에 표시된 최대 2개의 항목을 활성 상태로 유지합니다. 이를 통해 스크롤 성능을 개선하는 새 항목을 작성해야 할 때 구성요소가 활성 상태의 하위 작성을 재사용할 수 있습니다. (Ie5555)
AnnotatedString
의TextGeomerticTransform
및TextDecoration
이 지정된 대로 적용됩니다. (I61900, b/184760917)
버전 1.0.0-beta06
2021년 5월 5일
androidx.compose.ui:ui-*:1.0.0-beta06
이 출시되었습니다. 버전 1.0.0-beta06에 포함된 커밋을 확인하세요.
API 변경사항
- 탐색 동작과의 충돌을 해결합니다. (I1145e)
@ComposeCompilerApi
가 더 이상@RequiresOptIn
이 아닙니다. (Iab690)- 접근성 서비스의 컬렉션과 그 항목을 표시할 수 있는 CollectionInfo 및 CollectionItemInfo 접근성 API를 추가했습니다. (Id54ef, b/180479017)
- 색인이 생성된 항목이 있는 목록을 특정 색인으로 스크롤하는
SemanticsActions.ScrollToIndex
와 키가 지정된 항목이 있는 목록에서 항목의 색인을 가져오는SemanticsProperties.IndexForKey
를 추가했습니다. 두 작업 모두 LazyList로 구현됩니다.- 지정된 색인으로 목록을 스크롤하는
SemanticsNodeInteraction.performScrollToIndex
와 지정된 키가 있는 항목으로 목록을 스크롤하는SemanticsNodeInteraction.performScrollToKey
를 추가했습니다. (I4fe63, b/178483889, b/161584524)
- 지정된 색인으로 목록을 스크롤하는
- ownerViewId를 GraphicLayerInfo에 추가했습니다. (I19f62)
- 애셋, 파일, FileDescriptor에서 글꼴을 로드하는 Font() 오버로드를 추가했습니다. (I5d382)
- 잘못된 입력이 포함된 노드를 표시할 수 있는 접근성 API
error
를 추가했습니다. (I12997, b/180584804, b/182142737) - 애셋, 파일, FileDescriptor에서 글꼴을 로드하는
Font()
오버로드를 추가했습니다. (I43007) - AnnotatedString이
TextFieldValue.Saver
지원을 저장합니다.addTtsAnnotation
및 withAnnotation 유틸리티 함수를AnnotatedString.Builder
에 추가했습니다. (I8cbdc, b/178446304) - TextUnit 생성자 함수
TextUnit(value: Float, type: TextUnitType)
을 추가했습니다. (I7ecce, b/178446304)
버전 1.0.0-beta05
2021년 4월 21일
androidx.compose.ui:ui-*:1.0.0-beta05
가 출시되었습니다. 버전 1.0.0-beta05에 포함된 커밋을 확인하세요.
API 변경사항
- 실험용
FocusManager.moveFocus(In)
및FocusManager.moveFocus(Out)
을 추가했습니다. (Ic5534, b/183746743) - 실험용
performTextInputSelection
API를 추가했습니다. (I2dcbb, b/178510628) InputEventCallback
인터페이스는 지원 중단되었습니다. 이 인터페이스는 공개 API에서 사용할 수 없었으며 코드에서도 사용하지 않았습니다. (I34a02, b/184003208)TextLayoutResult/createTextLayoutResult
함수가 지원 중단되었습니다. 이는 사용되지 않은 공개 함수로, 테스트용으로 추가되었습니다. 이 함수로 텍스트 작성 API에 할 수 있는 작업은 없습니다. 지원 중단되었으며 나중에 삭제될 예정입니다. (I80413)
버그 수정
ACTION_SCROLL_FORWARD
,ACTION_SCROLL_BACKWARD
,accessibilityActionScrollLeft
,accessibilityActionScrollUp
,accessibilityActionScrollRight
,accessibilityActionScrollDown
접근성 스크롤 작업 문제를 해결했습니다. 이제 스크롤 가능 영역의 끝으로 스크롤하는 대신 한 화면의 주어진 방향으로 스크롤합니다. (Ieccb0)- ui-test-manifest 및 ui-tooling-data의 AndroidManifest 파일이 이제 Android 12와 호환됩니다. (I6f9de, b/184718994)
버전 1.0.0-beta04
2021년 4월 7일
androidx.compose.ui:ui-*:1.0.0-beta04
가 출시되었습니다. 버전 1.0.0-beta04에 포함된 커밋을 확인하세요.
API 변경사항
SoftwareKeyboardController
의hideSoftwareKeyboard
와showSoftwareKeyboard
의 이름을 각각hide()
와show()
로 바꿉니다.- LocalSoftwareKeyboardController에 전체 CompositionLocal 인터페이스를 제공하여 설정 가능하도록 합니다(특히 테스트에서 유용함). (I579a6)
- LiveRegion 접근성 API를 추가했습니다. 노드가 라이브 영역으로 표시되면 접근성 서비스가 사용자에게 자동으로 변경사항을 알립니다. (Idcf6f, b/172590946)
- TextOverflow.Visible을 도입했습니다. (Ic8f89)
버그 수정
- 에지에 있는
LazyColumn
/LazyRow
의 항목이 빠른 플링 후에 잘못 배치되는 문제를 수정했습니다. (Ie4d13, b/183877420) - 이제 compose 계층 구조에서
AndroidViewBinding
을 삭제할 때AndroidViewBinding
이FragmentContainerView
를 통해 확장된 프래그먼트를 올바르게 삭제합니다. (Ib0248, b/179915946) ComposeView
가Fragment
내에 있을 때 이제AndroidViewBinding
이FragmentContainerView
를 통해 확장된 프래그먼트를 올바르게 중첩하여 이러한 프래그먼트의 상태를 저장하고 복원하는 문제를 수정합니다. (I70eb0, b/179915946)- Compose ViewBinding이 이제 Fragment
1.3.2
에 종속되며 이제 구성 변경 후FragmentContainerView
를 통해 확장된 프래그먼트를 일관되게 표시합니다. (I0743d, b/179915946)
버전 1.0.0-beta03
2021년 3월 24일
androidx.compose.ui:ui-*:1.0.0-beta03
이 출시되었습니다. 버전 1.0.0-beta03에 포함된 커밋을 확인하세요.
API 변경사항
- ComposeView의 ViewTree 종속 항목 검사를 연기했습니다. (I8dbbf, b/182466548)
- 선택항목인
startX
/endX
및startY
/endY
매개변수를GestureScope
의swipeUp
/swipeDown
/swipeLeft
/swipeRight
함수에 추가했습니다. (I49e2d, b/182063305)
버전 1.0.0-beta02
2021년 3월 10일
androidx.compose.ui:ui-*:1.0.0-beta02
가 출시되었습니다. 버전 1.0.0-beta02에 포함된 커밋을 확인하세요.
API 변경사항
- TextField의 이전 SoftwareKeyboardController 인터페이스를 대체하기 위해 새로운
LocalSoftwareKeyboardController
컴포지션 로컬 API를 추가했습니다. (I5951e, b/168778053) - TextField의 이전 SoftwareKeyboardController 인터페이스를 대체하기 위해 새로운
LocalSoftwareKeyboardController
컴포지션 로컬 API를 추가했습니다. (I84472, b/168778053) - 다음
SemanticsMatcher
를 삭제했습니다.hasWidth(width, tolerance)
hasHeight(height, tolerance)
hasLeftPosition(left, tolerance)
hasTopPosition(top, tolerance)
hasRightPosition(right, tolerance)
hasBottomPosition(bottom, tolerance)
(If16bd)
- 다음
SemanticsMatchers
를 @ExperimentalTestApi로 표시했습니다.hasWidth(width, tolerance)
hasHeight(height, tolerance)
hasLeftPosition(left, tolerance)
hasTopPosition(top, tolerance)
hasRightPosition(right, tolerance)
hasBottomPosition(bottom, tolerance)
(Ia600c)
- 다음
SemanticsMatcher
를 추가했습니다.hasWidth(width, tolerance)
hasHeight(height, tolerance)
hasLeftPosition(left, tolerance)
hasTopPosition(top, tolerance)
hasRightPosition(right, tolerance)
hasBottomPosition(bottom, tolerance)
(I2f502)
버그 수정
- 실험용 API의 공개 사용에 제한을 적용합니다. (I6aa29, b/174531520)
androidx.compose.ui:ui
는 더 이상 AppCompat 또는 Fragment에 종속되지 않습니다. 애플리케이션에서 ComposeView를 사용하면서 Fragment나 AppCompat를 사용한다면 AppCompat 1.3 이상/Fragment 1.3 이상을 사용해야 합니다. 이러한 버전은 ComposeView에 필요한 수명 주기 및 저장된 상태 소유자를 정확하게 설정하는 데 필요합니다. (I1d6fa, b/161814404)- navigation-compose의 대상 내에서 사용될 때
rememberSaveable { mutableStateOf(0) }
이 중단되는 문제를 해결했습니다. (I1312b, b/180042685, b/180701630) - TextField의 이전 SoftwareKeyboardController 인터페이스를 대체하기 위해 새로운
LocalSoftwareKeyboardController
컴포지션 로컬 API를 추가했습니다. (I658b6, b/168778053) ComposeRootRegistry
의tearDownRegistry()
에서 드물게 발생하는 NoSuchElementException 문제를 해결했습니다. (Iddce1)
버전 1.0.0-beta01
2021년 2월 24일
androidx.compose.ui:ui-*:1.0.0-beta01
이 출시되었습니다. 버전 1.0.0-beta01에 포함된 커밋을 확인하세요.
Compose 1.0.0 베타의 첫 번째 버전입니다.
API 변경사항
- onStart 콜백을
detectDragGestures
에 추가했습니다. (I67269, b/179995594) - 내장 기능에 맞게 크기를 조정하는 수정자는 더 이상 실험용이 아닙니다. (I15744)
- MeasureBlocks 이름을 MeasurePolicy로 바꿔 흥미로운 인터페이스가 되었습니다. MeasurePolicy를 사용하도록 레이아웃 API를 업데이트/단순화했습니다. (Icab48, b/167662468, b/156751158)
InteractionState
를[Mutable]InteractionSource
로 대체했습니다.- 인터페이스는 상호작용 이벤트를 방출/수집해야 합니다.
Button
및Modifier.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)
- CompositionLocals에서 AccessibilityMananger 인터페이스 및 LocalAccessibilityMananger를 추가합니다. (I53520)
- 지원 중단된 LayoutCoordinates 메서드를 삭제했습니다. positionInParent 및 boundsInParent의 속성 대신 함수를 사용합니다. (I580ed, b/169874631, b/175142755)
- Typealiases를 기본 유형으로 대체했습니다.
ColorStop
은 이제Pair<Float, Color>
입니다.SpanStyleRange
는 이제 `AnnotatedString.Range입니다. ParagraphStyleRange
는 이제AnnotatedString.Range<ParagraphStyle>
입니다.StringAnnotation
은 이제AnnotatedString.Range<String>
입니다.- (I8dd1a)
- CoreTextField와 같은 하위 수준의 텍스트 구성요소의 입력 세션을 위한 새로운 TextInputSession을 만들었습니다. (I8817f, b/177662148)
- Placeable이 이제 measuredSize를 노출하여 하위 레이아웃이 실제로 측정되는 크기를 나타냅니다. 이 크기는 측정 제약 조건을 따르지 않을 수도 있습니다. (Ib2729, b/172560206, b/172338608)
- 접근성을 위해 Tabs 또는 RadioButtons 모음을 표시할 수 있는 selectionGroup 수정자를 추가합니다. (Ie5c29)
compositionLocalOf
및staticCompositionLocalOf
용defaultFactory
는 이제 선택사항이 아닌 필수입니다.이 변경으로 인해 null을 허용하지 않는 유형 중 기본 팩토리가 제공되지 않은 유형에 관해 잠재적으로 발생할 수 있는 유형 오류가 발생하지 않습니다. 이전에는 null을 허용하지 않는 유형의 경우 null 참조가 제공되었습니다.
null을 허용하는 유형에는
{ null }
을 기본 팩토리로 제공하는 것이 좋습니다.적절한 기본값을 제공할 수 없는 한, null을 허용하지 않는 유형에는 로컬을 사용하지 않는 것이 좋습니다. 적절한 기본값이 존재하지 않으면
defaultFactory
람다에서 예외가 발생합니다. 하지만 예외가 발생해도 로컬이 유형 시스템에 의해 실행되지 않는 한, 로컬의 사용자는 로컬에 관한 암시적 종속 항목을 갖게 됩니다. (Ifbd2a)UI 모듈에서 지원 중단된 메서드를 삭제했습니다. (I646f6)
크기 수정자의 이름을 바꿨습니다. Modifier.width/height/size의 이름이 requiredWidth/requiredHeight/requiredSize로, Modifier.preferredWidth/preferredHeight/preferredSize의 이름이 width/height/size로 변경되었습니다. (I5b414)
Modifier.tapGestureFilter
를 삭제했습니다. 대신Modifier.pointerInput { detectTapGestures(...) }
를 사용합니다. (I266ed, b/175294473)포인터 입력 시스템에서 부분 소비를 삭제했습니다. 부분 소비를 조정하는 데 권장되는 방법은 Modifier.nestedScroll입니다. (Ie9c9b)
방향을 기본 패키지로 이동했습니다. VelocirtTracker가 ui.gesture에서 ui.input.pointer로 이동했습니다. (Iff4a8, b/175294473)
imageResource 및 vectorResource는 이제 ImageBitmap 및 ImageVector 컴패니언의 확장 함수입니다.
load{Image,Vector,Font}Resource
함수를 삭제했습니다. (I89130)AnimationClockObservable 및 서브클래스를 삭제했습니다. AnimatedFloat를 삭제했습니다. (Icde52, b/177457083)
제공자 이름을 CompositionLocalProvider로 바꿨습니다.
- 컴포지션 생성자가 더 이상 키 매개변수를 허용하지 않으며 지원 중단되었습니다.
- currentCompositeKeyHash가 최상위 컴포저블 함수가 아닌 최상위 컴포저블 속성으로 전환되었습니다.
- CompositionData 및 CompositionGroup이 androidx.compose.runtime.tooling 네임스페이스로 이동했습니다.
- ComposableLambda는 구체적인 클래스가 아닌 일종의 인터페이스가 되었으며 더 이상 유형 매개변수를 갖지 않습니다.
- ComposableLambdaN은 구체적인 클래스가 아닌 일종의 인터페이스가 되었으며 더 이상 유형 매개변수를 갖지 않습니다.
- snapshotFlow 함수가 androidx.compose.runtime 네임스페이스로 이동했습니다.
- SnapshotMutationPolicy의 병합 메서드가 더 이상 실험용이 아닙니다.
- @TestOnly 최상위 clearRoots 함수를 삭제했습니다. 더 이상 필요하지 않습니다.
- keySourceInfoOf 및 resetSourceInfo 함수가 삭제되었습니다. 더 이상 필요하지 않습니다.
- Composer.collectKeySourceInformation이 삭제되었습니다. 더 이상 필요하지 않습니다.
- isJoinedKey, joinedKeyLeft 및 joinedKeyRight 메서드가 삭제되었습니다. 더 이상 필요하지 않습니다.
- 다양한 최상위 API가 여러 파일로 이동되고 재구성되었습니다. Kotlin의 파일 클래스 의미 체계로 인해 바이너리 호환성이 중단되지만 소스 호환성은 중단되지 않습니다. 따라서 대부분의 사용자에게 문제가 되지 않습니다.
- (I99b7d, b/177245490)
compose:ui에서
ComponentActivity.setContent()
를 삭제했습니다.androidx.activity:activity-compose:1.3.0-alpha01
에서 제공되는 것을 사용하세요. compose:ui에서viewModel()
및LocalViewModelStoreOwner
를 삭제했습니다.androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01
에서 제공되는 것을 사용하세요. (I6f36b)Modifier.scrollable을 재작업했습니다. 이제 ScrollableController 클래스 대신 Scrollable 인터페이스가 사용됩니다. (I4f5a5, b/174485541, b/175294473)
PointerInputModifier에서 CustomEvens 지원을 삭제했습니다. (I02707, b/175294473)
SnapshotStateObserver는 더 이상 실험용이 아닙니다. (Id2e6a)
이전에 지원 중단된 일부 API를 삭제했습니다. (Ice5da, b/178633932)
longPressGestureFilter 및 doubleClickGestureFilter를 삭제했습니다. detectTapGestures 같은 도우미 함수와 함께 Modifier.pointerInput을 사용하세요. (I2fedf, b/175294473)
String.format을 내부적으로 활용하지 않도록 다양한 toString 메서드에서 String.format API 리팩터링 용도를 삭제했습니다. (Id1290)
dp 어설션을 삭제했습니다. (I798d2)
androidx.compose.runtime:runtime-dispatch를 삭제했습니다. (I55feb)
텍스트 작업이 이제 자동으로 포커스를 확인합니다. (I13777, b/179648629)
runBlockingWithManualClock
을 삭제했습니다. (I15cdc, b/179664814)Modifier.verticalScroll()/horizontalScroll()에서 이제 스크롤 위치를 Ints로 표시합니다. (I81298)
FlingConfig 이름을 FlingBehavior로 바꿔 이제 사전 정의된 감쇠가 아닌 정지 애니메이션을 맞춤설정할 수 있습니다. (I02b86, b/175294473)
모든 ImeAction 콜백에 동일한 작업을 설정하는 도우미 함수를 추가했습니다. (I63447, b/179226323)
모든 텍스트 필드에서 SoftwareKeyboardController 콜백을 삭제했으며 곧 새 API로 대체할 예정입니다. (Iae869, b/168778053)
FontSpan 및 FontWeigthStyleSpan을 더 이상 사용하지 않아 삭제했습니다. (Ie5b56, b/177423444)
다음과 같이 Material API가 변경되었습니다.
- 기본 패딩을 맞춤설정할 수 있도록 contentPadding 매개변수를 Top/BottomAppBar에 추가했습니다.
- 필수 매개변수가 선택 매개변수 앞에 와야 한다는 API 지침을 따르기 위해 BackdropScaffold의 매개변수를 재정렬했습니다.
- BottomNavigationItem의
icon
매개변수를selected
및onClick
다음으로 이동했습니다. - BottomNavigationItem의
alwaysShowLabels
매개변수 이름을alwaysShowLabel
로 변경했습니다. - 몇몇 구성요소의
bodyContent
매개변수 이름을 단순하게content
로 변경했습니다. ButtonDefaults.buttonColors()
의 매개변수를 재정렬했습니다. 매개변수의 유형이 변경되지는 않았으므로 이로 인한 코드 오류는 발생하지 않습니다. 이름이 지정된 매개변수를 사용하거나 수동으로 정렬을 업데이트하세요. 그러지 않으면 코드가 이전과 동일하게 작동하지 않습니다.darkColors()
에secondaryVariant
매개변수를 추가했습니다. 이 색상은 일반적으로 어두운 테마의secondary
와 동일하지만 일관성 및 세부 맞춤설정을 위해 추가되었습니다.- 공개 API 노출 영역에서 ElevationDefaults 및 animateElevation()을 삭제했습니다. 자주 사용되지 않거나 유용하지 않기 때문입니다.
Slider
의onValueChangeEnd
이름을onValueChangeFinished
로 바꾸고 null을 허용하도록 설정했습니다.- 일관성을 위해
Snackbar
의text
매개변수 이름을content
로 변경했습니다. - 기본 패딩의 맞춤설정이 가능하도록
DropdownMenuItem
에contentPadding
매개변수를 추가했고,content
를RowScope
의 확장 프로그램으로 만들었습니다. ModalDrawerLayout
의 이름을ModalDrawer
로 변경했습니다.BottomDrawerLayout
의 이름을BottomDrawer
로 변경했습니다.- (I1cc66)
버그 수정
- Compose에서 AnimatedVectorDrawable 리소스를 사용하도록 API를 추가했습니다. animatedVectorResource를 사용하여
<animated-vector>
XML을 AnimatedImageVector로 로드하고 painterFor를 사용하여 애니메이션 처리합니다. (I8ea91) - TextField의 이전 SoftwareKeyboardController 인터페이스를 대체하기 위한 새로운 LocalSoftwareKeyboardController 컴포지션 로컬 API를 추가했습니다. (I658b6, b/168778053)
버전 1.0.0-alpha12
2021년 2월 10일
androidx.compose.ui:ui-*:1.0.0-alpha12
가 출시되었습니다. 버전 1.0.0-alpha12에 포함된 커밋을 확인하세요.
API 변경사항
- UiApplier에서 ViewGroups 지원이 삭제되었습니다. 지원 중단된 emitView 컴포저블을 삭제했습니다. (Ifb214)
- 이제 Modifier.pointerInput에 새 종속 항목으로 인해 포인터 입력 감지 코루틴이 다시 시작되어야 할 때를 나타내는 기억 키가 필요합니다. (I849cd)
- CompositionReference 이름을 CompositionContext로 바꾸었습니다. (I53fcb)
- Bounds 이름을 DpRect로 바꾸었습니다. (I4b32a)
- 업데이트 테스트: hasText()에서 텍스트 필드의 입력 및 라벨/힌트/자리표시자 텍스트를 모두 확인합니다. (Iab803)
- viewModel() 컴포저블 및 LocalViewModelStoreOwner를 androidx.lifecycle.viewmodel.compose로 이동했습니다. 이제 이를 사용하려면 별도의 종속 항목 androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01을 추가해야 합니다. (I7a374)
- AccessibilityAction에서 null 작업을 허용하고 AccessibilityAction 및 CustomAccessibilityAction의 작업 라벨을 CharSequence에서 String으로 변경합니다. (I0dc82)
- ImageBitmap 및 ImageVector와 이름 지정 규칙을 더 잘 맞추기 위해 ImagePainter의 이름을 VectorPainter와 유사한 BitmapPainter로 바꾸었습니다. (Iba381, b/174565889)
- 하위 문자열을 인수로 사용하는 더 나은 하위 문자열 테스트 API를 제공합니다. (Icbe78)
- 맞춤 포커스 순서를 람다로 지정하지 않고 FocusRequester를 허용하는
Modifier.focusOrder()
를 추가했습니다. 이는 컴포저블을 위해 맞춤 포커스 순서가 아닌 참조만 지정해야 할 때 유용합니다. (I4f52a, b/179180978) - ComponentActivity.setContent를 androidx.activity:activity-compose 모듈의 androidx.activity.compose.setContent로 이동했습니다. (Icf416)
- 거의 사용하지 않는 여러 클래스의 디스트럭처링 메서드와 copy() 메서드를 삭제했습니다. (I26702, b/178659281)
- 플랫폼에 맞게 Popup을 이동했습니다. AndroidPopupProperties의 이름을 PopupProperties로 바꾸었고
isFocusable
을PopupProperties
의focusable
매개변수로 이동했습니다. (Ieeea5) - 플랫폼에 맞게 Dialog를 이동했습니다. AndroidDialogProperties의 이름을 DialogProperties로 바꾸었습니다. (I4ef69, b/179138130)
- LayoutNode를 내부로 이동했습니다. (I8a7b1, b/175103944)
- Constraints.enforce를 Constraints.constrain으로 대체했습니다. (I8b8ea)
- loadFontResource가 지원 중단됩니다. 대신 fontResource를 사용하세요. imageResource, loadImageResource, vectorResource, loadVectorResource는 지원 중단됩니다. 대신 painterResource를 사용하세요. (I6b809)
- 성능상의 이유로 ScrollAxisRange 의미 체계는 이제 직접 Float 값을 사용하는 대신 Float를 반환하는 람다를 사용합니다. (If4a35, b/178657186)
- 텍스트 필드의 수정 가능한 입력 텍스트를 표시하는 EditableText 의미 체계와 이 의미 체계를 확인할 수 있도록 이에 대응하는 테스트 메서드를 추가했습니다. (I8e07a)
- OwnerLayer/OwnerScope/OwnerSnapshotObserver를 비공개로 변경했습니다. (I4ffaf, b/175103944)
- toIntPx()의 이름을 roundToPx()로 바꾸었습니다. (I9b7e4, b/173502290)
- IntBounds의 이름을 IntRect로 바꾸고 API를 개선했습니다. (I1f6ff)
- API 가이드라인을 준수하고 공개 API에서 내부 구현 클래스를 숨기도록 Snapshot API를 업데이트했습니다. (Id9e32)
- 확장 및 축소 의미 체계 작업을 추가했습니다. ModalBottomSheetState에 expand 및 halfExpand를 추가했습니다. (Ib5064)
- Modifier.dragGestureFilter가 지원 중단되었습니다. 대신
Modifier.pointerInput { detectDragGestures (...)}
를 사용하세요. 또는, 하나의 축 드래그에 Modifier.draggable을 사용합니다. (I0ba93, b/175294473) - Ambients의 이름을 Ambient와 일치하도록 CompositionLocal로 바꾸었습니다. Ambients에서 AmbientFoo라고 했던 이름은 이제 CompositionLocals에서 LocalFoo가 됩니다. (I2d55d)
- 이제 지원 중단된 BaseTextField가 삭제되었습니다. 대신 BasicTextField를 사용하세요. (I71368)
- Selection은 foundation으로 이동했습니다. (I7892b)
- 이전의
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) - 접근성을 위해 비밀번호 의미 체계를 추가했습니다. (I231ce)
- 접근성을 위해 미확정 진행률 표시줄을 표시하는 ProgressBarRangeInfo.Indeterminate를 추가했습니다. (I6fe05)
emptyContent()
와(@Composable () -> Unit).orEmpty()
유틸리티는 더 이상 성능에 긍정적인 영향이나 가치가 없으므로 지원 중단되었습니다. (I0484d)snapshotFlow
및withMutableSnapshot
은 이제 실험용이 아닙니다. (I6a45f)- 이제 Recomposer를 종료할 수 있습니다. 종료된 Recomposer는 컴포지션 하위 코루틴이 완료될 때까지 리컴포지션을 계속합니다. close와 구분하기 위해 Recomposer.shutDown의 이름을 cancel로 바꾸었습니다. (Ib6d76)
- UiSavedStateRegistry를 SaveableStateRegistry로, AmbientUiSavedStateRegistry를 AmbientSaveableStateRegistry로 이름을 바꾸고 모두 androidx.compose.runtime.saveable 패키지로 이동했습니다. (I30224)
- 아티팩트 androidx:compose:runtime:runtime-saved-instance-state의 이름을 androidx:compose:runtime:runtime-saveable로 바꾸었습니다. (I6dcac)
- ui 패키지에서 오랫동안 지원 중단된 많은 API를 삭제합니다. (I2f2dc)
- compose:runtime-dispatch 아티팩트는 이제 지원 중단됩니다. 이제 MonotonicFrameClock은 compose:runtime에서, AndroidUiDispatcher는 compose:ui에서 찾을 수 있습니다. (Ib5c36)
- Outline.* 클래스는 이제 데이터 클래스가 아닙니다. (I4879e, b/178001427)
view.captureToImage()
를 삭제합니다(대체 메서드 없음). (I7fcd2)- 소스 콘텐츠의 RGB 값을 수정하는 데 사용할 수 있는 ColorMatrix API를 도입했습니다. ColorFilter API가 인스턴스가 되고 PathEffect 구현과 일치하도록 리팩터링했습니다. (Ica1e8)
- layoutDirection 매개변수를 Shape의 createOutline에 추가합니다. 이렇게 하면 도형을 인식하는 레이아웃 방향을 만들 수 있습니다. (I57c20, b/152756983)
- onImeActionPerformed가 지원 중단됩니다. 대신 KeyboardActions를 사용하세요. (If0bbd, b/179071523)
- 무한 애니메이션에 적용될
InfiniteAnimationPolicy
코루틴 컨텍스트 요소를 도입했습니다. 기본적으로ComposeTestRule
을 사용하여 테스트를 실행하는 경우를 제외하고 설치되는 정책은 없습니다. (I50ec4, b/151940543) - Modifier.scrollable에서 canDrag가 삭제되었습니다. (Id66e7, b/175294473)
- 새로운 parentCoordinates 속성을 허용하도록 LayoutCoordinates.parentCoordinates 이름을 LayoutCoordinates.parentLayoutCoordinates로 바꾸었습니다. 이제 parentCoordinates 속성에서 상위 수정자의 LayoutCoordintes를 제공합니다. 이는 onSizeChanged() 및 onGloballyPositioned()의 더 완전한 사용 사례에 도움이 됩니다. (Idfbfd, b/177926591)
- tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter 및 pressIndicaitonGestureFilter가 지원 중단되었습니다. 대신 detectTapGestures 함수와 함께 Modifier.clickable 또는 Modifier.pointerInput을 사용합니다. (I6baf9, b/175294473)
- SaveableStateRegistry의 unregisterProvider를 삭제했습니다. 대신 이제 registerProvider()에서 등록 취소 시 사용할 수 있는 SaveableStateRegistry.Entry 객체를 반환합니다. (Ic4274, b/178583739)
- rememberSavedInstanceState()를 rememberSaveable()로 이름을 바꾸고 androidx.compose.runtime.saveable 패키지로 이동했습니다. (I1366e, b/177338004)
- 공개 API에서 CoreText와 CoreTextField를 삭제했습니다.
- 지원 중단된 SelectionContainer 오버로드가 삭제되었습니다.
- (I99c19)
- 이제 WindowManager에 직접 추가/삭제되는 계층 구조에서 Compose가 사용되는 테스트가 더 안정적입니다. (Ie81ed, b/175765614)
- Recomposer.current()를 삭제했습니다. [Abstract]ComposeView는 이제 지연 생성되고 창으로 범위가 지정되며 창의 ViewTreeLifecycleOwner에서 구동하는 Recomposer를 기본값으로 설정합니다. Recomposition 및 withFrameNanos 기반 애니메이션 틱은 호스트 수명 주기가 중지된 동안 일시중지됩니다. (I38e11)
- Recomposer.runningRecomposers는 이제 프로세스에서 진행 중인 컴포지션 상태를 관찰하기 위한 읽기 전용 RecomposerInfo의 전역 StateFlow를 제공합니다. 현재 지원 중단된 Recomposer.current()보다 이 API를 사용하는 것이 좋습니다. (If8ebe)
- Saver, listSaver(), mapSaver(), autoSaver를 androidx.compose.runtime.savedinstancestate에서 androidx.compose.runtime.saveable로 이동했습니다. (I77fe6)
- EditCommand는 AnnotatedString을 허용합니다. 그러나 이는 API 전용 변경사항이고 다중 스타일 텍스트 편집은 아직 구현되지 않았습니다. (I4c3ea)
- Uptime 및 Duration을 삭제했습니다. (Ib9bf4, b/177420019)
- CompositionData.asTree() 및 관련 API를 별도의 ui-tooling-data 모듈로 이동하고 실험용으로 표시했습니다. (Ic95b8)
- RTL 방향에서 도형의 자동 미러링을 지원하기 위해 RounderCornerShape, CutCornerShape, CornerBasedShape의 매개변수 이름을 left/right에서 start/end로 바꾸었습니다. 자동 미러링을 사용하지 않는 경우를 위해 AbsoluteRounderCornerShape과 AbsoluteCutCornerShape을 도입했습니다. (I61040, b/152756983)
Compose 컴파일러 플러그인에서 타겟팅하는 API는 구체적인 클래스 대신 인터페이스를 사용하도록 리팩터링했습니다. 또한, 인터페이스는 더 이상 유형 매개변수를 사용하지 않습니다.
이는 소스 코드 호환성에 영향을 주면 안 되는 내부 변경이지만, 바이너리 브레이킹 체인지입니다. (I3b922, b/169406779)
의도치 않게 공개 StringBuilder.deleteAt 함수를 삭제했습니다. (Id6ed9)
버그 수정
- 다른 컴포지션의 하위 요소인 뷰 계층 구조에 배치된 ComposeView는 이제 상위 요소의 하위 컴포지션을 호스팅합니다. (I92883)
- ImageBitmap 객체를 로드할 때 리소스 드로어블 캐시를 재사용하도록 Compose의 imageFromResource API를 업데이트했습니다. (If3627, b/178751994)
버전 1.0.0-alpha11
2021년 1월 28일
androidx.compose.ui:ui-*:1.0.0-alpha11
이 출시되었습니다. 버전 1.0.0-alpha11에 포함된 커밋을 확인하세요.
API 변경사항
- WithConstraints를 BoxWithConstraints로 재작업하여 foundation.layout으로 이동했습니다. (I9420b, b/173387208)
- Key.DPadUp이 지원 중단되었습니다. 대신 Key.DirectionUp을 사용하세요. (Iab335, b/177954892)
- 이제부터 소유자 인터페이스는 내부 인터페이스입니다. (If8e35)
- 프로그래매틱 방식으로 포커스를 이동하는 FocusManager.moveFocus() API를 추가했습니다. (I045cb, b/177681839)
- 전역 좌표가 아닌 창 기준 좌표를 사용하도록 PopupPositionProvider를 변경합니다. parentGlobalBounds 이름을 anchorBounds로 바꾸고 windowGlobalBounds를 windowSize: IntSize로 변경합니다. (I2994a)
- Duration과 Uptime이 Long 밀리초로 대체되며 이 단계에서는 이러한 클래스의 포인터 입력 종속 항목을 삭제합니다. (Ia33b2, b/175142755, b/177420019)
- AmbientSavedStateRegistryOwner는 이미 기존 AmbientLifecycleOwner 및 AmbientViewModelStoreOwner와 비슷하게 추가되었습니다. (I9a3e8, b/176756365)
- 벡터 그래픽의 루트에 적용된 색조 처리에 파싱을 지원하는 벡터 그래픽 API를 업데이트했습니다. (Id9d53, b/177210509)
- 기기를 구분하기 위해 toolType을 PointerInputChange에 추가했습니다. (Iac787, b/175142755)
- AmbientWindowManager의 이름이 AmbientWindowInfo로 변경되었습니다. (I2686a, b/177084714, b/177084983)
- 전역 좌표 메서드를 지원 중단하고 창 기반의 좌표 메서드를 새로 만들었습니다. (Iee284)
- 검사가 사용 설정되어 있을 때 그래픽 레이어 수정자를 추가하는 Modifier.toolingGraphicsLayer를 추가했습니다. (I315df)
- 이제 FocusRequester.createRefs는 변경될 수 있으므로 실험용으로 표시됩니다. (I2d898, b/177000821)
- SemanticsPropertyReceiver.hidden이 invisibleToUser로 이름이 변경되었으며 @ExperimentalComposeUiApi로 표시되었습니다. AccessibilityRangeInfo가 ProgressBarRangeInfo로, stateDescriptionRange가 progressBarRangeInfo로 이름이 변경되었습니다. AccessibilityScrollState가 ScrollAxisRange로, horizontalAccessibilityScrollState가 horizontalScrollAxisRange로, verticalAccessibilityScrollState가 verticalScrollAxisRange로 이름이 변경되었습니다. (Id3148)
- PointerInputData의 모든 필드를 제공하도록 PointerInputData를 삭제하고 PointerInputChange를 수정했습니다. PointerInputEvent 및 PointerInputEventData가 공개 API에서 사용되지 않으므로 이를 내부 클래스로 변경했습니다. (Ifff97, b/175142755)
- dp에서 원시 픽셀로 변환하는 것을 지원하도록 GraphicsLayerScope 구현 밀도를 업데이트했습니다. (Ied528, b/176819695)
- 내부적으로 SkMatrix와 Matrix4 사이의 프레임워크 변환 로직과 일치하도록 다른 행렬 표현 간의 변환을 돕는 색인 상수를 제공하고 행의 주요 순서를 따르기 위해 행렬 API를 업데이트했습니다. (I432e6)
- 실험용 monotonicFrameAnimationClockOf 메서드를 삭제했습니다. (Ib753f, b/170708374)
- String.fintPrecedingBreak 및 String.fingFollowingBreak를 InternalTextApi로 이동합니다. (I657c4)
- 공개 API에서 androidx.compose.ui.util.isSurrogatePair가 삭제되었습니다. (Ia9494)
- TransformedText.transformedText 이름을 TransformedText.text로 변경했습니다.
- TransformedText는 이제 데이터 클래스가 아닙니다. (Ie672a)
- 다음 클래스에서
data class
를 삭제했습니다.- InlineTextContent
- LocaleList (I605c7)
- 다음 클래스는 이제 데이터 클래스가 아닙니다.
- AnnotatedString
- ParagraphStyle
- SpanStyle
- TextStyle
- FontWeight
- TextDecoration
- TextGeometricTransform
- TextIndex
- TextLayoutResult
- TextLayoutInput (Iaff99)
- VisualTransformation을 기능 인터페이스로 변경했습니다. (I3bba4)
- 함수 참조 매개변수 유형을 추가했습니다. (I5e1bd)
- 변환된 경계를 InspectorNode에 추가합니다. (Ice42f)
버그 수정
- onCommit, onDispose, onActive가 지원 중단되었으며 SideEffect 및 DisposableEffect API로 대체되었습니다. (If760e)
Font/FontFamily/Typeface의 팩토리 함수 변경사항
- 대문자로 시작하는 팩토리 함수를 추가했습니다.
- 첫 글자가 소문자인 기존의 팩토리 함수를 지원 중단했습니다.
- 새 팩토리 함수는 서브클래스 대신 FontFamily를 반환합니다.
- 팩토리 함수를 통해서만 생성될 수 있도록 서브클래스의 생성자를 숨겼습니다.
- Font.asFontFamily의 이름을 Font.toFontFamily로 변경했습니다. (I42aa7)
ComposeTestRule
을 확장하고ComposeTestRule
에서 삭제된setContent
를 정의하는ComposeContentTestRule
을 도입했습니다.ComposeTestRule
을 반환하고 Activity를 실행하지 않는createEmptyComposeRule()
팩토리 메서드를 추가했습니다. 테스트 중에 Activity를 실행하려면 이 메서드를 사용합니다(예:ActivityScenario.launch
사용). (I9d782, b/174472899)animateAsState를 이제 animateFooAsState로 변경했으며, 여기에서 Foo는 애니메이션되는 변수 유형입니다(예: Float, Dp, Offset 등). (Ie7e25)
콘텐츠 설명 매개변수를 Image 및 Icon에 추가했습니다. 접근성 서비스에 설명을 제공하는 데 사용됩니다. (I2ac4c)
displaySize는 사용하면 안 되므로 삭제합니다. 최소한 onRoot() 크기나 창 크기를 사용하는 것이 일반적으로 더 좋습니다. (I62db4)
OnSizeChanged는 레이아웃의 콘텐츠 크기를 보고했습니다. 그러나 이제는 수정자 체인 내의 위치에서 크기를 보고합니다. (I36b78, b/177562900)
emit() API와 모든 오버로드가 지원 중단되었으며 ComposeNode로 이름이 변경되었습니다. 이는 Compose의 이름 지정 규칙을 준수하기 위한 다른 이름일 뿐 API는 동일합니다. (I4137b)
TextFieldValue에서 AnnotatedString을 허용합니다. 그러나 이는 API 전용 변경사항이고 다중 스타일 텍스트 편집은 아직 구현되지 않았습니다.
- EditingBuffer 생성자 매개변수에서
initial
을 삭제했습니다. (I326d5)
- EditingBuffer 생성자 매개변수에서
이제 invalidate와 compositionReference()가 지원 중단되며 currentRecomposeScope과 rememberCompositionReference로 각각 대체됩니다. (I583a8)
AnnotatedString이 kotlin.CharSequence에서 확장되도록 변경되었습니다. 따라서, 이제 length 및 subSequence는 인스턴스 함수이며 확장 함수는 삭제됩니다. (Iaf429)
CompositionLifecycleObserver가 RememberObserver로 대체되며 CompositionLifecycleObserver는 이제 지원 중단됩니다.
RememberObserver
는 수정된 의미 체계와 이름이 바뀐 메서드로CompositionLifecycleObserver
를 대체합니다. 새로운 API로 변경하는 것은 한 번만 기억되는 객체의 경우 기계적으로 실행할 수 있으며, 계속 이렇게 하는 것이 좋습니다. 그러나, 참조가 컴포지션에서 두 번 이상 기억된 경우onEnter
가 한 번만 호출되는 참조마다onRemembered
가 호출됩니다. 객체가 단일onEnter
호출 보장을 신뢰할 수 없게 하는WithConstraints
및Scaffold
와 같은 하위 컴포지션에서 사용되었고RememberObserver
에서 삭제되었다면onEnter
가 여러 번 호출되었습니다.RememberObserver
에서onAbandoned
를 추가합니다. 이 함수는RememberObserver
인스턴스가remember
에 전달된 콜백에서 반환되지만 컴포지션 상태에 기억되지 않아서onRemembered
가 호출되지 않는 경우에 호출됩니다. 이러한 상황은 완료 전에 예외에서 컴포지션을 종료한 경우 또는 상태에서 더 이상 최신이 아니거나 필요하지 않은 컴포지션을 생성하므로 컴포지션이 삭제된 경우에 발생할 수 있습니다. 위의 단일 참조 권장사항을 따르는RememberObserver
인스턴스가 외부 리소스를 추적하면onForgotten
과onAbandoned
는 모두 리소스가 더 이상 필요하지 않음을 나타냅니다. 객체가 시작된 작업 또는onRemembered
에 할당된 리소스를 추적하고 있다면onRemembered
가 호출되는 경우onAbandoned
는 호출되지 않으므로 무시될 수 있습니다. (I02c36)2개 이상의 TextUnit 간 연산 작업을 지원 중단했습니다. Int.sp 및 Int.em과 같은 확장 함수 대신 TextUnit.Sp와 TextUnit.Em 함수를 지원 중단했습니다. (I48369)
이제 public.xml 등을 통해 명시적으로 선언된 공개 리소스가 없는 라이브러리의 리소스는 기본적으로 비공개입니다. (Ia1dcc, b/170882230)
ScrollableColumn/Row가 지원 중단되었습니다. 스크롤 콘텐츠가 많을 때 ScrollableColumn을 사용하는 것은 LazyColumn에 비해 효율성이 떨어집니다. LazyColumn을 사용하면 표시된 요소만 구성/측정하고 그릴 수 있기 때문입니다. 사용자가 비효율적인 방식을 사용하지 않도록 ScrollableColumn과 ScrollableRow를 지원 중단하고 대신 LazyColumn과 LazyRow의 사용을 장려합니다. 그러나 사용자는 여전히 지연 동작이 필요하지 않다고 판단하여 Column(Modifier.verticalScroll(rememberScrollState()))와 같은 수정자를 직접 사용할 수 있습니다. (Ib976b, b/170468083)
items(count: Int)
는 LazyColumn/LazyRow/LazyVerticalGrid 범위의 새로운 팩토리 메서드입니다.items(items: List)
및itemsIndexed(items: List)
는 이제 확장 함수이므로 사용할 때 직접 가져와야 합니다.items(items: Array)
와itemsIndexed(Array)
는 배열의 새로운 확장 오버로드입니다. (I803fc, b/175562574)ImeAction.NoAction 대신 ImeAction.None을 사용하세요.
- ImeAction.Unspecified 대신 ImeAction.Default를 사용하세요. (Ie1bcc)
테스트에서 TestCoroutineDispatcher를 활용합니다. (I532b6)
TextInputService.onStateUpdated 이름을 updateState로 변경했습니다. (Id4853)
TransitionDefinition 기반의 Transition이 지원 중단되었습니다. (I0ac57)
TextUnitType.Inherit가 삭제되었습니다. 대신 TextUnitType.Unspecified를 사용하세요. (I9ff64)
버전 1.0.0-alpha10
2021년 1월 13일
androidx.compose.ui:ui-*:1.0.0-alpha10
이 출시되었습니다. 버전 1.0.0-alpha10에 포함된 커밋을 확인하세요.
브레이킹 체인지
내부 컴파일러 API를 재구성하면 모든
@Composable
함수가 완료된 후에 구성의 결과로 생성된 노드 변경사항을 구성의 '변경사항 적용' 단계에 일괄 적용할 수 있습니다.이는 변경사항이 적용될 때까지 내부 및 실험용 API에서 더 이상 노드를 사용할 수 없으므로 애플리케이션 코드에 영향을 줄 수 있는 동작 브레이킹 체인지입니다. 이 문제는 일반적으로 노드가 생성 및 초기화될 때까지 코드 실행을 연기하도록 이러한
SideEffect
컴포저블의 종속 항목을 사용하여 코드를 둘러싸는 방식으로 해결할 수 있습니다. (I018da)
API 변경사항
- 맞춤 포커스 순회 순서를 지정하는 데 사용할 수 있는 Modifier.focusOrder()를 추가했습니다. (I90cf5, b/175899543, b/170155556, b/170155429)
- 지원 중단된 focusObserver를 삭제했습니다. 대신, onFocusChanged 또는 onFocusEvent를 사용하면 됩니다. (I3ecb9, b/175156387)
- EditOperations API 변경사항
- EditOperation의 이름을 EditCommand로 바꿈
- EditOperation의 구체적인 구현을 위해 Command 접미사를 추가함
- EditCommand가 더 이상 데이터 클래스가 아님
- EditOperation.process 함수의 이름을 applyTo로 바꿈
- InputEventListener의 이름을 InputEventCallback으로 바꿈
- (I0a366)
- 사용하지 않는 PxSquared, PxCubed, PxInverse를 삭제했습니다. Size.center()를 속성으로 변경했습니다. (I973f7)
- ui-test 모듈은 이제 테스트 중인 UI용 Recomposer 생성을 구성할 수 있습니다. (Ibebd8)
- 구성요소 부분과 수학 연산을 포함하도록 속도를 수정했습니다. (Ib0447)
- 유사한 실험용 API 주석과 일치하도록
@ExperimentalTesting
에서@ExperimentalTestApi
로 이름을 바꿨습니다. (Ia4502, b/171464963) - Color.useOrElse()의 이름을 Color.takeOrElse()로 바꿨습니다. (Ifdcf5)
- 사용하지 않는 DpInverse, DpSquared, DpCube 클래스를 삭제했습니다. (I4d62b)
- Constraints#satisfiedBy의 이름을 isSatisfiedBy로 바꿨습니다. (I9cf5c)
- layoutnode 경계가 변경되면 소유자에게 알리는 콜백이 추가됩니다. (I72fd1)
- Unspecified 상수가 있는 인라인 클래스용으로 isSpecified, isUnspecified, useOrElse를 추가했습니다. (I93f7b, b/174310811)
[Abstract]ComposeView API를 확장하여 Compose 기반 뷰를 재활용할 수 있도록 하고 나중에 다시 만들 수 있도록 뷰의 구성을 폐기합니다. 하위 구성을 만들기 위해 창으로 범위가 지정된 Recomposer 및 CompositionReference를 설치 및 탐색하는 API를 추가합니다.
[Abstract]ComposeView의 구성 폐기 전략을 구성하기 위한 ViewCompositionStrategy를 추가합니다. 기본 동작은 창 분리에 사용됩니다. (I860ab)
Any.identityHashCode() 공개 API를 삭제했습니다. (I025d7)
대신 String.format을 직접 사용하도록 toStringAsFixed API를 삭제했습니다. (Iaba6b)
기본 Strings.kt에 Toggle을 추가합니다. (I4a5b7, b/172366489)
nativeClass를 모듈로 이동하여 내부 클래스로 만들었습니다. equals 구현에서 'is MyClass'를 대신 사용하도록 nativeClass 사용을 업데이트했습니다. (I4f734)
Modifier.focus()와 Modifier.focusRequester()가 지원 중단됩니다. 대신 Modifier.focusModifier()와 Modifier.focusReference()를 사용하세요. (I75a48, b/175160751, b/175160532, b/175077829)
Selectable 업데이트를 SelectionManager에 알리도록 SelectionRegistrar.notifySelectableChange를 도입했습니다. (I6ff30, b/173215242)
다양한 윤곽선 구현을 위해 사각형 경계를 얻을 수 있는 Outline.bounds 속성이 도입되었습니다. (I16e74, b/175093504)
TestUiDispatcher를 지원 중단했습니다. 대신 Dispatchers.Main을 사용하세요. (Ic171f, b/175385255)
ImeOptions 및 KeyboardOptions는 더 이상 데이터 클래스가 아닙니다. (I3c898, b/168684531)
VisualTransformation API 변경사항
- OffsetMap의 이름을 OffsetMapping으로 바꿈
- OffsetMapping.identityOffsetMap의 이름을 OffsetMapping.Identity로 바꿈
- PasswordTransformation이 더 이상 데이터 클래스가 아님
- OffsetMapping을 자체 파일로 이동함
- (I0bdf3)
Position의 이름을 DpOffset으로 바꿨고 getDistance()를 삭제했습니다. (Ib2dfd)
Dp.isFinite()를 val Dp.isFinite로 변경했습니다. (I50e00)
버그 수정
- Recomposer는 이제 Recomposer의 활동과 연결된 효과의 활동을 모니터링할 수 있도록 현재 상태의 Flow를 노출합니다. (Ifb2b9)
- 이제 keyEvent.nativeKeyEvent를 통해 네이티브 keyEvent에 액세스할 수 있습니다. (I87c57, b/173086397)
animate()
가 이제T
대신State<T>
를 반환하는animateAsState()
로 대체되었습니다. 상태 값이 판독되는 지점까지 무효화 범위를 좁힐 수 있으므로 성능이 향상됩니다. (Ib179e)- Semantics role API를 추가하고 역할을 클릭 가능하고 선택 가능하며 전환 가능한 SemanticsModifier에 매개변수로 추가합니다. 슬라이더에서도 사용할 수 있도록 Modifier.progressSemantics를 변경했습니다. (I216cd)
- 새로운 코루틴 기반 API인
Animatable
은 애니메이션 간의 상호 배타성을 보장합니다.- 새로운 DecayAnimationSpec은 다차원 감쇠 애니메이션을 지원합니다.
- (I820f2, b/168014930)
버전 1.0.0-alpha09
2020년 12월 16일
androidx.compose.ui:ui-*:1.0.0-alpha09
가 출시되었습니다. 버전 1.0.0-alpha09에 포함된 커밋을 확인하세요.
API 변경사항
- 지원 중단된 KeyEvent.Alt를 삭제했습니다. 대신 KeyEvent.isAltPressed를 사용하세요. (Idd695)
- Modifier.keyInputFilter와 Modifier.previewKeyInputFilter가 지원 중단됩니다. 대신 Modifier.onKeyEvent와 Modifier.onPreviewKeyEvent를 사용하세요. (Idbf1b, b/175156384)
- Modifier.focusObserver가 지원 중단됩니다. 대신 Modifier.onFocusChanged나 Modifier.onFocusEvent를 사용하세요. (I30f17, b/168511863, b/168511484)
- 정지 포인터 입력 API의 경우 HandlePointerInputScope의 이름을 AwaitPointerEventScope로 바꾸고 handlePointerInput()의 이름을 awaitPointerEventScope()로 바꿨습니다. (Idf0a1, b/175142755)
- Autofill API는 이제 실험용 API이며 필수 선택 항목입니다. (I0a1ec)
- FocuSRequester 인스턴스를 만들기 위해 디스트럭처링 선언을 추가했습니다. (I35d84, b/174817008)
- accessibilityLabel의 이름을 contentDescription으로 바꿨습니다. accessibilityValue의 이름을 stateDescription으로 바꿨습니다. (I250f2)
- 맞춤 이벤트를 정지 포인터 입력 API에서 삭제했습니다. (Ia54d5, b/175142755)
- SelectionRegistrar에 몇 가지 새로운 함수를 도입하고 onPositionChange의 이름을 notifyPositionChange로 바꿨습니다. (Ifbaf7)
- LayoutNode의 더 많은 구성요소를 내부용으로 표시했습니다. (I443c6)
- 도구 및 테스트에서 사용하도록 LayoutInfo를 도입했습니다. (I9b190)
- AndroidOwner를 내부로 이동했습니다. (Ibcad0, b/170296980)
- ExperimentalPointerInput 주석을 삭제했습니다. (Ia7a24)
- 중첩된 스크롤 시스템을 추가했습니다. 자세한 내용은 Modifier.nestedScroll을 참고하세요. (I36e15, b/162408885)
- subcomposeInto(LayoutNode)를 내부로 이동했습니다. (Id724a)
하향식 대신 상향식으로 트리를 간단히 빌드할 수 있도록
Applier
인터페이스를 변경했습니다.insert()
에서insertTopDown()
으로 메서드 이름을 변경했습니다.새로운 메서드인
insertBottomUp()
이 추가되었습니다.Applier에서
insertTopDown()
또는insertBottomUp()
중 성능이 더 뛰어난 메서드를 사용하여 편집 중인 트리에 노드를 삽입합니다.LayoutNode
및View
와 같은 일부 트리는 하향식보다 상향식으로 빌드하는 것이 훨씬 더 효율적입니다. 이 변경사항이 적용되기 전에는 상향식을 구현하는 데 인서트 스택이 필요했는데, 성능을 위해 상향식 구조가 필요한 모든 applier에 이러한 스택을 복사해야 했습니다. 이번 변경사항에 따라 이제Applier
가 상향식 트리를 빌드하기 위해insertBottomUp()
을 재정의하고 하향식 트리를 빌드하기 위해insertTopDown()
을 재정의합니다. (Icbdc2)dismissOnBackPress 및 dismissOnClickOutside 속성을 AndroidDialogProperties에 추가했습니다. 이를 통해 대화상자의 onDismissRequest 람다를 호출하는 시기를 구성할 수 있습니다. (If5e17)
래스터화된 애셋 형식(예: PNG)이나 VectorDrawables에서 Painter 객체를 불투명하게 로드하는 작업을 처리하도록 painterResource API를 추가했습니다. 소비자는 더 이상 애셋 유형을 미리 결정하지 않아도 되고 이 메서드를 호출하여 이미지 컴포저블 또는 페인터 수정자에서 사용할 Painter 객체를 가져올 수 있습니다. (I2c703, b/173818471)
하위 요소의 의미 체계를 지우고 새 의미 체계를 설정하는 Modifier.clearAndSetSemantics를 추가했습니다. (I277ca)
ContentDrawScope를 DrawScope와 함께 있도록 ui-graphics 모듈로 이동했습니다. (Iee043, b/173832789)
스트로크가 적용된 도형에 다양한 패턴을 제공하는 PathEffect 그래픽 API를 도입했습니다. NativePathEffect 사용을 지원 중단했으며 PathEffect의 예상/실제 구현으로 대체했습니다. (I5e976, b/171072166)
Espresso 유휴 리소스의 Compose 지원 변형으로 Compose에 IdlingResource 인터페이스를 추가했습니다. 이는 ComposeTestRule을 통해 등록하거나 등록 취소할 수 있습니다. (I433f3)
ComposeIdlingResource의 전역 등록(등록 취소)과 ComposeIdlingResource의 클록 전역 등록(등록 취소)을 삭제했습니다. (I32660)
버그 수정
- 오프셋 수정자의 람다가 이제 Float 대신 IntOffset을 반환합니다. (Ic9ee5, b/174137212, b/174146755)
공개 API에서 SlotTable, SlotReader, SlotWriter가 삭제되었습니다. 이전에는 InternalComposeAPI로 표시되었으며 지금은 구성 모듈 내부에 있습니다.
구성 정보를 추출하는 데 사용하는 ui-tooling API를 대체할 ComposeData 및 ComposeGroup이 추가되었습니다. 이러한 API는 공개되어 있지만 ui-tooling API가 해석하는 원시 정보를 제공하므로 ui-tooling API 외부에서 사용할 수는 없습니다. (I31a9c)
그리기 환경의 크기 조절 정보를 사용할 수 있을 때 셰이더 인스턴스를 느리게 만들도록 ShaderBrush를 리팩터링했습니다. 이는 맞춤 DrawModifier 구현을 구현하지 않고도 구성 시간에 컴포저블의 전체 그리기 경계를 차지하는 그라데이션을 정의하는 데 유용합니다.
그라데이션 함수 생성자 API를 지원 중단했으며 Gradient 객체의 팩토리 메서드로 대체했습니다. (I511fc, b/173066799)
LazyColumnFor, LazyRowFor, LazyColumnForIndexed, LazyRowForIndexed를 지원 중단했습니다. 대신 LazyColumn과 LazyRow를 사용하세요. (I5b48c)
BuildCompat.isAtLeastR을 지원 중단했습니다. (Idb37e)
AnnotatedString을 빌드하기 위해 buildAnnotatedString 팩토리 함수를 추가했습니다. annotatedString 빌더 함수를 지원 중단했습니다. (Idfe0b)
값을 라디안으로 변환하기 위해 Float 및 Double의 확장 메서드를 삭제했습니다. 유일하게 사용되었던 위치인 PathParser 구현에서 비공개 함수가 되도록 이동했습니다. (I25f52)
버전 1.0.0-alpha08
2020년 12월 2일
androidx.compose.ui:ui-*:1.0.0-alpha08
이 출시되었습니다. 버전 1.0.0-alpha08에 포함된 커밋을 확인하세요.
API 변경사항
- 의미 체계 작업 닫기를 추가했습니다. (I2b706)
- DrawModifier API를 androidx.compose.ui 패키지에서 androidx.compose.ui.draw 패키지로 이동했습니다. 지원 중단된 API에서 현재 API로 이전하는 데 도움이 되는 typealiases/helper 메서드를 포함하도록 DrawModifierDeprecated.kt 파일을 만들었습니다. (Id6044, b/173834241)
- Modifier.drawLayer의 이름을 Modifier.graphicsLayer로 바꿨습니다. API 의견에 따라 관련 클래스도 GraphicsLayer로 업데이트했습니다. (I0bd29, b/173834241)
- 맞춤 레이아웃과 레이아웃 수정자가 그리기용 그래픽 레이어를 도입하여 하위 요소를 배치할 수 있는 새로운 메서드인 placeable.placeWithLayer()와 placeable.placeRelativeWithLayer()를 추가했습니다. 새로운 메서드를 통해 우선 다시 그리기를 최적화할 수 있으므로 하위 요소를 이동해야 할 때 콘텐츠를 다시 그리지 않아도 되고, 하위 요소의 그리기 변환을 적용할 수 있습니다. (Ibd8f6, b/170296989, b/171493718, b/173030831)
- SubcomposeLayout 선언에서
<T>
를 삭제했습니다. 이제 유형을 지정하지 않고 사용할 수 있습니다. (Ib60c8) - drawLayer의 편의성을 위해 Modifier.scale/rotate API를 추가했습니다.
Modifier.drawOpacity
의 이름을Modifier.alpha
로 바꿨습니다.Modifier.drawShadow
의 이름을Modifier.shadow
로 바꿨습니다. (I264ca, b/173208140)
- PointerInputData의 가동시간 및 위치 필드가 null을 허용하지 않게 했습니다. (Id468a)
- 이제 MaterialTheme이 선택 핸들과 선택 배경에 맞는 올바른 색상을 설정합니다. 머티리얼이 아닌 앱에서는 직접 AmbientTextSelectionColors를 사용하여 선택 옵션으로 사용되는 색상을 맞춤설정할 수 있습니다. (I1e6f4, b/139320372, b/139320907)
- 호스트 창에 포커스가 있는지 확인하는 WindowManager.isWindowFocused와 onWindowFocusChanged 콜백을 제공하는 WindowFocusObserver를 추가했습니다. (I53b2a, b/170932874)
pivotFractionX
와pivotFractionY
를component1
과component2
로 반환하는 디스트럭처링 구문을 포함하도록 TransformOrigin API를 업데이트했습니다. (If43c4, b/173586560)- Compose 가이드라인과의 일관성을 확인하기 위해 컴포저블 람다 매개변수 이름 지정 및 위치에 관한 린트 검사를 추가했습니다.
또한 린트 검사와 지침에 따라 후행 람다의 이름으로
children
을 사용하는 일부 API를content
로 이전했습니다. (Iec48e) - keyevent가 전달되었을 때 Alt, Ctrl, Meta 또는 Shift 특수키가 눌렸는지 확인하는 API를 추가했습니다. (I50ed9)
- 새
Modifier.drawLayer()
오버로드를 추가했습니다. 이 오버로드는 상태 변경이 발생할 때 재구성 및 재배열을 건너뛸 수 있는 방식으로 레이어 매개변수를 정의하는 새로운 GraphicsLayerScope에서 람다 블록을 사용합니다. LayoutModifier의 placeable.placeWithLayer() 메서드로 로직을 이전하는 작업을 준비하도록 DrawLayerModifier를 내부로 이동했습니다. (I15e9f, b/173030831) - 접미사로
Ambient
라는 이름을 사용하는 Ambient가 지원 중단되고, 다른 Ambient 및 Compose API 가이드라인에 따라 Ambient를 접두사로 사용하는 새로운 속성으로 대체됩니다. (I33440) androidx.compose.ui.text.Typeface
를androidx.compose.ui.text.font.Typeface
로 이동했습니다. (Ic2b81)- 의미 체계 인수 mergeAllDescendants의 이름을 mergeDescendants로 바꿨습니다. (Ib6250)
- 방향 잠금을 포함하여 새로운 드래그 동작 감지기 정지 포인터 입력 API를 도입했습니다. (Icef25)
- VectorAsset의 이름을 ImageVector로 바꿨습니다. API 가이드라인에 따라 ImageVector의 내부 클래스가 되도록 VectorAsset을 Builder로 이동하고 이름을 바꿨습니다. 호환성을 위해 VectorAssetBuilder의 typealias를 ImageVector.Builder 링크에 추가했습니다. (Icfdc8)
- ImageAsset 및 관련 메서드의 이름을 ImageBitmap으로 바꿨습니다. (Ia2d99)
- PlacementScope place()의 zIndex 매개변수를 추가했습니다. 이를 통해 Modifier.zIndex()가 이제 LayoutModifier로 작동하고 모든 맞춤 레이아웃이 배치 블록에서 바로 하위 요소의 zIndex를 설정할 수 있습니다. (I711f7, b/171493718)
- 기초 의미 체계 속성을 UI로 이동했습니다. (I6f05c)
- place(Offset) 및 placeRelative(Offset)를 지원 중단했습니다. 대신 int 오프셋이 있는 오버로드를 사용하세요. (I4c5e7)
- 이전에 지원 중단된 API를 삭제했습니다. Modifier.onPositioned를 삭제했습니다. Modifier.onGloballyPositioned를 사용하세요. Modifier.onDraw를 삭제했습니다. Modifier.onDrawBehind를 사용하세요. Modifier.plus를 삭제했습니다. Modifier.then을 사용하세요. Color.unset을 삭제했습니다. Color.Unspecified를 사용하세요. PxBounds 클래스를 삭제했습니다. 대신 Rect를 사용하세요. (Ie9d02, b/172562222)
- 정렬 인터페이스가 업데이트되어 정상 작동합니다. (I46a07, b/172311734)
- 탭, 두 번 탭, 길게 누르기, 누르기 표시를 위한 동작 감지기를 새로운 정지 포인터 입력을 사용하여 추가했습니다. 개발자가 자체 동작 감지기를 더욱 쉽게 작성할 수 있도록 몇 가지 유틸리티도 추가했습니다. (I00807)
LayoutIdParentData
의 이름 중id
를layoutId
로 바꿨습니다.Measurable.id
의 이름을Measurable.layoutId
로 바꿨습니다. (Iadbcb, b/172449643)- 회전, 확대/축소, 화면 이동을 감지하는 도우미를 포함한 새로운 멀티터치 동작 감지기를 도입했습니다. (Ic459d)
- SweepGradientShader 및 SweepGradientBrush API를 도입했습니다. (Ia22c1)
- 테스트의 시간 제어(TestAnimationClock 및 사용)가 이제 실험용입니다. (I6ef86, b/171378521)
코루틴 기반 스크롤 API를 추가했습니다.
스크롤 제어를 위한 낮은 수준의 API는 물론 LazyListState.snapToItem 및 LazyListState.smoothScrollBy를 추가했습니다. 이러한 API는 반환하기 전에 스크롤이 완료될 때까지 대기하는 스크롤을 제어하기 위해 정지 인터페이스를 제공합니다. (Ie5642)
Modifier.focusable을 기초에 추가했습니다. 이를 사용하여 올바른 의미 체계와 접근성으로 포커스 가능 동작을 구성요소에 추가할 수 있습니다. (I41eb9, b/152525426, b/162865824)
clock
에 위임될 수 있는 AnimationClockTestRule의 메서드와 속성의 기본 구현을 제공했습니다. (I7ea3d, b/173399709)AndroidComposeTestRule이 이제 맞춤 활동 런처를 허용할 수 있습니다. (Ib8288, b/153623653, b/154135019)
TextLayoutResult.getLineVisibleEnd를 지원 중단했습니다. 대신 이제 TextLayoutResult.getLineEnd에 새로운 매개변수 visibleEnd가 있습니다. (I73282)
TextFieldValue API를 업데이트했습니다.
- TextFieldValue.composition을 읽기 전용으로 만들었습니다.
- 잘못된 선택 범위로 발생한 예외를 삭제했습니다. (I4a675, b/172239032)
TTS(텍스트 음성 변환) 엔진의 TtsAnnotation을 지원합니다. (I54cc6)
코루틴에서 애니메이션을 실행하기 위한 새로운 API를 도입했습니다. (Ied662)
버그 수정
- Box 정렬 매개변수의 이름을 contentAlignment로 바꿨습니다. (I2c957)
- offsetPx 수정자의 이름을 offset으로 바꿨습니다. offsetPx 수정자는 이제 State 대신 람다 매개변수를 사용합니다. (Ic3021, b/173594846)
- resetInput 매개변수를 TextInputService#onStateUpdated에 추가했습니다. (I3e8f5, b/172239032, b/171860947)
- 구성 가능한 함수에 수정자 매개변수 린트 검사를 추가했습니다. 이 린트 검사에서는 Compose 가이드라인과의 일관성을 위해 매개변수의 이름 지정, 반환 유형, 기본값 및 순서를 확인합니다. (If493b)
- TestAnimationClock의 기반을 MonotonicFrameClock으로 설정하도록 허용하는 옵션을 일시적으로 추가했습니다. (I1403b, b/173402197)
- Android Typeface 래퍼를 추가했습니다.
typeface
함수(예:typeface(Typeface.DEFAULT)
)를 통해 Android Typeface를 로드할 수 있습니다. 또한typefaceFromFontFamily()
의 이름을typeface()
로 바꿨습니다. (I52ab7) - 수정자 팩토리 함수가 수정자에서 확장 프로그램으로 정의되어 함께 원활하게 체인될 수 있는지 확인하기 위한 린트 검사를 추가했습니다. (I07981)
- 이전 ui-test 모듈 및 모듈의 스텁을 삭제했습니다. (I3a7cb)
- Recomposer에서 더 이상 EmbeddingContext를 수락하지 않습니다. 필수 예약 종속 항목을 effectCoroutineContext에서 가져옵니다. FrameManager가 지원 중단됩니다. 플랫폼 통합이 자체 전역 스냅샷 처리를 초기화해야 합니다. (I02369)
- 접근성 노드에 스타일 정보를 전달했습니다. (If5e8d)
- 다른 단위와의 일관성을 위해 TextUnit.Inherit의 이름을 TextUnit.Unspecified로 바꿨습니다. (Ifce19)
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)
- Ambient를 제공하기 위한 대안으로 provideDefault를 추가했으며 이는 이미 제공된 Ambient 값이 없을 때만 설정되는 Ambient 값을 지정하는 데 사용할 수 있습니다. (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.capitalize
및AnnotatedString.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)
createAndroidComposeRule
및AndroidInputDispatcher
가androidx.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)
onChildPositioned
및OnChildPositionedModifier
가 삭제되었습니다. 개발자는 하위 레이아웃에서onPositioned
및OnPositionedModifier
를 대신 사용해야 합니다. (I4522e, b/162109766)Offset이 인라인 클래스가 되었습니다. (Iaec70)
SelectionContainer에 수정자 매개변수가 추가되었습니다. (I4aada, b/161487952)
지원 중단된 FocusModifier가 삭제되었습니다. (I0b4ba, b/160922116, b/160821157, b/162441435, b/160822875, b/160921940)
SemanticsPropertyKey
에mergePolicy
람다가 추가되었습니다. 이는 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)
Row
및Column
은 이제 인라인 함수이며 이러한 함수를 사용하는 오버헤드가 상당히 감소합니다. (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)
- 사용하지 않는 OffsetBase 인터페이스를 삭제했습니다.
- 일관된 API 노출 영역을 갖도록 Offset 및 IntOffset 클래스를 정렬했습니다.
- Offset API와 일치하도록 IntOffset.Origin의 이름을 IntOffset.Zero로 바꿨습니다.
- 소비자가 자체 캔버스 인스턴스를 만들 수 있도록 지원하기 위해 캔버스 인터페이스에서 nativeCanvas 메서드를 이동했습니다.
- lateinit 대신 null이 아닌 매개변수가 되도록 DrawScope를 리팩터링하고 필드의 비 null 허용 여부를 보장하기 위해 스터브 EmptyCanvas 클래스를 만들었습니다.
- ClipOp enum의 이름을 파스칼 표기법으로 바꿨습니다.
- FilterQuality enum의 이름을 파스칼 표기법으로 바꿨습니다.
- StrokeJoin enum의 이름을 파스칼 표기법으로 바꿨습니다.
- PointMode enum의 이름을 파스칼 표기법으로 바꿨습니다.
- PaintingStyle enum의 이름을 파스칼 표기법으로 바꿨습니다.
- PathFillType enum의 이름을 파스칼 표기법으로 바꿨습니다.
- StrokeCap enum의 이름을 파스칼 표기법으로 바꿨습니다.
- lateinit 매개변수를 더 이상 사용하지 않도록 DrawCache 구현을 업데이트했습니다.
- fillPaint 및 strokePaint 내부 매개변수에 지연 위임을 더 이상 사용하지 않도록 DrawScope를 업데이트했습니다.
- 적은 오버헤드로 Box 사용을 방지하기 위해 이미지 컴포저블을 업데이트했습니다.
- @Immutable 주석을 포함하도록 Outline 클래스를 업데이트했습니다.
- 각 경로 명령에 대해 @Immutable 주석을 포함하도록 PathNode를 업데이트했습니다.
- 동등성에 대한 중복 조건부 검사를 삭제하도록(Compose가 사전에 처리하므로) 벡터 하위 구성을 업데이트했습니다.
- Rect 컴패니언 생성자 메서드를 지원 중단하고 함수 생성자로 대체했습니다.
- @Immutable 및 @Stable API를 사용하여 Brush 클래스 및 함수 생성자를 업데이트했습니다.
- VertexMode enum을 파스칼 표기법으로 업데이트했습니다.
- 페인트의 stroke 매개변수가 변경된 경우 이 매개변수를 조건부로 덮어쓰도록 DrawScope selectPaint 메서드를 업데이트했습니다.
- 디스트럭처링 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)- Material
FilledTextField
는TextField
로 이름이 바뀌었으며 기본TextField
는BaseTextField
로 이름이 바뀌어 원하는 가장 간단한 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)
다음과 같은 다양한 인라인 클래스 유형에 복사 메서드를 추가했습니다.
- 오프셋
- 크기
- 반경
- 모션
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)
이 변경 전에 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)
Material Design 메뉴 구현인 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)
-
- 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)
작성 레이아웃에서 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개의 별도 부동 소수점 값 대신 단일 반경 매개변수를 사용하도록 DrawScope.drawRoundRect를 업데이트했습니다. (I46d1b)
Recompose 컴포저블은 더 이상 유용한 추상화가 아닙니다. 대부분의 재구성은 MutableState 할당의 결과로 발생해야 합니다. 그 외의 경우에는
invalidate
함수를 사용하여 현재 범위의 재구성을 트리거하는 것이 좋습니다. (Ifc992)여러 컴포즈 클래스에서 Px 클래스가 더 이상 대규모 리팩터링 작업의 일부로 사용되지 않습니다. 픽셀 매개변수에는 Dp 유형과 기본 유형만 사용됩니다. (Iede0b)
Compose 컴파일러의 코드 생성 전략을 변경했습니다. 변경하기 전에는 Compose 컴파일러에서 호출을 구성 가능한 함수로 변환했습니다. 이번 변경으로 이제 구성 가능한 함수의 본문은 변환하고 호출 사이트의 대부분은 변경하지 않고 그대로 둡니다.
이는 Compose 런타임과 통신하는 로직이 대부분 호출 사이트가 아니라 함수 본문의 시작 부분에서 발생함을 의미합니다.
이번 변경은 모든 Compose 사용에서 소스와 호환됩니다. 대부분의 Compose 사용자는 이번 변경으로 인해 어떤 코드도 업데이트할 필요가 없습니다.
이 작업을 지원하기 위해 모든 구성 가능한 함수의 JVM 서명이 변경되었습니다. 단일 매개변수를 허용하는 구성 가능한 함수는 3개의 매개변수를 허용하는 함수로 변환됩니다. 추가 매개변수는 '키' 정수인 컴포저, 호출을 통한 메타데이터 전파에 사용되는 비트마스크 정수입니다.
이제 Compose는 기본 인수를 구성 가능한 함수로도 변환합니다. 함수 자체의 추가 합성으로 인한 기본 오버로드 없이 기본 인수를 변환하므로 이러한 변경으로 인해 정의되는 함수의 수가 줄어듭니다.
이로 인해 알려진 의도된 동작 변경사항은 다음과 같습니다.
- 일부 호출이 이전에는 건너뛰지 않던 곳을 건너뜁니다.
- 이제 기본 인수 표현식의 구성 가능한 표현식이 올바르게 작성 및 처리됩니다.
이 작업에는 다음과 같은 최적화가 포함되어 있습니다. 1. 매개변수 비교 결과는 호출 그래프를 통해 다른 구성 가능한 함수로 전파됩니다. 이렇게 하면 런타임 시 비교 작업이 적게 발생하고 슬롯 표 크기가 줄며 이전에는 건너뛰지 않던 구성 가능한 함수를 더 많이 건너뜁니다. 2. 컴파일 시간에 '정적'이라고 판단된 매개변수는 더 이상 런타임에 비교되거나 저장되지 않습니다. 따라서 비교 횟수와 슬롯 표 크기가 줄어듭니다. 3. 함수 본문의 제어 흐름 구조는 생성되는 그룹 수를 최소화하는 데 사용되므로 슬롯 표 크기가 줄고 런타임 동안 작업도 줄어듭니다. 4. 함수의 사용되지 않은 전달 및 수신자 매개변수는 함수의 본문 안에서 사용되지 않으면 함수의 건너뛰기 가능성을 판단하는 데 포함되지 않습니다.
대부분의 브레이킹 체인지는 다음과 같이 컴파일러가 직접 타겟팅하는 API로 인해 발생하며 Compose의 일반적인 사용에는 영향을 미치지 않습니다. 1. Composer::startExpr이 삭제되었습니다. 2. Composer::endExpr이 삭제되었습니다. 3. Composer::call이 지원 중단되었습니다. 4.
key
의 non-varargs 오버로드가 삭제되었습니다. 앞으로는vararg
버전을 사용하세요. 5. Pivotal 주석이 지원 중단되었습니다. 대신key
를 사용하세요. 6. ScopeUpdateScope::updateScope가 함수 1이 아닌 함수 3을 예상하도록 변경되었습니다. 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)