Compose 기초
최근 업데이트 | 안정화 버전 | 출시 후보 버전 | 베타 버전 | 알파 버전 |
---|---|---|---|---|
2024년 12월 11일 | 1.7.6 | - | - | 1.8.0-alpha07 |
구조
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.foundation:foundation:1.7.5" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.foundation:foundation:1.7.5") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
종속 항목에 관한 자세한 내용은 빌드 종속 항목 추가를 참고하세요.
의견
제출하신 의견은 Jetpack을 개선하는 데 도움이 됩니다. 새로운 문제를 발견하거나 라이브러리 개선을 위한 아이디어가 있다면 Google에 알려 주세요. 새 문제를 제출하기 전에 이 라이브러리의 기존 문제를 살펴보시기 바랍니다. 별표 버튼을 클릭하여 기존 문제에 투표할 수 있습니다.
자세한 내용은 Issue Tracker 문서를 참고하세요.
버전 1.8
버전 1.8.0-alpha07
2024년 12월 11일
androidx.compose.foundation:foundation-*:1.8.0-alpha07
이 출시되었습니다. 버전 1.8.0-alpha07에는 이 커밋이 포함되어 있습니다.
API 변경사항
BasicText
에서 내부graphicsLayer
삭제를 되돌리는 데 도움이 되는ComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabled
플래그를 삭제했습니다. 이 플래그를 사용하고 있다면 버그를 신고하여 이유를 알려주세요. 또는BasicText
호출에Modifier.graphicsLayer()
를 전달하여 이전과 동일한 동작을 실행할 수도 있습니다. (Id9f90)- 새
stickyHeader
DSL의 기본 구현을 추가했습니다. (I68986) LocalAutofillHighlightColor
컴포지션 로컬이 Color 유형을 사용합니다. (I0e05b)OverscrollEffect#withoutDrawing
에서OverscrollEffect#withoutVisualEffect
로 이름이 변경되었습니다. (I1a154)
버그 수정
- 특정 스와이프에 대해 잘못된 앵커에 정착할 수 있는
AnchoredDraggable
의 타겟 계산 문제에 대한 후속 수정사항이 적용되었습니다. (I23b87, b/367660226)
외부 기여
- Bring Into View 기능을 구현하는 새로운 방법을 제공하고 플랫폼 수준에서 구현할 수 있는
BringIntoViewResponderModifierNode
를 UI에 추가했습니다. (Ia6dd8) - 커서가 그려지는 방식이 계속 약간씩 변경되고 있습니다.
LocalCursorBlinkEnabled
를 사용하여 테스트에서 커서 그리기를 사용 중지할 수 있습니다. (I4c697)
버전 1.8.0-alpha06
2024년 11월 13일
androidx.compose.foundation:foundation-*:1.8.0-alpha06
이 출시되었습니다. 버전 1.8.0-alpha06에는 이 커밋이 포함되어 있습니다.
API 변경사항
stylusHoverIcon
수정자를 추가합니다. (Iff20a, b/331289114)AnchoredDraggableState
의confirmValueChange
가 지원 중단되었습니다. 상태 변경을 거부하는 대신 허용되지 않는 앵커는 활성 앵커 세트에 포함되어서는 안 되며 요청된 작업을 사용할 수 없음을 나타내기 위해OverscrollEffect
를 사용해야 합니다. (Ia717f)- 자동 완성 관리자를 인터페이스로 변경합니다. (I84914, b/376080755)
OverscrollEffect#withoutDrawing
및OverscrollEffect#withoutEventHandling
API를 추가합니다. 이러한 API는 이벤트를 각각 그리거나 처리하지 않는 제공된 오버스크롤 효과의 래핑된 인스턴스를 생성하므로 이벤트를 전달하는 구성요소와 별도의 구성요소에서 오버스크롤을 렌더링할 수 있습니다. 예를 들어 지연 목록 내에서 오버스크롤 그리기를 사용 중지한 다음 맨 위 / 다른 위치에 오버스크롤을 별도로 그립니다. (Idbb3d, b/266550551, b/204650733, b/255554340, b/229537244)- 텍스트 툴바에 자동 완성 지원을 추가합니다. (Ie6a4c)
OverscrollConfiguration
및LocalOverscrollConfiguration
가 지원 중단되고rememberPlatformOverscrollFactory
가 추가되어 기본 오버스크롤 구현의 인스턴스를 만들고 매개변수를 맞춤설정할 수 있습니다. 오버스크롤을 사용 중지하려면LocalOverscrollConfiguration provides null
대신LocalOverscrollFactory provides null
를 사용하세요. 발광 색상 / 패딩을 변경하려면LocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding)
대신LocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding)
을 사용하세요. (Ie71f9, b/255554340, b/234451516)OverscrollEffect
의effectModifier
속성을 다른 API와 일관되게node: DelegatableNode
로 변경했습니다. (Ic0b46, b/255554340)- 실험용
GlobalAssertions
API를 삭제했습니다. 접근성 검사를 실행하기 위한 용도로 사용되었습니다. 이 용도로는 대신enableAccessibilityChecks()
를 참고하세요. (I59322)
버전 1.8.0-alpha05
2024년 10월 30일
androidx.compose.foundation:foundation-*:1.8.0-alpha05
이 출시되었습니다. 버전 1.8.0-alpha05에는 이 커밋이 포함되어 있습니다.
새로운 기능
- 텍스트 자동 크기 조절을 지원합니다.
AutoSize
인스턴스 (예:AutoSize.StepBased
)를 좋아하는 텍스트 컴포저블 (예:BasicText
)에 전달하면 텍스트 크기가 사용 가능한 공간에 맞게 조정됩니다. (Ice7e0, b/139320827) - 계층 구조 내에서 오버스크롤을 구성할 수 있도록
OverscrollFactory
및LocalOverscrollFactory
API를 추가합니다.LocalOverscrollFactory
를 통해 제공된 값은 기본적으로OverscrollEffect
을 만드는 데 사용됩니다. 현재 제공된 팩토리의 효과를 만들고 기억하려면rememberOverscrollEffect()
를 사용하세요. (I51ca4, b/255554340)
API 변경사항
- 자동 완성의 성공적인 작성 강조 표시의 색조를 수정하는 데 사용할 수 있는
CompositionLocal
를 도입합니다. (I32092) ScrollableDefaults.overscrollEffect
를 삭제했습니다. 대신rememberOverscrollEffect
를 사용하세요. 이렇게 하면LocalOverscrollFactory
와 함께 제공되는 현재 오버스크롤 구현의 인스턴스가 생성됩니다. (I1651a, b/255554340),(b/234451516)- 사용자의 자동 완성 여정을 미세 조정하는 데 사용할 수 있는 새로운
AutofillManager
인터페이스와 이 새 버전의 자동 완성을 사용 설정하는isSemanticAutofillEnabled
플래그를 도입했습니다. (I9d484) CombinedClickableNode
를 삭제합니다. 이 실험용 API는 성능 작업을 차단 해제하기 위해 일시적으로 노출되었지만 더 이상 필요하지 않습니다. 대신 다른 수정자 API와 마찬가지로Modifier.combinedClickable
를 직접 사용해야 합니다. (I4b658)- 맞춤
OverscrollEffect
지정을 지원하는 오버로드를horizontalScroll
,verticalScroll
,LazyColumn
,LazyRow
,LazyHorizontalGrid
,LazyVerticalGrid
,LazyHorizontalStaggeredGrid
,LazyVerticalStaggeredGrid
,HorizontalPager
,VerticalPager
에 추가합니다. 제공된OverscrollEffect
는 이벤트를 수신하고 이러한 구성요소의 경계 내에서 렌더링됩니다. 동일한OverscrollEffect
를 두 번 그리는 것은 지원되지 않으므로 이러한 구성요소 중 하나에 제공된 동일한OverscrollEffect
를Modifier.overscroll
로 별도로 그릴 수 없습니다. 이러한 구성요소의 경계 밖에 오버스크롤을 그리는 사용 사례는 향후 별도로 다룹니다. (I2dc42, b/266550551, b/234274772, b/224572538, b/353805117)
버전 1.8.0-alpha04
2024년 10월 16일
androidx.compose.foundation:foundation-*:1.8.0-alpha04
이 출시되었습니다. 버전 1.8.0-alpha04에는 이 커밋이 포함되어 있습니다.
API 변경사항
- 노드 상태가 변경될 때 이를 업데이트할 수 있도록
DelegatableNode#onDensityChange
및DelegatableNode#onLayoutDirectionChange
콜백을 추가합니다. (I04f3e, b/340662451) - 이제 Paragraph 및
ParagraphIntrinsics
가AnnotatedString
에 적용된 모든 주석의 목록을 가져옵니다. 이전에는SpanStyles
목록만 가져왔습니다. (I12f80) - 단일 포인터 입력 수정자의 터치 경계를 확대하는 데 사용할 수 있는
PointerInputModifierNode#touchBoundsExpansion
를 도입했습니다. (Iccf02, b/335339283)
버그 수정
- 일부 시나리오에서
AnchoredDraggableDefaults.flingBehavior
에 전달된 위치 기준점이 올바르게 고려되지 않는 버그가 수정되었습니다. (Ifdf0d, b/367660226) - 플링이 진행되는 동안 노드 트리에서 삭제되는 중첩된 스크롤 가능한 요소의 수정사항을 도입합니다. 이제 이러한 노드가 플링을 취소하고 남은 속도로
onPostFling
이벤트를 올바르게 전송합니다. 또한 회귀 발생 시 동작을 제어하는 플래그NewNestedScrollFlingDispatchingEnabled
도 도입됩니다. 베타 버전이 출시되기 전에 이 플래그는 삭제됩니다. (I05c37, b/371168883) Modifier.anchoredDraggable
에 전달된OverscrollEffects
가 1D 대신 2D 델타를 수신하는 버그가 수정되었습니다. (Ie52c0)
버전 1.8.0-alpha03
2024년 10월 2일
androidx.compose.foundation:foundation-*:1.8.0-alpha03
이 출시되었습니다. 버전 1.8.0-alpha03에는 이 커밋이 포함되어 있습니다.
API 변경사항
- Kotlin 버전이 1.9 (I1a14c)로 업데이트됨
- 플래그
DraggableAddDownEventFixEnabled
를 도입했습니다. (I848d5) - 접근성 서비스용 페이저의 목록 동작을 에뮬레이션하기 위해 캐러셀이라는 새로운 시맨틱스 역할을 도입했습니다. (Id354b, b/354109776, b/239672673)
BasicText
컴포저블에서 암시적graphicsLayer
수정자를 삭제했습니다. 이전 동작으로 되돌릴 수 있는 실험용ComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabled
플래그를 추가했습니다. (Ie478d)- 상위 요소가
consumeWindowInsets()
없이 하위 요소를 정렬하더라도 계층 구조의 하위 요소가insetsPadding
를 사용할 수 있도록Modifier.recalculateWindowInsets()
를 추가했습니다. (I7f9e4)
버그 수정
detectDragGestures
, 드래그 가능한 요소, 스크롤 가능한 요소에서 동작 선택을 구현합니다. 이제 드래그 가능한 하위 요소가 동작을 포기하면 상위 요소가 이를 선택할 수 있습니다. 이를 통해 더 연속적이고 통합된 동작 처리가 가능합니다. (Ic88fe)- 스크롤 가능한 요소에서 플링 취소 동작을 업데이트합니다. 이제 스크롤 가능한 요소가 플링되어 경계선에 도달하면 플링을 계속 진행하는 대신 체인의 다음 스크롤 가능한 요소에 플링 속도를 올바르게 전달합니다. (I9326a)
버전 1.8.0-alpha02
2024년 9월 18일
androidx.compose.foundation:foundation-*:1.8.0-alpha02
이 출시되었습니다. 버전 1.8.0-alpha02에는 이 커밋이 포함되어 있습니다.
API 변경사항
- 이제
TextOverflow.StartEllipsis
및TextOverflow.MiddleEllipsis
를 사용하여 단일 줄 텍스트의 줄 시작이나 중간에 생략 기호를 배치할 수 있습니다. (I38913, b/185418980)
버전 1.8.0-alpha01
2024년 9월 4일
androidx.compose.foundation:foundation-*:1.8.0-alpha01
이 출시되었습니다. 버전 1.8.0-alpha01에는 이 커밋이 포함되어 있습니다.
버전 1.7
버전 1.7.6
2024년 12월 11일
androidx.compose.foundation:foundation-*:1.7.6
이 출시되었습니다. 버전 1.7.6에는 이 커밋이 포함되어 있습니다.
버그 수정
- 접근성 서비스에 텍스트 인라인 콘텐츠가 표시되지 않는 문제를 수정했습니다.
- 지연 목록에서 재사용할 때
AndroidEmbeddedExternalSurface
가 제대로 재설정되지 않고 중단되는 문제를 수정했습니다.
버전 1.7.5
2024년 10월 30일
androidx.compose.foundation:foundation-*:1.7.5
이 출시되었습니다. 버전 1.7.5에는 이 커밋이 포함되어 있습니다.
버그 수정
- 고정된 항목이 콘텐츠 패딩 영역에서 두 번 하위 컴포지션되지 않도록 합니다. (Ic6224)
버전 1.7.4
2024년 10월 16일
androidx.compose.foundation:foundation-*:1.7.4
이 출시되었습니다. 버전 1.7.4에는 이 커밋이 포함되어 있습니다.
버그 수정
- 텍스트 필드에서 드물게 비정상 종료를 일으키는 버그가 수정되었습니다. (I475c6, b/313010266)
- 지연 레이아웃 항목의 루트에서
ReusableContentHost
를 삭제했습니다. 이는 '비활성화된 노드에서 측정 호출' 비정상 종료의 근본 원인일 수 있습니다. (Id6e60)
버전 1.7.3
2024년 10월 2일
androidx.compose.foundation:foundation-*:1.7.3
이 출시되었습니다. 버전 1.7.3에는 이 커밋이 포함되어 있습니다.
버그 수정
- minLines가 기본값이 아닌 값으로 설정된 경우
BasicText
에서 메모리 누수가 발생하는 문제를 수정했습니다.
버전 1.7.2
2024년 9월 18일
androidx.compose.foundation:foundation-*:1.7.2
이 출시되었습니다. 버전 1.7.2에는 이 커밋이 포함되어 있습니다.
버그 수정
- 플링이 평소보다 느리게 표시되는 원인이 된 down 이벤트가 누락된 draggable 관련 문제를 수정했습니다.
버전 1.7.1
2024년 9월 10일
- Android 아티팩트는 변경되지 않았습니다.
-desktop
아티팩트가 삭제되고-jvmStubs
및-linuxx64Stubs
아티팩트가 추가되었습니다. 이러한 타겟은 사용하도록 의도된 것이 아니며 Jetbrains Compose 작업을 돕는 자리표시자입니다.
버전 1.7.0
2024년 9월 4일
androidx.compose.foundation:foundation-*:1.7.0
이 출시되었습니다. 버전 1.7.0에는 이 커밋이 포함되어 있습니다.
1.6.0 이후 중요 변경사항
Modifier.clickable
,Modifier.focusable
,Modifier.indication
,Modifier.scrollable
,Modifier.draggable
의 성능이 크게 개선되었습니다. 이 작업의 일환으로 내부 변경사항 외에도 다음과 같은 API 변경사항이 적용되었습니다.- 새로운 Indication API
IndicationNodeFactory
를 추가했습니다. 따라서 이전 (현재 지원 중단됨)rememberUpdatedInstance
API에 비해 더 나은 성능의 표시 구현이 가능합니다. 이전에 관한 자세한 내용은 developer.android.com을 참고하세요. - 이제
clickable
/combinedClickable
/selectable
/toggleable
에서 nullableMutableInteractionSource
매개변수를 허용합니다. null이고 제공된 Indication이IndicationNodeFactory
인 경우 Indication은 필요할 때만 지연 생성될 수 있으므로 성능이 개선됩니다.MutableInteractionSource
를 호이스팅하고 사용하지 않는 경우remember { MutableInteractionSource() }
를 전달하는 대신 null을 전달하는 것이 좋습니다. Indication#rememberUpdatedInstance
가 지원 중단되었습니다. 피할 수 없는 높은 성능 저하가 발생하며 다른 최적화를 방지합니다. 대신 새IndicationNodeFactory
API를 사용해야 합니다.
- 새로운 Indication API
- 이제
TextFieldState
를 사용하는BasicTextField
가 안정적이며 모든 호출 사이트에서BasicTextField(value, onValueChange)
에서BasicTextField(TextFieldState)
로 이전을 시작하는 것이 좋습니다. ClickableText
가 지원 중단되었습니다. 텍스트에 클릭 가능한 링크를 추가하려면AnnotatedString
에서 새LinkAnnotation
주석과 함께BasicText
를 사용하세요.LinkAnnotation
를 사용하면 링크 상태 (예: 포커스가 맞춰진 상태, 마우스 오버 상태)에 따라 맞춤 스타일을 지정할 수 있습니다.MaxLines
및Overflow
를 사용하여ContextualFlowRow
및Enhanced FlowRow/Column
를 도입합니다. 실험용FlowRow
및FlowColumn
가 개선되었음을 알려드립니다. 이제maxLines
및 오버플로 지원이 추가되었으며ContextualFlowRow
및ContextualFlowColumn
가 새로 도입되었습니다. 이 업데이트는 성능 최적화 구성요소를 제공하도록 설계되었습니다. 여기서ContextualFlow*
는 작은 maxLines 구성과 동적 +N 더보기 버튼을 사용하는 다수의 항목에 적합하며FlowRow
및FlowColumn
는 100개 미만의 소수 항목에 적합합니다. 중요: 모든 항목이 교차 축 최대값에 맞는지와 관계없이 구성되는FlowRow
또는FlowColumn
의 기존 동작을 유지하려면 초기화 중에 오버플로를FlowRowOverflow.Visible
또는FlowColumnOverflow.Visible
로 설정하세요.ContextualFlowRowSample
및FlowRowSample
에서 이러한 새로운 기능이 작동하는 예를 살펴보세요. (Ib9135, b/293577082)- 항목 표시 및 사라짐 애니메이션 지원이
LazyColumn
및LazyRow
에 추가되었습니다. 이전에는 게재위치 (재정렬) 애니메이션을 지원하기 위해Modifier.animateItemPlacement()
수정자를 추가할 수 있었습니다. 이 수정자는 지원 중단되었으며,Modifier.animateItem()
라는 새로운 비실험용 수정자가 도입되었습니다. 이 수정자를 사용하면 노출 (페이드 인), 사라짐 (페이드 아웃), 재정렬이라는 세 가지 애니메이션 유형을 모두 지원할 수 있습니다. (I2d7f7, b/150812265) - 공식 Android API (
ScrollCaptureCallback
)를 사용하여 Compose 스크롤 컨테이너에서 긴 스크린샷을 위한 실험적 지원을 구현했습니다. - 이제 애니메이션 (부수 효과)과 마우스 휠 및 키보드 (
UserInput
)가 포함된 이러한 소스의 확장된 정의를 수용하기 위해NestedScroll
소스 드래그 및 플링이UserInput
및SideEffect
로 대체됩니다. LazyLayout
미리 가져오기 요청을 긴급으로 표시할 수 있습니다. 즉, 다음 프레임에서 이 항목이 필요할 것으로 예상되며 프레임 예산을 무시하여 더 많은 작업을 미리 실행하려고 합니다. (Id513f)- Android U 이후 기기에서 스타일러스 필기 기능을 지원합니다. (I002e4)
- 다양한 API가 안정화 버전으로 승격되었습니다.
- 페이저, 스냅, 창 인셋
버전 1.7.0-rc01
2024년 8월 21일
androidx.compose.foundation:foundation-*:1.7.0-rc01
이 출시되었습니다. 버전 1.7.0-rc01에는 이 커밋이 포함되어 있습니다.
버그 수정
- 포커스를 받을 수 있거나 클릭 가능하며 사용 중지된 상위 요소 내에서 요소에 포커스가 있을 때 비정상 종료가 발생하는 회귀 문제를 수정했습니다. (b/317561689)
버전 1.7.0-beta07
2024년 8월 7일
androidx.compose.foundation:foundation-*:1.7.0-beta07
이 출시되었습니다. 버전 1.7.0-beta07에는 이러한 커밋이 포함되어 있습니다.
버그 수정
- 텍스트 입력 관련
SemanticsNodeInteraction
함수인performTextReplacement
,performTextInput
,performTextClearance
가 읽기 전용TextFields
에서 호출될 때 이제 어설션 오류가 발생합니다. (I4ae8f) - 하이퍼링크의 시각적 결함이 수정되었습니다. (I23311)
- 일부 IME에서
contentReceiver
수정자가 작동하지 않는 문제를 수정했습니다. - 속도 생성: Compose UI 및 Foundation에서 NaN 값의 전파를 방지합니다.
버전 1.7.0-beta06
2024년 7월 24일
androidx.compose.foundation:foundation-*:1.7.0-beta06
이 출시되었습니다. 버전 1.7.0-beta06에는 이러한 커밋이 포함되어 있습니다.
버전 1.7.0-beta05
2024년 7월 10일
androidx.compose.foundation:foundation-*:1.7.0-beta05
이 출시되었습니다. 버전 1.7.0-beta05에는 이러한 커밋이 포함되어 있습니다.
버그 수정
SnapFlingBehavior
및 Pager에서 Nan 값 처리를 수정했습니다.
버전 1.7.0-beta04
2024년 6월 26일
androidx.compose.foundation:foundation-*:1.7.0-beta04
이 출시되었습니다. 버전 1.7.0-beta04에는 이러한 커밋이 포함되어 있습니다.
버그 수정
- 매우 긴 텍스트 줄 (예: 10,000자)을 측정할 때 비정상 종료를 방지합니다. (8157ab)
- 매우 큰 텍스트의 측정으로 인해 새
BasicTextField
에서 비정상 종료가 발생하는 문제를 수정했습니다. (6b7575) - 특정 시나리오에서 텍스트 사용을 중단하는 행/열 측정의 동작 변경사항을 되돌립니다. (69e8ba)
버전 1.7.0-beta03
2024년 6월 12일
androidx.compose.foundation:foundation-*:1.7.0-beta03
이 출시되었습니다. 버전 1.7.0-beta03에는 이러한 커밋이 포함되어 있습니다.
버전 1.7.0-beta02
2024년 5월 29일
androidx.compose.foundation:foundation-*:1.7.0-beta02
이 출시되었습니다. 버전 1.7.0-beta02에는 이러한 커밋이 포함되어 있습니다.
API 변경사항
LazyLists
의 기존 실험용 API와 유사하게LazyGrids
의 미리 로드 동작을 구성하기 위한 실험용 API를 추가합니다. 여기에는 중첩된LazyGrids
에서 항목을 미리 로드하는 지원이 포함됩니다.LazyListPrefetchStrategy
와 마찬가지로 구현 기본값은 각 그리드의 중첩된 첫 번째 항목 2개를 미리 로드하는 것이지만, 이는 새LazyGridPrefetchStrategy(nestedPrefetchItemCount)
및LazyListPrefetchStrategy#onNestedPrefetch
API로 구성할 수 있습니다. (I591c4)SemanticsProperties.Editable
의 이름을IsEditable
로 바꾸고SemanticsPropertyReceiver.editable
를 값isEditable
로 변경합니다. 이제 이 속성은 불리언이며 항상 텍스트 필드로 지정됩니다. (I8acd8)basicMarquee
기본값을MarqueeDefaults
객체로 이동했습니다. (I12ff6)basicMarquee
delayMillis
매개변수의 이름을repeatDelayMillis
로 변경했습니다. (I12ff6)- 링크 스타일 지정을 위한 API 업데이트:
TextLinkStyles
를TextStyle
로 이동하고 Material에서TextDefaults
를 삭제했습니다. (I5477b)
버그 수정
- 목적을 더 잘 반영하도록
LayoutCoordinates.introducesFrameOfReference
의 이름을LayoutCoordinates.introducesMotionFrameOfReference
로 바꾸었습니다. 해당 플래그를 기반으로 좌표를 계산하는 관련 함수의 이름을 바꿨습니다. (I3a330) MarqueeDefaults
속성에서 '기본값'을 삭제했습니다. (I1d8a0)MarqueeDefaults
속성에서 'Marquee'가 삭제되었습니다. (Iad4f4)TextStyle
클래스에서TextLinkStyles
를 삭제했습니다. 대신TextLinkStyles
는LinkAnntation
생성자 및AnnotatedString.fromHtml
메서드의 일부입니다. (I90b2b)- 이미 경계점에 도달한 상태에서 경계점을 향해 플링할 때 페이저가 스냅되는 버그가 수정되었습니다. (I9f373, b/339171222)
- 이제 BTF2에 올바른 마우스 선택 동작이 있습니다. (Ibe8c6)
외부 기여
- '정확성을 개선하기 위해 미리 로드에 기반한 컴포지션/측정 시간 계산 콘텐츠 유형 만들기'를 다시 제출합니다. (Iea622)
- 정확성을 개선하기 위해 프리캐시를 기반으로 컴포지션/측정 시간 계산 콘텐츠 유형을 만듭니다. (Ibccb1)
- 공통 소스 세트에서
WindowInsetsPadding
수정자를 사용할 수 있도록 합니다. (I070b2)
버전 1.7.0-beta01
2024년 5월 14일
androidx.compose.foundation:foundation-*:1.7.0-beta01
이 출시되었습니다. 버전 1.7.0-beta01에는 이러한 커밋이 포함되어 있습니다.
API 변경사항
- 바이너리 호환성을 위해 지원 중단된 숨겨진 속성으로
KeyboardOptions.shouldShowKeyboardOnFocus
속성을 다시 추가했습니다. (I15cfe) - 이제
Modifier.anchoredDraggable
가 RTL 레이아웃에서 사용될 때 가로 방향의 구성요소에 대해 기본적으로 드래그 델타를 반전합니다. (I3c6d9) AnnotatedString.hasEqualsAnnotations
는 이제hasEqualAnnotations
입니다. (I685c0)- 텍스트에서 Material 테마 링크를 가져오는 API를 업데이트했습니다. 특히 테마가 지정된
LinkAnnotations
를 생성하고 테마가 지정된 링크로 HTML을 파싱하는 메서드를TextDefaults
에서 삭제했습니다. 대신 링크의 스타일을 텍스트 컴포저블의 매개변수로 지정할 수 있는TextLinkStyles
클래스를 추가했습니다. (I31b93) onDragStarted
및onDragStopped
를 비중단 콜백으로 대체했습니다. (I59de8)
버그 수정
contentPadding
가 수신 제약 조건보다 클 때 Pager가 비정상 종료되는 버그를 수정했습니다. 이제 페이저는PageSize
에서 반환된 음수 값을 0으로 강제 변환합니다. (Iba5d8, b/314008560)
버전 1.7.0-alpha08
2024년 5월 1일
androidx.compose.foundation:foundation-*:1.7.0-alpha08
이 출시되었습니다. 버전 1.7.0-alpha08에는 이 커밋이 포함되어 있습니다.
새로운 기능
- 잘라내기, 복사, 붙여넣기, 모두 선택 작업을 위한 항목이 포함된 오른쪽 버튼 컨텍스트 메뉴를
BasicTextField
및SelectionContainer
에 추가했습니다. (If8c93, Ia2b49, I6f268)
API 변경사항
LazyLayout
미리 가져오기 요청을 긴급으로 표시할 수 있습니다. 즉, 다음 프레임에서 이 항목이 필요할 것으로 예상되며 프레임 예산을 무시하여 더 많은 작업을 미리 실행하려고 합니다. (Id513f)isPositionedByParentWithDirectManipulation
에서introducesFrameOfReference
로 이름이 변경되었습니다. 이제는 반대 효과가 있습니다. 즉, 기본적으로 대부분의LayoutCoordinates
는 참조 프레임을 도입하며 직접 조작 아래에 배치된 경우에만 속성이 false가 됩니다. 참조 프레임을 도입하는 항목으로만 위치를 쿼리하려면positionInLocalFrameOfReference(...)
를 사용하세요. 또는LookaheadScope
에서positionInLocalLookaheadFrameOfReference
을 뺍니다. (Ifc5f7)LinkInteractionListener
내에서onClicked
의 이름을onClick
로 바꿨습니다. (Iaa35c)- API 협의회 의견에 따라
getScrollViewportLength
의 작업 람다를 변경합니다. (Ibc74a) - 스타일러스 필기 입력 위임 API의 이름이 변경되었습니다. (Ica45f, b/327271923)
TextInclusionStrategy.isInside
의 이름을isIncluded
로 바꿉니다.Paragraph/MultiParagraph#getRangeForRect()
반환 유형을 null 허용으로 설정합니다. (I51f26)
버그 수정
SelectionContainer
의 모든 텍스트 컨텍스트 메뉴에 '모두 선택'이 추가되었습니다. (Ib750e, b/240143283)reverseScrolling=true
를 사용한 스크롤 컨테이너의 긴 스크린샷 캡처가 수정되었습니다. (I7c59c)- 상태 경계에 접근할 때
AnchoredDraggableState
의currentValue
가 변경되는 문제를 수정했습니다. (Iea30b, b/333846848)
외부 기여
- 역할을 더 잘 반영하기 위해
PrefetchExecutor
에서PrefetchScheduler
로 이름을 바꿨습니다. (Ib9154) - 중첩된
LazyLists
(예: 중첩된LazyRows
를 렌더링하는LazyColumn
)의 항목 미리 가져오기 지원을 추가했습니다. 이 변경사항으로 인해 이러한LazyLists
의 스크롤 중에 프레임이 드롭되는 현상이 줄어들 것으로 예상됩니다. 구현 기본값은 중첩된 첫 번째 항목 2개를 미리 로드하는 것이지만 이 동작은 새LazyLayoutPrefetchStrategy(nestedPrefetchItemCount)
및LazyListPrefetchStrategy#onNestedPrefetch
API로 제어할 수 있습니다. (I51952)
버전 1.7.0-alpha07
2024년 4월 17일
androidx.compose.foundation:foundation-*:1.7.0-alpha07
이 출시되었습니다. 버전 1.7.0-alpha07에는 이 커밋이 포함되어 있습니다.
새로운 기능
LinkAnnotation
를 생성하고 링크에MaterialTheme
를 적용하는 HTML 태그 문자열을 파싱하는 메서드가 포함된TextDefaults
객체를 추가했습니다. (I98532, b/139312671)- 항목 표시 및 사라짐 애니메이션 지원이
LazyVerticalGrid
및LazyHorizontalGrid
에 추가되었습니다. 이전에는 게재위치 (재정렬) 애니메이션을 지원하기 위해Modifier.animateItemPlacement()
수정자를 추가할 수 있었습니다. 이 수정자는 지원 중단되었으며,Modifier.animateItem()
라는 새로운 비실험용 수정자가 도입되었습니다. 이 수정자를 사용하면 노출 (페이드 인), 사라짐 (페이드 아웃), 재정렬이라는 세 가지 애니메이션 유형을 모두 지원할 수 있습니다. (Ib7d12, b/330510929) - 항목 표시 및 사라짐 애니메이션 지원이
LazyVerticalStaggeredGrid
및LazyHorizontalStaggeredGrid
에 추가되었습니다. 이전에는 게재위치 (재정렬) 애니메이션을 지원하기 위해Modifier.animateItemPlacement()
수정자를 추가할 수 있었습니다. 이 수정자는 지원 중단되었으며,Modifier.animateItem()
라는 새로운 비실험용 수정자가 도입되었습니다. 이 수정자를 사용하면 노출 (페이드 인), 사라짐 (페이드 아웃), 재정렬이라는 세 가지 애니메이션 유형을 모두 지원할 수 있습니다. (I69bc9, b/330511290)
API 변경사항
ContextMenuColors
및 연결된LocalContextMenuTheme
ProvidableCompositionLocal
를 추가합니다. 텍스트 필드 및 선택 가능한 텍스트의 컨텍스트 메뉴 색상은 컴포지션 로컬을 제공하여 수정할 수 있습니다. (Ifa154)- 텍스트 링크에 일반 스타일, 마우스 오버, 포커스 외에도 눌림 상태 스타일 옵션이 추가되었습니다. (I5f864, b/139312671)
- 필기 동작을 위한
ViewConfiguration.HandwritingGestureLineMargin
를 도입합니다.BasicTextField
에 필기 동작을 지원합니다. (Ie6e13, b/325660505) - 관련 API 노출 영역의 나머지 부분을 안정화할 시간이 없으므로 1.7 출시에서
DelegatableNode.scrollIntoView
를 삭제했습니다. 이 함수는 1.8에서 다시 도입됩니다. (I6cf61, b/333421581, b/332900232) - 이제 레이아웃 좌표를 쿼리할 때
excludeDirectManipulationOffset
인수를 사용하여Placeable.PlacementScope.withDirectManipulationPlacement
를 사용하여 하위 요소를 배치한 상위 레이아웃에서 설정된 오프셋을 제외할 수 있습니다. 마찬가지로 하위 요소의 위치를 자주 변경하는 레이아웃은 이제withDirectManipulationPlacement
를 사용하여 하위 요소를 배치할 수 있습니다 (예: 기본적으로 구현된 스크롤). 이렇게 하면approachLayout
기반 애니메이션이 더 직관적으로 만들어집니다. 이제 애니메이션할 오프셋과 접근 방식을 애니메이션할 때 직접 적용할 항목을 구분할 수 있습니다. (I60ec7) LazyStaggeredGrid
에requestScrollToItem
를 도입합니다. 이제 각 측정 통과에서 클라이언트는requestScrollToItem
를 호출하여 키를 기반으로 색인 유지를 선택 해제할 수 있습니다.requestScrollToItem
가 호출되지 않는 한 기존 동작은 전혀 변경되지 않습니다. (I63983)- 페이저에
requestScrollToPage
를 도입했습니다. 이제 각 측정 통과에서 클라이언트는requestScrollToPage
를 호출하여 키를 기반으로 색인 유지를 선택 해제할 수 있습니다.requestScrollToPage
가 호출되지 않는 한 기존 동작은 전혀 변경되지 않습니다. (Ic4213) LazyGrids
용requestScrollToItem
를 도입했습니다. 이제 각 측정 통과에서 클라이언트는requestScrollToItem
를 호출하여 키를 기반으로 색인 유지를 선택 해제할 수 있습니다.requestScrollToItem
가 호출되지 않는 한 기존 동작은 전혀 변경되지 않습니다. (I0a7a0)ClickableText
는 지원 중단됨으로 표시됩니다. 텍스트에 링크를 추가하려면 링크에 해당하는LinkAnnotation
가 있는AnnotatedString
를 만들고 이AnnotatedString
를Text
컴포저블에 전달합니다. (I34d4b, b/323346994)UrlAnnotation
가 지원 중단되었습니다. 대신LinkAnnotation.Url
를 사용하세요. Material 테마 설정을 사용하는 경우TextDefaults
객체를 사용하여 Material 테마 설정이 적용된 주석을 만듭니다. (I8d180, b/323346545)String.parseAsHtml
의 이름을AnnotatedString.Companion.fromHtml
로 변경했습니다. (I43dcd)- 스타일 지정 인수 (
linkStyle
,focusedLinkStyle
,hoveredLinkStyle
)와 링크 상호작용 리스너를parseAsHtml
메서드에 추가했습니다.<a>
태그로 HTML 태그가 지정된 문자열을 파싱할 때 이 메서드는 이러한 각 태그의LinkAnnotation.Url
를 생성하고 스타일 지정 객체와 링크 상호작용 리스너를 각 주석에 전달합니다. (I7c977) - 이제
LinkAnnotation
는 상태 기반 스타일 지정 인수와LinkInteractionListener
를 사용합니다. 이 주석을AnnotatedString
에 추가하여 하이퍼링크를 가져옵니다.focusedState
또는hoveredState
를 전달하여 링크에 포커스가 있거나 마우스 오버되었을 때의 시각적 구성을 정의할 수 있습니다. (I81ce4, b/139312671) - 긴 스크린샷의 기능 플래그가 삭제되었습니다. (I28648, b/329128246)
- 이제
LazyColumn
가 긴 스크린샷에서 고정 헤더를 올바르게 렌더링합니다. (I8d239, b/329296635) - 새
BasicTextField
와 함께 도입된 나머지 실험용 API의 대부분을 안정화했습니다. (I714e2) - 콘텐츠 난독화 중에 사용할 문자를 제어하는
textObfuscationCharacter
매개변수를BasicSecureTextField
에 추가했습니다. (I0588b) - 이제 애니메이션 (부수 효과)과 마우스 휠 및 키보드 (
UserInput
)가 포함된 이러한 소스의 확장된 정의를 수용하기 위해NestedScroll
소스 드래그 및 플링이UserInput
및SideEffect
로 대체됩니다. (I40579) - Scrollable 수정자 레이어에 적용되는 플랫폼 종속 포커스 스크롤 동작인
LocalBringIntoViewSpec
를 도입했습니다. (I27aa5, b/317453911) TextFieldCharSequence
을 삭제했습니다.TextFieldBuffer.originalValues
이TextFieldBuffer.originalText
및TextFieldBuffer.originalSelection
로 대체됩니다. (I2c7d6)ImeOptions.hintLocales
는 더 이상 null 허용 속성이 아닙니다. 빈 언어 목록을 전달하려면LocaleList.Empty
을 사용하세요. (Ic5bc4)getOffsetFractionForPage
에서getOffsetDistanceInPages
로 이름이 변경되었습니다. (Ia05e2)
버그 수정
InputTransformations
가next
와 결합되면 이제 새KeyboardOptions.merge
메서드를 사용하여 개별 옵션에 따라KeyboardOptions
가 올바르게 병합됩니다. (Ie5304, b/295951492)- 이제
AnchoredDraggableState
의targetValue
는 더 이상 순위 기준점을 고려하지 않습니다. 이제 암시적 기준점이 50%로 설정되어 있습니다. 즉,targetValue
는 두 앵커의 중간 지점에서 변경됩니다. (I82c2c)
외부 기여
- 스크롤 API 2개 이름을 변경했습니다. (I56a75)
버전 1.7.0-alpha06
2024년 4월 3일
androidx.compose.foundation:foundation-*:1.7.0-alpha06
이 출시되었습니다. 버전 1.7.0-alpha06에는 이 커밋이 포함되어 있습니다.
새로운 기능
- 항목 표시 및 사라짐 애니메이션 지원이
LazyColumn
및LazyRow
에 추가되었습니다. 이전에는 게재위치 (재정렬) 애니메이션을 지원하기 위해Modifier.animateItemPlacement()
수정자를 추가할 수 있었습니다. 이 수정자는 지원 중단되었으며,Modifier.animateItem()
라는 새로운 비실험용 수정자가 도입되었습니다. 이 수정자를 사용하면 노출 (페이드 인), 사라짐 (페이드 아웃), 재정렬이라는 세 가지 애니메이션 유형을 모두 지원할 수 있습니다. (I2d7f7, b/150812265) - 이제
LazyColumn/LazyRow
의 클라이언트는 일시중지되지 않는LazyListState.requestToScroll
를 호출하여 예정된 측정 통과 키를 기반으로 색인을 유지하지 않을 수 있습니다. (I98036, b/209652366) - 스타일이 지정된 문자열의
parseAsHtml
메서드를 추가했습니다. 이 메서드를 사용하면 HTML 태그로 표시된 문자열을AnnotatedString
로 변환할 수 있습니다. 일부 태그는 지원되지 않습니다. 예를 들어 아직 글머리기호 목록은 표시할 수 없습니다. (I84d3d) - 공식 Android API (
ScrollCaptureCallback
)를 사용하여 Compose 스크롤 컨테이너에서 긴 스크린샷을 위한 실험적 지원을 구현했습니다. 이 기능은 실험용이며 현재 일부 케이스를 올바르게 처리하지 못할 수 있습니다. 따라서 현재는 기본적으로 사용 중지되어 있습니다. 선택하려면ComposeFeatureFlag_LongScreenshotsEnabled
플래그를 true로 설정합니다. 이 플래그는 1.7 베타 이전에 삭제됩니다. (I2b055, b/329296471) - 새로운
GraphicsLayer
API를 도입하여GraphicsLayer
인스턴스의 배치 및 렌더링을 더 유연하게 하고 컴포저블 구현과 조정하여GraphicsLayer
수정자 인스턴스를 지정하지 않고도 내재 렌더링 기능을 지원합니다.
API 변경사항
- 이제 모든
KeyboardOptions
매개변수의 기본값은 지정되지 않은 값입니다.KeyboardOptions.merge
메서드가 추가되었습니다. KeyboardOptions.autoCorrect
의 이름을autoCorrectEnabled
로 바꾸고 null을 허용하도록 설정했습니다. null은 값이 지정되지 않았음을 나타냅니다. (Ia8ba0, b/295951492)outOfBoundsPageCount
에서beyondViewportPageCount
로 이름이 변경되었습니다. (I129c6)fun ClipEntry.getMetadata()
가val ClipEntry.clipMetadata
로 변경됩니다. (I50155)TextFieldState.valueAsFlow()
을 삭제했습니다.snapshotFlow { state.text }
또는snapshotFlow { TextFieldCharSequence(state.text, state.selection) }
를 사용하는 것이 좋습니다. (I7d629)InputTransformation.transformInput
매개변수를 재구성했습니다.originalValue: TextFieldCharSequence
를 삭제했습니다. 대신TextFieldBuffer
는 이제 동일한 이름으로 이 값을 전달합니다.valueWithChanges: TextFieldBuffer
매개변수도 삭제했습니다. 이제TextFieldBuffer
이 함수의 수신기 범위입니다. (I919cc)- 이제
BasicTextField(state)
변형과BasicSecureTextField
는 소프트웨어 키보드에서 실행한 작업을 처리하기 위해KeyboardActions
대신KeyboardActionHandler
를 사용합니다. (I58dda) - '가짜' 텍스트 입력란에서 스타일러스 필기 입력을 지원하는 스타일러스 필기 입력 위임 API (I9c09c, b/327271923)
KeyboardOptions.shouldShowKeyboardOnFocus
에서showKeyboardOnFocus
로 이름이 변경되었습니다. (Ib4b7a, b/295951492)Modifier.contentReceiver
에서hintMediaTypes
매개변수를 삭제했습니다. 개발자는 구성된hintMediaTypes
와 호환되지 않을 수 있으므로 수신된TransferableContent
의 미디어 유형을 확인하는 것이 좋습니다. (I82f99)BasicSecureTextField
의 매개변수를 재정렬했습니다. 전체KeyboardOptions
클래스를 위해keyboardType
및imeAction
매개변수를 삭제하면서BasicSecureTextField
에 적합한 동일한 기본값을 유지했습니다.scrollState
매개변수도 삭제했습니다. (Ibbfa9)TextFieldState.text
의 유형이TextFieldCharSequence
에서CharSequence
로 변경되었습니다. 따라서 상태 객체에서 현재 선택 및 컴포지션 값을 직접 읽을 수 있도록TextFieldState.selection: TextRange
및TextFieldState.composition: TextRange?
를 추가했습니다.TextFieldState.forEachTextValue
을 삭제했습니다. (Idb2a2)ClipboardManager.getClipMetadata
및ClipboardManager.hasClip
함수가 삭제되었습니다.clipEntry.getMetadata()
를 사용하여 현재 클립 항목의 메타데이터를 읽으세요. 또한ClipboardManager.getClip
의 결과가 null인지 여부를 확인하여 클립보드에 현재 클립이 있는지 확인합니다. (I50498)- 이제
ClipboardManager.setClip
가 클립보드를 지울 수 있도록 null을 허용합니다. (I7d2e9) ReceiveContentListener
이 함수 인터페이스로 변환됩니다. 또한ReceiveContentListener
가 이제 함수 인터페이스이므로 람다를 사용하는Modifier.receiveContent
오버로드가 삭제되었습니다.Modifier.receiveContent
에서Modifier.contentReceiver
로 이름이 변경되었습니다. (I1e6af)TransferableContent.consumeEach
에서TransferableContent.consume
로 이름이 변경되었습니다. (I1e462)rememberTextFieldState
가 안정화 버전 API로 전환되었습니다. (I37999)
버그 수정
BasicTextField(state)
변형이 CJK(조합 기반) 키보드에서 작동하지 않는 버그가 수정되었습니다. (I54425)Modifier.Node
재사용 시 특정 시나리오에서Modifier.dragAndDropTarget()
이 오래된 데이터를 참조할 수 있는 버그가 수정되었습니다. (I05bb1)anchoredDrag
작업이 끝날 때AnchoredDraggableState#anchoredDrag
호출이 스냅되는 최근 계약 변경사항을 되돌렸습니다. (I95715)
버전 1.7.0-alpha05
2024년 3월 20일
androidx.compose.foundation:foundation-*:1.7.0-alpha05
이 출시되었습니다. 버전 1.7.0-alpha05에는 이 커밋이 포함되어 있습니다.
API 변경사항
- 하이퍼링크 스타일 지정을 위한 실험용
LocalTextLinkStyle
로컬 컴포지션을 삭제했습니다. (Iebfa7) onLinkClicked
인수를 사용한BasicText
의 실험용 재정의를 삭제했습니다. 하이퍼링크 지원을 위한 대체 API는 향후 제공될 예정입니다. (I107d5)TextFieldState
및TextFieldBuffer
에서 코드 포인트 관련 메서드 및 속성이 삭제되었습니다. 나머지 선택 및 컴포지션 관련 API에서inChars
접미사도 삭제했습니다. (Ief7ce)- 이제
AnchoredDraggable
의currentValue
가 앵커 포인트를 통과할 때 업데이트됩니다.settledValue
를 사용하여 이전currentValue
시맨틱스를 수신하고 앵커에 정착할 때만 업데이트합니다. 이제 진행률이 속성이 아닌 함수 (시작점과 종료점이 필요함)로 노출됩니다. (Ibe6e8, b/318707189, b/298271489, b/294991954) BasicTextField(state)
,TextFieldState
,InputTransformation
,OutputTransformation
,TextFieldLineLimits
,TextFieldDecorator
가 안정화 버전으로 승격되었습니다. (I9582b)- 하위 수준 IME 관련 테스트 및 기타 하위 수준 IME 사용 사례를 작성하는 데 도움이 되는
InterceptPlatformTextInput
를 도입했습니다.PlatformTextInputTestOverride
가 지원 중단되었습니다. (I862ed, b/322680547) restrictedConstraints()
를fitPrioritizingWidth()
및fitPrioritizingHeight()
라는 두 메서드로 분할했습니다. (I6d7fd)
외부 기여
- 최신 스크롤 작업의 스크롤 방향을 확인하는 2개의 새 API
isLastScrollForward
/isLastScrollBackward
를 추가했습니다. 아직 스크롤 작업이 없으면 false를 반환합니다. (I63a0e)
버전 1.7.0-alpha04
2024년 3월 6일
androidx.compose.foundation:foundation-*:1.7.0-alpha04
이 출시되었습니다. 버전 1.7.0-alpha04에는 이 커밋이 포함되어 있습니다.
API 변경사항
- Android U 이후 기기에서 스타일러스 필기 기능을 지원합니다. (I002e4)
TextFields
에 특정 언어로 IME에 힌트를 제공하여 기본 언어를 미리 설정하는 기능을 제공하기 위해KeyboardOptions
에hintLocales
를 추가했습니다. (Id18c2)value: String
및onValueChange: () -> String
매개변수를 사용하는 실험용BasicTextField2
및BasicSecureTextField
오버로드가 삭제되었습니다. (I568b4)- 적용되는
BasicTextField2
의 시맨틱에 영향을 주기 위해InputTransformation
에 선택적applySemantics
함수를 추가합니다. (I74a2f, b/170648072) - 이 CL에서는 Compose에서 스크롤되는 구성요소에 관한 정보를 a11y 시스템으로 파이프할 수 있도록
GetScrollViewportLength
시맨틱 작업을 추가합니다. 이 CL은 Foundation 스크롤 가능한 목록에도 해당 속성의 사용을 적용합니다. (Ic5fa2) BasicTextField2
에서BasicTextField
로 이름이 변경되었습니다. (Ie5713)- 이제
FocusRequester.createRefs
이 안정화되었습니다. (I4d92c, b/261436820) - 수정자 노드가
scrollIntoView
요청을 직접 할 수 있도록DelegatableNode.scrollIntoView()
를 도입했습니다. (I2b3b7, b/299939840) - 수정자 노드가 컴포지션 로컬을 읽지 않고도 현재 Android
View
를 가져올 수 있도록DelegatableNode.requireView()
를 도입했습니다. (I40768) - 지정된 위치에 유지되도록 최대 너비 및 높이에 대한 선 색인, 위치, 제약 조건을 포함하는 문맥 흐름 행 범위 및 문맥 흐름 열 범위 내에 문맥 레이아웃 정보를 도입했습니다. 최대 너비/높이를 초과하는 항목은 다음 줄로 넘어가거나 오버플로 설정에 따라 생략될 수 있습니다. (Id13f8, b/292114798)
버그 수정
- 특정 조건에서
TextField
의enabled
또는readOnly
속성을 전환하면 비정상 종료가 발생하는 버그가 수정되었습니다. (Iae17b)
버전 1.7.0-alpha03
2024년 2월 21일
androidx.compose.foundation:foundation-*:1.7.0-alpha03
이 출시되었습니다. 버전 1.7.0-alpha03에 포함된 커밋을 확인하세요.
API 변경사항
onPlaced
를 재정의하고 좌표를 속성에 직접 저장하지 않고도Modifier.Node
의 현재LayoutCoordinates
를 가져오는 방법으로DelegatableNode.requireLayoutCoordinates()
를 도입했습니다. (Ia8657)onPlaced
를 재정의하고 좌표를 속성에 직접 저장하지 않고도Modifier.Node
의 현재LayoutCoordinates
를 가져오는 방법으로DelegatableNode.currentLayoutCoordinates
를 도입했습니다. (Iaebaa)AnchoredDraggable
에서 사용하는DraggableAnchors
의 성능 최적화 (I89cff)androidx.compose.foundation.text2
패키지의BasicTextField2
및 관련 API가androidx.compose.foundation.text
로 이동합니다. (I9f635)BasicTextField2
는 더 이상CodepointTransformation
매개변수를 허용하지 않습니다.BasicSecureTextField
또는OutputTransformation
을 사용합니다. (Id34ff)- 두
AnnotatedStrings
의 주석만 비교하는 메서드를 추가했습니다. (I32659) MaxLines
및Overflow
를 사용한ContextualFlowRow
및 향상된FlowRow
/Column
를 소개합니다. 실험용FlowRow
및FlowColumn
가 개선되었음을 알려드립니다. 이제maxLines
및 오버플로 지원이 추가되었으며ContextualFlowRow
및ContextualFlowColumn
가 새로 도입되었습니다. 이 업데이트는 성능에 최적화된 구성요소를 제공하도록 설계되었습니다. 여기서ContextualFlow*
는 작은maxLines
구성과 동적 +N 더보기 버튼을 사용하는 다수의 항목에 적합하며FlowRow
및FlowColumn
는 100개 미만의 소수 항목에 적합합니다. 중요: 모든 항목이 교차 축 최대값에 맞는지와 관계없이 컴포지션되는FlowRow
또는FlowColumn
의 기존 동작을 유지하려면 초기화 중에overflow
를FlowRowOverflow.Visible
또는FlowColumnOverflow.Visible
로 설정하세요.ContextualFlowRowSample
및FlowRowSample
에서 이러한 새로운 기능이 작동하는 예를 살펴보세요. (Ib9135, b/293577082)
버그 수정
- 커서 애니메이션이 더 이상 켜짐 상태와 꺼짐 상태 간에 프레임을 요청하지 않습니다. (Ia2253)
KeyboardOptions
의 지원 중단된 복사 생성자가 이제 모든 속성을 올바르게 복사합니다. (If12de)
버전 1.7.0-alpha02
2024년 2월 7일
androidx.compose.foundation:foundation-*:1.7.0-alpha02
이 출시되었습니다. 버전 1.7.0-alpha02에 포함된 커밋을 확인하세요.
API 변경사항
HorizontalPager
,VerticalPager
,PagerState
가 안정화 버전으로 승격되었습니다. (I67660, b/316966909)- 앱 전체에서 텍스트의 링크 스타일을 변경할 수 있는
LocalTextLinkStyle
컴포지션 로컬을 추가했습니다. 앱에서 자체 테마를 사용하는 경우 테마 설정에 따라 이 컴포지션 로컬을 설정해야 합니다. Material 테마를 사용하면 링크의 색상이 기본적으로 Material의 기본 색상으로 설정됩니다. (I7eb10) - 개발자가 Jetpack Compose에서 리치 콘텐츠를 수신하는 방법을 제공하는
receiveContent
수정자를 도입했습니다. receiveContent
는BasicTextField2
와 통합되어 소프트웨어 키보드에서 제공하거나 클립보드 붙여넣기 작업을 통해 제공되는 리치 콘텐츠를 수락합니다. (I81b72)- 이번 변경사항에서는 페이저에서
SnapFlingBehavior
를TargetedFlingBehavior
로 대체하여 다른 사용 사례를 활용하고 유연성을 높이고자 합니다. (I762ea) - 이번 변경사항에서는 Snapping API를 안정화합니다. 또한 일부 테스트 코드를 정리하고 스냅에 샘플을 더 추가하고 있습니다. (Id8da9)
- 진행 중인 애니메이션의 상태와 타겟 스크롤 오프셋에 관한 정보를 전파할 수 있는
FlingBehavior
인TargetedFlingBehavior
를 도입합니다. (I6a207)
버그 수정
- 이제
BasicTextField2
가 스크롤되어 보이지 않거나 입력으로 인해 보이지 않게 될 때 입력하는 동안 커서가 계속 표시됩니다. (Ieb856, b/237190748)
외부 기여
- LazyLists의 미리 로드 동작을 구성하기 위한 실험용 API를 추가합니다. (I022a4)
버전 1.7.0-alpha01
2024년 1월 24일
androidx.compose.foundation:foundation-*:1.7.0-alpha01
이 출시되었습니다. 버전 1.7.0-alpha01에 포함된 커밋을 확인하세요.
새로운 기능
- 새로운
Indication API
IndicationNodeFactory
를 추가했습니다. 이렇게 하면 이전 (현재 지원 중단됨)rememberUpdatedInstance
API에 비해 성능이 더 우수한Indication
구현이 가능합니다. 이전에 관한 자세한 내용은 developer.android.com을 참고하세요. - 이제
clickable / combinedClickable / selectable / toggleable
는 null 허용MutableInteractionSource
매개변수를 허용합니다. null이고 제공된Indication
가IndicationNodeFactory
인 경우Indication
는 필요할 때만 지연 생성될 수 있으므로 성능이 개선됩니다.MutableInteractionSource
를 호이스팅하고 사용하지 않는 경우 null을 전달하는 것이 좋습니다.
API 변경사항
AnchoredDraggable
에DecayAnimation
를 도입합니다. 이 변경사항은AnchoredDraggable
에decayAnimationSpec
매개변수를 추가하여 앵커 중 하나에 정착할 때 감소 애니메이션을 사용할 수 있도록 합니다. 또한 각 사양의 사용 사례를 이해하는 데 도움이 되도록 기존animationSpec
의 이름을snapAnimationSpec
로 변경했습니다.BasicTextField2
는 실험용으로 사용할 수 있습니다.BasicTextField
와 대략적으로 기능적으로 동등해야 하며 동작은 프로덕션 준비 상태여야 합니다. 하지만 이 API는 아직 실험 단계에 있습니다. 안정화되기 전에 이름이BasicTextField
로 변경되고 동일한 패키지로 이동됩니다.BasicTextField2
용OutputTransformation
API의 첫 번째 초안을 도입했습니다. 이 API는 이전BasicTextField
의VisualTransformation
사용 사례 대부분을 대체합니다. 하지만 아직 완성되지 않았으며 일부 기능이 제대로 작동하지 않을 수 있습니다. 사용 사례에 맞는 API 사용성에 관한 의견을 보내주시면 감사하겠습니다. (aosp/2708848)- 텍스트에 링크와 클릭 가능한 항목을 추가할 수 있는
LinkAnnotation
를 도입했습니다. 링크 기능은 아직 완성되지 않았으며 더 많은 API 변경사항이 예정되어 있습니다. - 개발자가 Jetpack Compose에서 리치 콘텐츠를 수신하는 방법을 제공하는
receiveContent
수정자를 도입했습니다. receiveContent
는BasicTextField2
와 통합되어 소프트웨어 키보드에서 제공하거나 클립보드에서 붙여넣기를 통해 제공되는 리치 콘텐츠를 수락합니다.KeyboardOptions.shouldShowKeyboardOnFocus
를 사용하면 포커스가 있을 때 소프트웨어 키보드를 요청하는BasicTextField
의 기본 동작을 사용 중지할 수 있습니다.TextInputService
및LocalTextInputService
는 지원 중단되었습니다. 대신PlatformTextInputModifierNode
를 사용하여 플랫폼 IME API와 직접 통합하세요. (aosp/2862698)Indication#rememberUpdatedInstance
가 지원 중단되었습니다. 피할 수 없는 높은 성능 저하가 발생하며 다른 최적화를 방지합니다. 대신 새IndicationNodeFactory
API를 사용해야 합니다.
버그 수정
- 이제
VisualTransformation
이 전달되면BasicTextField
에서 소수의 오프셋 매핑을 사전 유효성 검사합니다. 이렇게 하면 나중에 측정 또는 그리기 패스에서 복구 불가능한 예외가 발생하는 일반적인 코딩 오류를 포착하는 데 도움이 됩니다. 컴포지션 중에 발생하면 개발자가 개발 중에 이러한 오류를 보게 될 가능성이 높아져 프로덕션 비정상 종료를 방지할 수 있습니다. (I0fd42) - 잘못된 색인에 잘못된 색인을 반환해도
VisualTransformation
가 발생하지 않습니다. (b/316401857 )
버전 1.6
버전 1.6.8
2024년 6월 12일
androidx.compose.foundation:foundation-*:1.6.8
이 출시되었습니다. 버전 1.6.8에는 이 커밋이 포함되어 있습니다.
버전 1.6.7
2024년 5월 1일
androidx.compose.foundation:foundation-*:1.6.7
이 출시되었습니다. 버전 1.6.7에는 이 커밋이 포함되어 있습니다.
버전 1.6.6
2024년 4월 17일
androidx.compose.foundation:foundation-*:1.6.6
이 출시되었습니다. 버전 1.6.6에는 이 커밋이 포함되어 있습니다.
버그 수정
- 특정 조건에서
TextField
의enabled
또는readOnly
속성을 전환하면 비정상 종료가 발생하는 버그가 수정되었습니다. (Iae17b)
버전 1.6.5
2024년 4월 3일
androidx.compose.foundation:foundation-*:1.6.5
이 출시되었습니다. 버전 1.6.5에는 이 커밋이 포함되어 있습니다.
버그 수정
- 행/열에서 재현하기 어려운 버그에 디버깅 로그를 추가합니다. (b/300280216 및 b/297974033)
버전 1.6.4
2024년 3월 20일
androidx.compose.foundation:foundation-*:1.6.4
이 출시되었습니다. 버전 1.6.4에는 이 커밋이 포함되어 있습니다.
버그 수정
- 길게 누른 다음 드래그하여 선택 동작을 수행하면 드래그의 첫 번째 프레임에서 텍스트의 레이아웃 경계를 벗어나 더 이상 비정상 종료되지 않습니다. (Icdf90, b/325307463)
버전 1.6.3
2024년 3월 6일
androidx.compose.foundation:foundation-*:1.6.3
이 출시되었습니다. 버전 1.6.3에는 이 커밋이 포함되어 있습니다.
버전 1.6.2
2024년 2월 21일
androidx.compose.foundation:foundation-*:1.6.2
이 출시되었습니다. 버전 1.6.2에 포함된 커밋을 확인하세요.
버그 수정
AnimateContentSize
가 제대로 재설정되지 않는 문제를 수정했습니다. (I07051)- 일부 상황에서 텍스트의
intrinsicHeight
가 오버캐시되는 문제를 수정했습니다. (3cd398, b/217910352)
버전 1.6.1
2024년 2월 7일
androidx.compose.foundation:foundation-*:1.6.1
이 출시되었습니다. 버전 1.6.1에 포함된 커밋을 확인하세요.
버그 수정
- 한도를 초과하여 스크롤할 때 비정상적인 그리드 측정값이 표시되는 문제를 수정했습니다. (bffc39)
- 크기가 큰 레이아웃을 확인하는 기능을 추가했습니다. (e74af5)
- 비슷한 간격의 그리드 시작 부분에 크기가 0인 항목의 배치를 수정합니다. (785f94)
- onForgotten과 동일한 순서로 onRelease 콜백을 호출합니다. (31ce3b)
버전 1.6.0
2024년 1월 24일
androidx.compose.foundation:foundation-*:1.6.0
이 출시되었습니다. 버전 1.6.0에 포함된 커밋을 확인하세요.
1.5.0 이후 중요 변경사항
- 사전 정의된 앵커 세트 간에 드래그하고 애니메이션을 적용할 수 있는 새로운 수정자
Modifier.anchoredDraggable
가 추가되었습니다. 이 수정자는Modifier.swipeable
를 대체하기 위한 것입니다. 이전 가이드에서 사용 방법과Modifier.swipeable
에서 이전하는 방법을 알아보세요. - 앱과 구성요소 간의 드래그 앤 드롭 기능이 추가되었습니다. 시작하려면
DragAndDropTarget
,Modifier.dragAndDropSource
및 기타 API를 참고하세요. Modifier.draggable2D
은 간편한 2D 드래그 지원을 허용하는 새로운 수정자입니다. 샘플을 참고하세요.- Compose에서 노출 영역 기반 구성요소를 더 쉽게 추가할 수 있도록
AndroidExternalSurface
및AndroidEmbeddedExternalSurface
가 추가되었습니다. Pager
및snapFlingBehaviour
의 다양한 API 변경사항 및 개선사항- 다양한 포커스, 텍스트, 인셋 API가 안정화 버전 API로 승격되었습니다.
버전 1.6.0-rc01
2024년 1월 10일
androidx.compose.foundation:foundation-*:1.6.0-rc01
이 출시되었습니다. 버전 1.6.0-rc01에 포함된 커밋을 확인하세요.
API 변경사항
DragAndDropTarget()
확장 생성자가 삭제되었습니다.object: DragAndDropTarget {}
를 사용하여 새 인스턴스를 만듭니다. (I32318)
버전 1.6.0-beta03
2023년 12월 13일
androidx.compose.foundation:foundation-*:1.6.0-beta03
이 출시되었습니다. 버전 1.6.0-beta03에 포함된 커밋을 확인하세요.
버그 수정
- 무한 제약 조건으로 측정된 매우 큰 텍스트에 영향을 미치는 비정상 종료 문제를 수정했습니다. (I1a7df, b/312294386)
PlatformImeOptions
는 이제 인터페이스가 아닌 구체적인 클래스입니다. (If40a4)
버전 1.6.0-beta02
2023년 11월 29일
androidx.compose.foundation:foundation-*:1.6.0-beta02
이 출시되었습니다. 버전 1.6.0-beta02에 포함된 커밋을 확인하세요.
버그 수정
- 재레이아웃 전용 스크롤 후
canScroll
가 업데이트되지 않는 문제를 수정했습니다. (I60a86) - 작은 스크롤 후
Modifier.animateItemPlacement()
및LookaheadScope
를 수정했습니다. (I3a2b7)
버전 1.6.0-beta01
2023년 11월 15일
androidx.compose.foundation:foundation-*:1.6.0-beta01
이 출시되었습니다. 버전 1.6.0-beta01에 포함된 커밋을 확인하세요.
API 변경사항
- 이제
DragAndDropTarget
수정자는 수신DragAndDropTarget
를 명시적으로 가져오고 드래그 앤 드롭 세션을 선택하는 람다를 갖습니다. 이제DragAndDropModifierNode
의 팩토리 함수가 두 개 있습니다. 전송을 수신하기 위한 1개와 데이터를 전송하기 위한 1개 (I69481) maximumFlingVelocity
가 Float로 표시되도록 업데이트했습니다.maximumFlingVelocity
통합을 더 명확하게 설명하도록 문서를 업데이트했습니다. (I8adc7)DragAndDropModifierNode
팩토리의onDragAndDropStart
이름이acceptDragAndDropTransfer
로 변경되었습니다.드래그 앤 드롭 세션에서 수락할 수 있도록
acceptsDragAndDropTransfer
이dragAndDropTarget
Modifier
에 추가되었습니다. 이 람다는 드래그 앤 드롭 세션에 관심이 있는 경우 실행 가능한DragAndDropTarget
를 반환합니다. 드래그 이벤트를 처리하는 다른 람다 함수가 이 함수로 대체되었습니다.드래그 앤 드롭 세션에서 수신하는
DragAndDropTarget
팩토리 함수를 추가했습니다. (Iebf3a)AnchoredDraggable
에서startDragImmediately
를 노출하면 이를 사용할 때 드래그 동작을 감지하는 컨트롤을 제공할 수 있습니다. 위젯이 타겟 앵커로 애니메이션 처리될 때 설정하면 유용합니다. 샘플을 참고하세요. (Ie6d13, b/285139987)이제 Foundation Tooltip API가
@ExperimentalFoundationApi
입니다. (I30b0b)DragAndDropInfo
를 삭제했습니다. 이제DragAndDropModifierNode.drag
가transferData
, 장식 크기, 드래그 장식DrawScope
람다의 매개변수를 사용합니다.DragAndDropTarget
는 단일 추상 메서드가 아닌 특정 드래그 앤 드롭 이벤트에 관한 메서드를 보유합니다.제공된
DragAndDropTarget
가 특정 드래그 앤 드롭 세션에만 유효하다는 것을 더 잘 전달하기 위해DragAndDropModifierNode
의 팩토리 함수에 있는onDragAndDropEvent
의 이름이onDragAndDropStart
로 변경되었습니다.DragAndDropEventType
가 삭제되었습니다. (I645b1)PlatformTextInputModifierNode.runTextInputSession
에서establishTextInputSession
로 이름이 변경되었습니다. (I03cd0)OriginalText
를TextSubstitution
로 바꿉니다. (Ifa5a8)PlatformTextInputModifierNode.textInputSession
에서runTextInputSession
로 이름이 변경되었습니다. (Ie9c6b)나중에 재사용하기 위해 유지되는
SubcomposeLayout
의 하위 요소 (및 이를 기반으로 하는LazyColumn
과 같은 레이아웃)는 비활성화된 것으로 간주됩니다. 이러한 노드를 테스트하기 위해 새로운assertIsDeactivated()
테스트 API가 도입되었습니다. 나머지 테스트 API는 기본적으로 비활성화된 노드를 필터링합니다. (I2ef84, b/187188981)Modifier.magnifier
의clippingEnabled
매개변수 이름이clip
로 변경되었습니다.Modifier.magnifier
의magnifierCenter
매개변수는 동일한 기본 동작을 유지하면서 nullable로 설정됩니다. (I6aa66)이제 Material
SwipeToReveal
API (카드 및 칩용)는 이러한 슬롯을 만들기 위해 데이터 클래스 기반 인스턴스 대신 슬롯 기반 API (Compose에서 권장)를 사용합니다. 이는 중대한 변경사항입니다. 새 API를 사용하는 방법의 예는 데모 및 샘플 코드를 참고하세요. (Ia8943)
버그 수정
PageSize.Fixed
의 등호 및 해시코드를 구현합니다. (Ie3ede, b/300134276)minWidth
이 변경되고minWidth
이 초기 측정 제약 조건maxWidth
보다 작은 경우BasicText
레이아웃이 축소되지 않는 버그를 수정했습니다. (Idb19c)ArcLine
에서 스윕 그라데이션에 대한 렌더러 지원을 추가합니다. (I4d5bb)- 창 인셋 변경과 관련된 바이너리 호환성 문제를 수정했습니다. (Iee695)
- 마이크로벤치마크에서 Material3 칩/버튼의 Material Core 레이어를 삭제하면 실적이 더 좋습니다. (I55555)
버전 1.6.0-alpha08
2023년 10월 18일
androidx.compose.foundation:foundation-*:1.6.0-alpha08
이 출시되었습니다. 버전 1.6.0-alpha08에 포함된 커밋을 확인하세요.
새로운 기능
Modifier.draggable2D
은 간편한 2D 드래그 지원을 허용하는 새로운 수정자입니다. 샘플을 참고하세요. (Id95f5, b/214412658)
API 변경사항
Modifier.dragAndDrawSource
의onDrawDragShadow
람다 이름이drawDragDecoration
로 변경되었으며DragAndDropInfo
의 크기 매개변수 이름이dragDecorationSize
로 변경되었습니다. (Id0e30, b/303904810)BasicTextField2
의decorationBox
매개변수의 이름이decorator
로 변경되었습니다. 유형도 이에 상응하는 재미 인터페이스TextFieldDecorator
로 변경됩니다. (I23c1c)
버그 수정
onValueChange
요구사항과 관련된BasicTextField
문서가 개선되었습니다. (I90fc9, b/160257648)
버전 1.6.0-alpha07
2023년 10월 4일
androidx.compose.foundation:foundation-*:1.6.0-alpha07
이 출시되었습니다. 버전 1.6.0-alpha07에 포함된 커밋을 확인하세요.
API 변경사항
- 맞춤 텍스트 편집기의 테스트를 작성하기 위한
PlatformTextInputMethodTestOverride
를 도입했습니다. (Id159b) GraphicsSurface
의 이름을AndroidExternalSurface
으로 바꿨습니다. (I11680)- 비선형 글꼴 크기 조정을 사용 중지하는
DisableNonLinearFontScalingInCompose
임시 플래그를 추가했습니다. 정리하는 데 시간이 필요한 경우 테스트에서DisableNonLinearFontScalingInCompose = true
를 설정합니다. 이 플래그는 Compose 1.6.0-beta01에서 삭제됩니다. (Ic9486) - 할당을 방지하는
ColorList
및ColorSet
컬렉션을 추가했습니다. (I744bd) - 이 변경사항으로 인해
SnapLayoutInfoProvider
구현의 구현 세부정보로 전환된shortSnapVelocityThreshold
가 삭제됩니다. (I65f6d) - 드래그 앤 드롭 세션을 시작하기 위한
dragAndDropSource
수정자와 드래그 앤 드롭 세션에서 수신하기 위한dragAndDropTarget
수정자를 추가했습니다. (Ib7828, b/286038936) SnapPositionInLayout
문서 및 위치 메서드를 업데이트했습니다.SnapPositionInLayout
의 위치 메서드에 콘텐츠 패딩을 도입합니다. (Id7938, b/300116110)- 사용자가 변경한 사항을 실행취소/실행할 수 있는 기능을 제공하는
UndoState
를TextFieldState
에 추가했습니다. (Icc024)
버그 수정
- 속도 변경 후
basicMarquee
가 애니메이션되지 않는 문제를 수정했습니다. (Id2e77, b/297974036)
버전 1.6.0-alpha06
2023년 9월 20일
androidx.compose.foundation:foundation-*:1.6.0-alpha06
이 출시되었습니다. 버전 1.6.0-alpha06에 포함된 커밋을 확인하세요.
새로운 기능
SurfaceView
,TextureView: GraphicsSurface()
,EmbeddedGraphicsSurface()
용 새로운 컴포저블 래퍼 이는 실험용 API이며 변경 및 수정될 수 있습니다. (I9ddb2)Modifier.magnifier()
는 이제 안정적인 API입니다. 여기에는 수정자 자체의 인라인 매개변수를 위해MagnifierStyle
가 삭제된 것이 포함됩니다. (I83bec, b/298381260, b/262367109, b/261438887)
API 변경사항
ScrollScope
에updateCurrentPage
및updateTargetPage
를 도입했습니다. 이는PagerState.scroll
를 통한 애니메이션 스크롤 맞춤설정을 허용하는 데 필요한 마지막 부분입니다. (I9cad5, b/267744105, b/243786897)SnapFlingBehavior
에서 밀도를 삭제합니다.SnapLayoutInfoProvider
의 모든 구현에는 이미 밀도에 액세스하는 방법이 있습니다. 수신기 범위를 삭제하면SnapFlingBehavior
와SnapLayoutInfoProviders
의 구현이 덜 복잡해집니다. (I153c3)- 더 많은 수정자가 안정적인 것으로 표시되었습니다. (I56af1, b/298046462)
SnapLayoutInfoProvider
에서SnapStepSize
을 삭제했습니다. 계산은 레이아웃 정보를 사용하여 수행하고 접근 방식 또는 스냅 오프셋을 통해 제공해야 합니다. (If320c)
동작 변경사항
- 이제 Compose는 가독성과 접근성을 높이기 위해 비선형 글꼴 크기 조정을 사용합니다. 시스템 설정에서 글꼴 크기가 100% 를 초과하면 작은 텍스트는 정상적으로 크기가 커지지만 이미 큰 텍스트는 약간만 커집니다. 또한 SP로 정의된 행 간격은 의도한 100% 크기의 높이에 비례하도록 자동으로 조정됩니다. 자세한 내용은 글꼴 크기 조정 권장사항을 참고하세요. (I11518)
버그 수정
- 도움말에
rememberSaveable
사용을 삭제합니다. (Icc131, b/299500338)
버전 1.6.0-alpha05
2023년 9월 6일
androidx.compose.foundation:foundation-*:1.6.0-alpha05
이 출시되었습니다. 버전 1.6.0-alpha05에 포함된 커밋을 확인하세요.
API 변경사항
- 현재
BasicTextField
API와 마찬가지로 변경 불가능한 값과 이 값을 변경하는 콜백을 허용하는BasicSecureTextField
오버로드를 추가합니다. (Ia4882) Modifier.preferKeepClear()
를 추가하여 API 33 이상에서 플로팅 창을 닫아 두는 것이 더 낫다고 컴포저블로 표시합니다. (Ib51d5, b/297260115)ScrollView
및RecyclerView
와 같은 뷰 구성요소의 플링 속도는ViewConfiguration.ScaledMaximumFlingVelocity
로 제한됩니다. 이제 Compose에는Draggable
에 적용되는 자체 버전의maximumFlingVelocity
가 포함되어 있습니다. (Ibf974)- 지원 중단된
Pager
및PagerState
오버로드를 삭제했습니다. (Iea07e) BasicTooltipBox
를compose.foundation
에 추가하고 새PlainTooltip
및RichTooltip
컴포저블과 함께TooltipBox
를 사용하도록PlainTooltipBox
및RichTooltipBox
를 업데이트했습니다. (I79e1d)
버전 1.6.0-alpha04
2023년 8월 23일
androidx.compose.foundation:foundation-*:1.6.0-alpha04
이 출시되었습니다. 버전 1.6.0-alpha04에 포함된 커밋을 확인하세요.
API 변경사항
- 하위 컴포지션의 수명 주기 및 재사용을 관리하기 위한
ReusableComposition
인터페이스를 추가했습니다. (I812d1, b/252846775) Modifier.focusGroup
가 안정화 버전 API로 승격되었습니다. (I7ffa3)- 현재
BasicTextField
API와 마찬가지로 변경 불가능한 값과 이 값을 변경하는 콜백을 허용하는BasicTextField2
오버로드를 추가합니다. (I3f2b8) GridItemSpan::currentLineSpan
는 이제 안정적인 API입니다. (Icc29c)contentDescription
를 허용하는 캔버스는 이제 안정적인 API입니다. (Ib3d29)- 측정이 완료된 후
ScrollState
를 사용하는 구성요소의viewPort
크기를 알 수 있는 방법인viewportSize
를ScrollState
에 도입했습니다. (I8b85a, b/283102682) - 페이저의 미리 로드가 뷰의 동작과 일치하지 않는 문제가 수정되었습니다. (I93352, b/289088847)
- 이제
Modifier.consumeWindowInsets(PaddingValues)
가 안정화되었습니다.- 이제
Deprecated Modifier.consumedWindowInsets
API가 삭제되었습니다. 대신Modifier.consumeWindowInsets
를 사용합니다. (Id72bb)
- 이제
버전 1.6.0-alpha03
2023년 8월 9일
androidx.compose.foundation:foundation-*:1.6.0-alpha03
이 출시되었습니다. 버전 1.6.0-alpha03에 포함된 커밋을 확인하세요.
API 변경사항
LazyLayout
의 오버로드가 추가되었습니다. 이전과 달리 일반 객체가 아닌LazyLayoutItemProvider
의 람다를 허용합니다. 이전 오버로드는 지원 중단되었습니다. (I42a5a)privateImeOptions
구성 지원을 추가했습니다. (Idb772)
버그 수정
readOnly
가 true일 때 키보드가 표시되고 수정 가능한 텍스트 필드가 수정되는 문제를 수정했습니다. 포커스가 있는 동안readOnly
가 true에서 false로 변경될 때 키보드가 표시되지 않는 문제도 수정했습니다. (I34a19, b/246909589)
버전 1.6.0-alpha02
2023년 7월 26일
androidx.compose.foundation:foundation-*:1.6.0-alpha02
이 출시되었습니다. 버전 1.6.0-alpha02에 포함된 커밋을 확인하세요.
API 변경사항
Pager
에서 측정항목이 통과한 후에 수집된 정보가 포함된PagerLayoutInfo
를 도입했습니다. 또한Pager
에서 단일 측정 페이지에 관한 정보인PageInfo
를 도입했습니다. (Iad003, b/283098900)- 컴포저블에 허용되는 입력을 지정하는 추가 주석 (I51109)
- 테스트에서 포커스를 요청하는 더 편리하고 검색 가능한 방법으로
SemanticsNodeInteraction.requestFocus
를 추가했습니다. (Ie8722) PlatformTextInput*
API를 완전히 재설계했습니다. (I6c93a, b/274661182, b/267235947, b/277380808)SoftwareKeyboardController
및LocalSoftwareKeyboardController
는 더 이상 실험용이 아닙니다. 이제LocalSoftwareKeyboardController
도 적절한CompositionLocal
입니다. (I4c364)- 이제
Modifier.transformable
가canPan
매개변수에 화면 이동 델타를 제공하여 화면 이동을 허용하거나 허용하지 않을 방향을 결정하는 데 도움이 됩니다. (I692aa, b/266829800) - 슈퍼클래스
AbstractComposeView
를 확장하도록 수정자consumeWindowInsets
를 업데이트합니다. (Iacd74, b/269479941)
버전 1.6.0-alpha01
2023년 6월 21일
androidx.compose.foundation:foundation-*:1.6.0-alpha01
이 출시되었습니다. 버전 1.6.0-alpha01에 포함된 커밋을 확인하세요.
새로운 기능
- Foundation에 새로운
AnchoredDraggable
API를 도입했습니다. 모달 하단 시트와 같이 개별 상태 간에 드래그할 수 있는 구성요소를 빌드하는 데 사용할 수 있습니다. 이 API는 Material의Swipeable
API를 대체합니다. (I4a2ed)
API 변경사항
InputConnection#requestCursorUpdates
지원 (I0c69b)- 맞춤 애니메이션 사양을 허용하는
scrollAnimationSpec
를 도입했습니다.BringIntoViewCalculator
가BringIntoViewScroller
로 업데이트되었습니다. (Idb741) - 로드하지 못한 애셋 경로의 설명과 함께 비트맵 애셋을 로드하려고 할 때 발생하는 throwable을 래핑하는
ResourceResolutionException
유형을 추가합니다. (I19f44, b/230166331, b/278424788) - 텍스트 번역을 지원하는 시맨틱 속성 및 작업을 추가했습니다. (I4a6bc)
Scrollable
와 같은 구성요소가bringIntoView
요청에 응답하는 방식을 맞춤설정하는 데 사용할 수 있는BringIntoViewCalculator
API를 도입했습니다.BringIntoViewCalculator
의 인스턴스를 선택적으로 허용하도록 스크롤 가능한 오버로드를 변경했습니다. (Iaf5af)
버그 수정
- 변경 가능한 상태 /
Animatable
생성을 위한 린트 검사와 마찬가지로 컴포지션에서MutableInteractionSource
를 기억하지 않고 만드는 경우 경고하는 린트 검사를 추가했습니다. (I5daae) - 마우스로 선택하는 기능을 추가했습니다. 터치 기반 선택은 단어 단위로 확장되고 문자 단위로 축소됩니다. (Ic0c6c, b/180639271)
- 맞춤
FocusTarget
를 만드는 데 사용할 수 있는FocusTargetModifierNode
인터페이스를 추가했습니다. (I9790e)
버전 1.5
버전 1.5.4
2023년 10월 18일
androidx.compose.foundation:foundation-*:1.5.4
이 출시되었습니다. 버전 1.5.4에 포함된 커밋을 확인하세요.
버전 1.5.3
2023년 10월 4일
androidx.compose.foundation:foundation-*:1.5.3
이 출시되었습니다. 이 버전에는 변경사항이 없습니다.
버전 1.5.2
2023년 9월 27일
androidx.compose.foundation:foundation-*:1.5.2
이 출시되었습니다. 버전 1.5.2에 포함된 커밋을 확인하세요.
버그 수정
- 시맨틱이 무효화될 때 특정 상황에서 비정상 종료가 발생하는 텍스트의 버그가 수정되었습니다.
버전 1.5.1
2023년 9월 6일
androidx.compose.foundation:foundation-*:1.5.1
이 출시되었습니다. 버전 1.5.1에 포함된 커밋을 확인하세요.
버그 수정
readOnly
가 true일 때 키보드가 표시되고 수정 가능한 텍스트 필드가 수정되는 문제를 수정했습니다. 포커스가 있는 동안readOnly
가 true에서 false로 변경될 때 키보드가 표시되지 않는 문제도 수정했습니다. (I34a19, b/246909589)
버전 1.5.0
2023년 8월 9일
androidx.compose.foundation:foundation-*:1.5.0
이 출시되었습니다. 버전 1.5.0에 포함된 커밋을 확인하세요.
1.4.0 이후 중요 변경사항
Modifier.clickable
,Modifier.draggable
,Modifier.scrollable
, 레이아웃 수정자 등 많은 기본 수정자가Modifier.Node
API로 이전되어 초기 컴포지션의 오버헤드가 줄었습니다.- 페이저 안정성이 개선되었습니다. 여러 버그가 수정되었습니다.
- 이제
pageCount
매개변수가 페이저 자체가 아닌PagerState
에 있습니다.
버전 1.5.0-rc01
2023년 7월 26일
androidx.compose.foundation:foundation-*:1.5.0-rc01
이 출시되었습니다. 버전 1.5.0-rc01에 포함된 커밋을 확인하세요.
버그 수정
mutableStateOf()
호출을 해당하는 특수화된 원시 유형으로 이전하도록 권장하는 선택적 검사를 사용할 수 있습니다. 린트 ID는AutoboxingStateCreation
입니다. 이전에는 이 검사가 모든 프로젝트에 기본적으로 사용 설정되었습니다. Android 스튜디오 편집기와 프로젝트의 린트 출력에서 이 경고를 보려면 다음과 같이 모듈의build.gradle
또는build.gradle.kts
구성 내에서warning "AutoboxingStateCreation"
를 선언하여 심각도를 정보에서 경고 (또는 그 이상)로 변경하세요 (I34f7e).android { lint { warning "AutoboxingStateCreation" } ... }
버전 1.5.0-beta03
2023년 6월 28일
androidx.compose.foundation:foundation-*:1.5.0-beta03
이 출시되었습니다. 버전 1.5.0-beta03에 포함된 커밋을 확인하세요.
버전 1.5.0-beta02
2023년 6월 7일
androidx.compose.foundation:foundation-*:1.5.0-beta02
이 출시되었습니다. 버전 1.5.0-beta02에 포함된 커밋을 확인하세요.
버전 1.5.0-beta01
2023년 5월 24일
androidx.compose.foundation:foundation-*:1.5.0-beta01
이 출시되었습니다. 버전 1.5.0-beta01에 포함된 커밋을 확인하세요.
API 변경사항
PlatformDataProvider
를 구현하여 심박수와 일일 걸음수를 제공합니다.SensorGateway
인터페이스가 공개 API에서 삭제되었습니다. (I55b84)
버그 수정
- 지연 목록/그리드 등의 측정 중에 할당을 줄입니다. (Iaf9e2)
- 스냅샷을 적용할 때 할당이 감소함 (I65c09)
- 스프링 애니메이션에서 할당을 삭제했습니다. (Ie9431)
TextLayout
에서 할당을 삭제했습니다. (I0fd11)- 포인터 속도 추적에서 여러 할당을 삭제했습니다. (I26bae)
버전 1.5.0-alpha04
2023년 5월 10일
androidx.compose.foundation:foundation:1.5.0-alpha04
및 androidx.compose.foundation:foundation-layout:1.5.0-alpha04
이 출시되었습니다. 버전 1.5.0-alpha04에 포함된 커밋을 확인하세요.
API 변경사항
- 전체 매개변수 목록이 포함된 최적화된
TextStyle.merge(...)
를 추가했습니다. (Iad234, b/246961787) LazyGridState
와 함께 사용할 수 있는SnapLayoutInfoProvider
를 도입했습니다. (I92134, b/269237141, b/260914964)- 지연된 비슷한 간격의 그리드 항목 범위에 실험용
Modifier.animateItemPlacement()
가 추가되었습니다. 이 애니메이션을 항목에 적용하여 자동화된 위치 변경/재정렬 애니메이션을 실행할 수 있습니다. (I4b62d, b/257034719) GridCells.FixedSize
을 안정화 버전으로 승격합니다.FixedSize
는 각 셀이 교차 축에서 정확한 크기를 차지하고 나머지 공간이 교차 축 배열에 따라 배포되는LazyGrid
를 정의합니다. (I8542f)- Pager의 수신기 범위
PagerScope
및 지정된 페이지 오프셋을 계산하기 위한 유틸리티 함수를 도입했습니다. (If2577) - 스냅 플링 동작을 만들 때
snapPositionalThreshold
를 도입합니다. 이 매개변수를 사용하여 Pager에서 짧은 스냅에 대한 위치 기준점을 지정합니다. (If8f7f) SnapLayoutInfoProvider.calculateSnappingOffsetBounds
를calculateSnappingOffset
로 바꿨습니다 이 새로운 메서드에서는 다음으로 이동할 오프셋을 요청하기만 합니다. 경계 계산은 구현 수준에서 실행해야 합니다. 이는 스냅이 발생해야 하는 방식에 따라 다를 수 있기 때문입니다. (I923a4)LazyStaggeredGrid
API가 안정화 버전으로 승격되었습니다. (I633a5)Horizontal/VerticalPager
에서pageCount
를 삭제합니다. 상태 생성 시 제공해야 합니다.pageCount
를 수락하도록PagerState
및rememberPagerState
를 업데이트했습니다. (Ieb52d, b/266965072)Horizontal/VerticalPager
에서pageCount
를 삭제합니다. 상태 생성 시 제공해야 합니다.pageCount
를 수락하도록PagerState
및rememberPagerState
를 업데이트했습니다. (Ifa3cb, b/266965072)- Pager의
SnapFlingBehavior
에shortSnapVelocityThreshold
를 도입합니다. (I7379e, b/275579012) FlowRowScope
및FlowColumnScope
를 추가합니다. (I54fe2)
버그 수정
- 제약조건에
minWidth
및minHeight
가 있는 경우 Text의 시맨틱스를 가져오는 호출이 더 이상 비정상 종료되지 않습니다. (Ibd072) Dialog
컴포저블에서 만들지 않은 대화상자 내 텍스트 필드에 키보드가 표시되지 않는 회귀 문제를 수정했습니다. (I82551, b/262140644)
버전 1.5.0-alpha03
2023년 4월 19일
androidx.compose.foundation:foundation:1.5.0-alpha03
및 androidx.compose.foundation:foundation-layout:1.5.0-alpha03
이 출시되었습니다. 버전 1.5.0-alpha03에 포함된 커밋을 확인하세요.
이 출시에서는 Compose용 새 텍스트 렌더링 스택을 사용 설정합니다. 새 스택은 성능이 최적화되어 있으며 눈에 띄는 변경사항은 없습니다.
렌더링된 텍스트에 변경사항이 표시되면 NewTextRendering1_5 = false
를 설정하여 동작 차이를 확인하여 디버그할 수 있습니다. 이 값을 설정하면 리컴포지션이 강제로 실행됩니다. 동작 차이가 있는 경우 버그로 신고하세요.
디버그 플래그는 1.5 베타01 출시 전에 삭제됩니다.(Iada23, b/246960758)
API 변경사항
FlowColumn/FlowRow
를 인라인으로 만듭니다. (Idab37)
버전 1.5.0-alpha02
2023년 4월 5일
androidx.compose.foundation:foundation:1.5.0-alpha02
및 androidx.compose.foundation:foundation-layout:1.5.0-alpha02
이 출시되었습니다. 버전 1.5.0-alpha02에 포함된 커밋을 확인하세요.
API 변경사항
LazyGrid
에서 고정 크기 셀을 지원하고 교차 축 정렬로 셀을 정렬하는 기능을 추가했습니다. (I83ed9, b/235121277, b/267942510)LazyStaggeredGrid
에 고정 크기 차선 지원을 추가하고 교차 축 정렬로 차선을 정렬했습니다. (I7d519)- 이제
AnnotatedString
의UrlAnnotation
를TalkBack
와 같은 접근성 서비스를 통해 열 수 있습니다. (If4d82, b/253292081) - 텍스트 필드에
InsertTextAtCursor
시맨틱 작업을 추가했습니다. (I11ed5) - 이제 텍스트 관련 테스트 작업 (예:
performTextInput
)이 필드를 클릭하는 대신 시맨틱 작업을 사용하여 포커스를 직접 요청합니다. (I6ed05) FlowRow
의verticalArrangement
및FlowColumn
의horizontalArrangement
를 사용하여 교차 축 간격/정렬을 지원합니다.FlowRow/FlowColumn
에서 최상위verticalAlignment
및horizontalAlignment
도 삭제합니다. 개발자는 대신Modifier.align
를 사용할 수 있습니다. 이렇게 하면verticalAlignment
와verticalArrangement
의 이름 지정 규칙 간의 혼동이 줄어듭니다. (I87b60, b/268365538)
버전 1.5.0-alpha01
2023년 3월 22일
androidx.compose.foundation:foundation:1.5.0-alpha01
및 androidx.compose.foundation:foundation-layout:1.5.0-alpha01
이 출시되었습니다. 버전 1.5.0-alpha01에 포함된 커밋을 확인하세요.
API 변경사항
- 텍스트 및
BasicText
가 새 수정자 시스템을 사용하도록 리팩터링되었습니다. 이렇게 하면 많은 경우 성능이 크게 개선됩니다. 눈에 띄는 변경사항은 없습니다. (If1d17, b/246961435) - 텍스트 편집기 노드에서 IME 작업을 호출하는
PerformImeAction
시맨틱 작업을 추가했습니다. (Ic606f, b/269633506)
버그 수정
Modifier.hoverable
의 내부 항목을 업데이트했습니다.hoverable
수정자는 사용 설정된 경우에만 검사기에 표시됩니다. (I82103)
버전 1.4
버전 1.4.3
2023년 5월 3일
androidx.compose.foundation:foundation:1.4.3
및 androidx.compose.foundation:foundation-layout:1.4.3
버전은 변경사항 없이 출시되었습니다 (버전 범프만 있음).
버전 1.4.2
2023년 4월 19일
androidx.compose.foundation:foundation:1.4.2
및 androidx.compose.foundation:foundation-layout:1.4.2
이 출시되었습니다. 버전 1.4.2에 포함된 커밋을 확인하세요.
버전 1.4.1
2023년 4월 5일
androidx.compose.foundation:foundation:1.4.1
및 androidx.compose.foundation:foundation-layout:1.4.1
이 출시되었습니다. 버전 1.4.1에 포함된 커밋을 확인하세요.
버전 1.4.0
2023년 3월 22일
androidx.compose.foundation:foundation:1.4.0
및 androidx.compose.foundation:foundation-layout:1.4.0
이 출시되었습니다. 버전 1.4.0에 포함된 커밋을 확인하세요.
1.3.0 이후 중요 변경사항
Text
,TextField
, 하위 수준 단락에 이모티콘 호환성 통합을 추가했습니다. emojicompat을 구성하면 기본적으로 사용 설정됩니다.PlatformParagraphStyle
을 사용하여 특정 텍스트에서EmojiCompat
을 구성할 수 있습니다.LazyStaggeredGrid
에 전체 줄 스팬 지원을 추가했습니다.(I28252)- 실험용
onHover
를ClickableText
에 추가합니다. (I6938f) CoroutineContext
매개변수를 허용하는runComposeUiTest
함수와create*ComposeRule
함수에 새로운 실험용 오버로드를 도입했습니다. 컨텍스트는 테스트 컴포지션 및 컴포지션의 모든LaunchedEffect
및rememberCoroutineScope()
호출에 사용됩니다. (I10614, b/265177763)- 이제
FlowRow
및FlowColumn
을@ExperimentalFoundationApi
로 사용할 수 있으므로 기본 축에 공간이 충분하지 않은 경우 새 줄로 분할되는 구성요소의 행 및 열 기반 레이아웃이 더 유연해집니다. (I3a7b2) Modifier.basicMarquee()
는 스크롤 마키 효과로 콘텐츠를 표시하는 실험용으로 사용할 수 있습니다. (I2df44, b/139321650)
버전 1.4.0-rc01
2023년 3월 8일
androidx.compose.foundation:foundation:1.4.0-rc01
및 androidx.compose.foundation:foundation-layout:1.4.0-rc01
이 출시되었습니다. 버전 1.4.0-rc01에 포함된 커밋을 확인하세요.
API 변경사항
- 플랫폼 API와 직접 통신하는 맞춤 텍스트 입력 구현을 빌드하기 위한 새로운 하위 수준
PlatformTextInputAdapter
API를 도입했습니다. (I58df4) LazyStaggeredGrid
에 역 레이아웃 지원을 추가했습니다. (I3ef4a)
버그 수정
- 이제
BasicTextField
의SetText
시맨틱 작업이 IME 업데이트 및 테스트 함수 (예:performTextReplacement
)와 동일한 코드 경로를 사용하여 텍스트 버퍼를 업데이트합니다. - 텍스트 테스트 함수
performTextClearance
,performTextReplacement
,performTextSelection
가 이제SemanticsActions
를 사용합니다. (I0807d, b/269633168, b/269624358)
버전 1.4.0-beta02
2023년 2월 22일
androidx.compose.foundation:foundation:1.4.0-beta02
및 androidx.compose.foundation:foundation-layout:1.4.0-beta02
가 출시되었습니다. 버전 1.4.0-beta02에 포함된 커밋을 확인하세요.
API 변경사항
Layout
이 재사용되는 케이스(예:LazyColumn
의 항목으로서 재사용되는 경우)를 올바르게 처리할 수 있도록 일부 로컬 상태를 재설정하는 새Modifier.Node.onReset()
콜백을 추가했습니다. 포커스 상태가 올바르게 재설정되도록FocusTargetModifierNode
가 수정되었습니다. (I65495, b/265201972)- 캔버스에 텍스트를 그릴 때 여러 블렌딩 알고리즘이 지원되도록
DrawScope.drawText
,Paragraph.paint
,MultiParagraph.paint
메서드에BlendMode
매개변수를 추가했습니다. (I57508) modifierElementOf()
API를 삭제했습니다. 대신ModifierNodeElement
에서 직접 확장하세요. (Ie6d21)
버그 수정
- 선택 핸들을 조정할 때 더 이상 부분적인 문자가 선택되지 않습니다. (Idedd1)
- 빈
TextField
에서 Ctrl+백스페이스를 누르면 비정상 종료가 발생하는 문제를 수정했습니다. (I0427f, b/244185537)
버전 1.4.0-beta01
2023년 2월 8일
androidx.compose.foundation:foundation:1.4.0-beta01
및 androidx.compose.foundation:foundation-layout:1.4.0-beta01
이 출시되었습니다. 버전 1.4.0-beta01에 포함된 커밋을 확인하세요.
새로운 기능
- 버전 1.3부터
Text
,TextField
, 하위 수준 단락에 이모티콘 호환성 통합이 추가되었습니다. emojicompat을 구성하면 기본적으로 사용 설정됩니다. PlatformParagraphStyle
을 사용하여 특정 텍스트에서EmojiCompat
을 구성할 수 있습니다.
API 변경사항
- 작성이 종료된 후에도 활성 상태여야 하는 항목을 보존하기 위해 모든
LazyLayouts
에서 사용되는PinnableContainer
API의 공통 구현을 추가했습니다. (If45a4) PinnableContainer.PinnedHandle.unpin()
의 이름을release()
로 바꾸었습니다. (I4667a)
외부 기여
LazyListLayoutInfo
,LazyGridLayoutInfo
,LazyStaggeredGridItemInfo
에mainAxisItemSpacing
속성을 추가했습니다. (I52fad)
버전 1.4.0-alpha05
2023년 1월 25일
androidx.compose.foundation:foundation:1.4.0-alpha05
및 androidx.compose.foundation:foundation-layout:1.4.0-alpha05
가 출시되었습니다. 버전 1.4.0-alpha05에 포함된 커밋을 확인하세요.
새로운 기능
LazyStaggeredGrid
에 전체 줄 스팬 지원을 추가했습니다. (I28252)- 실험용
onHover
를ClickableText
에 추가합니다. (I6938f) CoroutineContext
매개변수를 허용하는runComposeUiTest
함수와create*ComposeRule
함수에 새로운 실험용 오버로드를 도입했습니다. 컨텍스트는 테스트 컴포지션 및 컴포지션의 모든LaunchedEffect
및rememberCoroutineScope()
호출에 사용됩니다. (I10614, b/265177763)
API 변경사항
OverscrollEffect
의 전/후 API를 결합된 '데코레이터'applyToScroll
및applyToFling
함수로 병합합니다. 새로운 API 도형으로 오버스크롤 효과를 구현하는 방법에 관한 예는 이 문서의 업데이트된 샘플을 참고하세요. (I8a9c4, b/255554340)- 인라인/지원 중단된 숨겨진 함수의 유형/null 허용 여부가 추가되었습니다. (I24f91)
TextStyle
의LineBreak
및Hyphens
API가 안정화 버전으로 전환되었습니다. (Ic1e1d)
버그 수정
- 이제 애니메이션이 사용 중지된 경우에도 텍스트 필드의 커서가 계속 깜박입니다. (I95e70, b/265177763)
- 이제 시스템 설정에서 애니메이션이 사용 중지된 경우에도
Modifier.basicMarquee
에 애니메이션이 적용됩니다. (I23389, b/262298306, b/265177763)
외부 기여
TextInputSession
및TextInputService
의notifyFocusedRect
메서드가 다시 지원 중단되지 않습니다. (I23a04, b/262648050)
버전 1.4.0-alpha04
2023년 1월 11일
androidx.compose.foundation:foundation:1.4.0-alpha04
, androidx.compose.foundation:foundation-layout:1.4.0-alpha04
가 출시되었습니다. 버전 1.4.0-alpha04에 포함된 커밋을 확인하세요.
새로운 기능
- 이제
FlowRow
및FlowColumn
을@ExperimentalFoundationApi
로 사용할 수 있으므로 기본 축에 공간이 충분하지 않은 경우 새 줄로 분할되는 구성요소의 행 및 열 기반 레이아웃이 더 유연해집니다. (I3a7b2) Modifier.basicMarquee()
를 스크롤 마키 효과로 콘텐츠를 표시하는 실험용으로 사용할 수 있습니다. (I2df44, b/139321650)
API 변경사항
FocusRequesterModifier
가 지원 중단되고FocusRequesterNode
로 대체됩니다. (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589)- 이제
variationSettings
가 있는AndroidFont
생성자가 안정적인 API이며 새로운 유형의 글꼴 설명자를 만드는 데 사용될 수 있습니다. (I5adcc, b/261565807) - 현재 항목을 고정할 수 있는 컴포지션 로컬을 통해 지연 목록에 의해 전파되는
PinnableContainer
API를 도입했습니다. 즉, 이러한 항목은 스크롤하여 뷰에서 벗어나면 삭제되지 않습니다. 예를 들어Modifier.focusable()
은 이 메커니즘을 통해 현재 포커스가 설정된 항목을 고정합니다. (Ib8881, b/259274257, b/195049010) - 스크롤 가능한 항목이
bringIntoViewRequesters
및 포커스 가능 항목에 응답하는 방식을 다시 작성하여 이러한 작업의 복잡성을 더 효과적으로 모델링하고 더 많은 극단적 사례를 처리합니다. (I2e5fe, b/241591211, b/192043120, b/237190748, b/230756508, b/239451114) - 지원 중단된 숨겨진 함수의 반환 유형 null 허용 여부를 더 추가했습니다. (Ibf7b0)
- 실험용
TextMotion
을TextStyle
에 추가하여 텍스트를Static(default)
또는 애니메이션으로 정의했습니다. 애니메이션을 통해 텍스트가 크기 조정되거나 변환되거나 회전되는 경우TextMotion.Animated
를 사용합니다. (I24dd7) TextFieldFocusModifier
를 추가하여 Android 플랫폼의 포커스 탐색 동작을 수정했습니다. (I00303)- 다른
DrawScope
함수와 일치하도록drawText
의maxSize: IntSize
인수를size: Size
로 대체했습니다.size
는 기본적으로Size.Unspecified
로 설정되며 이전 기본 동작은 변경되지 않습니다. (Icd27d)
버그 수정
- 좀 더 자연스러운 느낌을 위해
SnapFlingBehaviour
에서 맞추기의 물리적 과정이 조정되었습니다.
알려진 문제
androidx.compose.foundation:1.4.0-alpha03
에서androidx.compose.foundation:1.4.0-alpha04
으로 업데이트할 때java.lang.NoSuchFieldError
오류가 발생할 수 있습니다. 이 문제는 여기에서 처음으로 신고되었습니다. 수정사항이 제출되었으며, 다음번 Compose 업데이트에서 사용할 수 있습니다. 이 문제를 해결하려면androidx.compose.material
및androidx.compose.material3
라이브러리를 최신 버전(1.1.0-alpha04)으로 업데이트하거나androidx.compose.foundation
을 1.4.0-alpha03으로 다운그레이드하세요.
버전 1.4.0-alpha03
2022년 12월 7일
androidx.compose.foundation:foundation:1.4.0-alpha03
및 androidx.compose.foundation:foundation-layout:1.4.0-alpha03
이 출시되었습니다. 버전 1.4.0-alpha03에 포함된 커밋을 확인하세요.
API 변경사항
- Compose 규칙을 사용하는 UI 테스트에서는 모든 프레임 콜백이 실행을 완료할 때까지
withFrameNanos
콜백 중에 재개된 연속 상태가 전달되지 않습니다. 이는 정상적으로 실행될 때의 Compose 동작과 일치합니다. 그러나 기존의 동작을 사용하는 테스트는 실패할 수 있습니다. 이는withFrameNanos
또는withFrameMillis
를 직접 호출하는 코드에만 영향을 미쳐야 하고 콜백 내부로 이동해야 할 수도 있는 이러한 함수에 전달되는 로직이 콜백 외부에 있어야 합니다. 이 CL 예에서 애니메이션 테스트 변경사항을 참고하세요. withFrameNanos
콜백 후 호출자의 코루틴을 재개하기 전에 코드를 실행하도록TestMonotonicFrameClock
생성자 및 팩토리 함수에 선택적 매개변수onPerformTraversals: (Long) -> Unit
을 추가했습니다. (Idb413, b/254115946, b/222093277, b/255802670)- 페이지 접근성 작업
PageUp
,PageDown
,PageLeft
,PageRight
를 도입했습니다. 이 작업은 API 29부터 사용할 수 있습니다. (Ida4ab) - 페이저 방식으로 컴포저블을 표시하는 방법인
HorizontalPager
및VerticalPager
를 도입했습니다. 페이저를 제어하고 페이저의 현재 상태에 관한 정보를 쿼리하기 위해PagerState
를 도입했습니다. 페이저의 페이지 크기를 제어하는 방식인PageSize
를 도입했습니다. 이는 페이저와 같은 캐러셀을 만드는 데 사용할 수 있습니다. 페이저의 플링 동작에서 맞추기가 작동하는 방식을 제어하는 방법인PagerSnapDistance
를 도입했습니다. (I01120) - 플링이 놓이는 위치를 인식하는 데 도움이 되도록
SnapFlingBehavior.performFling
에 오버로드를 도입했습니다. (I569f6) OverscrollEffect#isEnabled
를 삭제했습니다. 이 플래그를 기억하고 설정할 필요 없이 오버스크롤을 표시하고 싶지 않은 경우(예:ScrollableState#canScrollForward/backward
가 모두 false를 반환하는 경우)에는 오버스크롤 효과에 이벤트를 전달하지 마세요. (I1a4b0, b/255554340, b/255557085)ScrollableState
에 어느 방향으로든 스크롤할 수 있는 공간(범위의 최솟값/최댓값 내에 있는지)이 있는지 쿼리하기 위한ScrollableState#canScrollForward
및ScrollableState#canScrollBackward
를 추가했습니다.ScrollableState
의 기존 구현과의 하위 호환성을 위해 기본값은 true입니다. 소비자는 이를 사용하여 사용자에게 여전히 스크롤할 공간이 있다는 것을 표시할 수 있습니다. 또한 이를 통해, 지정된 방향으로 스크롤할 공간이 없는ScrollableStates
에 델타가 전달되지 않도록 하여 불필요한 작업을 줄일 수 있습니다. (Idf1a0, b/255557085)- 상위 스크롤 정보를 쿼리할 수 있는 Modifier API를 추가했습니다. (I2ba9d, b/203141462)
- 동작이 스크롤 이벤트가 될 가능성이 있는 경우 누르기 상호작용이 올바르게 지연되도록
Clickable
을 수정했습니다. Clickables
가Scrollable ViewGroup
내에서 사용될 때 물결 효과가 올바르게 지연되지 않는 문제를 수정했습니다.- 동작이 스크롤 이벤트가 될 가능성이 있는 경우 누르기가 올바르게 지연되도록 창 및 시트를 업데이트했습니다.
SnapLayoutInfoProvider
의 다른 메서드와 일치하도록snapStepSize
이름 지정을 업데이트합니다. (Ife67c)Compose
에EmojiCompat
를 추가했습니다. (Ibf6f9, b/139326806)consumedWindowInsets()
의 이름을consumeWindowInsets()
로,withConsumedWindowInsets()
의 이름을onConsumedWindowInsetsChanged()
로 바꾸고 수정자를 공개로 변경했습니다. (Ie44e1)
버그 수정
Modifier.animateItemPlacement()
및 지연 그리드의 비정상 종료 문제가 해결되었습니다. 이 현상은 새 항목 수가 이전 항목보다 적은 일부 상황에서 발생했습니다. (I0bcac, b/253195989)
버전 1.4.0-alpha02
2022년 11월 9일
androidx.compose.foundation:foundation:1.4.0-alpha02
및 androidx.compose.foundation:foundation-layout:1.4.0-alpha02
가 출시되었습니다. 버전 1.4.0-alpha02에 포함된 커밋을 확인하세요.
API 변경사항
- 이제
awaitFirstDown
및waitForUpOrCancellation
이 더 나은 유연성을 위해PointerEventPass
를 허용합니다. (I7579a, b/212091796) - 지연* API에서
beyondBoundCount
API를 되돌립니다. (I12197) - 표시 영역 항목을 구성하고 이 항목 외부에 배치하기 위해 지연 API에 매개변수를 도입했습니다. (I69e89, b/172029355)
BasicText
및BasicTextField
에minLines
매개변수를 추가했습니다. 이를 통해 줄 수 측면에서 이러한 컴포저블의 최소 높이를 설정할 수 있습니다. (I24294, b/122476634)
버전 1.4.0-alpha01
2022년 10월 24일
androidx.compose.foundation:foundation:1.4.0-alpha01
및 androidx.compose.foundation:foundation-layout:1.4.0-alpha01
이 출시되었습니다. 버전 1.4.0-alpha01에 포함된 커밋을 확인하세요.
API 변경사항
- 동작 감지기용 메서드
awaitEachGesture()
가 새로 추가되었습니다. 이 메서드는forEachGesture()
와 유사하게 작동하지만, 반복과 반복 사이에 이벤트가 손실되지 않도록 동작 루프가 전적으로AwaitPointerEventScope
내에서 작동합니다. forEachGesture()
로 인해 동작 간에 이벤트가 손실될 수 있으므로 이 메서드가 지원 중단되고awaitEachGesture()
로 대체되었습니다. (Iffc3f, b/251260206)- 애니메이션 진행 상황을 확인하고 애니메이션이 완료된 후 IME가 어디에 위치할지 알 수 있도록
WindowInsets.imeAnimationSourc
e 및WindowInsets.imeAnimationTarget
을 추가했습니다. (I356f1, b/217770337)
버전 1.3
버전 1.3.1
2022년 11월 9일
androidx.compose.foundation:foundation:1.3.1
및 androidx.compose.foundation:foundation-layout:1.3.1
이 출시되었습니다. 버전 1.3.1에 포함된 커밋을 확인하세요.
버그 수정
BeyondBoundsLayout
의 성능 문제를 수정했습니다. (aosp/2255266)- 연결되지 않는 한
ContentInViewModifier
가 레이아웃 좌표를 읽지 않습니다. (aosp/2241316)
버전 1.3.0
2022년 10월 24일
androidx.compose.foundation:foundation:1.3.0
및 androidx.compose.foundation:foundation-layout:1.3.0
이 출시되었습니다. 버전 1.3.0에 포함된 커밋을 확인하세요.
1.2.0 이후 중요 변경사항
LazyVerticalStaggeredGrid
및LazyHorizontalStaggeredGrid
의 시험용 버전이 도입되었습니다.SnapFlingBehavior
,rememberSnapFlingBehavior
및 이에 대응하는 기타 API가 실험용으로 추가되었습니다.- 이제 리모컨의 키보드나 D패드를 클릭하면
Modifier.clickable
,Modifier.toggleable
,Modifier.selectable
에 물결 효과가 표시됩니다.
버전 1.3.0-rc01
2022년 10월 5일
androidx.compose.foundation:foundation:1.3.0-rc01
및 androidx.compose.foundation:foundation-layout:1.3.0-rc01
이 출시되었습니다. 버전 1.3.0-rc01에 포함된 커밋을 확인하세요.
API 변경사항
- 감쇠를 위한 플링 속도가 충분하지 않은 경우 접근 단계에서 사용할 수 있는
lowVelocityAnimationSpec
을 도입했습니다. (Iaeb27) - Text에서 자동 하이픈 연결을 지원하는 새로운 실험용 API 하이픈을 추가했습니다. (Iaa869)
버전 1.3.0-beta03
2022년 9월 21일
androidx.compose.foundation:foundation:1.3.0-beta03
및 androidx.compose.foundation:foundation-layout:1.3.0-beta03
이 출시되었습니다. 버전 1.3.0-beta03에 포함된 커밋을 확인하세요.
API 변경사항
- Text에서 줄바꿈을 맞춤설정하는 옵션을 추가합니다. (I86907)
- 이제
BringIntoViewResponder
가 요청을 처리하는 동안 요청의 최신 경계를 가져올 수 있습니다. (If86a5, b/241591211) - 실험용
Staggered Grid
에서 항목 간 간격을 지원합니다. (I10b82) - 실험용
Staggered Grid
에 콘텐츠 패딩을 도입했습니다. (I342ea) - 최소 너비 제약 조건을 지원하기 위해
TextMeasurer.measure
메서드의size:IntSize
인수를constraints: Constraints
로 변경했습니다. (I37530, b/242707525) windowInsetsPadding
외부에서 사용할 수 있도록 소비된WindowInsets
를 가져오는Modifier.withConsumedWindowInsets()
를 추가했습니다.- 재구성 없이
WindowInsets
를 쉽게 변경할 수 있도록MutableWindowInsets
를 추가했습니다. (I7fd28, b/237019262, b/243119659)
버전 1.3.0-beta02
2022년 9월 7일
androidx.compose.foundation:foundation:1.3.0-beta02
및 androidx.compose.foundation:foundation-layout:1.3.0-beta02
가 출시되었습니다. 버전 1.3.0-beta02에 포함된 커밋을 확인하세요.
API 변경사항
- 실험용
StaggeredGrid
의 초기 버전 (Ia48be) FocusDirection.In
및FocusDirection.Out
의 이름이FocusDirection.Enter
및FocusDirection.Exit
로 변경되었습니다. (Ia4262, b/183746982)LazyLists
에서 맞추기를 빠르게 사용 설정하는rememberSnapFlingBehavior
오버로드를 도입했습니다. (Ifb48a)snapFlingBehavior
팩토리를 구체적인SnapFlingBehavior
클래스로 대체했습니다.SnapLayoutInfoProvider
메서드를 Density로 지정하여 API 사용자가 Dp<->Px 전환을 더 쉽게 할 수 있도록 했습니다. (I54a11)LazyLayoutMeasureScope.measure
를 업데이트하여 배치 가능 목록을 반환하고 반환된 값의 원하는 불변성을 강조표시합니다. (I48b7c)LazyLists
에 스냅FlingBehavior
를 사용 설정하는 데 사용할 수 있는SnapLayoutInfoProvider
인스턴스를 만들기 위해LazyListState
를 사용하는SnapLayoutInfoProvider
를 도입했습니다. (I2dd10)
버그 수정
- 다른 대기 함수와 일치하도록
AwaitPointerEventScope#awaitLongPressOrCancellation
을 리팩터링합니다. (I646e6)
버전 1.3.0-beta01
2022년 8월 24일
androidx.compose.foundation:foundation:1.3.0-beta01
및 androidx.compose.foundation:foundation-layout:1.3.0-beta01
이 출시되었습니다. 버전 1.3.0-beta01에 포함된 커밋을 확인하세요.
API 변경사항
OverscrollEffect
에서pointerPosition
을 삭제했습니다. 포인터 위치를 고려하는 효과의 경우effectModifier
에서Modifier.pointerInput { }
을 사용하여 현재 포인터 위치를 가져올 수 있습니다. (I9f606, b/241239306)- 더 복잡한 동작 감지를 위해 추가 구성요소로
AwaitPointerEventScope#awaitLongPressOrCancellation
을 노출했습니다. (I04374, b/181577176) - 지연 목록에서 맞추기를 사용 설정하기 위해
lazyListSnapLayoutInfoProvider
를 도입했습니다. (I3ecdf) - 목록 맞추기를 사용 설정하는 플링 동작인
SnapFlingBehavior
를 도입했습니다. 맞추기 레이아웃에 관한 정보와 함께SnapLayoutInfoProvider
인스턴스를 제공합니다. (Ie754c)
버전 1.3.0-alpha03
2022년 8월 10일
androidx.compose.foundation:foundation:1.3.0-alpha03
및 androidx.compose.foundation:foundation-layout:1.3.0-alpha03
이 출시되었습니다. 버전 1.3.0-alpha03에 포함된 커밋을 확인하세요.
API 변경사항
- 이제 리소스 글꼴에서 글꼴 변형 설정을 지원합니다(API 26 이상). (I900dd, b/143703328)
DeviceFontFamilyNameFont
에서 가변 글꼴을 지원합니다, (Ic1279, b/143703328)PlatformTextStyle
및LineHeightStyle
에서 실험용 주석을 삭제했습니다. (I64bef)- 이제
VisualTransformation
에서 제공하는OffsetMapping
이 잘못된 색인을 반환할 때 텍스트 필드에서 더 자세한 예외가 발생합니다. (Ie73f9, b/229378536) - 실험용 API를 도입하여 지연 레이아웃 간에 항목 제공자 로직을 공유합니다. (Ic891c)
ScrollableDefaults.reverseDirection()
이 더 이상 실험용이 아닙니다. (Iba646)SemanticsModifier.id
를 지원 중단하고 대신 시맨틱 ID를LayoutInfo.semanticsId
로 이동했습니다. (Iac808, b/203559524)checkScrollableContainerConstraints()
가 더 이상 실험용이 아닙니다. (I2c290)Modifier.clipScrollableContainer()
가 더 이상 실험용이 아닙니다. (Ia2b44)TextInputService.show|hideSoftwareKeyboard
가 지원 중단되었습니다. 대신 앱 코드에서는SoftwareKeyboardController
를, IME 관리 코드에서는TextInputSession
을 사용하세요. (I14e4c, b/183448615)
버전 1.3.0-alpha02
2022년 7월 27일
androidx.compose.foundation:foundation:1.3.0-alpha02
및 androidx.compose.foundation:foundation-layout:1.3.0-alpha02
가 출시되었습니다. 버전 1.3.0-alpha02에 포함된 커밋을 확인하세요.
API 변경사항
Canvas
및drawBehind
와 같은DrawScope
에서 작동하는 컴포저블과 수정자에서 다양한 스타일의 텍스트를 그리는 방법을 제공하기 위해DrawScope
에drawText
확장 함수를 추가했습니다. (I16a62, b/190787898)
버그 수정
- 이제 포커스가 있는 동안 텍스트 필드가 사용 중지되면 소프트 키보드가 숨겨집니다. (I6e3e4, b/237308379)
- Velocity Tracker에
InputEventChange
이벤트를 추가할 때 이제 위치 대신 델타를 고려하므로 타겟 요소가 이동하더라도 모든 사례에서 속도가 올바르게 계산됩니다. (Icea9d, b/216582726, b/223440806, b/227709803) - 스크롤 가능한 요소에 포커스가 있는 하위 요소가 있는 경우 이제 크기가 줄어들 때(크기가 애니메이션화되는 경우 포함) 포커스가 있는 하위 요소가 뷰에 표시되도록 올바르게 스크롤됩니다. (I80867, b/230756508, b/220119990)
- 선택 사항이 활성 상태인 동안
TextField
가 지워지고 다시 채워지는 비정상 종료 문제를 수정했습니다. (I1235b, b/208655565, b/214253689)
버전 1.3.0-alpha01
2022년 6월 29일
androidx.compose.foundation:foundation:1.3.0-alpha01
및 androidx.compose.foundation:foundation-layout:1.3.0-alpha01
이 출시되었습니다. 버전 1.3.0-alpha01에 포함된 커밋을 확인하세요.
API 변경사항
AnnotatedString
에TalkBack
링크 지원을 위해UrlAnnotation
주석 유형과 관련 메서드를 도입했습니다. (I1c754, b/231495122)
버그 수정
- 이제 커서 타이머를 다시 시작하지 않고도
BasicTextField
cursorBrush
에 애니메이션을 적용할 수 있습니다. (I812e6, b/236383522)
버전 1.2
버전 1.2.1
2022년 8월 10일
androidx.compose.foundation:foundation:1.2.1
및 androidx.compose.foundation:foundation-layout:1.2.1
이 출시되었습니다. 버전 1.2.1에 포함된 커밋을 확인하세요.
버전 1.2.0
2022년 7월 27일
androidx.compose.foundation:foundation:1.2.0
및 androidx.compose.foundation:foundation-layout:1.2.0
이 출시되었습니다. 버전 1.2.0에 포함된 커밋을 확인하세요.
1.1.0 이후 중요 변경사항
- 이제
LazyVerticalGrid
및LazyHorizontalGrid
가 안정화되었습니다. - 이제 지연 목록 및 그리드에서 항목의 콘텐츠 유형을 지정할 수 있습니다. 이에 따라 구성요소가 요소를 더 효율적으로 재사용할 수 있습니다.
- 이제 지연 목록과 그리드에 사용자 동작을 통한 스크롤을 사용 중지할 수 있는
userScrollEnabled
매개변수가 있습니다. LazyLayout
이라는 새로운 실험용 API가 추가되었습니다. 이는 내부적으로 지연 목록과 그리드를 구동하는 데 사용하던 API입니다.OverscrollEffect
API가 실험용으로 도입되었습니다. 맞춤 오버스크롤 효과를 정의하고 맞춤 스크롤 가능 컨테이너에 표준 플랫폼 오버스크롤을 추가할 수 있습니다.- 뷰와 Compose 스크롤 작업 수행자 간의 상호 운용성을 위해 중첩 스크롤 상호 운용성 API가 도입되었습니다.
- 모든 스크롤 컨테이너에 마우스 및 트랙패드 스크롤이 추가되었습니다.
버전 1.2.0-rc03
2022년 6월 29일
androidx.compose.foundation:foundation:1.2.0-rc03
및 androidx.compose.foundation:foundation-layout:1.2.0-rc03
이 출시되었습니다. 버전 1.2.0-rc03에 포함된 커밋을 확인하세요.
- 1.2.0-rc02 이후 변경사항 없음
버전 1.2.0-rc02
2022년 6월 22일
androidx.compose.foundation:foundation:1.2.0-rc02
및 androidx.compose.foundation:foundation-layout:1.2.0-rc02
가 출시되었습니다. 버전 1.2.0-rc02에 포함된 커밋을 확인하세요.
버전 1.2.0-rc01
2022년 6월 15일
androidx.compose.foundation:foundation:1.2.0-rc01
및 androidx.compose.foundation:foundation-layout:1.2.0-rc01
이 출시되었습니다. 버전 1.2.0-rc01에 포함된 커밋을 확인하세요.
API 변경사항
- 맞춤 오버스크롤 효과를 허용하는
Modifier.scrollable
오버로드와 함께 맞춤 오버스크롤 효과가 가능한 실험용OverscrollEffect
가 도입되었습니다. - 실험용
LocalOverScrollConfiguration
이foundation.gesture
에서 기초 패키지로 이동되었으며 이름이LocalOverscrollConfiguration
으로 바뀌었습니다. (If19fb, b/204650733) - Compose 라이브러리의 인터페이스는 이제 jdk8 기본 인터페이스 메서드를 사용하여 빌드됩니다. (I5bcf1)
- 스크롤 가능한 컨테이너를 중첩하지 않는지 확인할 수 있는 실험용 API
checkScrollableContainerConstraints()
를 도입했습니다. 이 API는LazyLayout
을 통해 자체 스크롤 가능 지연 레이아웃을 만들 때 사용할 수 있습니다. (Id6fab, b/233352497) androidx.compose.foundation.lazy
패키지에서 지원 중단된LazyVerticalGrid
를 삭제했습니다. 안정적인 새 API는androidx.compose.foundation.lazy.grid
에 있습니다. (I73c76, b/225192009)
버전 1.2.0-beta03
2022년 6월 1일
androidx.compose.foundation:foundation:1.2.0-beta03
및 androidx.compose.foundation:foundation-layout:1.2.0-beta03
이 출시되었습니다. 버전 1.2.0-beta03에 포함된 커밋을 확인하세요.
API 변경사항
- 새로운 실험용
IntervalList
와MutableIntervalList
가 추가되었습니다. 이 API를 사용하면 여러 간격을 통해 일부 값 목록을 나타낼 수 있습니다. 이는 목록 항목이 하나 이상의 항목 호출을 통해 정의될 수 있는LazyColumn
에서 사용하는 것과 비슷한 자체 dsl을 정의하는 데 유용합니다. (I2d05e, b/228580728)
버그 수정
ime
인셋이 API 23까지 보고되지만, 30 이상에서만 애니메이션이 된다고 명시하도록WindowInsets.ime
의 문서를 명확하게 수정했습니다. (Ia7fc0, b/230756508)- 커서가 텍스트 필드 끝에 있을 때 앞으로 삭제 키를 눌러도 더 이상 다운되지 않습니다.
- 이제
DeleteSurroundingTextCommand
와DeleteSurroundingTextInCodePointsCommand
는 생성자 인수가 음수가 아니어야 합니다. (Ica8e6, b/199919707)
버전 1.2.0-beta02
2022년 5월 18일
androidx.compose.foundation:foundation:1.2.0-beta02
및 androidx.compose.foundation:foundation-layout:1.2.0-beta02
가 출시되었습니다. 버전 1.2.0-beta02에 포함된 커밋을 확인하세요.
- 이전에 Text 또는
TextField
의 레이아웃 크기를 변경하지 않는 다운로드 가능한 글꼴 해상도는 다시 그려지지 않아 오래된 글꼴 표시로 이어집니다. 이 버그 수정은 텍스트 레이아웃이 항상 다시 그리기를 트리거하도록 합니다. (b/229727404) (I1d49e, b/229727404)
버전 1.2.0-beta01
2022년 5월 11일
androidx.compose.foundation:foundation:1.2.0-beta01
및 androidx.compose.foundation:foundation-layout:1.2.0-beta01
이 출시되었습니다. 버전 1.2.0-beta01에 포함된 커밋을 확인하세요.
새로운 기능
- 이 출시는 1.2의 첫 번째 베타 버전입니다.
API 변경사항
- 표시되는 경계를 넘어 항목을 배치할 때
LazyList
의 맞춤 구현에서 사용할 수 있는 실험용BeyondBoundsInterval
을 추가했습니다. (Ifabfb, b/184670295) LineHeightBehavior
를LineHeightStyle
로 이름을 바꿨습니다.LineVerticalAlignment
의 이름을LineHeightStyle.Alignment
로 바꿨습니다.LineHeightTrim
의 이름을LineHeightStyle.Trim
으로 바꿨습니다.LineHeightStyle
의 기본 생성자 값을 삭제했습니다. (I582bf, b/181155707)LazyLayoutItemProvider
인터페이스의 선택적 멤버에 관한 기본값을 추가했습니다. (Iba8a0)- 색인으로 컴포저블 람다를 반환하는 팩토리 대신
LazyLayoutItemProvider
API에 이제 색인을 허용하는 더 간단한 구성 가능한 함수 항목이 있습니다. (Id2196) - LazyLayoutItemsProvider를 LazyLayoutItemProvider로 이름을 바꿨습니다. (I0638c)
LazyLayoutItemsProvider.itemsCount
를itemCount
로 이름을 바꿨습니다. (Id409c)TextStyle
및SpanStyle
에 Brush를 추가하여 그라데이션 색상으로 텍스트를 그리는 방법을 제공합니다. (I53869, b/187839528)LineHeightBehavior
의trimFirstLineTop
,trimLastLineBottom
속성을 단일 enum(LineHeightTrim
)으로 변경했습니다.LineHeightTrim
에는 불리언 2개로 정의된 4개의 상태 값(FirstLineTop
,LastLineBottom
, Both, None)이 있습니다. (Ifc6a5, b/181155707)TextStyle
및ParagraphStyle. LineHeightBehavior
에LineHeightBehavior
를 추가했습니다. LineHeightBehavior는 줄 높이를 첫 번째 줄의 상단과 마지막 줄의 하단에 적용할지 제어합니다.TextStyle
(lineHeight
)이 제공하는 공간에서 줄 정렬도 정의합니다.예를 들어
LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false)
를 통해 CSS가 정의한 것과 비슷한 동작을 가져올 수 있습니다.trimFirstLineTop
,trimLastLineBottom
구성은includeFontPadding
이 false인 경우에만 올바르게 작동합니다. (I97332, b/181155707)개발자가 스크롤을 통해 IME를 제어할 수 있도록 실험용
imeNestedScroll()
수정자를 추가했습니다. (I60759)
버그 수정
- 포커스가 있는 동안 컴포지션에서 삭제될 때 텍스트 필드가 키보드를 숨기지 않는 회귀 문제를 수정했습니다. (I7a410, b/230536793, b/225541817)
- 높이가 제한되고 모든 텍스트 줄에 맞지 않는 경우 생략 기호를 지원합니다. (Ie528c, b/168720622)
- 이제 요청이 완료되거나 중복되지 않는 최신 요청에 의해 중단될 때까지
BringIntoViewRequester.bringIntoView
가 항상 정지됩니다. 중복 요청이 대기열에 추가됩니다. (I43e7f, b/216790855) - 완전히 중복되는 직사각형의 동시
BringIntoViewRequester.bringIntoView
호출이 이제 더 큰 직사각형의 요청만 준수합니다. (I34be7, b/216790855, b/184760918) - 기본
includeFontPadding
을 사용 설정했습니다.TextStyle.platformTextStyle
속성을 사용하여includeFontPadding
을 사용 중지할 수 있습니다. 조만간 기본 동작을 변경할 예정이지만 그때까지는 이 방법을 사용하여 줄 높이 개선사항을 더 원활하게 통합하고(aosp/2058653)TextField
클리핑 문제를 해결할 수 있습니다. (I01423, b/171394808) Modifier.bringIntoViewRequester
가 더 이상onGloballyPositioned
를 사용하지 않습니다. (I630f5)
외부 기여
- 이제 세로로 스크롤하면 Android에서
MouseInjectionScope.scroll(delta = someDelta)
가 반전됩니다(someDelta가 양수이면 아래로 스크롤됨). (Ifb697, b/224992993)
버전 1.2.0-alpha08
2022년 4월 20일
androidx.compose.foundation:foundation:1.2.0-alpha08
및 androidx.compose.foundation:foundation-layout:1.2.0-alpha08
이 출시되었습니다. 버전 1.2.0-alpha08에 포함된 커밋을 확인하세요.
API 변경사항
FontFamily.SansSerif
를 사용하면 Android의 시스템 글꼴에 사용 가능한 모든 가중치가 표시됩니다. 이렇게 하면 API 21~28에서 내부적으로 sans-serif-medium 같은 대체 글꼴 이름이 사용됩니다. 이는 동작 변경사항입니다. 이전에는 API 21~28에서 가중치 400과 700만 지원되었기 때문입니다. (I380fe, b/156048036, b/226441992)- 이제 Paragraph 및 MultiParagraph에서 Constraints 매개변수를 허용합니다.
Constraints.maxHeight
를 전달하는 것은 현재 작동하지 않지만 나중에 높이를 기준으로 줄임표를 추가하는 등 일부 계산이 가능해집니다. (I6afee, b/168720622) - 이제
SubcomposeSlotReusePolicy.getSlotsToRetain()
이 내부에 새 항목 추가를 허용하지 않는 맞춤 MutableSet 같은 클래스를 허용합니다. (Icd314) PointerInputChange
에서 부분 소비(아래쪽 OR 위치)를 지원 중단했습니다.consume()
을 사용하여 변경사항을 완전히 사용할 수 있습니다.isConsumed
를 사용하여 다른 사용자가 이전에 변경사항을 사용했는지 확인할 수 있습니다.- 이제
PointerInputChange::copy()
가 항상 얕은 복사본을 만듭니다. 즉, 사본 중 하나가 소비되면PointerInputChange
의 사본이 사용됩니다. 결합되지 않은PointerInputChange
를 만들려면 생성자를 대신 사용하세요. (Ie6be4, b/225669674) - 새로운 실험용
LazyLayout
API가 도입되었습니다. 이렇게 하면LazyVerticalGrid
의LazyColumn
같은 자체 구성요소를 빌드할 수 있습니다. 참고로, API가 초기 단계이며 향후 출시에서 변경될 수 있습니다. (Iba2bc, b/166591700) - 이제
AndroidFont
는typefaceLoader
를 생성자 매개변수로 사용합니다. (I2c971) - 이제
WindowInsets
컴패니언은 기기에서 사용 가능한 상태이지만 현재 활성화되지 않은 경우 가시성(창과 교차되는지에 상관없이 화면에 있는지 여부)과 가능한 크기를 노출합니다. (I65182, b/217770337)
버전 1.2.0-alpha07
2022년 4월 6일
androidx.compose.foundation:foundation:1.2.0-alpha07
및 androidx.compose.foundation:foundation-layout:1.2.0-alpha07
이 출시되었습니다. 버전 1.2.0-alpha07에 포함된 커밋을 확인하세요.
API 변경사항
- 지연 레이아웃의 하위 요소가 현재 구성된 항목이 삭제되는 것을 방지할 수 있도록 하는
PinnableParent
API를 추가했습니다. (Ibbdd0, b/184670295) LazyListLayoutInfo
및LazyGridLayoutInfo
에는 이제beforeContentPadding
및afterContentPadding
필드가 있습니다. (I3b628, b/200920410)- IME에 소수 구분자를 특별히 포함하기 위해
Keyboard.Number
의 대안으로KeyboardType.Decimal
을 추가했습니다. (Iec4c8, b/209835363) - 글꼴 대체 체인 중에 시스템에서 설치된 글꼴을 선택적으로 조회할 수 있는 새로운 글꼴 설명자 Font(DeviceFontFamilyName)를 추가합니다. (I30468, b/219754572)
PointerEventType.Scroll
및PointerEvent.scrollDelta
는 이제 공개 API입니다. (I574c5, b/225669674)TextStyle/ParagraphStyle. includeFontPadding
에 추가된includeFontPadding
의 임시 호환성 구성이TextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false))
를 통해 변경될 수 있습니다. 이는 이전을 사용 설정하기 위한 임시 구성 옵션이며 삭제됩니다. (If47be, b/171394808)- 시스템 전체의 텍스트 굵게 표시 접근성 설정을 통합하도록
FontFamily.Resolver
를 업데이트했습니다. (I6c1e7) ComposeView
의consumeWindowInsets
확장 속성을 사용하면 개발자가 Android WindowInsets 사용을 중지할 수 있습니다. 이렇게 하면 계층 구조에 있는 별도의ComposeViews
가 서로 간섭하지 않고 각각WindowInsets
를 적용할 수 있습니다. (I0ef08, b/220943142)
버전 1.2.0-alpha06
2022년 3월 23일
androidx.compose.foundation:foundation:1.2.0-alpha06
및 androidx.compose.foundation:foundation-layout:1.2.0-alpha06
이 출시되었습니다. 버전 1.2.0-alpha06에 포함된 커밋을 확인하세요.
API 변경사항
- 포커스를 포커스 가능 타겟에 요청하는
RequestFocus
시맨틱 작업을 추가했습니다. (I17b71) - 이제
FocusOrder
가FocusProperties
에 병합되었으며focusProperties()
에서 이제focusOrder()
의 모든 기능을 사용할 수 있습니다.FocusOrder
및focusOrder()
가 지원 중단되었습니다.focusRequester
를 허용하는focusOrder()
를focusProperties()
가 결합된focusRequester()
수정자로 대체해야 합니다. 이를 통해 수정자는 관심사를 더 강력하게 분리할 수 있습니다. (I601b7) - 개발자가 컴포지션에 있지 않아도 전환할 수 있도록
WindowInsets.asPaddingValues(Density)
를 추가했습니다. (I94c35) - 현재 레이아웃 방향이 RTL인 경우
VectorPainter
의 콘텐츠를 뒤집을 수 있는 자동 미러링을 지원하도록 벡터 드로어블 파싱을 업데이트했습니다. (I79cd9, b/185760237)
버그 수정
- 스크롤 영역의 크기가 변경되고 포커스된 컴포저블이 이전에 표시된 경우 이제 스크롤 수정자(
Modifier.verticalScroll()
,Modifier.horizontalScroll()
,Modifier.scrollable()
)가 스크롤될 때 포커스가 지정된 컴포저블이 계속 표시됩니다. - 비지연 스크롤 가능 상태에서 소프트 입력 모드가
ADJUST_RESIZE
일 때 TextField에 포커스가 있고 키보드가 표시되는 경우 TextField가 이제 키보드 위에 유지됩니다. (I4a485, b/190539358, b/192043120, b/216842427)
버전 1.2.0-alpha05
2022년 3월 9일
androidx.compose.foundation:foundation:1.2.0-alpha05
및 androidx.compose.foundation:foundation-layout:1.2.0-alpha05
가 출시되었습니다. 버전 1.2.0-alpha05에 포함된 커밋을 확인하세요.
API 변경사항
- 이제
LazyVerticalGrid
및LazyHorizontalGrid
가 안정적입니다. (I307c0) LazyGridItemInfo.Unknown
이 별도의LazyGridItemInfo.UnknownRow
및LazyGridItemInfo.UnknownColumn
으로 대체되었습니다. (I56d51)LazyVerticalGrid
/LazyHorizontalGrid
및 모든 관련 API가.grid
하위 패키지로 이동했습니다.androidx.compose.foundation.lazy
에서androidx.compose.foundation.lazy.grid
로 가져오기를 업데이트하세요. (I2d446, b/219942574)- 텍스트: 이제
includeFontPadding
이 기본적으로 사용 중지됩니다.includeFontPadding=false
의 결과로 발생하는 클리핑 문제가 처리되며 세로로 긴 스크립트의 경우 클리핑이 발생하지 않습니다. (I31c84, b/171394808) - 측정된 인터페이스가 이제 parentData 속성을 노출합니다. (I3313f)
- 하위 포커스 가능 항목의 경계를 관찰할 수 있도록 실험용
Modifier.onFocusedBoundsChanged
를 도입했습니다. (I14283, b/220030968, b/190539358, b/192043120, b/216842427) - LazyHorizontalGrid가 추가되었습니다. (I61ae7, b/191238807)
- 교차 축 크기를 정의하는 새
LazyVerticalGrid
API를 추가했습니다. (I17723) - FocusGroup 수정자를 추가했습니다. (I64bc0, b/213508274, b/184670295)
버그 수정
- 이제
WindowInsets.toString()
이 올바른 값을 표시합니다. (I1585d)
외부 기여
- Kotlinx 코루틴 1.6.0을 사용하도록 업데이트했습니다. (I3366d)
버전 1.2.0-alpha04
2022년 2월 23일
androidx.compose.foundation:foundation:1.2.0-alpha04
및 androidx.compose.foundation:foundation-layout:1.2.0-alpha04
가 출시되었습니다. 버전 1.2.0-alpha04에 포함된 커밋을 확인하세요.
API 변경사항
BringIntoViewResponders
는 더 이상 상위 응답자까지 수동으로 요청을 전달하는 데 필요하지 않으며, 대신 상위 응답자가 상위 요소에서 보기로 가져오려고 하는 직사각형을 즉시 반환할 때 필요합니다. (I8e66a)- Text에서 비동기 글꼴 로드를 지원합니다. (I77057, b/214587005)
- 이제
LazyVerticalGrid
가 너비가 현재 행에 맞지 않는 항목 앞에서line breaking
을 지원합니다. (I05c40, b/207462103) excludeFromSystemGestures
이름을systemGesturesExclusion
으로 바꿨습니다. (I19526)- 이제
LazyVerticalGrid
가 reverseLayout을 지원합니다. (I6d7d7, b/215572963, b/211753558) - 개발자가 WindowInsets의 측정기준만 포함할 수 있도록
WindowInsets.only()
메서드를 추가했습니다. (I14c94, b/217768486) 구성 가능한 함수가 사용 목적으로 설계되지 않은 Applier를 타겟팅하도록 호출되면 컴파일 시간 보고를 허용하는
ComposableTarget
,ComposableTargetMarker
및ComposableOpenTarget
을 추가했습니다.대부분의 경우 Compose 컴파일러 플러그인에서 주석을 추론할 수 있으므로 이러한 주석을 직접 사용할 일은 거의 없습니다. 추론할 수 없는 경우는 맞춤 Applier, 구성 가능한 추상 함수(예: 인터페이스 메서드), 구성 가능한 람다인 필드나 전역 변수(로컬 변수 및 매개변수가 추론됨)를 생성 및 사용하는 경우 또는
ComposeNode
나 구성 가능한 관련 함수를 사용하는 경우입니다.맞춤 Applier의 경우
ComposeNode
또는ReusableComposeNode
를 호출하는 구성 가능한 함수는 함수와 구성 가능한 람다 매개변수 유형에CompoableTarget
주석을 추가해야 합니다. 하지만ComposableTarget
을 직접 사용하는 대신ComposableTargetMarker
주석이 달린 주석을 만들어 표시된 주석을 사용하는 것이 좋습니다.ComposableTargetMarker
로 표시된 구성 가능한 주석은 applier 매개변수로 속성 클래스의 정규화된 이름을 갖는ComposbleTarget
과 동일합니다.ComposableTargetMarker
를 사용하는 예는anroidx.compose.ui.UiComposable
을 참고하세요. (I38f11)
버그 수정
- 이제 음의 스크롤 오프셋을
LazyGridState.scrollToItem()
및LazyGridState.animateScrollToItem()
에 전달할 수 있습니다. (I025c6, b/211753558) - TextField에서 비동기 글꼴 로드가 지원됩니다. (Icc4bf, b/214587005)
버전 1.2.0-alpha03
2022년 2월 9일
androidx.compose.foundation:foundation:1.2.0-alpha03
및 androidx.compose.foundation:foundation-layout:1.2.0-alpha03
이 출시되었습니다. 버전 1.2.0-alpha03에 포함된 커밋을 확인하세요.
API 변경사항
TextInputSession
및TextInputService
의notifyFocusedRect
메서드가 이제 지원 중단되며 호출되지 않습니다. 대신BringIntoViewRequester
를 사용하세요. (Ia4302, b/192043120, b/216842427, b/178211874)- Modifier.animateItemPlacement()를 사용하여 지연 그리드 항목에 애니메이션을 사용 설정했습니다. (Ib6621, b/211753218)
- 이제
BringIntoViewRequester
가 호스팅 Android 뷰에 요청을 전파합니다. (Ia7a51) - 이제
LocalFontFamilyResolver.current
를 통해FontFamilyResolver
를 사용할 수 있습니다.- Compose 사용 외에 새로운 FontFamily 리졸버를 만들기 위해
createFontFamilyResolver(context)
와createFontFamilyResolver(context, coroutineScope)
를 추가했습니다. - Paragraph 및 MultiParagraph에서 이제
FontFamily.Resolver
를 사용합니다. - 이제
TextLayoutResult.layoutInput.fontFamilyResolver
에 이 레이아웃에 사용되는 리졸버가 포함되며TextLayoutResult.layoutInput.resourceLoader
는 더 이상 사용되지 않으므로 지원 중단되었습니다. (Id5a45, b/174162090)
- Compose 사용 외에 새로운 FontFamily 리졸버를 만들기 위해
- 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)
- 이제
LazyVerticalGrid
항목의 콘텐츠 유형을 지정할 수 있습니다. 이제LazyGridScope
의 item/items 함수가 이러한 매개변수를 허용합니다. 이러한 정보를 제공하면 로직을 재사용하는 항목 컴포지션을 더 효율적으로 만들 수 있고 유사한 유형의 항목 간 콘텐츠만 재사용할 수 있습니다. (I7b355, b/215372836) - 이제
LazyListLayoutInfo
와LazyGridLayoutInfo
에 새로운 속성viewportSize
,orientation
,reverseLayout
이 포함됩니다. (Ifc8ed, b/200920410) - 이제 LazyColumn/LazyRow의 항목 콘텐츠 유형을 지정할 수 있습니다. LazyListScope의 item/items 함수가 이러한 매개변수를 허용합니다. 이러한 정보를 제공하면 로직을 재사용하는 항목 컴포지션을 더 효율적으로 만들 수 있고 유사한 유형의 항목 간 콘텐츠만 재사용할 수 있습니다. (I26506)
- 이제
maxSlotsToRetainForReuse
를 허용하는SubcomposeLayoutState
생성자가 지원 중단됩니다. 대신SubcomposeSlotReusePolicy
를 허용하는 새 생성자가 있습니다. 새 인터페이스를 통해 향후 재사용을 위해 유지해야 하는 슬롯을 더 세밀하게 제어할 수 있습니다. (I52c4d) - 패딩과 크기 조절을 위해 WindowInsets용 수정자를 추가합니다. 이렇게 하면 일부 콘텐츠를 인셋 영역으로 확장하고 기본 콘텐츠는 인셋 영역 외부에 유지되도록 할 수 있습니다. 예를 들어, 특정 영역이 완전히 또는 부분적으로 가려지는 것을 방지하기 위해 콘텐츠 영역을 패딩하는 데 windowInsetsPadding을 사용할 수 있습니다. (Id0395, b/213942085)
버그 수정
- 소프트 입력 모드가
ADJUST_PAN
일 때 TextField에 포커스가 있고 키보드가 표시되는 경우 TextField가 이제 키보드 위에 유지됩니다. (I8eaeb, b/190539358, b/192043120) - 데스크톱은
FontFamily.Resolver
용 컴포지션 로컬을 사용합니다.- 데스크톱
FontLoader
가 지원 중단되었습니다. - 데스크톱의 새로운
createFontFamilyResolver
팩토리 (I6bbbb, b/174162090)
- 데스크톱
- 텍스트 필드 간 포커스를 변경할 때 소프트 키보드 입력 유형이 더 이상 깜박이지 않습니다. (I1bf50, b/187746439)
- 커서 핸들이 표시되고 있을 때 더 이상 텍스트 필드에 뒤로 버튼을 추가로 누를 필요가 없습니다. (Ideb4b, b/205726883)
- 텍스트 선택 돋보기 동작이 플랫폼 돋보기와 일치하도록 개선되었습니다. (Idd918, b/206833278)
버전 1.2.0-alpha02
2022년 1월 26일
androidx.compose.foundation:foundation:1.2.0-alpha02
및 androidx.compose.foundation:foundation-layout:1.2.0-alpha02
가 출시되었습니다. 버전 1.2.0-alpha02에 포함된 커밋을 확인하세요.
API 변경사항
- 복잡한 로직 없이 기존 메서드의 오버로드인 메서드에
NonRestartableComposable
을 추가했습니다. 이렇게 하면 호출된 내부 함수에서 반복되는 매개변수 전체를 대상으로 하는 컴파일러 생성 메모이제이션 검사(동일)가 줄어듭니다. (I90490) - Android의
setSystemGestureExclusionRects
에 쉽게 액세스할 수 있도록excludeFromSystemGesture
수정자를 추가했습니다. (I46f07)
버그 수정
- 텍스트 선택 돋보기 동작이 플랫폼 돋보기와 일치하도록 개선되었습니다. (Idd918, b/206833278)
- 이제
Modifier.scrollable
을 사용하는LazyColumn
과LazyRow
,Modifier.verticalScroll
, 기타 컨테이너에서 마우스 휠 스크롤을 지원합니다. (I2b5e1, b/198214718)
버전 1.2.0-alpha01
2022년 1월 12일
androidx.compose.foundation:foundation:1.2.0-alpha01
및 androidx.compose.foundation:foundation-layout:1.2.0-alpha01
이 출시되었습니다. 버전 1.2.0-alpha01에 포함된 커밋을 확인하세요.
API 변경사항
- 사용자가 터치 동작 또는 접근성 작업을 통해 시작한 스크롤을 일시적으로 또는 영구적으로 사용 중지할 수 있도록 새로운 매개변수
userScrollEnabled
가LazyColumn
,LazyRow
,LazyVerticalGrid
에 추가되었습니다. 상태에 관한 메서드를 통해 프로그래매틱 방식으로 스크롤하는 것은 계속 허용됩니다. (I7eae9, b/201150093) - 돋보기 수정자에
onSizeChanged
콜백을 추가합니다. (I6879f) - 이제
SelectionContainer
에서 선택 핸들을 드래그할 때 돋보기 위젯이 표시됩니다. (I30b38, b/139320979)
버그 수정
- 뷰 외부로 스크롤할 때
TextField
커서 핸들이 숨겨지지 않는 문제를 수정했습니다. (I14552, b/208883748)
종속 항목 업데이트
- 이제 Kotlin
1.6.10
에 종속됩니다.
버전 1.1
버전 1.1.1
2022년 2월 23일
androidx.compose.foundation:foundation:1.1.1
및 androidx.compose.foundation:foundation-layout: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.foundation:foundation:1.1.0
및 androidx.compose.foundation:foundation-layout: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.foundation:foundation:1.1.0-rc03
및 androidx.compose.foundation:foundation-layout:1.1.0-rc03
이 출시되었습니다. 버전 1.1.0-rc03에 포함된 커밋을 확인하세요.
버그 수정
- Compose Material 1.1.0-rc03을 지원하도록 업데이트했습니다.
버전 1.1.0-rc01
2021년 12월 15일
androidx.compose.foundation:foundation:1.1.0-rc01
및 androidx.compose.foundation:foundation-layout:1.1.0-rc01
이 출시되었습니다. 버전 1.1.0-rc01에 포함된 커밋을 확인하세요.
버그 수정
- 이제 음의 스크롤 오프셋을
LazyListState.scrollToItem()
및LazyListState.animateScrollToItem()
에 전달할 수 있습니다. (Iceb90, b/184252837) - 접근성 스크롤 작업 누락을 일으키는 버그를 수정했습니다. (I7cbfb)
버전 1.1.0-beta04
2021년 12월 1일
androidx.compose.foundation:foundation:1.1.0-beta04
및 androidx.compose.foundation:foundation-layout:1.1.0-beta04
가 출시되었습니다. 버전 1.1.0-beta04에 포함된 커밋을 확인하세요.
새로운 기능
- Kotlin
1.6.0
과 호환되도록 업데이트했습니다.
API 변경사항
androidx.core.view
에서 null 허용 여부를 정리했습니다. (I7078a, b/204917439)- PointerInputchange를 전체로 소비하거나 소비 여부를 확인할 수 있는 실험용 API를 추가했습니다. (I2e59d)
- 텍스트 필드 내에서 커서 또는 선택 핸들을 드래그할 때 돋보기 위젯을 표시합니다. (I5391e, b/203781358)
버그 수정
- IME 가시성이 변경될 때 텍스트 핸들이 이동하지 않는 문제를 수정했습니다. (I25f2e)
버전 1.1.0-beta03
2021년 11월 17일
androidx.compose.foundation:foundation:1.1.0-beta03
및 androidx.compose.foundation:foundation-layout:1.1.0-beta03
이 출시되었습니다. 버전 1.1.0-beta03에 포함된 커밋을 확인하세요.
API 변경사항
- 수평 스팬 지원이 LazyVerticalGrid에 추가되었습니다. (I7e2fa, b/176758183)
Lazy 목록 항목 위치에 애니메이션을 적용하는 실험용 기능이 추가되었습니다. LazyItemScope 내에서 사용할 수 있는
Modifier.animateItemPlacement()
라는 새 수정자가 있습니다. 사용 예는 다음과 같습니다.var list by remember { mutableStateOf(listOf("A", "B", "C")) } LazyColumn { item { Button(onClick = { list = list.shuffled() }) { Text("Shuffle") } } items(list, key = { it }) { Text("Item $it", Modifier.animateItemPlacement()) } }
LazyListScope.item
또는LazyListScope.items
를 통해 키를 제공하면 이 수정자는 항목 순서를 재정렬하는 애니메이션을 사용 설정합니다. 항목 순서 재정렬 외에 배치 또는 정렬 변경과 같은 이벤트로 인해 발생하는 다른 모든 위치 변경에도 애니메이션이 적용됩니다. (I59e7b, b/150812265)
버전 1.1.0-beta02
2021년 11월 3일
androidx.compose.foundation:foundation:1.1.0-beta02
및 androidx.compose.foundation:foundation-layout:1.1.0-beta02
가 출시되었습니다. 버전 1.1.0-beta02에 포함된 커밋을 확인하세요.
버그 수정
- 물결 효과와 기타 표시가 다운 이벤트를 위해 항상 지연되는 대신 이제
Modifier.scrollable()
컨테이너 내부에 있는 경우에만 지연됩니다. (Ibefe0, b/203141462) - 스크롤하여 항목을 뷰로 가져오도록 상위 요소에 요청을 전송할 수 있는 실험용 BringIntoView API를 추가했습니다. (Ib918d, b/195353459)
외부 기여
Modifier.pointerHoverIcon
을 추가했습니다. (I95f01)
버전 1.1.0-beta01
2021년 10월 27일
androidx.compose.foundation:foundation:1.1.0-beta01
및 androidx.compose.foundation:foundation-layout:1.1.0-beta01
이 출시되었습니다. 버전 1.1.0-beta01에 포함된 커밋을 확인하세요.
버그 수정
- 스크롤하여 항목을 뷰로 가져오도록 상위 요소에 요청을 전송할 수 있는 실험용 BringIntoView API를 추가했습니다. (Ib918d, b/195353459)
버전 1.1.0-alpha06
2021년 10월 13일
androidx.compose.foundation:foundation:1.1.0-alpha06
및 androidx.compose.foundation:foundation-layout:1.1.0-alpha06
이 출시되었습니다. 버전 1.1.0-alpha06에 포함된 커밋을 확인하세요.
API 변경사항
- Layout에 하위 요소가 없는 오버로드가 추가되었으며 효율성이 개선되었습니다. (Ib0d9a)
- 이제
SemanticsNodeInteraction.performSemanticsAction
이 함수가 호출된SemanticsNodeInteraction
을 반환합니다. (I9e5db) - 스크롤 가능한 컨테이너를 지정된 매처에 의해 일치되는 콘텐츠까지 스크롤하는
performScrollToNode(matcher: SemanticsMatcher)
를 추가했습니다. (Ic1cb8)
버전 1.1.0-alpha05
2021년 9월 29일
androidx.compose.foundation:foundation:1.1.0-alpha05
및 androidx.compose.foundation:foundation-layout:1.1.0-alpha05
가 출시되었습니다. 버전 1.1.0-alpha05에 포함된 커밋을 확인하세요.
API 변경사항
- PointerEventChange에 실험용 기록 포인터를 추가했습니다. (Ic1fd8, b/197553056, b/199921305)
버그 수정
- 스크롤과 관련하여 스크롤 가능 항목(지연 및 비지연 모두 해당됨)에 대한 접근성 지원을 수정했습니다. (I6cdb0)
버전 1.1.0-alpha04
2021년 9월 15일
androidx.compose.foundation:foundation:1.1.0-alpha04
및 androidx.compose.foundation:foundation-layout:1.1.0-alpha04
가 출시되었습니다. 버전 1.1.0-alpha04에 포함된 커밋을 확인하세요.
API 변경사항
performGesture
및GestureScope
가 지원 중단되고performTouchInput
및TouchInjectionScope
로 대체되었습니다. (Ia5f3f, b/190493367)- 개발자가 터치 영역이 접근성 최소 수준을 충족하는지 확인할 수 있도록 최소 터치 영역 크기를 포함하는
touchBoundsInRoot
를SemanticsNode
에 추가했습니다. (I2e14b, b/197751214)
버그 수정
- Android 12 기기에 스트레치 오버스크롤 지원을 추가했습니다. (Iccf3c, b/171682480)
버전 1.1.0-alpha03
2021년 9월 1일
androidx.compose.foundation:foundation:1.1.0-alpha03
및 androidx.compose.foundation:foundation-layout:1.1.0-alpha03
이 출시되었습니다. 버전 1.1.0-alpha03에 포함된 커밋을 확인하세요.
새로운 기능
- Kotlin
1.5.30
에 종속되도록 Compose1.1.0-alpha03
을 업데이트했습니다. (I74545)
API 변경사항
- 스크롤을 위한 발광 효과가 추가되었습니다. 오버스크롤 시각 효과를 구성할 수 있도록 새로운 실험용 OverScrollConfiguration API가 추가되었습니다. 오버스크롤 효과를 사용 중지하려면 null을 제공하세요. (I0c304, b/171682480)
- 이제 AwaitPointerEventScope에 withTimeout() 및 withTimeoutOrNull()이 있습니다. (I507f0, b/179239764, b/182397793)
- 잘린 경계를 가져오기 위한 테스트 메서드를 추가했습니다. (I6b28e)
- 접근성을 보장하기 위해 시맨틱 및 포인터 입력에 사용할 최소 터치 영역 크기를 ViewConfiguration에 추가했습니다. (Ie861c)
버전 1.1.0-alpha02
2021년 8월 18일
androidx.compose.foundation:foundation:1.1.0-alpha02
및 androidx.compose.foundation:foundation-layout:1.1.0-alpha02
가 출시되었습니다. 버전 1.1.0-alpha02에 포함된 커밋을 확인하세요.
API 변경사항
Modifier.size
및requiredSize
용 DpSize 버전을 추가했습니다. (I3fc7e, b/194219828)
버전 1.1.0-alpha01
2021년 8월 4일
androidx.compose.foundation:foundation:1.1.0-alpha01
및 androidx.compose.foundation:foundation-layout:1.1.0-alpha01
이 출시되었습니다. 버전 1.1.0-alpha01에 포함된 커밋을 확인하세요.
API 변경사항
- 선택적 FilterQuality 매개변수를 사용하기 위해 소스 및 대상 직사각형을 사용하는
DrawScope#drawImage
메서드를 업데이트했습니다. 이 기능은 픽셀 기반 아트용으로 확장할 때 모자이크로 표현하도록 의도된 픽셀 아트에 유용합니다. 선택적 FilterQuality 매개변수도 사용할 수 있도록 BitmapPainter와 Image 컴포저블을 업데이트했습니다. (Ie4fb0, b/180311607) - 이제 뒤로 버튼을 누르면 TextField의 선택 항목이 지워지며, 이는 Android EditText 동작과 일치합니다. (I3ca16, b/174173645)
- 커서 핸들을 추가합니다. (I07a82, b/173016579)
버그 수정
- 지연 목록 및 일반 스크롤 구성요소를 대상으로 하는 시맨틱 작업을 통한 스크롤이 이제 애니메이션 처리됩니다. (Id9066, b/190742024)
외부 기여
LazyVerticalGrid
에서 이제 가로 및 세로 정렬 매개변수를 모두 사용할 수 있습니다. (If9c92)
버전 1.0
버전 1.0.5
2021년 11월 3일
androidx.compose.foundation:foundation:1.0.5
및 androidx.compose.foundation:foundation-layout:1.0.5
가 출시되었습니다. 버전 1.0.5에 포함된 커밋을 확인하세요.
버그 수정
- derivedStateOf 인스턴스를 추적할 때 발생하는 비정상 종료 문제를 수정했습니다. (aosp/1792247)
버전 1.0.4
2021년 10월 13일
androidx.compose.foundation:foundation:1.0.4
및 androidx.compose.foundation:foundation-layout:1.0.4
가 출시되었습니다. 버전 1.0.4에 포함된 커밋을 확인하세요.
종속 항목 업데이트
- Kotlin
1.5.31
에 종속되도록 업데이트했습니다.
버전 1.0.3
2021년 9월 29일
androidx.compose.foundation:foundation:1.0.3
및 androidx.compose.foundation:foundation-layout:1.0.3
이 출시되었습니다. 버전 1.0.3에 포함된 커밋을 확인하세요.
종속 항목 업데이트
- Kotlin
1.5.30
에 종속되도록 업데이트했습니다.
버전 1.0.2
2021년 9월 1일
androidx.compose.foundation:foundation:1.0.2
및 androidx.compose.foundation:foundation-layout: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.foundation:foundation:1.0.1
및 androidx.compose.foundation:foundation-layout:1.0.1
이 출시되었습니다. 버전 1.0.1에 포함된 커밋을 확인하세요.
종속 항목 업데이트
- Kotlin
1.5.21
에 종속되도록 업데이트했습니다.
버전 1.0.0
2021년 7월 28일
androidx.compose.foundation:foundation:1.0.0
및 androidx.compose.foundation:foundation-layout: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.foundation:foundation:1.0.0-rc02
및 androidx.compose.foundation:foundation-layout:1.0.0-rc02
가 출시되었습니다. 버전 1.0.0-rc02에 포함된 커밋을 확인하세요.
- 고정된 크기로 정의된 경로 관련 문제를 해결하기 위해 일반 도형의 테두리 렌더링을 업데이트했습니다. (aosp/1748871, b/191817116)
버전 1.0.0-rc01
2021년 7월 1일
androidx.compose.foundation:foundation:1.0.0-rc01
및 androidx.compose.foundation:foundation-layout:1.0.0-rc01
이 출시되었습니다. 버전 1.0.0-rc01에 포함된 커밋을 확인하세요.
API 변경사항
- 이제 접근성을 위해 Canvas가 contentDescription 매개변수를 지원합니다. (Ib547c)
버그 수정
- 사용 중지된 버튼, 카드, 체크박스 및 전체
Modifier.clickable(enabled=false)
는 상위 수준까지 클릭되는 것을 차단합니다. (Ic2c3b, b/183908811)
버전 1.0.0-beta09
2021년 6월 16일
androidx.compose.foundation:foundation:1.0.0-beta09
및 androidx.compose.foundation:foundation-layout:1.0.0-beta09
가 출시되었습니다. 버전 1.0.0-beta09에 포함된 커밋을 확인하세요.
API 변경사항
ManualFrameClock
을 삭제했습니다. 애니메이션을 제어해야 한다면composeTestRule.mainClock
을 대신 사용합니다. (I3c3e8, b/189951065)- enum Role 및 LiveRegionMode를 비공개 생성자가 있는 인라인 클래스로 변경합니다. (Id1890)
- KeyboardCapitalization이 인라인 클래스로 변환됩니다. (Id5a1c)
- TextOverflow를 인라인 클래스로 변경합니다. (I433af)
버그 수정
- 이제 LazyColumn/Row 항목의 고유 키를 지정하면 스크롤 위치가 키에 기반하여 유지됩니다. 즉, 현재 표시되는 항목 앞에 항목을 추가하거나 삭제하면 주어진 키가 있는 항목이 첫 번째 표시 항목으로 유지됩니다. (Id263f, b/184257857)
- 현재 키 상수는 @ExperimentalComposeUiApi입니다. 코드를 사용하면 안정화 전에 비공개 상수를 선언할 수 있습니다. (Ia5d48)
- 정지를 기다리거나 달성하기 위해 대체 메커니즘을 설치하는 프레임워크를 테스트하여 사용할 수 있는 IdlingStrategy를 AndroidComposeTestRule에 추가했습니다. 테스트에서 자체 전략을 설치하기 전에
AndroidComposeTestRule.setIdlingStrategyFactory()
를 사용하세요. (I608fa)
추가된 프로필 규칙
이번 출시에서는 다음 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.foundation:foundation:1.0.0-beta08
및 androidx.compose.foundation:foundation-layout:1.0.0-beta08
이 출시되었습니다. 버전 1.0.0-beta08에 포함된 커밋을 확인하세요.
API 변경사항
- NestedScrollSource enum은 인라인 클래스로 대체되었습니다. (Ie321b, b/187055290)
- 새로운 enum 값이 추가될 때 구문이 완전하지 않은 경우 발생하는 문제를 피하도록 인라인 클래스의 enum 사용법을 리팩터링했습니다. (I2b5eb)
- 스크롤/드래그하는 동안 물결 효과가 표시되지 않도록 클릭할 수 있거나 전환할 수 있는 항목에 탭 시간 제한을 추가합니다. (Ia2704, b/168524931)
- ContentDescription 및 Text 시맨틱 속성이 더 이상 단일 값이 아니라 목록입니다. 이렇게 하면 연결하지 않고 그대로 병합할 수 있습니다. 이러한 변경사항을 활용하는 더 나은 테스트 API도 제공됩니다. (Ica6bf, b/184825850)
Modifier.focusModifier()
가 지원 중단되었으며Modifier.focusTarget()
으로 대체되었습니다. (I6c860)- KeyboardType enum은 인라인 클래스로 대체되었습니다. (I73045, b/187055290)
FocusState
enum을FocusState
인터페이스로 대체했습니다. (Iccc1a, b/187055290)- ImeAction enum은 인라인 클래스로 대체되었습니다. (I18be5, b/187055290)
AnnotatedString.withAnnotation
함수는 이제 ExperimentalComposeApi가 아니라 ExperimentalTextApi입니다. (I0cd0a)- TextUnitType이 포함된 TextUnit 생성자는 이제 ExperimentalComposeApi가 아니라 ExperimentalTextApi입니다.
- 이제 PaddingValues는
@Immutable
이 아니라@Stable
입니다. (I88c50)
버그 수정
- 비어 있지 않은 텍스트에서 빈 영역을 길게 누르면 다운되는 문제를 수정했습니다. (I33ab5, b/187437299)
- SelectAll 다음에 툴바를 표시합니다. (I495d9, b/185919613)
- 스크롤 가능한 컨테이너가 교차 축에서 하위 요소를 클리핑하는 문제를 수정했습니다. 이 문제는 카드 항목이 포함된 LazyRow가 있는 경우 쉽게 재현할 수 있었습니다. 이제 그림자가 클리핑되지 않습니다. (Icb635, b/186318448)
- Modifier.combinedClickable을 사용할 때 가끔 장시간 클릭 시 물결 효과 또는 기타 표시가 멈추는 문제를 수정했습니다. (I2298c, b/186223077)
- 이제
detectDragGesures
,detectVerticalGestures
,detectHorizontalGestures
는 자동으로 위치 변경사항을 사용하므로 onDrag 콜백에서 change.consumePositionChange를 호출하지 않아도 됩니다. (I42fc4, b/185096350, b/187320697) - 모든 수정자를 적용한 후 레이아웃 좌표가 아닌 수정자 체인의 이 수정자 좌표를 보고하도록
Modifier.onGloballyPositioned()
를 변경했습니다. 즉, 이제 수정자의 순서가 보고되는 좌표에 영향을 미칩니다. (Ieb67d, b/177926591)
버전 1.0.0-beta07
2021년 5월 18일
androidx.compose.foundation:foundation:1.0.0-beta07
및 androidx.compose.foundation:foundation-layout:1.0.0-beta07
이 출시되었습니다. 버전 1.0.0-beta07에 포함된 커밋을 확인하세요.
API 변경사항
- LazyColumn/Row에 다음번 표시되는 항목 미리 가져오기 로직이 도입되었습니다. (I8a4bc, b/184940225)
- 클립 선택 핸들을 추가했습니다. (Iff80d, b/183408447)
버그 수정
- 이제 LazyColumn/Row는 이미 스크롤되었더라도 이전에 표시된 최대 2개의 항목을 활성 상태로 유지합니다. 이를 통해 스크롤 성능을 개선하는 새 항목을 작성해야 할 때 구성요소가 활성 상태의 하위 작성을 재사용할 수 있습니다. (Ie5555)
- paintBackground를 삭제했습니다. (I38660)
- DrawScope를 사용하여 선택 배경을 그립니다. (I73c61, b/186674472)
- 레이아웃 가중 하위 요소에 spacedBy 정렬을 사용하여 행/열에 영향을 미치는 beta06 회귀가 수정되었습니다. (Ifaf8c, b/187326588)
버전 1.0.0-beta06
2021년 5월 5일
androidx.compose.foundation:foundation:1.0.0-beta06
및 androidx.compose.foundation:foundation-layout:1.0.0-beta06
이 출시되었습니다. 버전 1.0.0-beta06에 포함된 커밋을 확인하세요.
API 변경사항
- 탐색 동작과의 충돌을 해결합니다. (I1145e)
- 접근성 서비스의 컬렉션과 그 항목을 표시할 수 있는 CollectionInfo 및 CollectionItemInfo 접근성 API를 추가했습니다. (Id54ef, b/180479017)
- 색인이 생성된 항목이 있는 목록을 특정 색인으로 스크롤하는
SemanticsActions.ScrollToIndex
와 키가 지정된 항목이 있는 목록에서 항목의 색인을 가져오는SemanticsProperties.IndexForKey
를 추가했습니다. 두 작업 모두 LazyList로 구현됩니다.- 지정된 색인으로 목록을 스크롤하는
SemanticsNodeInteraction.performScrollToIndex
와 지정된 키가 있는 항목으로 목록을 스크롤하는SemanticsNodeInteraction.performScrollToKey
를 추가했습니다. (I4fe63, b/178483889, b/161584524)
- 지정된 색인으로 목록을 스크롤하는
- AnnotatedString이 TextFieldValue.Saver 지원을 저장합니다. addTtsAnnotation 및 withAnnotation 유틸리티 함수를 AnnotatedString.Builder에 추가했습니다. (I8cbdc, b/178446304)
- 기본
0.dp
매개변수 값을PaddingValues(horizontal, vertical)
에 추가했습니다. (I05571, b/181336792)
버그 수정
weight(fill = false)
가 포함된 행 및 열 하위 요소가 더 이상 상위 요소가 전체 사용 가능한 기본 축 공간을 채우도록 하지 않습니다. (Ied94d, b/186012444, b/184355105)
버전 1.0.0-beta05
2021년 4월 21일
androidx.compose.foundation:foundation:1.0.0-beta05
및 androidx.compose.foundation:foundation-layout:1.0.0-beta05
가 출시되었습니다. 버전 1.0.0-beta05에 포함된 커밋을 확인하세요.
API 변경사항
- FlingBehavior 인터페이스는 이제 @Stable로 표시됩니다. 모든 구현은
@Stable
계약을 준수해야 합니다. (I93354, b/184830577)
버그 수정
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.foundation:foundation:1.0.0-beta04
및 androidx.compose.foundation:foundation-layout:1.0.0-beta04
가 출시되었습니다. 버전 1.0.0-beta04에 포함된 커밋을 확인하세요.
API 변경사항
- SoftwareKeyboardController의 hideSoftwareKeyboard와 showSoftwareKeyboard의 이름을 각각
hide()
와show()
로 바꿉니다.- LocalSoftwareKeyboardController에 전체 CompositionLocal 인터페이스를 제공하여 설정 가능하도록 합니다(특히 테스트에서 유용함). (I579a6)
TextOverflow.Visible
을 도입했습니다. (Ic8f89)RowScope
,ColumnScope
,BoxScope
,BoxWithConstraintsScope
의 공개 인스턴스를 삭제했습니다. (I4e83e, b/181869067)
버그 수정
- 가장자리에 있는
LazyColumn
/LazyRow
의 항목이 빠른 플링 후에 잘못된 위치로 배치되는 문제를 수정했습니다. (Ie4d13, b/183877420) 이 변경 이전에 구성 가능한 로컬 함수는 매개변수에 따라 건너뛸 수 있었습니다. 이 변경 이후에는 구성 가능한 로컬 함수가 건너뛰지 않습니다. 이렇게 변경한 이유는 로컬 함수의 경우 일반적으로 상위 요소에서 매개변수를 캡처하는 것으로 예상되고 건너뛰기가 버그의 일반적인 소스이기 때문입니다.
요약하자면 다음과 같습니다.
@Composable fun Counter(count: Int, onCountChange: (Int) -> Unit) { @Composable fun ShowCount() { Text("Count: $count") } ShowCount() Button(onClick={ onCountChange(count + 1) }) { Text("Increment") } }
이 변경 이전에는, 구성 가능한
ShowCount
함수는count
매개변수가 업데이트된 후에도 항상 건너뛰게 되어 있었습니다. 더 이상은 아닙니다. (I5648a)
버전 1.0.0-beta03
2021년 3월 24일
androidx.compose.foundation:foundation:1.0.0-beta03
및 androidx.compose.foundation:foundation-layout:1.0.0-beta03
이 출시되었습니다. 버전 1.0.0-beta03에 포함된 커밋을 확인하세요.
API 변경사항
DefaultMonotonicFrameClock
이 지원 중단되었습니다. 이제MonotonicFrameClock
없이withFrameNanos
또는Recomposer.runRecomposeAndApplyChanges
를 호출하면IllegalStateException
이 발생합니다. (I4eb0d)
버그 수정
- 속도가 0인 경우에도 이제
FlingBehavior.performFling()
이 호출됩니다. (I0b6e5, b/181237123)
버전 1.0.0-beta02
2021년 3월 10일
androidx.compose.foundation:foundation:1.0.0-beta02
및 androidx.compose.foundation:foundation-layout:1.0.0-beta02
가 출시되었습니다. 버전 1.0.0-beta02에 포함된 커밋을 확인하세요.
API 변경사항
- LazyColumn 측정 로직의 여러 소규모 최적화가 추가되었습니다. (Ic6889)
- TextField의 이전 SoftwareKeyboardController 인터페이스를 대체하기 위해 새로운
LocalSoftwareKeyboardController
컴포지션 로컬 API를 추가했습니다. (I5951e, b/168778053) - TextField의 이전 SoftwareKeyboardController 인터페이스를 대체하기 위해 새로운
LocalSoftwareKeyboardController
컴포지션 로컬 API를 추가했습니다. (I84472, b/168778053)
버그 수정
- 실험용 API의 공개 사용에 제한을 적용합니다. (I6aa29, b/174531520)
버전 1.0.0-beta01
2021년 2월 24일
androidx.compose.foundation:foundation:1.0.0-beta01
및 androidx.compose.foundation:foundation-layout:1.0.0-beta01
가 출시되었습니다. 버전 1.0.0-beta01에 포함된 커밋을 확인하세요.
Compose 1.0.0 베타의 첫 번째 버전입니다.
API 변경사항
- onStart 콜백을
detectDragGestures
에 추가했습니다. (I67269, b/179995594) - 내장 기능에 맞게 크기를 조정하는 수정자는 더 이상 실험용이 아닙니다. (I15744)
- dp 어설션을 삭제했습니다. (I798d2)
- 모든 텍스트 필드에서 SoftwareKeyboardController 콜백을 삭제했으며 곧 새 API로 대체할 예정입니다. (Iae869, b/168778053)
- 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)
- 지원 중단된 LayoutCoordinates 메서드를 삭제했습니다. positionInParent 및 boundsInParent의 속성 대신 함수를 사용합니다. (I580ed, b/169874631, b/175142755)
- CoreTextField와 같은 하위 수준의 텍스트 구성요소의 입력 세션을 위한 새로운 TextInputSession을 만들었습니다. (I8817f, b/177662148)
- Placeable이 이제 measuredSize를 노출하여 하위 레이아웃이 실제로 측정되는 크기를 나타냅니다. 이 크기는 측정 제약 조건을 따르지 않을 수도 있습니다. (Ib2729, b/172560206, b/172338608)
- 접근성을 위해 Tabs 또는 RadioButtons 모음을 표시할 수 있는 selectionGroup 수정자를 추가합니다. (Ie5c29)
LazyListState.animateScrollToItem 추가
이 메서드는 목록의 특정 항목으로 매끄럽게 스크롤합니다. (I4bfd7)
ScrollableState.smoothScrollBy()는 animateScrollBy()로, LazyListState.snapToItemIndex()는 scrollToItem()로, ScrollState.smoothScrollTo()는 animateScrollTo()로 이름이 바뀌었습니다. (I35ded)
Modifier.zoomable이 Modifier.transformable로 대체되었습니다. smoothPanBy, smoothRotationBy는 기능으로 추가되었습니다. (Ifc32b, b/175294473)
compositionLocalOf
및staticCompositionLocalOf
용defaultFactory
는 이제 선택사항이 아닌 필수입니다.이 변경으로 인해 null을 허용하지 않는 유형 중 기본 팩토리가 제공되지 않은 유형에 관해 잠재적으로 발생할 수 있는 유형 오류가 발생하지 않습니다. 이전에는 null을 허용하지 않는 유형의 경우 null 참조가 제공되었습니다.
null을 허용하는 유형에는
{ null }
을 기본 팩토리로 제공하는 것이 좋습니다.적절한 기본값을 제공할 수 없는 한, null을 허용하지 않는 유형에는 로컬을 사용하지 않는 것이 좋습니다. 적절한 기본값이 존재하지 않으면
defaultFactory
람다에서 예외가 발생합니다. 하지만 예외가 발생해도 로컬이 유형 시스템에 의해 실행되지 않는 한, 로컬의 사용자는 로컬에 관한 암시적 종속 항목을 갖게 됩니다. (Ifbd2a)Indication#createIndication()
이Indication#rememberUpdatedIndication(InteractionState)
로 변경되고 IndicationInstance#drawIndication()
에서InteractionState
매개변수를 삭제합니다. IndicationInstance는 그리기 시각적 효과만 담당해야 하며 InteractionState 변경에 관한 응답으로 이뤄지는 애니메이션 실행/상태 작성은 담당하지 않습니다. 대신 이러한 애니메이션과 상태 기록은rememberUpdatedIndication()
내에서 실행되어야 합니다.Modifier.indication
의indication
매개변수도 필수 매개변수로 변경되었습니다. (Ic1764, b/152525426)텍스트 작업이 이제 자동으로 포커스를 확인합니다. (I13777, b/179648629)
runBlockingWithManualClock
을 삭제했습니다. (I15cdc, b/179664814)이제 Modifier.verticalScroll()/horizontalScroll()의 스크롤 위치가 Ints로 표시됩니다. (I81298)
smoothScrollBy 및 scrollBy 메서드의 패키지를
androidx.compose.foundation.gestures.*
로 변경했습니다. (I3f7c1, b/175294473)FlingConfig의 이름이 FlingBehavior로 바뀌었으며 이제 사전 정의된 감쇠가 아닌 정지 애니메이션 맞춤설정을 허용합니다. (I02b86, b/175294473)
크기 수정자의 이름이 변경되었습니다. Modifier.width/height/size의 이름이 requiredWidth/requiredHeight/requiredSize로, Modifier.preferredWidth/preferredHeight/preferredSize의 이름이 width/height/size로 변경되었습니다. (I5b414)
defaultMinSizeConstraints의 이름이 defaultMinSize로 변경되었습니다. (I4eaae)
Modifier.tapGestureFilter를 삭제했습니다. 대신
Modifier.pointerInput { detectTapGestures(...) }
를 사용하세요. (I266ed, b/175294473)포인터 입력 시스템에서 부분 소비를 삭제했습니다. 부분 소비를 조정하는 데 권장되는 방법은 Modifier.nestedScroll입니다. (Ie9c9b)
방향을 기본 패키지로 이동했습니다. VelocirtTracker가 ui.gesture에서 ui.input.pointer로 이동했습니다. (Iff4a8, b/175294473)
AnimationClockObservable 및 서브클래스를 삭제했습니다. AnimatedFloat를 삭제했습니다. (Icde52, b/177457083)
이제 drawerState.open() 및 drawerState.close()는 정지 함수입니다. rememberCoroutineScope()를 사용하여 컴포지션의 범위를 가져와 호출합니다. (I16f60, b/175294473)
제공자의 이름이 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)
Modifier.scrollable이 재구성되었습니다. 이제 ScrollableController 클래스 대신 Scrollable 인터페이스가 사용됩니다. (I4f5a5, b/174485541, b/175294473)
이제 Modifier.draggable에서 간단한 람다 대신 DraggableState를 허용합니다.
rememberDraggableState { delta -> }
를 통해 상태를 만들어 이전과 같은 동작을 가져올 수 있습니다. (Ica70f, b/175294473)고유 크기로 필수 크기를 조절하기 위해 requiredWidth(IntrinsicSize) 및 requiredHeight(IntrinsicSize) 한정자를 추가했습니다. (I0a6b4)
지원 중단된
emptyContent()
를 삭제했습니다. 대신{}
를 사용합니다. (Idb33f, b/179432510)이전에 지원 중단된 일부 API를 삭제했습니다. (Ice5da, b/178633932)
버그 수정
- TextField의 이전 SoftwareKeyboardController 인터페이스를 대체하기 위한 새로운 LocalSoftwareKeyboardController 컴포지션 로컬 API를 추가했습니다. (I658b6, b/168778053)
버전 1.0.0-alpha12
2021년 2월 10일
androidx.compose.foundation:foundation:1.0.0-alpha12
및 androidx.compose.foundation:foundation-layout:1.0.0-alpha12
가 출시되었습니다. 버전 1.0.0-alpha12에 포함된 커밋을 확인하세요.
API 변경사항
- 이제 Modifier.pointerInput에 새 종속 항목으로 인해 포인터 입력 감지 코루틴이 다시 시작되어야 할 때를 나타내는 기억 키가 필요합니다. (I849cd)
- 업데이트 테스트: hasText()에서 텍스트 필드의 입력 및 라벨/힌트/자리표시자 텍스트를 모두 확인합니다. (Iab803)
- PaddingValues.Absolute가 추가되었으며 PaddingValues를 허용하는 API에서 사용할 수 있습니다. (Ia5f30)
- onImeActionPerformed가 지원 중단됩니다. 대신 KeyboardActions를 사용하세요. (If0bbd, b/179071523)
- ImageBitmap 및 ImageVector와 이름 지정 규칙을 더 잘 맞추기 위해 ImagePainter의 이름을 VectorPainter와 유사한 BitmapPainter로 바꾸었습니다. (Iba381, b/174565889)
- 하위 문자열을 인수로 사용하는 더 나은 하위 문자열 테스트 API를 제공합니다. (Icbe78)
- 무한 애니메이션에 적용될
InfiniteAnimationPolicy
코루틴 컨텍스트 요소를 도입했습니다. 기본적으로ComposeTestRule
을 사용하여 테스트를 실행하는 경우를 제외하고 설치되는 정책은 없습니다. (I50ec4, b/151940543) - Animatable.snapTo 및 Animatable.stop은 이제 정지된 함수입니다. (If4288)
- ComponentActivity.setContent를 androidx.activity:activity-compose 모듈의 androidx.activity.compose.setContent로 이동했습니다. (Icf416)
- 거의 사용하지 않는 여러 클래스의 디스트럭처링 메서드와 copy() 메서드를 삭제했습니다. (I26702, b/178659281)
LazyColumn/LazyRow에 대한 맞춤 키 지원이 추가되었습니다. 이를 통해 항목 재정렬을 더 스마트하게 처리할 수 있습니다. 이 경우 요소를 재정렬하거나 중간의 항목을 제거하면 remember {} 블록에 저장된 상태가 항목과 함께 이동됩니다.
LazyColumn { items(users, key = { user -> user.id }) { ... } }
Indication#createInstance가 @Composable로 변경되었으며, () -> Indication이 아닌 Indication을 포함하도록 LocalIndication이 변경되었습니다. (I5eeea, b/157150564)
Constraints.enforce
가Constraints.constrain
으로 대체되었습니다. (I8b8ea)loadFontResource가 지원 중단됩니다. 대신 fontResource를 사용하세요. imageResource, loadImageResource, vectorResource, loadVectorResource는 지원 중단됩니다. 대신 painterResource를 사용하세요. (I6b809)
성능상의 이유로 ScrollAxisRange 의미 체계는 이제 직접 Float 값을 사용하는 대신 Float를 반환하는 람다를 사용합니다. (If4a35, b/178657186)
텍스트 필드의 수정 가능한 입력 텍스트를 표시하는 EditableText 의미 체계와 이 의미 체계를 확인할 수 있도록 이에 대응하는 테스트 메서드를 추가했습니다. (I8e07a)
이제 Modifier.clickable은 더블클릭과 길게 클릭을 지원하지 않습니다. 이 기능을 구현하려면 Modifier.combinedClickable을 사용하세요. (Iafad1)
toIntPx()의 이름을 roundToPx()로 바꾸었습니다. (I9b7e4, b/173502290)
IntBounds의 이름을 IntRect로 바꾸고 API를 개선했습니다. (I1f6ff)
Modifier.dragGestureFilter가 지원 중단되었습니다. 대신
Modifier.pointerInput { detectDragGestures (...)}
를 사용하세요. 또는, 하나의 축 드래그에 Modifier.draggable을 사용합니다. (I0ba93, b/175294473)Ambients의 이름을 Ambient와 일치하도록 CompositionLocal로 바꾸었습니다. Ambients에서 AmbientFoo라고 했던 이름은 이제 CompositionLocals에서 LocalFoo가 됩니다. (I2d55d)
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)
애니메이션 재생 시간은 이제 나노초 단위로 통합되었습니다. (If776a)
@ComposableContract를 지원 중단하고 3가지 추가 특정 주석으로 대체했습니다.
@ComposableContract(restartable = false)
는@NonRestartableComposable
,@ComposableContract(readonly = true)
는@ReadOnlyComposable
,@ComposableContract(preventCapture = true)
는@DisallowComposableCalls
가 되었습니다.@ComposableContract(tracked = true)
는 삭제했습니다. (I60a9d)emptyContent()
와(@Composable () -> Unit).orEmpty()
유틸리티는 더 이상 성능에 긍정적인 영향이나 가치가 없으므로 지원 중단되었습니다. (I0484d)이제 Recomposer를 종료할 수 있습니다. 종료된 Recomposer는 컴포지션 하위 코루틴이 완료될 때까지 리컴포지션을 계속합니다. close와 구분하기 위해 Recomposer.shutDown의 이름을 cancel로 바꾸었습니다. (Ib6d76)
LazyVerticalGrid와 관련된 API를 실험용으로 표시했습니다. (Ia53e3, b/178519862)
rememberSavedInstanceState()를 rememberSaveable()로 이름을 바꾸고 androidx.compose.runtime.saveable 패키지로 이동했습니다. (I1366e, b/177338004)
RestorableStateHolder를 SaveableStateHolder로 이름을 바꾸고 androidx.compose.runtime.saveable 패키지로 이동했습니다. Inner 메서드 RerestableStateProvider를 SaveableStateProvider로 이름을 바꾸었습니다. 일반 유형이 삭제되었으므로 Any를 키로 전달할 수 있습니다. 실험용 주석은 더 이상 필요하지 않습니다. (I0902e, b/174598702)
Saver, listSaver(), mapSaver(), autoSaver를 androidx.compose.runtime.savedinstancestate에서 androidx.compose.runtime.saveable로 이동했습니다. (I77fe6)
아티팩트 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)
RTL 방향에서 도형의 자동 미러링을 지원하기 위해 RounderCornerShape, CutCornerShape, CornerBasedShape의 매개변수 이름을 left/right에서 start/end로 바꾸었습니다. 자동 미러링을 사용하지 않는 경우를 위해 AbsoluteRounderCornerShape과 AbsoluteCutCornerShape을 도입했습니다. (I61040, b/152756983)
Modifier.scrollable에서 canDrag가 삭제되었습니다. (Id66e7, b/175294473)
Compose 컴파일러 플러그인에서 타겟팅하는 API는 구체적인 클래스 대신 인터페이스를 사용하도록 리팩터링했습니다. 또한, 인터페이스는 더 이상 유형 매개변수를 사용하지 않습니다.
이는 소스 코드 호환성에 영향을 주면 안 되는 내부 변경이지만, 바이너리 브레이킹 체인지입니다. (I3b922, b/169406779)
Modifier.scaleGestureFilter가 삭제되었습니다. 대신 Modifier.zoomable을 사용하세요. 또는
Modifier.pointerInput { detectMultitouchGestures { ... }}
를 사용하세요. (Id5da1, b/175294473)이제 AnimatedValue/Float가 지원 중단되었습니다. 대신 Animatable을 사용하세요. (I71345, b/177457083)
- 공개 API에서 CoreText와 CoreTextField를 삭제했습니다.
- 지원 중단된 SelectionContainer 오버로드를 삭제했습니다. (I99c19)
지원 중단된 비정지 스크롤 함수를 삭제합니다. 마지막 버전의 변경사항 중 하나로 비정지 스크롤 함수가 완전히 삭제되었습니다. 정지 함수를 동일한 이름으로 변환하세요. 코루틴 범위는 rememberCoroutineScope()를 통해 얻을 수 있습니다. (I3d39c, b/178169563)
androidx.compose.foundation.layout.ConstraintLayout이 지원 중단되고 androidx.constraintlayout.compose.ConstraintLayout으로 대체되었습니다.
androidx.constraintlayout:constraintlayout-compose:1.0.0-alpha01
의 종속 항목을 추가해야 합니다. (I87adc)tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter 및 pressIndicaitonGestureFilter가 지원 중단되었습니다. 대신 detectTapGestures 함수와 함께 Modifier.clickable 또는 Modifier.pointerInput을 사용합니다. (I6baf9, b/175294473)
Recomposer.current()
를 삭제했습니다. [Abstract]ComposeView는 이제 지연 생성되고 창으로 범위가 지정되며 창의 ViewTreeLifecycleOwner에서 구동하는 Recomposer를 기본값으로 설정합니다. Recomposition 및 withFrameNanos 기반 애니메이션 틱은 호스트 수명 주기가 중지된 동안 일시중지됩니다. (I38e11)Recomposer.runningRecomposers는 이제 프로세스에서 진행 중인 컴포지션 상태를 관찰하기 위한 읽기 전용 RecomposerInfo의 전역 StateFlow를 제공합니다. 현재 지원 중단된 Recomposer.current()보다 이 API를 사용하는 것이 좋습니다. (If8ebe)
버전 1.0.0-alpha11
2021년 1월 28일
androidx.compose.foundation:foundation:1.0.0-alpha11
및 androidx.compose.foundation:foundation-layout:1.0.0-alpha11
이 출시되었습니다. 버전 1.0.0-alpha11에 포함된 커밋을 확인하세요.
API 변경사항
비정지 scrollBy를 지원 중단하고 비정지 scrollTo를 삭제합니다.
이제 정지 함수를 사용하여 스크롤을 제어하고 스크롤이 완료될 때까지 기다리는 것이 좋습니다. 이 전환의 일환으로 비정지 버전의 이러한 함수를 지원 중단하고 삭제합니다. (Ie9ced)
비정지 smoothScrollBy를 지원 중단합니다. 이제 정지 함수를 사용하여 스크롤을 제어하고 스크롤이 완료될 때까지 기다리는 것이 좋습니다. 이 전환의 일환으로 비정지 버전의 이러한 함수를 지원 중단합니다. (I12880)
콘텐츠 설명 매개변수를 이미지 및 아이콘에 추가했습니다. 접근성 서비스에 설명을 제공하는 데 사용됩니다. (I2ac4c)
BasicTextField에서 'decorationBox'라는 새 매개변수를 수신했습니다. 이를 통해 아이콘, 자리표시자, 라벨, 텍스트 필드와 같은 장식을 추가하고 조회 대상 영역을 늘릴 수 있습니다. (I16996)
canDrag 매개변수를 Modifier.draggable에서 삭제했습니다. (Ic4bec, b/175294473)
FlingConfig를 허용하는 AnimatedFloat.fling을 삭제했습니다. 대신 정지 Animatable.animateDecay를 사용하세요. (I4659b, b/177457083)
다음 클래스에서
data class
를 삭제했습니다.- InlineTextContent
- LocaleList
- (I605c7)
이제 컴포지션 외부에서 clickable, toggleable, selectable을 만들 수 있습니다. (I0a130, b/172938345, b/175294473)
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)지원 중단된 AbsoluteArrangement를 삭제했습니다. (Iffa96, b/177641870)
propagateMinConstraints 매개변수를 Box에 추가했습니다. 수신된 최소 제약 조건을 Box의 콘텐츠에 전달해야 하는지 지정합니다. 기본값은 false입니다. (I0125b, b/152613457)
버그 수정
- onCommit, onDispose, onActive를 지원 중단하고 SideEffect 및 DisposableEffect API로 대체했습니다. (If760e)
- WithConstraints를 BoxWithConstraints로 재작업하여 foundation.layout으로 이동했습니다. (I9420b, b/173387208)
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)
이제 밀도가 Arrangement 인터페이스의 수신기 범위입니다. (I18aad)
TextFieldValue가 AnnotatedString을 허용합니다. 그러나 이는 API 전용 변경사항이고 다중 스타일 텍스트 편집은 아직 구현되지 않았습니다.
- EditingBuffer 생성자 매개변수에서
initial
을 삭제했습니다. (I326d5)
- EditingBuffer 생성자 매개변수에서
이제 invalidate와 compositionReference()가 지원 중단되며 currentRecomposeScope과 rememberCompositionReference로 각각 대체됩니다. (I583a8)
AnnotatedString이 kotlin.CharSequence에서 확장되도록 변경되었습니다. 따라서, 이제 length 및 subSequence는 인스턴스 함수이며 확장 함수는 삭제됩니다. (Iaf429)
Duration과 Uptime이 Long 밀리초로 대체되며 이 단계에서는 이러한 클래스의 포인터 입력 종속 항목을 삭제합니다. (Ia33b2, b/175142755, b/177420019)
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)TransformedText.transformedText를 TransformedText.text로 이름을 바꿨습니다.
- TransformedText는 더 이상 데이터 클래스가 아닙니다. (Ie672a)
다음 클래스는 더 이상 데이터 클래스가 아닙니다.
- AnnotatedString
- ParagraphStyle
- SpanStyle
- TextStyle
- FontWeight
- TextDecoration
- TextGeometricTransform
- TextIndex
- TextLayoutResult
- TextLayoutInput (Iaff99)
실험용 monotonicFrameAnimationClockOf 메서드를 삭제했습니다. (Ib753f, b/170708374)
전역 좌표 메서드를 지원 중단하고 창 기반 좌표 메서드를 새로 만들었습니다. (Iee284)
ImeAction.NoAction 대신 ImeAction.None을 사용하세요.
- ImeAction.Unspecified 대신 ImeAction.Default를 사용하세요. (Ie1bcc)
이제 FocusRequester.createRefs는 변경될 수 있으므로 실험용으로 표시됩니다. (I2d898, b/177000821)
SemanticsPropertyReceiver.hidden이 invisibleToUser로 이름이 변경되었으며 @ExperimentalComposeUiApi로 표시되었습니다. AccessibilityRangeInfo가 ProgressBarRangeInfo로, stateDescriptionRange가 progressBarRangeInfo로 이름이 변경되었습니다. AccessibilityScrollState가 ScrollAxisRange로, horizontalAccessibilityScrollState가 horizontalScrollAxisRange로, verticalAccessibilityScrollState가 verticalScrollAxisRange로 이름이 변경되었습니다. (Id3148)
VisualTransformation을 기능 인터페이스가 되도록 변경했습니다. (I3bba4)
테스트에서 TestCoroutineDispatcher를 활용합니다. (I532b6)
PointerInputData의 모든 필드를 제공하도록 PointerInputData를 삭제하고 PointerInputChange를 수정했습니다. PointerInputEvent 및 PointerInputEventData가 공개 API에서 사용되지 않으므로 이를 내부 클래스로 변경했습니다. (Ifff97, b/175142755)
TextInputService.onStateUpdated의 이름을 updateState로 바꿨습니다. (Id4853)
displaySize는 사용하지 않아야 하므로 삭제합니다. 최소한 onRoot() 크기나 창 크기를 사용하는 것이 일반적으로 더 좋습니다. (I62db4)
버전 1.0.0-alpha10
2021년 1월 13일
androidx.compose.foundation:foundation:1.0.0-alpha10
및 androidx.compose.foundation:foundation-layout:1.0.0-alpha10
이 출시되었습니다. 버전 1.0.0-alpha10에 포함된 커밋을 확인하세요.
API 변경사항
- ImeOptions 및 KeyboardOptions가 더 이상 데이터 클래스가 아닙니다. (I3c898, b/168684531)
- VisualTransformation API 변경사항
- OffsetMap의 이름을 OffsetMapping으로 바꿈
- OffsetMapping.identityOffsetMap의 이름을 OffsetMapping.Identity로 바꿈
- PasswordTransformation이 더 이상 데이터 클래스가 아님
- OffsetMapping을 자체 파일로 이동함
- (I0bdf3)
- EditOperations API 변경사항
- EditOperation의 이름을 EditCommand로 바꿈
- EditOperation의 구체적인 구현을 위해 Command 접미사를 추가함
- EditCommand가 더 이상 데이터 클래스가 아님
- EditOperation.process 함수의 이름을 applyTo로 바꿈
- InputEventListener의 이름을 InputEventCallback으로 바꿈
- (I0a366)
- 구성요소 부분과 수학 연산을 포함하도록 속도를 수정했습니다. (Ib0447)
- 유사한 실험 API 주석과 일치하도록 @ExperimentalTesting의 이름을 @ExperimentalTestApi로 바꿨습니다. (Ia4502, b/171464963)
- LazyColumn/LazyRow를 위한 실험용 stickyHeader 메서드를 추가했습니다. (I0a81d)
- Color.useOrElse()의 이름을 Color.takeOrElse()로 바꿨습니다. (Ifdcf5)
- TestUiDispatcher를 지원 중단했습니다. 대신 Dispatchers.Main을 사용하세요. (Ic171f, b/175385255)
- 기본 Strings.kt에 토글을 추가합니다. (I4a5b7, b/172366489)
- nativeClass를 모듈로 이동하여 내부 클래스로 만들었습니다. equals 구현에서 'is MyClass'를 대신 사용하도록 nativeClass 사용을 업데이트했습니다. (I4f734)
- FlowRow 및 FlowColumn이 지원 중단되었습니다. 대신 맞춤 레이아웃을 사용하세요. (I09027)
- Modifier.focus()와 Modifier.focusRequester()가 지원 중단되었습니다. 대신 Modifier.focusModifier()와 Modifier.focusReference()를 사용하세요. (I75a48, b/175160751, b/175160532, b/175077829)
- Selectable 업데이트를 SelectionManager에 알리도록 SelectionRegistrar.notifySelectableChange를 도입했습니다. (I6ff30, b/173215242)
fun Dp.isFinite()
를val Dp.isFinite
로 변경했습니다. (I50e00)- Constraints#satisfiedBy의 이름을 isSatisfiedBy로 바꿨습니다. (I9cf5c)
- 상수 Unspecified를 사용하는 인라인 클래스용으로 isSpecified, isUnspecified, useOrElse를 추가했습니다. (I93f7b, b/174310811)
버그 수정
- 새로운 코루틴 기반 API인
Animatable
은 애니메이션 간의 상호 배타성을 보장합니다. 새로운 DecayAnimationSpec이 다차원 감쇠 애니메이션을 지원합니다. (I820f2, b/168014930) - 사용 중지된 텍스트 필드 및 읽기 전용 텍스트 필드의 지원을 추가했습니다. (I35279, b/171040474, b/166478534)
animate()
가 이제T
대신State<T>
를 반환하는animateAsState()
로 대체되었습니다. 상태 값이 판독되는 지점까지 무효화 범위를 좁힐 수 있으므로 성능이 향상됩니다. (Ib179e)- Semantics role API를 추가하고 역할을 클릭 가능하고 선택 가능하며 전환 가능한 SemanticsModifier에 매개변수로 추가합니다. 슬라이더에서도 사용할 수 있도록 Modifier.progressSemantics를 변경했습니다. (I216cd)
- 이제 keyEvent.nativeKeyEvent를 통해 네이티브 keyEvent에 액세스할 수 있습니다. (I87c57, b/173086397)
버전 1.0.0-alpha09
2020년 12월 16일
androidx.compose.foundation:foundation:1.0.0-alpha09
및 androidx.compose.foundation:foundation-layout:1.0.0-alpha09
가 출시되었습니다. 버전 1.0.0-alpha09에 포함된 커밋을 확인하세요.
API 변경사항
스크롤 가능한 인터페이스를 추가합니다.
따라서 ScrollState와 LazyListState를 공통 유형으로 취급하여 두 유형에서 모두 맞춤 스크롤을 구현할 수 있습니다.
또한 smoothScrollBy를 Scrollable의 확장 함수로 이동하여 이 기능을 활용할 수 있습니다. (I2153b)
LazyVerticalGrid가 추가되었습니다. (I17267, b/162213211)
LazyColumnFor, LazyRowFor, LazyColumnForIndexed, LazyRowForIndexed를 지원 중단했습니다. 대신 LazyColumn과 LazyRow를 사용하세요. (I5b48c)
정지 포인터 입력 API의 경우 HandlePointerInputScope의 이름을 AwaitPointerEventScope로 바꾸고 handlePointerInput()의 이름을 awaitPointerEventScope()로 바꿨습니다. (Idf0a1, b/175142755)
현재 표시되는 항목의 크기와 오프셋의 목록을 노출하는 LazyListState.layoutInfo를 추가했습니다. (If8678, b/170472532)
ExperimentalPointerInput 주석을 삭제했습니다. (Ia7a24)
TextFields를 위한 InteractionState 지원을 추가했습니다. (I61d91)
LazyColumn/Row의 reverseLayout 매개변수를 추가합니다.
true
항목이 아래에서 위로 작성되고LazyListState.firstVisibleItemIndex == 0
이면 첫 번째 항목이 하단에 위치한다는 의미입니다. (I552ae, b/166589935)LazyColumn의 verticalArrangement 매개변수를 추가했습니다. LazyRow의 horizontalArrangement 매개변수를 추가했습니다. 이러한 정렬을 사용하면 항목 사이에 공백을 추가할 수 있고 전체 최소 크기를 채울 만큼 항목 수가 충분하지 않은 경우 항목의 정렬을 지정할 수 있습니다. (Icf79a, b/170394300)
이제 detectMultitouchGestures는 중심, 화면 이동, 확대/축소, 회전 매개변수가 결합된 단일 콜백을 사용합니다. (Ie6e1c)
ContentDrawScope를 DrawScope와 함께 있도록 ui-graphics 모듈로 이동했습니다. (Iee043, b/173832789)
버그 수정
- 오프셋 수정자의 람다가 이제 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)
Modifier.focusObserver를 지원 중단했습니다. 대신 Modifier.onFocusChanged나 Modifier.onFocusEvent를 사용하세요. (I30f17, b/168511863, b/168511484)
Autofill API는 이제 실험용 API이며 필수 선택 항목입니다. (I0a1ec)
FocusRequester 인스턴스를 만들기 위해 디스트럭처링 선언을 추가했습니다. (I35d84, b/174817008)
accessibilityLabel의 이름을 contentDescription으로 바꿨습니다. accessibilityValue의 이름을 stateDescription으로 바꿨습니다. (I250f2)
SelectionRegistrar에 몇 가지 새로운 함수를 도입하고 onPositionChange의 이름을 notifyPositionChange로 바꿨습니다. (Ifbaf7)
AndroidOwner를 내부로 이동했습니다. (Ibcad0, b/170296980)
InfiniteRepeatableSpec을 생성하기 위한 새로운 infiniteRepeatable 함수를 도입했습니다. (I668e5)
하향식 대신 상향식으로 트리를 간단히 빌드할 수 있도록
Applier
인터페이스를 변경했습니다.insert()
에서insertTopDown()
으로 메서드 이름을 변경했습니다.새로운 메서드인
insertBottomUp()
이 추가되었습니다.Applier에서
insertTopDown()
또는insertBottomUp()
중 성능이 더 뛰어난 메서드를 사용하여 편집 중인 트리에 노드를 삽입합니다.LayoutNode
및View
와 같은 일부 트리는 하향식보다 상향식으로 빌드하는 것이 훨씬 더 효율적입니다. 이 변경사항이 적용되기 전에는 상향식을 구현하는 데 인서트 스택이 필요했는데, 성능을 위해 상향식 구조가 필요한 모든 applier에 이러한 스택을 복사해야 했습니다. 이번 변경사항에 따라 이제Applier
가 상향식 트리를 빌드하기 위해insertBottomUp()
을 재정의하고 하향식 트리를 빌드하기 위해insertTopDown()
을 재정의합니다. (Icbdc2)래스터화된 애셋 형식(예: PNG)이나 VectorDrawables에서 Painter 객체를 불투명하게 로드하는 작업을 처리하도록 painterResource API를 추가했습니다. 소비자는 더 이상 애셋 유형을 미리 결정하지 않아도 되고 이 메서드를 호출하여 이미지 컴포저블 또는 페인터 수정자에서 사용할 Painter 객체를 가져올 수 있습니다. (I2c703, b/173818471)
AnnotatedString을 빌드하기 위해 buildAnnotatedString 팩토리 함수를 추가했습니다. annotatedString 빌더 함수를 지원 중단했습니다. (Idfe0b)
버전 1.0.0-alpha08
2020년 12월 2일
androidx.compose.foundation:foundation:1.0.0-alpha08
및 androidx.compose.foundation:foundation-layout:1.0.0-alpha08
이 출시되었습니다. 버전 1.0.0-alpha08에 포함된 커밋을 확인하세요.
API 변경사항
CoreTextField
에서maxLines
매개변수를 삭제했습니다. 텍스트 필드의 높이를 줄 수로 제한하려면BasicTextField
를 대신 사용하세요. (Iec002)- 포인터 누름 상태를 감지하지 않도록
await*TouchSlop()
메서드를 변경하고 이름을*OrCancellation
으로 바꿨습니다.orientationLock
매개변수 필요성도 없앴습니다. (Ie96e1) - Compose 가이드라인과의 일관성을 확인하기 위해 컴포저블 람다 매개변수 이름 지정 및 위치에 관한 린트 검사를 추가했습니다.
또한 린트 검사와 지침에 따라 후행 람다의 이름으로
children
을 사용하는 일부 API를content
로 이전했습니다. (Iec48e) foundation:foundation-text
API를foundation:foundation
으로 이동했습니다. 패키지 구조는 동일하게 유지됩니다. (Id3eb2)- 회전, 확대/축소, 화면 이동을 감지하는 도우미를 포함한 새로운 멀티터치 동작 감지기를 도입했습니다. (Ic459d)
- 방향 잠금을 포함하여 새로운 드래그 동작 감지기 정지 포인터 입력 API를 도입했습니다. (Icef25)
- VectorAsset의 이름을 ImageVector로 바꿨습니다. API 위원회 가이드라인에 따라 ImageVector의 내부 클래스가 되도록 VectorAsset을 Builder로 이동하고 이름을 바꿨습니다. 호환성을 위해 VectorAssetBuilder의 typealias를 ImageVector.Builder 링크에 추가했습니다. (Icfdc8)
- ImageAsset 및 관련 메서드의 이름을 ImageBitmap으로 바꿨습니다. (Ia2d99)
- 기초 의미 체계 속성을 UI로 이동했습니다. (I6f05c)
코루틴 기반 스크롤 API를 추가했습니다.
스크롤 제어를 위한 낮은 수준의 API는 물론 LazyListState.snapToItem 및 LazyListState.smoothScrollBy를 추가했습니다. 이러한 API는 반환하기 전에 스크롤이 완료될 때까지 대기하는 스크롤을 제어하기 위해 정지 인터페이스를 제공합니다. (Ie5642)
BasicTextField, TextField, OutlinedTextField에 singeLine 매개변수를 추가했습니다. 이 매개변수를 true로 설정하면 텍스트 필드가 수평으로 스크롤 가능한 단일 줄이 됩니다. (I57004, b/168187755)
탭, 두 번 탭, 길게 누르기, 누르기 표시를 위한 동작 감지기를 새로운 정지 포인터 입력을 사용하여 추가했습니다. 개발자가 자체 동작 감지기를 더욱 쉽게 작성할 수 있도록 몇 가지 유틸리티도 추가했습니다. (I00807)
Modifier.focusable을 기초에 추가했습니다. 이를 사용하여 올바른 의미 체계와 접근성으로 포커스 가능 동작을 구성요소에 추가할 수 있습니다. (I41eb9, b/152525426, b/162865824)
이전에 지원 중단된 API를 삭제했습니다. Border를 삭제했으므로, 대신 BorderStroke를 사용하세요. Modifier.drawBorder를 삭제했으므로, 대신 Modifier.border를 사용하세요. Modifier.gravity를 삭제했으므로, 대신 Modifier.align을 사용하세요. Stack을 삭제했으므로, 대신 Box를 사용하세요. (I32c2b, b/172470874)
AbsoluteArrangement의 이름을 Arrangement.Absolute로 바꿨습니다. (If26f2)
버그 수정
- 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)
- SubcomposeLayout 선언에서
<T>
를 삭제했습니다. 이제 유형을 지정하지 않고 사용할 수 있습니다. (Ib60c8) - PointerInputData의 가동시간 및 위치 필드가 null을 허용하지 않게 했습니다. (Id468a)
- 이제 MaterialTheme이 선택 핸들과 선택 배경에 맞는 올바른 색상을 설정합니다. 머티리얼이 아닌 앱에서는 직접 AmbientTextSelectionColors를 사용하여 선택 옵션으로 사용되는 색상을 맞춤설정할 수 있습니다. (I1e6f4, b/139320372, b/139320907)
- Box 정렬 매개변수의 이름을 contentAlignment로 바꿨습니다. (I2c957)
- offsetPx 수정자의 이름을 offset으로 바꿨습니다. offsetPx 수정자는 이제 State 대신 람다 매개변수를 사용합니다. (Ic3021, b/173594846)
- 호스트 창에 포커스가 있는지 확인하는 WindowManager.isWindowFocused와 onWindowFocusChanged 콜백을 제공하는 WindowFocusObserver를 추가했습니다. (I53b2a, b/170932874)
- resetInput 매개변수를 TextInputService#onStateUpdated에 추가했습니다. (I3e8f5, b/172239032, b/171860947)
- TextFieldValue API를 업데이트했습니다.
- TextFieldValue.composition을 읽기 전용으로 만들었습니다.
- 잘못된 선택 범위로 발생한 예외를 삭제했습니다. (I4a675, b/172239032)
- 접미사로
Ambient
라는 이름을 사용하는 Ambient가 지원 중단되고 다른 Ambient 및 Compose API 가이드라인에 따라 Ambient를 접두사로 사용하는 새로운 속성으로 대체됩니다. (I33440) - Android Typeface 래퍼를 추가했습니다.
typeface
함수(예:typeface(Typeface.DEFAULT)
)를 통해 Android Typeface를 로드할 수 있습니다. 또한typefaceFromFontFamily()
의 이름을typeface()
로 바꿨습니다. (I52ab7) - 수정자 팩토리가
@Composable
로 표시되는 대신androidx.compose.ui.composed {}
를 내부적으로 사용하는지 확인하기 위한 린트 검사를 추가했습니다. (I3c4bc) - 수정자 팩토리 함수가 수정자에서 확장 프로그램으로 정의되어 함께 원활하게 체인될 수 있는지 확인하기 위한 린트 검사를 추가했습니다. (I07981)
- 의미 체계 인수 mergeAllDescendants의 이름을 mergeDescendants로 바꿨습니다. (Ib6250)
- 테스트의 시간 제어(TestAnimationClock 및 사용)가 이제 실험용입니다. (I6ef86, b/171378521)
- 이전 ui-test 모듈 및 모듈의 스텁을 삭제했습니다. (I3a7cb)
- 다른 단위와 일치하도록 TextUnit.Inherit의 이름을 TextUnit.Unspecified로 바꿨습니다. (Ifce19)
- 정렬 인터페이스가 업데이트되어 정상 작동합니다. (I46a07, b/172311734)
foundation:foundation-text
모듈을foundation:foundation
으로 병합했습니다. (Idac0f)- place(Offset) 및 placeRelative(Offset)를 지원 중단했습니다. 대신 int 오프셋이 있는 오버로드를 사용하세요. (I4c5e7)
LayoutIdParentData
의 이름 중id
를layoutId
로 바꿨습니다.Measurable.id
의 이름을Measurable.layoutId
로 바꿨습니다. (Iadbcb, b/172449643)
버전 1.0.0-alpha07
2020년 11월 11일
androidx.compose.foundation:foundation:1.0.0-alpha07
, androidx.compose.foundation:foundation-layout:1.0.0-alpha07
및 androidx.compose.foundation:foundation-text:1.0.0-alpha07
가 출시되었습니다. 버전 1.0.0-alpha07에 포함된 커밋을 확인하세요.
API 변경사항
Modifier.fillMaxSize[Width|Height]
와 비슷하게 이제LazyColumn/Row
범위 내에서Modifier.fillParentMaxSize[Width|Height]
의 소수자리 값을 지원합니다. (I797e2, b/166586426)- 공개 API에서
KeyboardOptions.toImeOptions
가 삭제되었습니다. (Ic2e45) - 기본 AmbientTextStyle, ProvideTextStyle, AmbientContentColor가 지원 중단되었습니다. 대신 Material 라이브러리에서 제공되는 새 버전을 사용하세요. 비 Material 애플리케이션의 경우 자체 구성요소에 사용할 수 있는 고유 디자인 시스템별 테마 설정 앰비언트를 만들어야 합니다. (I74acc, b/172067770)
- foundation.Text가 지원 중단되고 material.Text로 대체되었습니다. 테마의 값을 사용하지 않는 비독단적인 기본 텍스트 API는 androidx.compose.foundation.BasicText를 참고하세요. (If64cb)
- TextFields에 maxLines가 추가되었습니다. (Ib2a5b)
- keyboardOptions를 허용하도록 TextFields를 업데이트했습니다. (Ida7f3)
- TextFields에서 사용하도록 KeyboardOptions를 추가했습니다. (I9ca32)
- 텍스트용 design-unopinionated API로 BasicTextField에 병렬인 BasicText를 추가합니다. (I28268)
- ExperimentalLazyDsl 주석을 삭제했습니다. 이제 @OptIn을 추가하지 않고도 LazyColumn/LazyRow를 사용할 수 있습니다. (Idab7a, b/166584730)
- BaseTextField가 지원 중단되었습니다. BasicTextField를 대신 사용하세요. (I896eb)
- BasicTextField가 CoreTextField와 BaseTextField의 대안으로 추가되었습니다. (Id4cea)
- 지원 중단된 LazyColumnItems/LazyRowItems를 삭제합니다. (I1d8a8)
- 내장된 측정의 크기를 조정하는 지원 중단된 컴포저블이 삭제되었습니다. (I18537, b/171811496)
- relativePaddingFrom의 이름이 paddingFrom으로 바뀌었습니다. 레이아웃 경계에서 텍스트 기준선까지의 거리를 쉽게 지정할 수 있도록 paddingFromBaseline 수정자를 추가했습니다. (I0440a, b/170633813)
- matchHeightConstraintsFirst 매개변수를 aspectRatio 수정자에 추가했습니다. 이 매개변수를 사용하면 너비 제약 조건을 시도하기 전에 높이 제약 조건에 맞춰 크기를 결정하도록 수정자를 지정할 수 있습니다. (Ie7c43, b/155290593)
- 지원 중단된 DpConstraints를 삭제했습니다. (I87884, b/171702471)
버그 수정
- 비균일 조정 사용 사례를 지원하기 위해 가로축 및 세로축의 배율을 개별적으로 나타내는 ScaleFactor 인라인 클래스를 도입했습니다.
- ContentScale에 computeScaleFactor 메서드를 추가했습니다.
- 대상을 완전히 차지하도록 src 경계를 확장하기 위해 비균일 조정을 실행하는 ContentScale.FillBounds를 추가했습니다.
- 크기 매개변수로 ScaleFactor 매개변수를 계산하는 연산자 메서드를 추가했습니다.
- (Ic96a6, b/172291582)
- captureToBitmap을 captureToImage로 이동했습니다. (I86385)
- CoreText를 @InternalTextApi로 표시합니다. 대신 BasicText를 사용하세요. (I6aaeb)
- KeyboardOptions의 이름을 ImeOptions로 바꿨습니다. (I82f36)
- KeyboardType 및 ImeAction을 KeyboardOptions로 이동했습니다. (I910ce)
- CoreTextField를 @InternalTextApi로 표시했습니다. 대신 BasicTextField를 사용하세요. (Ie2469)
- ExperimentalSubcomposeLayoutApi 주석을 삭제했습니다. 이제 @OptIn을 추가하지 않고도 SubcomposeLayout을 사용할 수 있습니다. (I708ad)
- ui-test-junit4 모듈을 도입했습니다. (Ib91f8)
- ColorFilter 없이도 제공된 애셋 또는 페인터를 그리는 가능한 색조 색상으로 Color.Unspecified를 사용하도록 Icon API를 업데이트했습니다. 이전에는 Color.Unspecified를 사용한 색조 조정을 투명한 색으로 지정해 무시하려고 했습니다. 결과적으로 아무것도 렌더링되지 않습니다. (I049e2, b/171624632)
- MeasureResult를 MeasureScope 외부로 이동했습니다. (Ibf96d, b/171184002)
- 여러 레이아웃 관련 기호를 androidx.compose.ui에서 androidx.compose.layout.ui로 이동했습니다. (I0fa98, b/170475424)
- androidx.ui.test를 androidx.compose.ui.test로 이동했습니다. (I9ffdb)
- FirstBaseline 및 LastBaseline을 androidx.compose.ui.layout 패키지로 이동했습니다. (Ied2e7)
- 콜백 없는 SelectionContainer를 추가했습니다. (Ibfadb)
- SelectionContainer의 SelectionHandles 위치에 관한 테스트를 추가합니다. (Ie93db)
- 키보드 자동 수정 IME 옵션을 추가했습니다. (I57b8d)
버전 1.0.0-alpha06
2020년 10월 28일
androidx.compose.foundation:foundation:1.0.0-alpha06
, androidx.compose.foundation:foundation-layout:1.0.0-alpha06
및 androidx.compose.foundation:foundation-text:1.0.0-alpha06
가 출시되었습니다. 버전 1.0.0-alpha06에 포함된 커밋을 확인하세요.
API 변경사항
- androidx.compose.foundation.Icon을 androidx.compose.material.Icon으로 이동했습니다. Material 라이브러리를 사용하지 않으려는 경우 이미지 구성요소/Modifier.paint()를 Painter와 함께 사용할 수도 있습니다. (I9f622)
- Modifier.scrollable, ScrollableColumn, LazyColumnFor에 interactionState를 추가했습니다. (I81566, b/169509805)
- RowScope에 alignByBaseline을 추가했고 alignWithSiblings의 이름을 alignBy로 바꿨습니다. (I06503, b/170628732)
- Box가 인라인 함수로 생성되었습니다. (Ibce0c, b/155056091)
- CoreTextField에 maxLines를 추가했습니다. (Ibee58, b/143687793)
- CoreTextField에 softwrap을 추가했습니다. (I21a4b)
버그 수정
- 컴포저블 API에서 내부적으로 'remember'를 활용하여 컴포지션에서 데이터 유지를 더 잘 나타내도록 VectorPainter를 지원 중단하고 rememberVectorPainter로 대체했습니다. (Ifda43)
- ComposeTestRule에서 전환을 사용 설정하여 ComposeTestRule에서 깜박이는 커서를 사용 설정하는 옵션을 삭제했습니다. (If0de3)
- CoreTextField에 한 줄 키보드 옵션을 추가했습니다. (I72e6d)
- Compose 전체에서 사용되는 방식을 더 잘 표현하도록 Radius API의 이름을 CornerRadius로 바꿨습니다. 음의 모서리 반지름이 0으로 고정되어 있음을 나타내도록 문서를 업데이트했습니다. (I130c7, b/168762961)
- 구성된 수정자에 검사기 정보를 지정하는 기능을 추가했습니다. (Idee08, b/163494569)
- KeyboardCapitalization IME 옵션을 추가했습니다. (I8ac38)
- Rtl 핸들 위치를 수정했습니다. (I6e1e0)
- 브레이킹 체인지: 포인터 이벤트에서 변경할 수 있는 유일한 값이 소비 데이터라는 점을 고려하여 PointerInputFilter.onPointerEvent(...)에서 반환 값을 삭제했습니다. PointerInputFilter.onPointerEvent(...)에서 데이터를 반환하는 대신 이제 전달된 PointerEvents의 소비 데이터를 변경할 수 있습니다. (I6acd0)
- 선택 메뉴에 SelectAll 옵션을 추가했습니다. (Ief02b)
버전 1.0.0-alpha05
2020년 10월 14일
androidx.compose.foundation:foundation:1.0.0-alpha05
, androidx.compose.foundation:foundation-layout:1.0.0-alpha05
및 androidx.compose.foundation:foundation-text:1.0.0-alpha05
가 출시되었습니다. 버전 1.0.0-alpha05에 포함된 커밋을 확인하세요.
API 변경사항
- 이제 CoreTextField에서 커서 기능을 지원합니다. (Id23aa)
contentColor() 및 currentTextStyle() API를 지원 중단하고 각각 AmbientContentColor 및 AmbientTextStyle 앰비언트로 대체합니다. 다른 앰비언트와 마찬가지로 앰비언트 속성에서
.current
를 사용하여 현재 값에 액세스할 수 있습니다. 이러한 변경은 일관성을 유지하고 여러 가지 방법을 사용하여 동일한 결과를 얻는 것을 피하기 위해 이루어졌습니다. 또한, 목적을 더 잘 나타내도록 앰비언트 속성 일부의 이름을 다음과 같이 바꿉니다.- ContentColorAmbient -> AmbientContentColor
- TextStyleAmbient -> AmbientTextStyle
- IndicationAmbient -> AmbientIndication
- EmphasisAmbient -> AmbientEmphasisLevels
- RippleThemeAmbient -> AmbientRippleTheme (I37b6d)
버그 수정
- 인라인 클래스의 센티널 값을 표준화하는 과정의 일환으로 다른 인라인 클래스와의 일관성을 위해 Color.Unset의 이름을 Color.Unspecified로 바꿉니다. (I97611, b/169797763)
- 복사/붙여넣기/잘라내기 접근성 작업을 추가했습니다. (I6db4f)
- TextOverflow.None이 도입되었습니다. 오버플로가 None이면 Text에서 더 이상 오버플로를 처리하지 않으며 LayoutNode에 실제 크기를 보고합니다. (I175c9, b/158830170)
- Size.Unspecified 매개변수를 Float.POSITIVE_INFINITY 대신 Float.NaN으로 업데이트했습니다. Size.Unspecified와 유한하지 않은 크기의 Size를 확인하기 위해 구현을 업데이트했습니다. (I95a7e)
- Paging Compose 모듈 및 페이징 통합을 추가했습니다. (Ib85da)
- null을 허용하는 값을 받도록 LazyListScope을 수정합니다. (I1765b)
- OnPositionedModifier 이름이 OnGloballyPositionedModifier로 바뀌고 onPositioned()의 이름이 onGloballyPositioned()로 바뀝니다. (I587e8, b/169083903)
- LazyColumn/Row 샘플을 추가했습니다. (Idc16d)
- emptyList를 허용하는 items 및 itemsIndexed 메서드를 수정합니다. (I06647)
- 검사기 정보를 지정하기 위한 DSL을 추가합니다. (Ic9a22)
- LongPress를 Text로 이동합니다. (Iff2bc)
- Text 및 Demo에서 Selection 사용을 중지합니다. (Ie7e97)
- 접근성을 위해 AnnotatedString에서 SpannableString으로의 변환을 지원합니다. (Ief907)
PointerInputFilter.onPointerInput(...)
을 삭제했습니다. 대신PointerInputFilter.onPointerEvent(...)
를 사용해야 합니다. (I6f04a)
버전 1.0.0-alpha04
2020년 10월 1일
androidx.compose.foundation:foundation:1.0.0-alpha04
, androidx.compose.foundation:foundation-layout:1.0.0-alpha04
및 androidx.compose.foundation:foundation-text:1.0.0-alpha04
가 출시되었습니다. 버전 1.0.0-alpha04에 포함된 커밋을 확인하세요.
API 변경사항
- 스택의 이름이 Box로 변경되었습니다. 이전의 기존 foundation.Box는 지원 중단되고 compose.foundation.layout의 새 Box로 대체됩니다. 새 Box의 동작은 하위 요소가 여러 개인 경우 하위 요소를 겹겹이 쌓는 것입니다. 이는 Column과 유사하게 동작했던 이전 Box와 다릅니다. (I94893, b/167680279)
- Box 장식 매개변수가 지원 중단되었습니다. Box에 장식/패딩을 적용하려면 대신 수정자를 사용합니다(Modifier.background, Modifier.border, Modifier.padding). (Ibae92, b/167680279)
- 새 LazyListState 클래스를 추가합니다. 따라서 LazyRow 및 LazyColumn 구성요소의 스크롤 위치를 관찰하고 제어할 수 있습니다. rememberLazyListState()를 사용하여 인스턴스를 만들고 구성요소의 상태 매개변수로 전달할 수 있습니다. 현재 첫 번째 표시되는 항목과 오프셋을 이 초기 버전에서 관찰할 수 있습니다. (Ic7cb7, b/159307669)
- Lazy 목록 위치 및 스크롤 오프셋이 이제 활동 재생성 전체에서 저장되고 복원됩니다. (Ie045f, b/166589058)
- 긴 클릭 시맨틱 작업을 추가합니다. (I6281b, b/156468846)
- MutatorMutex 유틸리티가 추가되어 시간 경과에 따라 공유 상태의 단일 뮤테이터를 유지하고 우선순위에 따라 충돌하는 뮤테이터를 취소합니다. (I3f975)
- rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled, textInputServiceFactory에 @VisibleForTesting 주석을 달아 내부 API로 만들고 kdoc를 숨깁니다. (I554eb, b/168308412)
- 문자열 입력이 있는 텍스트에서 inlineContent 매개변수를 삭제했습니다. inlineContent는 AnnotatedString과 함께 작동해야 하므로 사용되지 않습니다. (Ief403)
- 지원 중단된 맞춤 Arrangement API를 삭제했습니다. (Ic576d, b/168297922, b/168297923)
unbounded
매개변수를 wrapContentSize 수정자에 추가했습니다. 따라서 무한 최대 제약 조건으로 레이아웃 요소를 측정할 수 있습니다. (I77951, b/158559319)- 레이아웃 범위 콘텐츠의 정적 가져오기(예: RowScope의 alignWithSiblings)를 방지했습니다. 대신 명시적인 대체 범위를 사용해야 합니다.
with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) }
(I216be, b/166760797)
버그 수정
- 여러 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)
- 스크롤 할 때마다 불필요한 재구성을 실행하지 않아 LazyColumnFor/LazyRowFor 스크롤의 성능 최적화를 지원합니다. (I64f65, b/168293643, b/167972292, b/165028371)
- 스크롤하고 항목을 변경한 후 LazyColumnFor/LazyRowFor에서 발생하는 비정상 종료를 수정하고, 이전에 표시된 항목이 삭제되었을 때 자동으로 위로 스크롤하도록 구현하여 마지막에 더 이상 빈 간격이 표시되지 않도록 했습니다. (I220ab, b/161480164, b/167855468)
- ScrollableContainer 및 LazyColumnFor와 같은 동일 방향 컨테이너에서 스크롤 가능한 중첩은 더 이상 허용되지 않습니다. 이는 전혀 지원된 적이 없었으며 LazyColumnFor 항목을 구성하는 데 있어 플링과 모든 지연을 없앴습니다. (I6e101)
- 여러 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)
- AccessibilityScrollState를 시맨틱 속성에 추가합니다. (Ifeda9)
- TextRange를 인라인으로 만들어 객체 생성을 방지합니다. (Id034b)
- ParagraphConstraints를 삭제했습니다. 이제 너비가 단락에 직접 전달됩니다. (Ica712)
버전 1.0.0-alpha03
2020년 9월 16일
androidx.compose.foundation:foundation:1.0.0-alpha03
, androidx.compose.foundation:foundation-layout:1.0.0-alpha03
및 androidx.compose.foundation:foundation-text:1.0.0-alpha03
가 출시되었습니다. 버전 1.0.0-alpha03에 포함된 커밋을 확인하세요.
API 변경사항
- InnerPadding이 PaddingValues로 이름이 바뀌었습니다. (I195f1, b/167389171)
- 레이아웃 API에서 중력 사용에 관한 이름이 align 또는 alignment로 일관성 있게 바뀌었습니다. (I2421a, b/164077038)
- 정렬 매개변수가 Stack에 추가되어 모든 Stack 하위 요소의 기본 정렬을 지정할 수 있습니다. (Ie80ca, b/164085265)
버그 수정
- DpConstraints 및 DpConstraints를 사용하는 API가 지원 중단되었습니다. (I90cdb, b/167389835)
widthIn
의 매개변수minWidth
및maxWidth
의 이름이min
및max
로 바뀌었습니다.preferredWidthIn
,heightIn
,preferredHeightIn
도 마찬가지입니다. (I0e5e1, b/167389544)- 현재 전역 메서드가 지원 중단될 예정이므로 onNode 및 다른 전역 메서드가 ComposeTestRule에 추가되었습니다. (Ieae36)
- 잘못된 스와이프 동작의 생성을 특히 유발하는 GestureScope의 크기 및 위치 계산을 수정했습니다. (Iaf358, b/166589947)
createAndroidComposeRule
및AndroidInputDispatcher
가androidx.ui.test.android
에서androidx.ui.test
로 이동했습니다. (Idef08, b/164060572)
버전 1.0.0-alpha02
2020년 9월 2일
androidx.compose.foundation:foundation:1.0.0-alpha02
, androidx.compose.foundation:foundation-layout:1.0.0-alpha02
및 androidx.compose.foundation:foundation-text:1.0.0-alpha02
가 출시되었습니다. 버전 1.0.0-alpha02에 포함된 커밋을 확인하세요.
버그 수정
- TestUiDispatcher가 실험용으로 표시됩니다. (Iae99d, b/161247083)
클록에서 프레임을 기다리는 것이 있는지 확인하기 위해
ManualFrameClock.hasAwaiters
가 추가되었습니다. ManualFrameClock이 필요한 테스트를 실행할 때runBlocking
이runWithManualClock
으로 대체됩니다.TestUiDispatcher.Main
으로 테스트에서 기본 UI 디스패처에 쉽게 액세스할 수 있습니다.예:
@Test fun myTest() = runWithManualClock { clock -> // set some compose content withContext(TestUiDispatcher.Main) { clock.advanceClock(1000L) } if (clock.hasAwaiters) { println("The clock has awaiters") } else { println("The clock has no more awaiters") } }
버전 1.0.0-alpha01
2020년 8월 26일
androidx.compose.foundation:foundation:1.0.0-alpha01
, androidx.compose.foundation:foundation-layout:1.0.0-alpha01
및 androidx.compose.foundation:foundation-text:1.0.0-alpha01
가 출시되었습니다. 버전 1.0.0-alpha01에 포함된 커밋을 확인하세요.
버전 0.1.0-dev
버전 0.1.0-dev17
2020년 8월 19일
androidx.compose.foundation:foundation:0.1.0-dev17
, androidx.compose.foundation:foundation-layout:0.1.0-dev17
및 androidx.compose.foundation:foundation-text:0.1.0-dev17
가 출시되었습니다. 버전 0.1.0-dev17에 포함된 커밋을 확인하세요.
API 변경사항
- 행 및 열에 spacedBy Arrangment가 추가되어 레이아웃 하위 요소를 고정 간격으로 배치할 수 있습니다. 정렬된 Arrangment도 추가되어 레이아웃 하위 요소를 나란히 배치하고 Alignment에 따라 행/열에 정렬할 수 있습니다. 이전의 Arrangement.Vertical#arrange 및 Arrangement.Horizontal#arrange 메서드는 지원 중단되었으며 맞춤 Arrangement 작성은 향후에 지원되지 않습니다. (I6733d, b/161985975)
- Offset이 인라인 클래스가 되었습니다. (Iaec70)
- TextField에서 onFocusChanged 콜백을 삭제했습니다. 대신 Modifier.focusObserver를 사용해야 합니다. (I51089, b/161297615)
- Modifier.drawBorder가 지원 중단되었습니다. 대신 Modifier.border를 사용하세요. Border 데이터 클래스를 BorderStroke로 대체했습니다. (I4257d, b/158160576)
- VerticalScroller 및 HorizontalScroller를 삭제했습니다. 대신 ScrollableColumn/Row를 사용해야 합니다. Modifier.drawBackground를 삭제했습니다. Modifier.background를 사용해야 합니다. (I73b0d, b/163019183)
- 지원 중단된 fillMax* 수정자로 표시된 수정자를 LazyItemScope에서 삭제합니다. LazyColumnFor의 직접 하위 요소가 아닌 항목에 대해 이러한 수정자를 정확하게 추가하기 어렵기 때문입니다. (Ifa78d)
- LazyColumn/LazyRow 구현을 DSL로 추가했습니다. (I93cc6)
- Constraints는 이제 인라인 클래스입니다. (I88736)
- fillMaxWidth, fillMaxHeight 및 fillMaxSize 수정자를 통해 사용 가능한 공간의 일부에 레이아웃 크기를 조정하는 기능을 추가했습니다. (I945bb, b/161562591)
버그 수정
- SelectionContainer에 수정자 매개변수가 추가되었습니다. (I4aada, b/161487952)
- SemanticsPropertyKey에 mergePolicy 람다를 추가했습니다. 이는 mergeAllDescendants 의미 체계 병합을 위한 맞춤 정책을 정의하는 데 사용할 수 있습니다. 기본 정책은 상위 값이 이미 있다면 상위 값을 사용하고 상위 값이 없으면 하위 값을 사용하는 것입니다. (Iaf6c4, b/161979921)
PlacementScope.placeAbsolute()
의 이름이PlacementScope.place()
로 변경되었으며 이전PlacementScope.place()
의 이름은PlacementScope.placeRelative()
로 변경되었습니다. 따라서PlacementScope.place()
메서드는 더 이상 RTL 컨텍스트의 위치를 자동으로 미러링하지 않습니다. 이를 원한다면PlacementScope.placeRelative()
를 대신 사용해야 합니다. (I873ac, b/162916675)- 지원 중단된 FilledTextField 구성요소를 삭제했습니다. 채워진 텍스트 입력란의 Material Design 구현을 얻으려면 대신 TextField를 사용하세요. (I5e889)
- LinearProgressIndicator에 backgroundColor 매개변수를 추가하고 CircularProgressIndicator에서 내부 패딩을 삭제했습니다. 값 사이의 진행률을 애니메이션화할 때 기본 AnimationSpec으로 사용할 수 있는 새로운 ProgressIndicatorConstants.DefaultProgressAnimationSpec을 추가했습니다. (If38b5, b/161809914, b/161804677)
state { ... }
컴포저블이 이제 지원 중단되고 명확성을 위해 명시적remember { mutableStateOf(...) }
호출로 대체됩니다. 이렇게 하면 전체 API 노출 영역 및 상태 관리를 위한 개념 수가 감소하고 클래스 속성 위임을 위한by mutableStateOf()
패턴과 일치합니다. (Ia5727)- Compose 이름 지정 패턴에 더 잘 맞게 RRect의 이름을 RoundRect로 변경했습니다. RRect와 유사한 함수 생성자를 만들었으며 RRect 함수 생성자는 지원 중단되었습니다. (I5d325)
- onChildPositioned 및 OnChildPositionedModifier를 삭제했습니다. 개발자는 하위 레이아웃에서 onPositioned 및 OnPositionedModifier를 대신 사용해야 합니다. (I4522e, b/162109766)
- IntSize는 이제 인라인 클래스입니다. (I2bf42)
- 수정할 빈 영역을 길게 누릅니다. (Ib1e5b)
- 텍스트를 탭한 후 FloatingToolbar를 숨깁니다. (If4525)
- 선택을 업데이트할 때 FloatingToolbar를 숨깁니다. (I8444c)
- 블러 시 선택을 해제합니다. (I781a2)
버전 0.1.0-dev16
2020년 8월 5일
androidx.compose.foundation:foundation:0.1.0-dev16
, androidx.compose.foundation:foundation-layout:0.1.0-dev16
및 androidx.compose.foundation:foundation-text:0.1.0-dev16
가 출시되었습니다. 버전 0.1.0-dev16에 포함된 커밋을 확인하세요.
API 변경사항
- Lazy 목록의 itemContent 매개변수에 관한 LazyItemScope를 추가했습니다. 이는 항목이 표시 영역을 채워야 하며 항목이 무한대 제약 조건으로 측정될 때 일반 Modifier.fillMaxSize()가 작동하지 않는 경우 사용 사례를 해결하는 상위 요소 최대 크기를 채우는 수정자를 제공합니다. (Ibd3b2, b/162248854)
- 대화상자를 UI로 이동합니다. (I47fa6)
- itemCallback의 색인과 항목을 모두 제공하는 LazyColumnFor/LazyRowFor 버전인 LazyColumnForIndexed/LazyRowForIndexed를 추가했습니다. 이는 현재 항목 외에 현재 색인을 알아야 할 때 유용합니다. (I65ff3)
- Modifier.deternimateProgress 이름을 Modifier.progressSemantics로 바꿨습니다. (I9c0b4)
- LazyColumnItems 이름을 LazyColumnFor로 바꿨습니다. LazyRowItems 이름을 LazyRowFor로 바꿨습니다. (I84f84)
- 권장사항을 위해 몇 가지 표시/주석을 추가합니다. (I66b20)
- foundation.shape.corner 패키지가 foundation.share로 평면화되었습니다. (I46491, b/161887429)
- LazyRowItems/LazyColumnItems에 관한 сrossaxis 중력 매개변수를 추가했습니다. LazyRowItems/LazyColumnItems는 이제 콘텐츠 래핑 동작을 지원합니다. (Ib39fc)
- ZoomableState 이름을 ZoomableController로 바꿨습니다. smoothScale에 관한 맞춤 곡선 지원을 추가했습니다.
enabled
및onZoomStarted
기능을 추가했습니다. (If8b8f) - Material FilledTextField는 TextField로 이름이 바뀌었으며 기본 TextField는 BaseTextField로 이름이 바뀌어 원하는 가장 간단한 API를 쉽게 찾고 사용할 수 있습니다. (Ia6242, b/155482676)
- 이전에 지원 중단된 AdapterList를 삭제했습니다. 대신 LazyColumnItems를 사용합니다. (I12b9b)
- Modifier.drawBackground 이름을 Modifier.background로 바꿨습니다. (I13677)
- 이전 ConstraintLayout DSL을 삭제했습니다. ConstraintSet2 이름을 ConstraintSet으로 바꿨습니다. (If58d1, b/162450908)
- Modifier.absoluteOffset() 및 Modifier.absoluteOffsetPx()를 추가했습니다. 오프셋 수정자와 달리 절대 오프셋 수정자는 오른쪽에서 왼쪽 컨텍스트에서 자동 미러링되지 않습니다. (I3aa21)
Row
및Column
은 이제 인라인 함수이며 이러한 함수를 사용하는 오버헤드가 상당히 감소합니다. (I75c10)
버그 수정
- 광범위한 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를 업데이트했으며 사용하지 않는 메서드를 삭제했습니다.
MonotonicFrameClock을 AnimationClockObservable로 사용할 수 있게 하는 MonotonicFrameAnimationClock을 추가하여 새로운 코루틴 기반 클록과 여전히 이전 콜백 기반 클록을 사용하는 API 간의 간극을 메웠습니다.
ManualAnimationClock에 상응하는 MonotonicFrameClock은 이제 ManualFrameClock입니다. (I111c7, b/161247083)
SemanticsNodeInteraction.performPartialGesture
을 삭제했습니다. 대신SemanticsNodeInteraction.performGesture
를 사용해야 합니다. (Id9b62)SemanticsNodeInteraction.getBoundsInRoot()
이름을SemanticsNodeInteraction.getUnclippedBoundsInRoot()
로 바꿨습니다. (Icafdf, b/161336532)오른쪽에서 왼쪽 지원을 위한 API가 업데이트되었습니다. LayoutDirectionAmbient가 추가되어 레이아웃 방향을 읽고 변경하는 데 사용할 수 있습니다. Modifier.rtl 및 Modifier.ltr이 삭제되었습니다. (I080b3)
Modifier.plus가 지원 중단되었습니다. 대신 Modifier.then을 사용해야 합니다. 'then'에는 더 강력한 순서 지정 신호가 있지만 체인을 끊으며 읽기가 더 어려운
Modifier.padding().background() + anotherModifier
입력도 금지합니다. (Iedd58, b/161529964)isFocused()
및isNotFocused()
SemanticsMatcher를 추가했습니다. (I0b760)RemeasurementModifier가 추가되었습니다. 이를 통해 사용자는 레이아웃을 동기식으로 다시 측정할 수 있습니다. 일반적으로 재측정/레이아웃 재지정이 자동으로 발생하므로 이 수정자가 필요하지 않지만 스크롤하는 동안 LazyColumnItems 내에서 이 수정자를 사용합니다. (I5f331, b/160791058)
isSystemInDarkTheme은 이제 항상 시스템 전체의 어두운 테마 설정을 고려하며 최신 가이드에 따라 Q 이전의 절전 상태를 무시합니다. (I0c10c)
OnChildPositioned가 지원 중단되었습니다. 대신 하위 요소에서 OnPositioned를 사용해야 합니다. (I87f95, b/162109766)
AndroidComposeTestRule 이름을 createAndroidComposeRule로 바꿨습니다. (I70aaf)
TextLayoutResult를 가져오는 접근성 작업이 추가됩니다. (I9d6e6)
버전 0.1.0-dev15
2020년 7월 22일
androidx.compose.foundation:foundation:0.1.0-dev15
, androidx.compose.foundation:foundation-layout:0.1.0-dev15
및 androidx.compose.foundation:foundation-text:0.1.0-dev15
가 출시되었습니다. 버전 0.1.0-dev15에 포함된 커밋을 확인하세요.
Compose의 0.1.0-dev15
버전을 사용하려면 다음을 수행해야 합니다.
종속 항목 업데이트
- Compose의
0.1.0-dev15
버전을 사용하려면 위의 종속 항목 선언에 표시된 새로운 코드 스니펫에 따라 종속 항목을 업데이트해야 합니다.
API 변경사항
- ScrollableColumn/ScrollableRow의 새로운 매개변수와 마찬가지로, LazyColumnItems/LazyRowItems도 이제 잘린 콘텐츠에 패딩을 추가할 수 있는 contentPadding 매개변수를 갖습니다(패딩 추가는 수정자 매개변수로는 불가능함). 또한 첫 번째 항목 앞과 마지막 항목 뒤에만 공백을 추가하도록 허용합니다. (Ibc24e)
- 텍스트 필드의 onFocusChange 콜백 이름을 onFocusChanged로 바꿨습니다. (Ida4a1)
- VerticalScroller와 HorizontalScroller는 지원 중단되었습니다. 열/행 동작 및 매개변수를 사용하는 내장 환경에는 ScrollableColumn과 ScrollableRow를 사용하고, 개발자의 자체 요소에는 Modifier.verticalScroll 및 Modifier.horizontalScroll을 사용하세요. 마찬가지로, ScrollerPosition이 지원 중단되고 ScrollState로 대체되었습니다. (I400ce, b/157225838, b/149460415, b/154105299)
- Modifier.draggable 및 Modifier.scrollable API는 다시 작동합니다. DragDirection은 삭제되고 Orientation으로 대체되었습니다. 스크롤에 필요한 상태가 간소화되었습니다. ScrollableState의 이름이 ScrollableController로 바뀌었습니다. (Iab63c, b/149460415)
- 이제 단일 값 시맨틱 속성에 호출 스타일이 사용됩니다.
예를 들어, 이제 'semantics { hidden = true }'는
semantics { hidden() }
으로 작성됩니다. (Ic1afd, b/145951226, b/145955412) - RoundedCornerShape 및 CutCornerShape에 사용되는 모서리를 50%보다 더 큰 크기로 사용할 수 있습니다. (Id2340, b/160400213)
- Image 컴포저블의 기본 ContentScale 매개변수를 Inside에서 Fit로 변경했습니다. 이같이 변경한 이유는 레이아웃 크기가 Painter의 고유 크기보다 큰 경우 가로세로 비율을 그대로 유지하면서 기본 Painter를 확장하는 동작을 얻기 위함입니다. 이 동작은 컴포저블 크기 계산에 고유 크기만 사용하는 경우 기본 동작에 영향을 주지 않으면서, 이미지에 고정된 크기를 제공해야 하는 기대에 더 정확하게 부응합니다. (I40ae3, b/159838006)
- 정적 애니메이션 사양 개념을 명확하게 하려면 최상위 API에서 AnimationBuilder 대신 AnimationSpec을 사용하세요. -트윈, 스프링과 같은 AnimationSpec을 만들기 위한 람다 요구사항을 삭제하여 전환 DSL을 개선합니다. 대신 생성자 매개변수가 직접 사용됩니다. -빌더에 의존하는 대신 생성자를 열어 AnimationSpec의 사용 편의성이 전반적으로 향상됩니다. -KeyFrames와 Tween의 재생 시간과 지연이 Int로 변경됩니다. 이를 통해 불필요한 유형 변환 및 메서드 오버로드가 사라집니다(Long과 Int를 모두 지원하는 경우). (Ica0b4)
- Clickable이 삭제되었습니다. Modifier.clickable를 사용하세요. (I84bdf)
- LazyRowItems가 추가되었습니다. 이는 가로로 스크롤하는 LazyColumnItems 유사체입니다. (Ibbcf7)
- 낮은 수준의 스테이트리스(Stateless) 애니메이션 API가 도입되었습니다. (I63bf7)
- androidx.ui.foundation.TextFieldValue 및 androidx.ui.input.EditorValue는 지원 중단되었습니다. 이 유형을 사용하는 TextField, FilledTextField, CoreTextField 컴포저블도 지원 중단되었습니다. 대신 androidx.ui.input.TextFieldValue를 사용하세요. (I4066d, b/155211005)
- IntPx 사용을 Int로 대체했습니다. IntPxPosition은 IntOffset으로 대체했습니다. IntPxSize를 IntSize로 대체했습니다. (Ib7b44)
- androidx.ui.foundation.shape.RectangleShape가 삭제되었습니다. 대신 androidx.ui.graphics.RectangleShape를 사용하세요. (I94939, b/154507984)
- 크기 정보를 표시하는 데 사용되는 클래스의 수를 통합하려면 PxSize 대신 Size 클래스 사용을 표준화합니다. 이렇게 하면 인라인 클래스의 이점을 제공하여 부동 소수점으로 표시된 너비와 높이를 나타내는 long-pack 2 부동 소수점 값을 활용할 수 있습니다. (Ic0191)
- 위치 정보를 나타내는 데 사용되는 클래스 수를 통합하려면 PxPosition 대신 Offset 클래스 사용을 표준화합니다. 이렇게 하면, 인라인 클래스의 이점을 제공하여 부동 소수점으로 표시된 x 및 y 오프셋을 나타내는 long-pack 2 부동 소수점 값을 활용할 수 있습니다. (I3ad98)
- 손가락으로 모으거나 펼쳐 확대/축소하는 기능을 위해 Modifier.zoomable이 추가되었습니다. (Id5d63)
- Toggleable 구성요소가 지원 중단되었습니다. 대신 Modifier.toggleable을 사용하세요. (I35220, b/157642842)
- MutuallyExclusiveSetItem이 지원 중단되었습니다. 대신 Modifier.selectable을 사용하세요. (I02b47, b/157642842)
- 이제 TestTag는 지원 중단됩니다. 대신 Modifier.testTag를 사용하세요. (If5110, b/157173105)
- 이전에 실수로 추가되지 않았던 fontWeight 매개변수가 Text에 추가되었습니다. (I56937)
- 여러 컴포즈 클래스에서 Px 클래스가 더 이상 대규모 리팩터링 작업의 일부로 사용되지 않습니다. 픽셀 매개변수에는 Dp 유형과 기본 유형만 사용됩니다. (I19d02)
- 이제 VerticalScroller에서 즉시 Column을 제공합니다. 이제 HorizontalScroller에서 즉시 Row를 제공합니다. (Ieca5d, b/157020670)
- 여러 컴포즈 클래스에서 Px 클래스가 더 이상 대규모 리팩터링 작업의 일부로 사용되지 않습니다. 픽셀 매개변수에는 Dp 유형과 기본 유형만 사용됩니다. (Iede0b)
- Modifier.indication을 기본 패키지에 추가했습니다. 이 패키지를 사용하여 상호작용 가능한 맞춤 요소에 누르기/드래그/기타 표시를 나타낼 수 있습니다. (I8425f, b/155287131)
- 이제 isReversed가 ScrollerPosition에 설정되어 있으면 VerticalScroller 및 HorizontalScroller가 역 스크롤을 지원합니다. (I953bd)
- 텍스트 레이아웃에 컴포저블을 추가할 수 있습니다. (I1373c)
- CanvasScope 구현이 통합되어 이제 DrawScope와 ContentDrawScope만 있습니다. CanvasScope 이름을 DrawScope로 바꿨습니다. DrawScope는 Density 인터페이스를 구현하고 LayoutDirection을 제공하도록 업데이트되었으며 ContentDrawScope의 DrawScope 서브클래스는 삭제되었습니다. RTL 속성을 수동으로 제공하지 않아도 이미 DrawScope에서 제공하므로 Painter와 PainterModifier가 더 이상 RTL 속성을 자체적으로 유지하지 않도록 업데이트되었습니다. (I1798e)
- 지원 중단된 DrawBackground API를 삭제하고 수정자의 drawBackground 확장 API로 대체했습니다. 코드 경로를 줄이고 수정자를 구성의 일부로 생성할 필요가 없도록 색상, 브러시 및 페인트 drawBackground 구현을 리팩터링했습니다. (I0343a)
- 캔버스를 노출하여 CanvasScope를 대신 노출하는 상위 수준 Compose API를 업데이트했습니다. 따라서 소비자가 자체 Paint 객체를 유지하지 않아도 됩니다. 캔버스에 계속 액세스해야 하는 소비자의 경우 콜백을 제공하여 기본 캔버스에서 그리기 명령어를 실행하는 drawCanvas 확장 메서드를 사용하면 됩니다. (I80afd)
- 이제 HorizontalScroller 및 VerticalScroller가 저장된 인스턴스 상태를 사용하여 스크롤 위치를 복원합니다. (Ia0fae, b/155075048)
- FocusManagerAmbient가 삭제되었습니다. 포커스를 가져오려면 FocusModifier.requestFocus를 사용합니다. (Ic4826)
- 새로고침된 API로 다시 사용할 수 있게 될 때까지 테이블 레이아웃이 일시적으로 삭제되었습니다. (Id88a7)
캔버스 객체를 래핑하여 스테이트리스 선언적 그리기 API 표면을 노출하는 CanvasScope API를 만들었습니다. 변환은 자체 수신기 범위 내에 포함되며 크기 정보도 상응하는 인셋 경계로 범위가 지정됩니다. 소비자가 그리기 작업을 구성하기 위해 자체 Paint 상태 객체를 유지할 필요는 없습니다.
선언적 그래픽 데모를 포함하기 위해 CanvasScopeSample을 추가하고 데모 앱을 업데이트했습니다. (Ifd86d)
ColoredRect가 삭제되었습니다. 대신 drawBackground 수정자와 함께 Box를 사용하세요. (I983c7, b/152753731)
커서 색상 맞춤설정이 TextField에 추가됩니다. (I6e33f)
이제 onTextInputStarted 콜백에서 제공하는 SoftwareKeyboardController를 사용하여 소프트웨어 키보드를 숨기거나 표시할 수 있습니다. (I8dc44, b/151860051)
이제 TextField와 함께 사용되는 TextFieldValue가
var text by savedInstanceState(saver = TextFieldValue.Saver) { TextFieldValue() }
와 같이 사용되면 활동 재현에도 유지될 수 있습니다. (I5c3ce, b/155075724)일반적으로 사용되는 매개변수가 Text()에 추가됩니다.
Text(style = TextStyle(textAlign = TextAlign.Center))
와 같이 현재 로컬 텍스트 스타일을 만들어 소수의 매개변수를 전달하고 있다면 이제Text(textAlign = TextAlign.Center)
와 같이 매개변수를 직접 제공할 수 있습니다. (I82768)포커스 하위 시스템과 통합하기 위해 CoreTextField/TextField focusIdentifier 매개변수를 FocusNode로 대체했습니다. (I7ea48)
TextField 업데이트 - 가로 측정기준에서 부여된 모든 사용 가능한 공간을 차지합니다. (Ib08df, b/154638552)
InteractionState 및 Interaction을 추가했습니다. 따라서 UI 상태 변경(예: 누르기, 드래그)에 반응하는 구성요소를 더 쉽게 빌드할 수 있습니다. (Icfe25, b/152525426)
RectangleShape을 androidx.ui.foundation.shape.*에서 androidx.ui.graphics.*로 이동했습니다. (Ia74d5, b/154507984)
API의 모든 null을 허용하는 Color 사용을 null을 허용하지 않는 것으로 대체했습니다. null 대신 Color.Unset을 사용하세요. (Iabaa7)
TextField API 업데이트: onFocus 및 onBlur 콜백이 매개변수가 있는 단일 onFocusChange(불리언) 콜백으로 병합되었습니다. (I66cd3)
ScaleFit의 이름이 ContentScale로 변경되었습니다. Alignment API와 동일한 모듈에 위치하도록 ContentScale을 ui-graphics에서 ui-core 모듈로 이동했습니다. FillMaxDimension의 이름을 Crop으로 바꾸고 FillMinDimension의 이름을 Fit으로 바꾸었습니다. ImageView.ScaleType에 해당하는 항목에 더 어울리도록 Fit의 이름을 Inside로 바꾸었습니다. Crop과 Alignment.Center를 조합하면 ImageView.ScaleType.CENTER_CROP과 동일한 결과를 얻고, Fit을 Alignment.Center와 함께 사용하면 ImageView.ScaleType.FIT_CENTER와 동일한 결과를 얻으며, Inside를 Alignment.Center와 함께 사용하면 ImageView.ScaleType.CENTER_INSIDE와 동일한 결과를 얻는다는 점을 설명하는 문서를 추가했습니다. (I45f09, b/152842521)
ProvideContentColor를 삭제했습니다. 대신
Providers
와 함께 ContentColorAmbient를 사용하세요. (Iee942)텍스트에 색상 매개변수를 추가하여 테마에 제공된 스타일과 수동으로 병합하지 않고도 텍스트 스타일의 색상을 재정의할 수 있습니다. (I41a66)
다음과 같이 DrawModifier API가 개선됩니다.
- draw()의 수신기 범위를 ContentDrawScope으로 설정했습니다.
- draw()의 모든 매개변수를 삭제했습니다.
- DrawScope는 이전 CanvasScope와 동일한 인터페이스를 사용합니다.
- ContentDrawScope에 drawContent() 메서드가 있습니다. (Ibaced, b/152919067)
ColoredRect가 지원 중단되었습니다. 대신
Box(Modifier.preferredSize(width, height).drawBackground(color))
를 사용하세요. (I499fa, b/152753731)도형 테마 설정 시스템이 Material Design 사양에 따라 업데이트됩니다. 이제 대부분의 구성요소에 사용되는 소형, 중형, 대형 도형을 제공할 수 있습니다. (Ifb4d1)
수정자와 연산자를 팩토리 확장 함수로 대체했습니다.(I225e4)
드래그 가능 항목을 수정자로 이동했습니다. (Id9b16, b/151959544)
Text
를 androidx.ui.core에서 androidx.ui.foundation 패키지로 이동했습니다. (I87ce5)Checkbox, Switch 및 Toggleable에
enabled
매개변수를 추가합니다. (I41c16)물결 효과는 이제 수정자입니다. Clickable이 아직 전환되지 않은 동안 권장되는 사용법은
Clickable(onClick = { ... }, modifier = ripple())
입니다. (Ie5200, b/151331852, b/150060763)벡터 그래픽용 기존 하위 구성 API를 대체하는 VectorPainter API를 추가했습니다. 하위 구성의 결과는 DrawModifier가 아닌 VectorPainter 객체입니다. 이전의 DrawVector 컴포저블을 지원 중단하고 VectorPainter로 대체했습니다.
Image(Painter)
API의 이름이PaintBox(Painter)
로 바뀌었습니다. Image 컴포저블처럼 작동하는 Vector 컴포저블을 만들었습니다(단, ImageAsset 대신 VectorAsset을 사용하는 경우 제외). (I9af9a, b/149030271)지정된 ImageAsset을 화면에 그리는 것 외에 크기 조정/레이아웃도 처리하는 Image 컴포저블을 만들었습니다. 이 컴포저블은 또한 고유의 크기를 고려하면서도 주어진 고정 크기나 최소 크기를 지원하며 임의의 Painter 인스턴스 그리기를 지원합니다. (Ibcc8f)
이제 Button, FloatingActionButton, Clickable에 별도의
enabled
매개변수가 있습니다. Button의 일부 매개변수가 이름이 변경되거나 재정렬되었습니다. (I54b5a)레이아웃에 참여하고 콘텐츠를 그리는 데 사용되는 예정된 Image 컴포저블과 Image 데이터 사이의 차이를 더 잘 구분하기 위해 Image 이름을 ImageAsset으로 바꾸었습니다.
기존 Android 애플리케이션 개발을 작성 프레임워크와 결합하는 데 유용한 ImageAsset 인스턴스를 만들 수 있도록 android.graphics.Bitmap
Bitmap.asImageAsset()
에서 확장 메서드를 만들었습니다. (Id5bbd)DrawImage 컴포저블이 삭제되었습니다. 기존 레이아웃에 이미지를 그릴 때는 ImagePainter를 사용하고, 공간을 차지하는 이미지를 넣을 때는 SimpleImage를 사용하세요. (I595e1, b/149827027)
스택 구성요소가 오른쪽에서 왼쪽 방향을 지원합니다. (Ic9e00)
Icon, IconButton, IconToggleButton을 추가하고 AppBarIcon을 삭제했습니다. 기존의 AppBarIcon 사용을 IconButton으로 직접 대체할 수 있으며 이제 터치 타겟이 올바르게 지정됩니다. 사용법 정보는 샘플을 참고하고 이러한 구성요소와 함께 직접 사용할 수 있도록 제공되는 머티리얼 아이콘을 확인하려면 Icons를 참고하세요. (I96849)
DrawShape 컴포저블이 삭제되었습니다. 대신 DrawBackground 수정자를 사용하세요. (I7ceb2)
표시되는 항목만 작성하고 배치하는 스크롤 목록 구성요소인 AdapterList를 추가했습니다. 현재 알려진 문제는 이 기능이 세로 모드에만 가능하고 하위 요소에서 발생하는 모든 변경 사례를 완전히 처리하지는 않는다는 점입니다. (Ib351b)
스크롤 가능한 구성요소가 추가되어 맞춤 스크롤러/목록을 만들 수 있습니다. (I5fd37)
자연스럽게 기억할 수 있도록background의 이름을 DrawBackground로 변경했습니다. (Ia0bd3)
패딩, 테두리, 모양, 배경 매개변수가 Box에 추가됩니다. (I05027, b/148147281)
Canvas 구성요소를 추가했습니다. 크기(사용자가 제공함)를 일부 차지하는 이 컴포저블은 CanvasScope를 사용한 그리기를 허용합니다. (I0d622)
Border
수정자의 이름을DrawBorder
로 바꿨습니다. (I8ffcc)레이아웃과 그리기 공통 기능을 결합하기 위한 Box 구성요소를 추가했습니다. (I6e2a7)
이제 스크롤러가 네이티브 Android 플링 모션 동작을 표시합니다. (I922af, b/147493715)
DrawBorder를 Border 수정자로 대체했습니다. (Id335a)
Modifier.tag는 Modifier.testTag와 혼동을 피하고자 Modifier.layoutId로 이름이 바뀌었습니다. (I995f0)
ConstraintLayout 가이드라인을 만들 때 비율 매개변수의 이름이 분수로 변경되었습니다. (Ida2db)
ConstraintLayout 배리어의 여백 지원이 추가되었습니다. (I47ffe)
ConstraintLayout의 RTL 지원이 수정되었습니다. RTL을 인식하지 못하는 API가 추가되었습니다. (I3b1c7)
ConstraintLayout을 위한 새 DSL이 추가되었습니다. 자세한 내용은 샘플을 참조하세요. (Icaa9a)
@ExperimentalLayout 주석이 추가되었습니다. 이제 ConstraintLayout, FlowRow 및 FlowColumn을 이 주석으로 태그하여 API가 변경될 예정인 것을 표시합니다. (I412a8)
Modifier.padding(InnerPadding)
이 추가되었습니다. (I94985, b/157133803)Row 및 Column에서 지원 중단된 RowAlign, ColumnAlign이 삭제되었습니다. (If60d4, b/155858731)
지원 중단된 LayoutTag()를 삭제했습니다. 대신 Modifier.tag()를 사용하세요. 지원 중단된 Modifier.matchParent()가 삭제되었습니다. 대신 Modifier.matchParentSize()를 사용하세요. (If8044)
(동적) 오프셋(단위: px)을 정의하는 데 사용할 수 있는 offsetPx 레이아웃 수정자가 추가되었습니다. (I5af57)
AlignmentLineOffset 컴포저블이 지원 중단되었습니다. relativePaddingFrom() 수정자를 대신 사용하세요. CenterAlignmentLine 컴포저블을 삭제했습니다. (I60107)
상응하는 수신 제약 조건이 지정되지 않은 경우에만(최소 제약 조건은 0, 최대 제약 조건은 무한대) 크기 제약 조건을 래핑된 레이아웃으로 설정하는 defaultMinSizeConstraints 레이아웃 수정자를 추가했습니다. (I311ea, b/150460257)
Container가 삭제되었습니다. 대신 Box를 사용하세요. (Ibbc2b, b/151407926)
지원 중단된 LayoutWidth/Height/Size 수정자가 삭제되었습니다. (Ib0bc1)
오프셋 수정자의 기본 매개변수 값을 추가했습니다. (I37f06)
대칭 패딩 수정자를 추가했습니다. (I39840)
지원 중단된 LayoutAspectRatio 수정자를 삭제했습니다. (I65a74)
지원 중단된 LayoutAlign 수정자를 삭제했습니다. (I10877)
반대 축 제약 조건 없이 래핑된 레이아웃을 측정하게 했던 너비 및 높이 수정자의 버그를 수정했습니다. (I210b8, b/154797971)
Row와 Column에 각각 verticalGravity 및 horizontalGravity 매개변수를 추가했습니다. (I7dc5a)
임의의 Alignment가 아닌 세로 또는 가로 Alignment를 예상하도록 wrapContentWidth 및 wrapContentHeight를 업데이트했습니다. 중력 수정자가 세로 또는 가로 Alignment를 허용하도록 업데이트되었습니다. 맞춤 연속 Alignment를 지원하기 위해 Row, Column, Stack이 업데이트되었습니다. (Ib0728)
정렬을 임의의 값으로 인스턴스화할 수 있게 만들었습니다. 1D 정렬을 추가했습니다. (Ia0c05)
EdgeInsets 이름을 InnerPadding으로 바꿨습니다. Material Buttons의 innerPadding 매개변수 이름을 padding으로 바꿨습니다. (I66165)
이제 alignToSiblings는 Placeable이 아닌 Measured를 허용합니다. (I5788d)
내장된 측정에 크기 조정을 위한 수정자를 추가하고 이 목적으로 사용되는 구성요소를 지원 중단했습니다. (I8295d)
ConstraintLayout의 하위 요소에 관한 맞춤 측정기준을 위한 지원을 추가했습니다. (Idb1a5)
지원 중단된 Wrap 및 Center 컴포저블을 삭제했습니다. (I29e23)
레이아웃 수정자를 정의하는 새 API인 LayoutModifier2를 추가했으며, LayoutModifier를 지원 중단했습니다. (If32ac)
행 및 열 외부에서 RowScope 및 ColumnScope 멤버에 액세스할 수 있습니다. (I3a641)
Container가 지원 중단되었습니다. 대신 Box를 사용하세요. (I675ce, b/151407926)
레이아웃 위치 오프셋을 위한 LayoutOffset 수정자를 추가했습니다. (I0b8a3)
작성 레이아웃에서 RTL을 최초로 지원합니다. (Ia5519)
더 이상 사용 가능한 공간을 채우지 않도록 LayoutAlign을 업데이트했습니다. (I2b14f)
AspectRatio 컴포저블을 삭제하고 수정자로 대체했습니다. 더 이상 사용되지 않는 FlexColumn, FlexRow 컴포저블 및 Spacing 수정자를 삭제했습니다. (Iec8a7)
행 및 열의 LayoutInflexible 수정자를 삭제했습니다. (I0d820)
TextField Selection을 변경할 수 있는 드래그 선택 핸들이 구현됩니다. (I27032)
TextField Selection을 위한 LongPressAndDrag가 구현되었습니다. (I17919)
버그 수정
- FocusModifier는 지원 중단되고 Modifier.focus, Modifier.focusRequester, Modifier.focusObserver로 대체되었습니다. FocusState 및 FocusDetailedState가 지원 중단되고 FocusState2로 대체되었습니다. (I46919, b/160822875, b/160922136)
runOnIdleCompose
이름을runOnIdle
로 바꿨습니다. (I83607)- 여러 테스트 API의 이름이 더 직관적으로 바뀌었습니다. 모든 findXYZ API의 이름이 onNodeXYZ로 바뀌었습니다. 모든 doXYZ API의 이름이 performXYZ로 바뀌었습니다. (I7f164)
- 이전에 지원 중단된 Modifier.ripple을 삭제합니다. 이제 clickable이 ripple을 기본 표시로 사용하므로(애플리케이션에 MaterialTheme{} 세트가 있는 경우) 대부분의 경우 clickable을 사용하여 자유롭게 ripple 표시를 가져올 수 있습니다. ripple의 색상/크기/제한 매개변수를 맞춤설정해야 한다면 수동으로 RippleIndication을 만들어 표시 매개변수로 clickable에 전달하면 됩니다. (I663b2, b/155375067)
- 더 이상 사용되지 않는 크기 테스트 API를 삭제했습니다. (Iba0a0)
- LayoutNode 실험용 API를 제작했습니다. (I4f2e9)
- Compose에서 스크롤 방향 잠금의 버전 1이 구현되었습니다. (I1ce7a, b/150289741)
- 이제 팝업, 대화상자 및 메뉴는 상황별 MaterialTheme을 상속합니다. (Ia3665, b/156527485)
- Layout() 함수의 측정 블록에서 레이아웃 방향 매개변수를 삭제했습니다. 하지만 레이아웃 방향은 측정 범위 객체를 통해 콜백 내에서 사용할 수 있습니다. (Ic7d9d)
- AbsoluteArrangement가 추가됩니다. 이 항목을 사용하면 RTL에서 자동 미러링 없이 Row 내에서 하위 요소를 정렬할 수 있습니다. (I3a1df)
- @Untracked 주석이 지원 중단되었습니다. @ComposableContract(tracked=false)로 대체했습니다. (Id211e)
- 이 변경 전에 Compose 컴파일러 플러그인은 @Composable 함수 내에 있는 생성자 호출(있는 경우)을 특별한 방식으로 가로챘습니다. (I5205a, b/158123804)
- Activity 또는 Fragment에서 작동하는 방식과 유사하게 ViewModel을 만들거나 이미 만들어진 ViewModel을 가져올 수 있는
viewModel()
컴포저블이 추가되었습니다. (I5fdd1) 반경 클래스를 인라인 클래스로 리팩터링했습니다. y축의 반경이 필수 x축 반경 매개변수의 반경과 일치하도록 컴패니언 생성 메서드가 삭제되고 기본 매개변수가 있는 함수 생성자로 대체되었습니다.
x축 및 y축 반경에 2개의 별도 부동 소수점 값 대신 단일 반경 매개변수를 사용하도록 DrawScope.drawRoundRect가 업데이트되었습니다. (I46d1b)
여러 컴포즈 클래스에서 Px 클래스가 더 이상 대규모 리팩터링 작업의 일부로 사용되지 않습니다. 픽셀 매개변수에는 Dp 유형과 기본 유형만 사용됩니다. Px 클래스 전체를 삭제했습니다. (I3ff33)
대규모 리팩터링 작업의 일환으로 여러 컴포즈 클래스에서 Px 클래스가 더 이상 사용되지 않습니다. 픽셀 매개변수에는 Dp 유형과 기본 유형만 사용됩니다. (I086f4)
여러 컴포즈 클래스에서 Px 클래스가 더 이상 대규모 리팩터링 작업의 일부로 사용되지 않습니다. 픽셀 매개변수에는 Dp 유형과 기본 유형만 사용됩니다. (Id3434)
여러 컴포즈 클래스에서 Px 클래스가 더 이상 대규모 리팩터링 작업의 일부로 사용되지 않습니다. 픽셀 매개변수에는 Dp 유형과 기본 유형만 사용됩니다. (I97a5a)
TextField의 커서에 깜박이는 애니메이션이 있습니다. (Id10a7)
부분 동작이 더 이상 GestureToken을 전달할 필요가 없습니다. (Id7ae5)
대규모 리팩터링 작업의 일환으로 여러 컴포즈 클래스에서 Px 클래스가 더 이상 사용되지 않습니다. 픽셀 매개변수에는 Dp 유형과 기본 유형만 사용됩니다. (I57bff)
상위 수준 구성요소에 사용할 수 있도록 Modifier.semantics의 지원 중단이 해제되었습니다. (I4cfdc)
AnnotatedString.Builder.addAnnotationString의 이름을 addStringAnnotation으로 바꿨습니다. (I5059e)
Alignment API를 업데이트하고 절대 정렬 지원을 추가했습니다(Rtl 컨텍스트에서 자동 미러링되지 않음). (I38cd3)
Layout 및 LayoutModifier 하위 요소는 다른 레이아웃 방향으로 측정될 수 있습니다. (Ibd731)
기본 ImageAsset의 하위 섹션 그리기를 지원하기 위해 rect 매개변수(선택사항)가 ImagePainter에 추가로 도입됩니다. (I0ea9e)
항목을 삭제할 때 AdapterList에서 발생하는 비정상 종료 문제를 수정했습니다. (Ic64b0, b/153195921)
activity.setContent { } 블록에 배치하는 첫 번째 레이아웃을 측정하는 방법을 변경했습니다. 이전에는 전체 활동 화면을 채워야 했지만 이제는 스택에 레이아웃을 배치한 것처럼 동작합니다. 즉, 레이아웃이 화면보다 작을 수 있으며 화면 왼쪽 상단에 배치됩니다. 이전 동작을 사용하려면 레이아웃에 Modifier.fillMaxSize()를 적용하면 됩니다. (Ie88a7, b/153453714)
ui-text-compose 모듈의 이름이 ui-text로 바뀌었습니다. 이제 ui-text에는 CoreText 및 CoreTextField 컴포저블이 포함됩니다. (Ib7d47)
ui-text 모듈 이름이 ui-text-core로 바뀌었습니다. (I57dec)
ui-framework/CoreText, CoreTextField 컴포저블이 ui-text-compose 아래로 이동했습니다. 프로젝트에 ui-text-compose를 포함하는 것이 좋습니다. (I32042)
이제
runOnIdleCompose
및runOnUiThread
는 ComposeTestRule의 메서드가 아닌 전역 함수입니다. (Icbe8f)[변경 가능] 주 속성 위임 연산자가 Kotlin 1.4 속성 위임 최적화를 지원하기 위해 확장 프로그램으로 이동했습니다.
by state { ... }
또는by mutableStateOf(...)
를 계속 사용하려면 호출자가 가져오기를 추가해야 합니다. (I5312c)이제 DrawLayerModifier 및 drawLayer()는 clipToBounds 및 clipToOutline의 기본값을 false로 설정합니다. (I0eb8b, b/152810850)
LayoutResult 이름을 MeasureResult로 바꿨습니다. (Id8c68)
Center 컴포저블을 지원 중단했습니다. LayoutSize.Fill + LayoutAlign.Center 수정자로 대체되거나 적절한 수정자가 적용된 Box 또는 Stack 컴포저블 중 하나로 대체됩니다. (Idf5e0)
LayoutFlexible을 LayoutWeight로 이름을 변경했습니다. 채우기 위해 긴 매개변수의 이름을 변경했습니다. (If4738)
일반적인 구성 가능한 함수인 DrawVector를 레이아웃의 배경으로 벡터를 그리는 수정자인 drawVector()를 반환하는 기능으로 변경했습니다. (I7b8e0)
구성 가능한 함수 Clip을 수정자 drawClip()으로 대체합니다. DrawClipToBounds는 사각형으로 레이어 경계에 맞춰 잘라내야 하는 경우에 사용하기 편리한 수정자입니다. (If28eb)
DrawShadow 구성 가능한 함수를 drawShadow() 수정자로 대체했습니다. 이제 그림자가 LayerModifier의 일부로 그려집니다. (I0317a)
androidx.compose.ViewComposer가 androidx.ui.node.UiComposer로 이동했습니다. androidx.compose.Emittable은 삭제되었습니다. 이 항목은 ComponentNode와 중복되었습니다. androidx.compose.ViewAdapters는 삭제되었습니다. 더 이상 지원되지 않는 사용 사례입니다. Compose.composeInto가 지원 중단되었습니다. 대신
setContent
또는setViewContent
를 사용하세요. Compose.disposeComposition이 지원 중단되었습니다. 대신setContent
에서 반환되는Composition
에서dispose
메서드를 사용하세요. androidx.compose.Compose.subcomposeInto는 androidx.ui.core.subcomposeInto로 이동했습니다. ComponentNode#emitInsertAt의 이름이 ComponentNode#insertAt으로 바뀌었습니다. ComponentNode#emitRemoveAt의 이름이 ComponentNode#removeAt으로 바뀌었습니다. ComponentNode#emitMode의 이름이 ComponentNode#move로 바뀌었습니다. (Idef00)Wrap 컴포저블을 지원 중단했습니다. LayoutAlign 수정자나 Stack 컴포저블로 대체할 수 있습니다. (Ib237f)
레이아웃 방향을 상위 요소 레이아웃 노드에서 하위 요소로 전파되도록 만들었습니다. 레이아웃 방향 수정자를 추가했습니다. (I3d955)
Painter.toModifier 이름이 Painter.asModifier로 변경됩니다. 새로 만든 Modifier에는 여러 Modifier 인스턴스에서 공유할 수 있는 원래 Painter에 관한 참조가 있기 때문입니다. (I7195b)
LayoutPadding 수정자의 오른쪽에서 왼쪽 방향을 지원합니다. (I9e8da)
Density와 DensityScope를 하나의 인터페이스로 병합했습니다. 이제 ambientDensity() 대신 DensityAmbient.current를 사용할 수 있으며 withDensity(density) 대신 with(density)를 사용하면 됩니다. (I11cb1)
ValueHolder 클래스가 삭제되었습니다. 애니메이션 값 필드를 추상적으로 만들어 서브클래스에 값 업데이트가 표시될 수 있도록 AnimatedValue 및 AnimatedFloat 클래스를 재구성했습니다.
- AnimatedValue, AnimatedFloat 등의 모델 클래스가 추가되었습니다.
- 값 사이에 애니메이션을 적용하기 위한 새로운 경량 Composable API 세트를 추가했습니다.
- (I79530)
ambients API에 브레이킹 체인지가 있습니다. 자세한 내용은 로그와
Ambient<T>
문서를 참고하세요. (I4c7ee, b/143769776)이제 Placeable#get(AlignmentLine)에서 반환된 정렬 행 Int 위치는 null이 아닙니다. 쿼리된 정렬 행이 없으면 AlignmentLine.Unspecified가 반환됩니다. (I896c5, b/158134875)
재구성에 비정상 종료를 일으키는 ConstraintLayout 버그가 수정되었습니다. (Ibee5a, b/158164341)
람다 API 후행 WithConstraints가 변경되었습니다. 이제 두 매개변수 대신 제약 조건 및 layoutDirection 외에도 Dp에서 minWidth, maxWidth, minHeight 및 maxHeight 속성을 제공하는 수신기 범위가 있습니다. (I91b9a, b/149979702)
LayoutModifier2 이름을 LayoutModifier로 바꿨습니다. (Id29f3)
이제 Layout 및 LayoutModifier2의 내장 기능 측정 함수에 IntrinsicMeasureScope 수신기가 있으며, 이는 내장 기능 쿼리 API에 암시적으로 전파된 레이아웃 방향을 제공합니다. (Id9945)
LayoutDirectionAmbient가 지원 중단되었습니다. 언어로 정의된 레이아웃 방향을 읽으려면 ConfigurationAmbient에 localeLayoutDirection을 사용하세요. (I851b1)
LayoutCoordinates에 positionInParent 및 boundsInParent를 추가했습니다. (Icacdd, b/152735784)
ParentData 컴포저블이 지원 중단되었습니다. ParentDataModifier 인터페이스를 구현하는 수정자를 만들거나, 측정 블록 내에서 인식되도록 레이아웃 하위 요소에 태그만 지정하면 되는 경우에는 LayoutTag 수정자를 사용해야 합니다. (I51368, b/150953183)
OnPositioned 및 OnChildPositioned 구성 가능 함수를 대체할 OnPositionedModifier 및 OnChildPositionedModifier가 추가됩니다. (I2ec8f)
LayoutPadding에는 음수 패딩이 허용되지 않습니다. 음수 위치 오프셋을 위해서는 대신 LayoutOffset을 사용해야 합니다. (Ifb5b1)
withConstraints에 LayoutDirection 매개변수가 있습니다.(I6d6f7)
ComposeFlags.COMPOSER_PARAM
플래그를true
로 업데이트했습니다. 이는 작성 플러그인의 코드 생성 전략을 변경합니다. 높은 수준에서 이는 @Composable 함수가 추가 합성 매개변수와 함께 생성되어 후속 @Composable 호출로 전달되도록 합니다. 이는 실행을 적절히 관리하기 위한 런타임을 확보하기 위함입니다. 그러나 이 기능은 중요한 바이너리 브레이킹 체인지이므로 승인된 모든 Compose 사용 시 소스 수준의 호환성을 유지해야 합니다. (I7971c)providedAlignmentLines를 Map이 아닌 Set으로 만들고 LayoutCoordinates에서 값을 검색하는 대신 get() 연산자를 구현하도록 LayoutCoordinates를 변경했습니다. 이에 따라 수정자별로 새 컬렉션을 만들지 않고도 수정자가 세트에서 하나 이상의 값을 더 쉽게 수정할 수 있습니다. (I0245a)
LayoutCoordinate에 더 이상 위치 속성이 없습니다. 위치 속성은 LayoutModifier, 회전 또는 크기 조정을 고려할 때 의미가 없습니다. 대신 개발자는 parentCoordinates 및 childToLocal()을 사용하여 LayoutCoordinate 간의 변환을 계산해야 합니다.
LayoutCoordinates는 크기 속성으로 PxSize가 아닌 IntPxSize를 사용합니다. Layout은 레이아웃에 정수 픽셀 크기를 사용하므로 모든 레이아웃 크기에 부동 소수점 값이 아닌 정수를 사용해야 합니다. (I9367b)
제약 조건의 API 노출 영역 개선 (I0fd15)
TextDirection.Content를 추가했습니다. (I48f36)
복사, 잘라내기, 붙여넣기를 올바르게 표시하기 위해 툴바 메뉴가 조정됩니다. (Id3955)
TextField Selection을 위한 FloatingToolbar가 추가됩니다. (Ie8b07)
TextDirectionAlgorithm 이름이 TextDirection으로 바뀌었습니다. (I75ce8)
TextDirection의 이름이 ResolvedTextDirection으로 바뀌었습니다. (I3ff38)
TextField Selection에 HapticFeedback이 추가됩니다. (I58050)
TextField Selection에 복사, 잘라내기 및 붙여넣기 메서드가 추가됩니다. (Idb70b)
TestTag와 Semantics가 삭제되었습니다. 대신 Modifier.testTag 및 Modifier.semantics를 사용하세요. (I15ff0, b/158841414)
Locale 및 LocaleList의 패키지 이름을 androidx.ui.text에서 androidx.ui.intl로 변경했습니다. (I8132c)
API 변경:
AnnotatedString(builder: Builder)
의 이름이annotatedString(builder: Builder)
로 변경되었습니다. (Ia6377)API 변경:
AnnotatedString.Item
의 이름이AnnotatedString.Range
로 변경되었습니다. (I2d44d)텍스트 관련 작업을 위한 툴바가 추가됩니다. (I49d53)
새로운 LifecycleOwnerAmbient를 사용할 수 있습니다. 이제 Compose UI와 함께 사용 중인 활동이 androidx.activity.ComponentActivity(또는 AppCompatActivity)를 확장합니다. android.app.Activity의 setContent가 이제 지원 중단되었습니다. (Idb25a, b/153141084)
androidx 정책에 맞도록 ui-android-text 패키지 이름(androidx.text)을 androidx.ui.text.platform으로 변경했습니다. (I42711)