Compose Material

즉시 사용 가능한 머티리얼 디자인 구성요소로 Jetpack Compose UI를 빌드합니다. 이는 Compose를 고급 수준에서 사용하는 첫 단계이며, www.material.io에 설명된 것과 동일한 구성요소를 제공합니다.
최근 업데이트 현재 안정화 버전 다음 버전 후보 베타 버전 알파 버전
2021년 9월 1일 1.0.2 - - 1.1.0-alpha03

구조

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

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

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

종속 항목 선언

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

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

Groovy

dependencies {
    implementation "androidx.compose.material:material:1.1.0-alpha01"
}

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerVersion "1.5.10"
        kotlinCompilerExtensionVersion "1.1.0-alpha01"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

dependencies {
    implementation("androidx.compose.material:material:1.1.0-alpha01")
}

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerVersion = "1.5.10"
        kotlinCompilerExtensionVersion = "1.1.0-alpha01"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

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

의견

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

새로운 문제 제출하기

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

버전 1.1.0

버전 1.1.0-alpha03

2021년 9월 1일

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

새로운 기능

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

API 변경사항

  • 잘린 경계를 가져오기 위한 테스트 메서드를 추가했습니다. (I6b28e)
  • 접근성을 보장하기 위해 시맨틱 및 포인터 입력에 사용할 최소 터치 영역 크기를 ViewConfiguration에 추가했습니다. (Ie861c)

버전 1.1.0-alpha02

2021년 8월 18일

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

외부 기여

  • 스와이프 오프셋이 앵커의 반올림 오차 내에 있는 경우 발생하는 SwipeableState의 동작을 수정했습니다. (I03d39, b/191993377)

버전 1.1.0-alpha01

2021년 8월 4일

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

API 변경사항

  • 선택적 FilterQuality 매개변수를 사용하기 위해 소스 및 대상 직사각형을 사용하는 DrawScope#drawImage 메서드를 업데이트했습니다. 이 기능은 픽셀 기반 아트용으로 확장할 때 모자이크로 표현하도록 의도된 픽셀 아트에 유용합니다. 선택적 FilterQuality 매개변수도 사용할 수 있도록 BitmapPainter와 Image 컴포저블을 업데이트했습니다. (Ie4fb0, b/180311607)
  • BadgeBox의 이름을 BadgedBox로 바꾸고, Badge 컴포저블을 허용하도록 매개변수를 변경했습니다. BadgedBox의 일반적인 배지 콘텐츠인 Badge 구성요소를 추가했습니다. (I639c6)
  • NavigationRail 구성요소를 추가했습니다. 사용법 정보는 문서와 샘플을 참고하세요. (I8de77)

버그 수정

  • 하단에 정렬된 NavigationRail 샘플 및 Catalog 앱 데모를 추가했습니다. (I3cffc)
  • 대화상자가 이제 플랫폼 크기 조정 동작을 따릅니다. 이 동작을 재정의하려면 usePlatformDefaultWidth를 false로 설정합니다. (Iffaed, b/192682388)
  • 카탈로그 앱에 탐색 레일 데모를 추가했습니다. (I04960)
  • 카탈로그 앱에 배지 데모를 추가했습니다. (If285d)

버전 1.0.2

버전 1.0.2

2021년 9월 1일

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

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

버전 1.0.1

버전 1.0.1

2021년 8월 4일

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

종속 항목 업데이트

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

버전 1.0.0

버전 1.0.0

2021년 7월 28일

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

1.0.0의 주요 기능

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

알려진 문제

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

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

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

버전 1.0.0-rc02

2021년 7월 14일

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

버그 수정

  • 대화상자가 이제 플랫폼 크기 조정 동작을 따릅니다. 이 동작을 재정의하려면 usePlatformDefaultWidth를 false로 설정합니다. (Iffaed, b/192682388)

버전 1.0.0-rc01

2021년 7월 1일

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

API 변경사항

  • BadgeBox 구성요소를 추가했습니다. 사용법 정보는 문서와 샘플을 참고하세요. (I5e284)
  • PopupPropertiesuseDefaultMaxWidth 이름이 usePlatformDefaultWidth로 바뀌었습니다. (I05710)
  • 이제 대화상자에서 전체 화면 너비를 사용할 수 있습니다. (I83929, b/190810877)
  • 실험용 범위 슬라이더 구현을 추가했습니다. (I2f4b3)

버그 수정

  • 머티리얼 디자인 사양에 맞추기 위해, 잘못된 입력이 포함된 OutlinedTextField는 라벨이 자리표시자로 사용된 경우 라벨에 오류 색상 사용을 중지했습니다. 텍스트 필드에 입력 텍스트가 없고 텍스트 필드가 포커스가 없는 경우에도 마찬가지입니다. 이 변경으로 TextFieldColors.labelColor() 함수의 error:Boolean 매개변수 의미도 변경되었습니다. 즉, 이제 입력이 유효하지 않더라도 라벨이 자리표시자로 사용되면 false가 반환됩니다. (I45f78)

버전 1.0.0-beta09

2021년 6월 16일

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

API 변경사항

  • 테두리 모양을 맞춤설정할 수 있도록 OutlinedTextField에 Shape 매개변수를 추가했습니다. (I8f39e, b/181322957)
  • TextOverflow가 인라인 클래스로 변경됩니다. (I433af)

버그 수정

  • BottomDrawer, BackdropScaffold, ModalBottomSheetLayout의 스크림이 사라지고 Color.Unspecified가 전달됩니다. (I2d899, b/182063309)

추가된 프로필 규칙

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

원리는 무엇인가요?

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

버전 1.0.0-beta08

2021년 6월 2일

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

새로운 기능

동작 중단 API 변경

  • 동작 중단: 이제 카드가 클릭수를 사용하므로 Card(Modifier.clickable)을 통해 추가된 클릭수가 노옵스(no-ops)가 됩니다. onClick을 허용하는 카드의 새 실험용 오버로드를 사용하세요. (Ia8744, b/183775620)
    • 클릭수와 기타 클릭 가능한 기능(표시, interactionSource, 사용 설정/사용 중지)을 처리하는 새 카드 오버로드를 추가했습니다. 클릭 불가능한 일반 카드를 Modifier.clickable과 함께 사용할 수 없었습니다. 이러한 경우 카드가 물결 효과 표시를 자르지 않기 때문입니다.
  • 동작 중단: 이제 노출 영역이 클릭수를 사용하므로 Surface(Modifier.clickable)을 통해 추가된 클릭수가 노옵스(no-ops)가 됩니다. onClick을 허용하는 노출 영역의 새 실험용 오버로드를 사용하세요. (I73e6c, b/183775620)
    • 클릭수와 기타 클릭 가능한 기능(표시, interactionSource, 사용 설정/사용 중지)을 처리하는 새 노출 영역 오버로드를 추가했습니다. 클릭 불가능한 일반 노출 영역을 Modifier.clickable과 함께 사용할 수 없었습니다. 이러한 경우 노출 영역이 물결 효과 표시를 자르지 않기 때문입니다.

API 변경사항

  • FabPosition이 향후 잠재적 확장을 지원하려고 enum에서 인라인 클래스로 변환되었습니다. (I030fb)
  • 새 enum 값이 추가될 때 완전한 when 문 관련 문제를 방지하려고 enum 사용을 인라인 클래스로 리팩터링했습니다. (I2b5eb)
  • 스크롤/드래그하는 동안 물결 효과가 표시되지 않도록 클릭할 수 있거나 전환할 수 있는 항목에 탭 시간 제한을 추가합니다. (Ia2704, b/168524931)
  • ContentDescription 및 Text 시맨틱 속성이 더 이상 단일 값이 아니라 목록입니다. 이렇게 하면 연결하지 않고 그대로 병합할 수 있습니다. 이러한 변경사항을 활용하는 더 나은 테스트 API도 제공됩니다. (Ica6bf, b/184825850)
  • Modifier.focusModifier()가 지원 중단되었으며 Modifier.focusTarget()으로 대체되었습니다. (I6c860)
  • FocusState enum을 FocusState 인터페이스로 대체했습니다. (Iccc1a, b/187055290)
  • 이제 View 지원 물결 효과 구현이 안정적이므로 LocalRippleNativeRendering을 삭제했습니다. (I7fab3, b/188569367)

버그 수정

  • 모든 수정자를 적용한 후 수정자 체인에서 레이아웃 좌표가 아닌 이 수정자의 좌표를 보고하도록 Modifier.onGloballyPositioned()를 변경했습니다. 즉, 이제 수정자의 순서가 보고되는 좌표에 영향을 미칩니다. (Ieb67d, b/177926591)
  • 기존 Compose Material 카탈로그의 README를 추가했습니다. (If9191)

버전 1.0.0-beta07

2021년 5월 18일

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

API 변경사항

  • 이제 Navigation Compose에서 경로 지원을 위해 확장 메서드를 사용할 필요가 없습니다. (I22beb, b/172823546)

버전 1.0.0-beta06

2021년 5월 5일

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

API 변경사항

  • Android 기기에서 내부적으로 RippleDrawable을 사용하도록 물결 효과를 이전했습니다. 즉, 물결 효과 애니메이션이 RenderThread에서 발생하므로 화면 간 이동할 때와 같이 UI 스레드가 로드 중일 때도 원활하게 작동합니다. 이로 인해 물결 효과의 API 노출 영역이 변경되지는 않지만 이러한 변경으로 인해 동작이 변경될 수 있습니다. 이전을 돕기 위해 LocalRippleNativeRendering을 추가했습니다. false 값을 이 CompositionLocal에 제공하여 CompositionLocalProvider 내부의 이전 물결 효과 구현을 대체합니다. API는 일시적이며 앞으로 삭제될 예정인 API이므로 이 API를 사용해야 하는 문제가 발생하면 버그를 신고하세요. (I902f8, b/168777351, b/183019123)
  • 접근성 서비스 모음과 항목을 표시할 수 있는 CollectionInfo 및 CollectionItemInfo 접근성 API를 추가했습니다. (Id54ef, b/180479017)
  • 잘못된 입력이 포함된 노드를 표시할 수 있는 접근성 API error를 추가했습니다. (I12997, b/180584804, b/182142737)

버그 수정

  • https://github.com/google/accompanist/pull/365에서 Compose Material 카탈로그 인셋 구현을 업데이트했습니다. (I25dc3)
  • 가중치(fill = false)가 있는 행 및 열 하위 요소는 더 이상 상위 요소가 전체 사용 가능한 기본 축 공간을 채우도록 하지 않습니다. (Ied94d, b/186012444, b/184355105)

버전 1.0.0-beta05

2021년 4월 21일

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

버그 수정

  • 기존 Compose Material 카탈로그에 구성요소 타일 이미지, 테마 선택 도구, 더 구체적인 메뉴 URL을 추가했습니다. (I9b58e)

버전 1.0.0-beta04

2021년 4월 7일

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

API 변경사항

  • API 변경: DrawerState 상태가 더 이상 실험용 SwipeableState를 확장하지 않습니다.
    • API 변경: 이제 BottomDrawerState가 이미 실험용인 BottomDrawer 구성요소와 일치하도록 실험용으로 표시됩니다. (I81114, b/181656094)
  • SoftwareKeyboardControllerhideSoftwareKeyboardshowSoftwareKeyboard의 이름을 각각 hide()show()로 바꿉니다.
    • LocalSoftwareKeyboardController에 전체 CompositionLocal 인터페이스를 제공하여 설정 가능하도록 합니다(특히 테스트에서 유용함). (I579a6)
  • LiveRegion 접근성 API를 추가했습니다. 노드가 라이브 영역으로 표시되면 접근성 서비스가 사용자에게 자동으로 변경사항을 알립니다. (Idcf6f, b/172590946)

버그 수정

  • Compose Material 카탈로그 구현을 기존 모듈에 추가했습니다. 현재 누락: 구성요소 타일 이미지, 테마 선택 도구(후속 변경에서 추가 예정) (Ie7a94)

버전 1.0.0-beta03

2021년 3월 24일

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

API 변경사항

  • DefaultMonotonicFrameClock이 지원 중단되었습니다. 이제 MonotonicFrameClock 없이 withFrameNanos 또는 Recomposer.runRecomposeAndApplyChanges를 호출하면 IllegalStateException이 발생합니다. (I4eb0d)
  • 탭에 아이콘과 인라인 텍스트를 표시할 수 있도록 새로운 API LeadingIconTab을 추가했습니다. (I23267)

외부 기여

  • [조시 울프 작성] 이제 BottomDrawer가 창 슬롯의 콘텐츠를 래핑합니다. 상위 요소의 높이가 무한한 경우 BottomDrawer에서 IllegalStateException을 발생시키지 않습니다. 이제 하단 창은 상위 요소 크기의 50%보다 작은 경우 펼침 상태로 열립니다. BottomDrawerStateModalBottomSheetLayoutState 관련 문서가 업데이트되었습니다. 이제 BottomDrawerState#isOpen은 열림 또는 펼침 상태인 경우 true를 반환합니다. (I87241)

버전 1.0.0-beta02

2021년 3월 10일

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

API 변경사항

  • TextField의 이전 SoftwareKeyboardController 인터페이스를 대체하는 새로운 LocalSoftwareKeyboardController 컴포지션 로컬 API를 추가했습니다. (I5951e, b/168778053)

버그 수정

  • 실험용 API의 공개 사용에 제한을 적용합니다. (I6aa29, b/174531520)
  • TopAppBar 및 BottomAppBar의 기본 가로 정렬을 Row와 일치하는 Start로 변경했습니다. (Ib2dc7)
  • 현재 기존 통합 테스트 데모에 중첩된 Compose Material 카탈로그의 새 모듈 및 자리표시자 UI를 추가했습니다. (Idfcb3)
  • androidx.compose.ui:ui가 더 이상 AppCompat 또는 Fragment에 종속되지 않습니다. 애플리케이션에서 ComposeView를 사용하면서 Fragment나 AppCompat를 사용한다면 AppCompat 1.3 이상/Fragment 1.3 이상을 사용해야 합니다. 이러한 버전은 ComposeView에 필요한 수명 주기 및 저장된 상태 소유자를 정확하게 설정하는 데 필요합니다. (I1d6fa, b/161814404)

버전 1.0.0-beta01

2021년 2월 24일

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

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

API 변경사항

  • 크기 수정자의 이름이 변경되었습니다. Modifier.width/height/size의 이름이 requiredWidth/requiredHeight/requiredSize로, Modifier.preferredWidth/preferredHeight/preferredSize의 이름이 width/height/size로 변경되었습니다. (I5b414)
  • imageResource 및 vectorResource는 이제 ImageBitmap 및 ImageVector 컴패니언의 확장 함수입니다. load{Image,Vector,Font}Resource 함수가 삭제되었습니다. (I89130)
  • 내장 기능에 맞게 크기를 조정하는 수정자는 더 이상 실험용이 아닙니다. (I15744)
  • dp 어설션을 삭제했습니다. (I798d2)
  • 모든 텍스트 필드에서 SoftwareKeyboardController 콜백을 삭제했으며 곧 새 API로 대체할 예정입니다. (Iae869, b/168778053)
  • 이제 Switch, Checkbox 및 RadioButton 작업 람다가 null을 허용합니다. Checkbox-in-clickable-row 샘플이 이 기능을 사용하도록 업데이트되었습니다. (If601b, b/171819073)
  • InteractionState[Mutable]InteractionSource로 대체되었습니다.
    • 인터페이스는 상호작용 이벤트를 방출/수집해야 합니다.
    • ButtonModifier.clickable() 등의 구성요소에 interactionState = remember { InteractionState() }를 전달하는 대신 interactionSource = remember { MutableInteractionSource() }를 사용합니다.
    • Interaction.Pressed in interactionState 대신 InteractionSource에서 InteractionSource.collectIsPressedAsState()와 같은 확장 함수를 사용해야 합니다.
    • 복잡한 사용 사례의 경우 InteractionSource.interactions를 사용하여 상호작용 스트림을 관찰할 수 있습니다. 자세한 내용은 InteractionSource 도움말과 샘플을 참고하세요.
    • (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
  • CompositionLocals에서 AccessibilityMananger 인터페이스 및 LocalAccessibilityMananger를 추가합니다. (I53520)
  • 지원 중단된 LayoutCoordinates 메서드를 삭제했습니다. positionInParent 및 boundsInParent의 속성 대신 함수를 사용합니다. (I580ed, b/169874631, b/175142755)
  • 이제 슬라이더가 사용/사용 중지 상태를 지원합니다. (I6d56b, b/179793072)
  • CoreTextField와 같은 하위 수준의 텍스트 구성요소의 입력 세션을 위한 새로운 TextInputSession을 만들었습니다. (I8817f, b/177662148)
  • AnimationEndReason.Interrupted를 삭제했습니다. 애니메이션이 중단되면 CancellationException이 발생합니다. (I2cbbc, b/179695417)
  • @ExperimentalRippleApi를 삭제하고 RippleAlpha를 인터페이스 대신 속성이 포함된 클래스가 되도록 변경했습니다. (I6df7c)
  • TextFieldColors 인터페이스를 추가했습니다. 이 인터페이스에는 다양한 상태의 TextField 및 OutlinedTextField에 사용되는 여러 색상이 표시됩니다. 기본 구현은 TextFieldDefaults.textFieldColors 및 TextFieldDefaults.outlinedTextFieldColors를 참고하세요.
    • TextField 및 OutlinedTextField 내부의 isErrorValue 매개변수의 이름을 isError로 변경했습니다. (I831f9, b/171305338, b/168004067)
  • 접근성을 위해 Tabs 또는 RadioButtons 모음을 표시할 수 있는 selectionGroup 수정자를 추가합니다. (Ie5c29)
  • LazyListState.animateScrollToItem 추가

    이 메서드는 목록의 특정 항목으로 매끄럽게 스크롤합니다. (I4bfd7)

  • ScrollableState.smoothScrollBy() 이름이 animateScrollBy()로, LazyListState.snapToItemIndex() 이름이 scrollToItem()로, ScrollState.smoothScrollTo() 이름이 animateScrollTo()로 바뀌었습니다. (I35ded)

  • 이제 @ReadOnlyComposable로 표시된 모든 컴포저블은 다른 @ReadOnlyComposables만 호출할 수 있도록 컴파일 시간 유효성 검사 대상이 됩니다. (I58961)

  • TargetAnimation API가 삭제되었습니다. (If47d1, b/177457083)

  • 이제 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)

  • 방향이 기본 패키지로 이동했습니다. VelocirtTracker가 ui.gesture에서 ui.input.pointer로 이동했습니다. (Iff4a8, b/175294473)

  • 이제 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)

  • 이제 ZoomableController.smoothScaleBy 및 ZoomableController.stopAnimation이 정지 함수입니다. (I7f970, b/177457083)

  • 이전에 지원 중단된 일부 API를 삭제했습니다. (Ice5da, b/178633932)

  • 다음과 같이 머티리얼 API가 변경되었습니다.

    • 기본 패딩을 맞춤설정할 수 있도록 contentPadding 매개변수를 Top/BottomAppBar에 추가했습니다.
    • 필수 매개변수가 선택 매개변수 앞에 와야 한다는 API 지침을 따르기 위해 BackdropScaffold의 매개변수를 재정렬했습니다.
    • BottomNavigationItem의 icon 매개변수를 selectedonClick 다음으로 이동했습니다.
    • BottomNavigationItem의 alwaysShowLabels 매개변수 이름을 alwaysShowLabel로 변경했습니다.
    • 몇몇 구성요소의 bodyContent 매개변수 이름을 단순하게 content로 변경했습니다.
    • ButtonDefaults.buttonColors()의 매개변수를 재정렬했습니다. 매개변수의 유형이 변경되지는 않았으므로 이로 인한 코드 오류는 발생하지 않습니다. 이름이 지정된 매개변수를 사용하거나 수동으로 정렬을 업데이트하세요. 그러지 않으면 코드가 이전과 동일하게 작동하지 않습니다.
    • darkColors()secondaryVariant 매개변수를 추가했습니다. 이 색상은 일반적으로 어두운 테마의 secondary와 동일하지만 일관성 및 세부 맞춤설정을 위해 추가되었습니다.
    • 공개 API 노출 영역에서 ElevationDefaults 및 animateElevation()을 삭제했습니다. 자주 사용되지 않거나 유용하지 않기 때문입니다.
    • SlideronValueChangeEnd 이름을 onValueChangeFinished로 바꾸고 null을 허용하도록 설정했습니다.
    • 일관성을 위해 Snackbartext 매개변수 이름을 content로 변경했습니다.
    • 기본 패딩의 맞춤설정이 가능하도록 DropdownMenuItemcontentPadding 매개변수를 추가했고, contentRowScope의 확장 프로그램으로 만들었습니다.
    • ModalDrawerLayout의 이름을 ModalDrawer로 변경했습니다.
    • BottomDrawerLayout의 이름을 BottomDrawer로 변경했습니다.
    • (I1cc66)
  • 이제 BasicTextField에서 색상 대신 브러시를 허용하여 맞춤설정을 개선합니다. (I83a36)

  • imageResource 및 vectorResource는 이제 ImageBitmap 및 ImageVector 컴패니언의 확장 함수입니다. load{Image,Vector,Font}Resource 함수가 삭제되었습니다. (I89130)

  • Indication#createIndication()을 Indication#rememberUpdatedIndication(InteractionState)으로 변경하고 IndicationInstance#drawIndication()에서 InteractionState 매개변수를 삭제했습니다. IndicationInstance는 그리기 시각적 효과만 담당해야 하며 InteractionState 변경에 관한 응답으로 이뤄지는 애니메이션 실행/상태 작성은 담당하지 않습니다. 이러한 애니메이션과 상태 쓰기는 대신 rememberUpdatedIndication() 내에서 이뤄져야 합니다. Modifier.indicationindication 매개변수도 필수 매개변수로 변경되었습니다. (Ic1764, b/152525426)

버그 수정

  • TextField의 이전 SoftwareKeyboardController 인터페이스를 대체하기 위한 새로운 LocalSoftwareKeyboardController 컴포지션 로컬 API를 추가했습니다. (I658b6, b/168778053)

버전 1.0.0-alpha12

2021년 2월 10일

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

API 변경사항

  • 이제 Modifier.pointerInput에 새 종속 항목으로 인해 포인터 입력 감지 코루틴이 다시 시작되어야 할 때를 나타내는 기억 키가 필요합니다. (I849cd)
  • BottomDrawerLayout 및 ListItem이 @ExperimentalMaterialApi로 표시되었습니다. (Id766e)
  • PaddingValues.Absolute가 추가되었으며 PaddingValues를 허용하는 API에서 사용할 수 있습니다. (Ia5f30)
  • onImeActionPerformed가 지원 중단됩니다. 대신 KeyboardActions를 사용하세요. (If0bbd, b/179071523)
  • ImageBitmap 및 ImageVector와 이름 지정 규칙을 더 잘 맞추기 위해 ImagePainter의 이름을 VectorPainter와 유사한 BitmapPainter로 바꾸었습니다. (Iba381, b/174565889)
  • Animatable.snapTo 및 Animatable.stop은 이제 정지 함수입니다. (If4288)
  • ComponentActivity.setContent를 androidx.activity:activity-compose 모듈의 androidx.activity.compose.setContent로 이동했습니다. (Icf416)
  • 거의 사용하지 않는 여러 클래스의 디스트럭처링 메서드와 copy() 메서드를 삭제했습니다. (I26702, b/178659281)
  • ModalBottomSheetState 내부에서 halfExpand() 및 expand()를 만듭니다. (Ic914e)
  • Indication#createInstance를 @Composable로 변경했으며, () -> Indication이 아닌 Indication을 포함하도록 LocalIndication을 변경했습니다. (I5eeea, b/157150564)
  • 당분간만 AlertDialog 및 DropdownMenu를 Android로 이동합니다. 기본 Popup을 구성하기 위해 PopupProperties 매개변수를 DropdownMenu에 추가했습니다. (I9c443)
  • loadFontResource가 지원 중단됩니다. 대신 fontResource를 사용하세요. imageResource, loadImageResource, vectorResource, loadVectorResource는 지원 중단됩니다. 대신 painterResource를 사용하세요. (I6b809)
  • DropdownMenu에서 toggletoggleModifier 매개변수를 삭제하고 dropdownModifier, dropdownOffset, dropdownContent의 이름을 각각 modifier, offset, content로 바꾸었습니다. 이제 DropdownMenu가 Popup과 일관되게 동작하며, 여기서 상위 요소 레이아웃이 메뉴의 위치에 사용됩니다. 대부분의 경우 toggleDropdownMenu의 동위가 되도록 이동하고 Box에서 둘 다 래핑할 수 있습니다. 이 API 사용에 관한 자세한 내용은 도움말의 업데이트된 샘플을 참고하세요. (I884fb)
  • toIntPx()의 이름이 roundToPx()로 변경되었습니다. (I9b7e4, b/173502290)
  • IntBounds의 이름을 IntRect로 바꾸고 API를 개선했습니다. (I1f6ff)
  • 확장 및 축소 의미 체계 작업을 추가했습니다. ModalBottomSheetState에 expand 및 halfExpand를 추가했습니다. (Ib5064)
  • 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)
  • 접근성을 위해 미확정 진행률 표시줄을 표시하는 ProgressBarRangeInfo.Indeterminate를 추가했습니다. (I6fe05)
  • @ComposableContract가 지원 중단되었으며 3가지 추가 특정 주석으로 대체되었습니다.

    • @ComposableContract(restartable = false)@NonRestartableComposable로 변경되었습니다.
    • @ComposableContract(readonly = true)@ReadOnlyComposable로 변경되었습니다.
    • @ComposableContract(preventCapture = true)@DisallowComposableCalls로 변경되었습니다.
    • @ComposableContract(tracked = true)가 삭제되었습니다.
    • (I60a9d)
  • emptyContent()(@Composable () -> Unit).orEmpty() 유틸리티는 더 이상 성능에 긍정적인 영향이나 가치가 없으므로 지원 중단되었습니다. (I0484d)

  • rememberSavedInstanceState()가 rememberSaveable()로 이름이 변경되었으며 androidx.compose.runtime.saveable 패키지로 이동했습니다. (I1366e, b/177338004)

  • Saver, listSaver(), mapSaver(), autoSaver가 androidx.compose.runtime.savedinstancestate에서 androidx.compose.runtime.saveable로 이동했습니다. (I77fe6)

  • RTL 방향에서 도형의 자동 미러링을 지원하기 위해 RounderCornerShape, CutCornerShape and CornerBasedShape의 매개변수 이름이 left/right에서 start/end로 변경되었습니다. 자동 미러링을 사용하지 않는 경우를 위해 AbsoluteRounderCornerShape과 AbsoluteCutCornerShape을 도입했습니다. (I61040, b/152756983)

  • 탭의 texticon 매개변수 및 BottomNavigationItem의 label 매개변수가 null을 허용하고, 이러한 매개변수가 제공되거나 제공되지 않을 때 구성요소의 행동을 더욱 효과적으로 전달하도록 변경되었습니다. 구성요소의 행동이 구성요소의 크기와 레이아웃에 영향을 주기 때문입니다. 텍스트/아이콘/라벨을 표현하기 위해 emptyContent()를 전달하고 있다면 대신 null을 사용해야 합니다. (I57ed4)

  • contentColorFor 색상 매개변수의 이름을 backgroundColor로 변경했습니다. (I5bb67)

  • TabDefaults를 지원 중단하고 TabRowDefaults로 대체했습니다. (I0f189)

  • 소스 콘텐츠의 RGB 값을 수정하는 데 사용할 수 있는 ColorMatrix API를 도입했습니다. ColorFilter API가 인스턴스가 되고 PathEffect 구현과 일치하도록 리팩터링했습니다. (Ica1e8)

  • 이제 AnimatedValue/Float가 지원 중단되었습니다. 대신 Animatable을 사용하세요. (I71345, b/177457083)

  • SemanticsProperties.PaneTitle API를 추가합니다. (I20d5a)

  • 사용 설정된 매개변수를 Tab 및 BottomNavigationItem에 추가하여 클릭 가능하지 않도록 했습니다. API에서 레이아웃 요구사항을 더 잘 나타내기 위해 BottomNavigationItem을 RowScope.BottomNavigationItem으로 변경했습니다. (Id683d)

  • tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter 및 pressIndicaitonGestureFilter가 지원 중단되었습니다. 대신 detectTapGestures 함수와 함께 Modifier.clickable 또는 Modifier.pointerInput을 사용합니다. (I6baf9, b/175294473)

  • layoutDirection 매개변수를 Shape의 createOutline에 추가합니다. 이렇게 하면 도형을 인식하는 레이아웃 방향을 만들 수 있습니다. (I57c20, b/152756983)

  • Recomposer.current()를 삭제했습니다. [Abstract]ComposeView는 이제 지연 생성되고 창으로 범위가 지정되며 창의 ViewTreeLifecycleOwner에서 구동하는 Recomposer를 기본값으로 설정합니다. Recomposition 및 withFrameNanos 기반 애니메이션 틱은 호스트 수명 주기가 중지된 동안 일시중지됩니다. (I38e11)

버그 수정

  • 이제 아이콘이 적용되는 크기 수정자를 고려하여 크기에 맞게 확장합니다. 예를 들어 Icon(.., modifier = Modifier.size(50.dp)은 이제 50x50dp 공간에 그려집니다. (Ib2ba9, b/178796190)

버전 1.0.0-alpha11

2021년 1월 28일

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

API 변경사항

  • 일부 Material API를 더 이상 @Experimental이 되지 않도록 홍보합니다. (I5d20e)
  • 콘텐츠 설명 매개변수를 이미지 및 아이콘에 추가했습니다. 접근성 서비스에 설명을 제공하는 데 사용됩니다. (I2ac4c)
  • Material 스테이트풀(Stateful) 매개변수 인터페이스를 State<T>를 반환하는 @Composable 함수를 포함하도록 변경합니다. Animatable을 State로 더 쉽게 변환하도록 Animatable.asState()를 추가합니다. 또한 animateElevation을 Animatable의 정지 확장이 되도록 변경합니다. (If613c)
  • Snackbar, SnackbarHost, SnackbarHostState가 더 이상 @ExperimentalMaterialAPI가 아닙니다. (Id1fb5)
  • Typography, Shapes, TabPosition을 더 이상 데이터 클래스가 되지 않도록 변경합니다. 생성된 것을 대체하도록 Typography 및 Shapes의 복사 기능을 추가합니다. (I40037)
  • 이전에 지원 중단된 일부 Material API를 삭제했습니다. (Ifaa25)

버그 수정

  • onCommit, onDispose, onActive를 지원 중단하고 SideEffect 및 DisposableEffect API로 대체했습니다. (If760e)
  • TransitionDefinition 기반 Transition을 지원 중단했습니다. (I0ac57)
  • 이제 updateTransition의 초기 State가 지원됩니다. (Ifd51d)
  • WithConstraints를 BoxWithConstraints로 재작업하여 foundation.layout으로 이동했습니다. (I9420b, b/173387208)
  • 비정지 scrollBy를 지원 중단하고 비정지 scrollTo를 삭제합니다.

    이제 정지 함수를 사용하여 스크롤을 제어하고 스크롤이 완료될 때까지 기다리는 것이 좋습니다. 이 전환의 일환으로 비정지 버전의 이러한 함수를 지원 중단하고 삭제합니다. (Ie9ced)

  • 비정지 smoothScrollBy를 지원 중단합니다. 이제 정지 함수를 사용하여 스크롤을 제어하고 스크롤이 완료될 때까지 기다리는 것이 좋습니다. 이 전환의 일환으로 비정지 버전의 이러한 함수를 지원 중단합니다. (I12880)

  • ComposeTestRule을 확장하고 ComposeTestRule에서 삭제된 setContent를 정의하는 ComposeContentTestRule을 도입했습니다. ComposeTestRule을 반환하고 Activity를 실행하지 않는 createEmptyComposeRule() 팩토리 메서드를 추가했습니다. 테스트하는 동안 Activity를 실행하려면 이 메서드를 사용하세요(예: ActivityScenario.launch 사용). (I9d782, b/174472899)

  • Button 및 FloatingActionButton에 사용된 물결 효과를 AmbientIndication을 통해 새 Indication을 제공하여 더 이상 맞춤설정할 수 없습니다. 이러한 구성요소를 맞춤설정하는 방법으로 의도된 적 없고 이제 이러한 구성요소가 다른 Material 구성요소와 일치하게 됩니다. 애플리케이션 전체에서 물결 효과를 맞춤설정하려면 RippleTheme을 참고하세요. (I546c5)

  • animateAsState가 이제 animateFooAsState이고 여기서 Foo는 애니메이션되는 변수의 유형입니다(예: Float, Dp, Offset 등). (Ie7e25)

  • BasicTextField에서 decorationBox라는 새 매개변수를 수신했습니다. 이를 통해 아이콘, 자리표시자, 라벨, 텍스트 필드와 같은 장식을 추가하고 조회 대상 영역을 늘릴 수 있습니다. (I16996)

  • 머티리얼 텍스트 필드의 너비를 280.dp 미만으로 설정할 수 없게 만드는 버그를 수정했습니다. (I78373)

  • canDrag 매개변수를 Modifier.draggable에서 삭제했습니다. (Ic4bec, b/175294473)

  • displaySize는 사용하지 않아야 하므로 삭제합니다. 최소한 onRoot() 크기나 창 크기를 사용하는 것이 일반적으로 더 좋습니다. (I62db4)

  • 이제 Surface에 여러 레이아웃 하위 요소를 포함할 수 있습니다. (I66a92, b/144488459)

  • invalidate 및 compositionReference()를 지원 중단하고 currentRecomposeScope 및 rememberCompositionReference로 각각 대체했습니다. (I583a8)

  • 전역 좌표가 아닌 창 기준 좌표를 사용하도록 PopupPositionProvider를 변경합니다. parentGlobalBounds를 anchorBounds로 이름을 바꾸고 windowGlobalBounds는 windowSize: IntSize가 되도록 변경합니다. (I2994a)

  • Duration과 Uptime이 Long 밀리초로 대체되며 이 단계에서는 이러한 클래스의 포인터 입력 종속 항목을 삭제합니다. (Ia33b2, b/175142755, b/177420019)

  • FlingConfig를 허용하는 AnimatedFloat.fling을 삭제했습니다. 대신 정지 Animatable.animateDecay를 사용하세요. (I4659b, b/177457083)

  • 이제 컴포지션 외부에서 clickable, toggleable, selectable을 만들 수 있습니다. (I0a130, b/172938345, b/175294473)

  • 이징을 기능 인터페이스로 변경했습니다. (Ib14e5)

  • 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)

  • 실험용 monotonicFrameAnimationClockOf 메서드를 삭제했습니다. (Ib753f, b/170708374)

  • 전역 좌표 메서드를 지원 중단하고 새 창 기반 좌표 메서드를 만들었습니다. (Iee284)

  • 검사가 사용 설정되어 있을 때 그래픽 레이어 수정자를 추가하는 Modifier.toolingGraphicsLayer를 추가했습니다. (I315df)

  • 이제 FocusRequester.createRefs는 변경될 수 있으므로 실험용으로 표시됩니다. (I2d898, b/177000821)

  • SemanticsPropertyReceiver.hidden이 invisibleToUser로 이름이 변경되었으며 @ExperimentalComposeUiApi로 표시되었습니다. AccessibilityRangeInfo가 ProgressBarRangeInfo로, stateDescriptionRange가 progressBarRangeInfo로 이름이 변경되었습니다. AccessibilityScrollState가 ScrollAxisRange로, horizontalAccessibilityScrollState가 horizontalScrollAxisRange로, verticalAccessibilityScrollState가 verticalScrollAxisRange로 이름이 변경되었습니다. (Id3148)

  • 테스트에서 TestCoroutineDispatcher를 활용합니다. (I532b6)

  • 벡터 그래픽의 루트에 적용된 색조 조정 파싱을 지원하도록 벡터 그래픽 API를 업데이트했습니다. (Id9d53, b/177210509)

버전 1.0.0-alpha10

2021년 1월 13일

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

API 변경사항

  • 구성요소 부분과 수학 연산을 포함하도록 속도를 수정했습니다. (Ib0447)
  • 유사한 실험용 API 주석과 일치하도록 @ExperimentalTesting에서 @ExperimentalTestApi로 이름을 바꿨습니다. (Ia4502, b/171464963)
  • Position의 이름을 DpOffset으로 바꿨고 getDistance()를 삭제했습니다. (Ib2dfd)
  • Color.useOrElse()의 이름을 Color.takeOrElse()로 바꿨습니다. (Ifdcf5)
  • 기본 Strings.kt에 토글을 추가합니다. (I4a5b7, b/172366489)
  • FlowRow 및 FlowColumn이 지원 중단되었습니다. 대신 맞춤 레이아웃을 사용하세요. (I09027)
  • Modifier.focus()와 Modifier.focusRequester()가 지원 중단되었습니다. 대신 Modifier.focusModifier()와 Modifier.focusReference()를 사용하세요. (I75a48, b/175160751, b/175160532, b/175077829)
  • nativeClass를 모듈로 이동하여 내부 클래스로 만들었습니다. equals 구현에서 'is MyClass'를 대신 사용하도록 nativeClass 사용을 업데이트했습니다. (I4f734)

버그 수정

  • 사용 중지된 텍스트 필드 및 읽기 전용 텍스트 필드의 지원을 추가했습니다. (I35279, b/171040474, b/166478534)
  • animate()가 이제 T 대신 State<T>를 반환하는 animateAsState()로 대체되었습니다. 상태 값이 판독되는 지점까지 무효화 범위를 좁힐 수 있으므로 성능이 향상됩니다. (Ib179e)
  • 의미 체계 역할 API를 추가하고 역할을 클릭 가능하고 선택 가능하며 전환 가능한 SemanticsModifier에 매개변수로 추가합니다. 슬라이더에서도 사용할 수 있도록 Modifier.progressSemantics를 변경했습니다. (I216cd)

버전 1.0.0-alpha09

2020년 12월 16일

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

API 변경사항

  • settle 애니메이션을 수동으로 트리거하고 Modifier.swipeable을 드래그하는 API를 추가했습니다. (Iaa17a, b/162408885)
  • ButtonConstants와 같은 *Constants 객체를 ButtonDefaults와 같이 Defaults로 끝나도록 이름을 바꿨습니다. 이러한 새 객체의 속성에서 불필요한 default 접두사도 삭제합니다. (Ibb915, b/159982740)
  • Compose는 구성 가능한 호출을 실행할 수 있는 속성 getter를 지원합니다. 이에 대한 지원은 중단되지 않지만 속성 getter를 @Composable로 선언하기 위한 구문이 변경됩니다.

    이전에는 속성 자체에 주석을 달아 이 작업을 실행했으나 이제 해당 구문이 지원 중단됩니다.

        @Composable val someProperty: Int get() = ...
    

    이제 이 작업을 위한 올바른 구문은 속성의 getter에 주석을 다는 것입니다.

       val someProperty: Int @Composable get() = ...
    

    한동안은 두 구문 모두 작동하지만 시간이 지나면 지원 중단되는 이전 구문에서 컴파일 오류가 발생합니다. (Id9197)

  • 나머지 Material 라이브러리 없이도 양방향 구성요소를 빌드할 수 있도록 ripple API가 포함된 androidx.compose.material:material-ripple 라이브러리를 추가했습니다. rememberRippleIndication을 지원 중단하고 rememberRipple로 대체했습니다. (Ibdf11)

버그 수정

  • 오프셋 수정자의 람다가 이제 Float 대신 IntOffset을 반환합니다. (Ic9ee5, b/174137212, b/174146755)
  • 그리기 환경의 크기 조절 정보를 사용할 수 있을 때 셰이더 인스턴스를 느리게 만들도록 ShaderBrush를 리팩터링했습니다. 이는 맞춤 DrawModifier 구현을 구현하지 않고도 구성 시간에 컴포저블의 전체 그리기 경계를 차지하는 그라데이션을 정의하는 데 유용합니다.

    그라데이션 함수 생성자 API를 지원 중단했으며 Gradient 객체의 팩토리 메서드로 대체했습니다. (I511fc, b/173066799)

  • Modifier.focusObserver를 지원 중단했습니다. 대신 Modifier.onFocusChanged나 Modifier.onFocusEvent를 사용하세요. (I30f17, b/168511863, b/168511484)

  • LazyColumnFor, LazyRowFor, LazyColumnForIndexed, LazyRowForIndexed를 지원 중단했습니다. 대신 LazyColumn과 LazyRow를 사용하세요. (I5b48c)

  • Dp.VectorConverter, Position.VectorConverter 등을 animation-core로 이동하고 이전 VectorConveters를 지원 중단했습니다. (If0c4b)

  • Autofill API는 이제 실험용 API이며 선택해야 사용할 수 있습니다. (I0a1ec)

  • FocusRequester 인스턴스를 만들기 위해 디스트럭처링 선언을 추가했습니다. (I35d84, b/174817008)

  • accessibilityLabel의 이름을 contentDescription으로 바꿨습니다. accessibilityValue의 이름을 stateDescription으로 바꿨습니다. (I250f2)

  • InfiniteRepeatableSpec을 생성하기 위한 새로운 infiniteRepeatable 함수를 도입했습니다. (I668e5)

  • DropdownMenus의 배치 동작을 Material 사양에 따라 약간 변경했습니다. (I34c72, b/168594123)

  • TextFields를 위한 InteractionState 지원을 추가했습니다. (I61d91)

  • 하위 요소의 의미 체계를 지우고 새 의미 체계를 설정하는 Modifier.clearAndSetSemantics를 추가했습니다. (I277ca)

  • ContentDrawScope를 DrawScope와 함께 있도록 ui-graphics 모듈로 이동했습니다. (Iee043, b/173832789)

버전 1.0.0-alpha08

2020년 12월 2일

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

API 변경사항

  • MaterialTheme가 이제 선택 핸들과 선택 배경의 올바른 색상을 설정합니다. 머티리얼이 아닌 앱에서는 직접 AmbientTextSelectionColors를 사용하여 선택 옵션으로 사용되는 색상을 맞춤설정할 수 있습니다. (I1e6f4, b/139320372, b/139320907)
  • Compose 가이드라인과의 일관성을 확인하기 위해 컴포저블 람다 매개변수 이름 지정 및 위치에 관한 린트 검사를 추가했습니다. 또한 Lint 검사와 지침에 따라 후행 람다의 이름으로 children을 사용하는 일부 API를 content로 마이그레이션했습니다. (Iec48e)
  • VectorAsset의 이름을 ImageVector로 바꿨습니다. API 위원회 가이드라인에 따라 ImageVector의 내부 클래스가 되도록 VectorAsset을 Builder로 이동하고 이름을 바꿨습니다. 호환성을 위해 VectorAssetBuilder의 typealias를 ImageVector.Builder 링크에 추가했습니다. (Icfdc8)
  • ImageAsset 및 관련 메서드의 이름을 ImageBitmap으로 바꿨습니다. (Ia2d99)
  • 기초 의미 체계 속성을 UI로 이동했습니다. (I6f05c)
  • fun RippleIndication()을 지원 중단하고 다른 API와의 일관성을 위해 rememberRippleIndication()으로 대체했습니다. (Id8e2c)
  • BasicTextField, TextField, OutlinedTextField에 singeLine 매개변수를 추가했습니다. 이 매개변수를 true로 설정하면 텍스트 필드가 수평으로 스크롤 가능한 단일 줄이 됩니다. (I57004, b/168187755)

버그 수정

  • 의미 체계 작업 닫기를 추가했습니다. (I2b706)
  • DrawModifier API를 androidx.compose.ui 패키지에서 androidx.compose.ui.draw 패키지로 이동했습니다. 지원 중단된 API에서 현재 API로 이전하는 데 도움이 되는 typealiases/helper 메서드를 포함하도록 DrawModifierDeprecated.kt 파일을 만들었습니다. (Id6044, b/173834241)
  • Modifier.drawLayer의 이름을 Modifier.graphicsLayer로 바꿨습니다. API 의견에 따라 관련 클래스도 GraphicsLayer로 업데이트했습니다. (I0bd29, b/173834241)
  • SubcomposeLayout 선언에서 <T>를 삭제했습니다. 이제 유형을 지정하지 않고 사용할 수 있습니다. (Ib60c8)
  • drawLayer의 편의성을 위해 Modifier.scale/rotate API를 추가했습니다.
    • Modifier.drawOpacity의 이름을 Modifier.alpha로 바꿨습니다.
    • Modifier.drawShadow의 이름을 Modifier.shadow로 바꿨습니다. (I264ca, b/173208140)
  • Box 정렬 매개변수의 이름을 contentAlignment로 바꿨습니다. (I2c957)
  • offsetPx 수정자의 이름을 offset으로 바꿨습니다. offsetPx 수정자는 이제 State 대신 람다 매개변수를 사용합니다. (Ic3021, b/173594846)
  • SweepGradientShader 및 SweepGradientBrush API를 도입했습니다. (Ia22c1)
  • 구성 가능한 함수에 수정자 매개변수 린트 검사를 추가했습니다. 이 린트 검사에서는 Compose 가이드라인과의 일관성을 위해 매개변수의 이름 지정, 반환 유형, 기본값 및 순서를 확인합니다. (If493b)
  • TextFieldValue API를 업데이트했습니다.
    • TextFieldValue.composition을 읽기 전용으로 만들었습니다.
    • 잘못된 선택 범위로 발생한 예외를 삭제했습니다. (I4a675, b/172239032)
  • Modifier.drawLayer() 오버로드를 추가했습니다. 이 오버로드는 상태 변경이 발생할 때 재구성 및 재배열을 건너뛸 수 있는 방식으로 레이어 매개변수를 정의하는 새로운 GraphicsLayerScope에서 람다 블록을 사용합니다. 이제 로직을 LayoutModifier의 placeable.placeWithLayer() 메서드로 이전하기 위한 준비로 DrawLayerModifier를 내부로 이동했습니다. (I15e9f, b/173030831)
  • 접미사로 Ambient라는 이름을 사용하는 Ambient가 지원 중단되고 다른 Ambient 및 Compose API 가이드라인에 따라 Ambient를 접두사로 사용하는 새로운 속성으로 대체됩니다. (I33440)
  • 수정자 팩토리가 @Composable로 표시되는 대신 androidx.compose.ui.composed {}를 내부적으로 사용하는지 확인하기 위한 린트 검사를 추가했습니다. (I3c4bc)
  • 의미 체계 인수 mergeAllDescendants의 이름을 mergeDescendants로 바꿨습니다. (Ib6250)
  • 테스트의 시간 제어(TestAnimationClock 및 사용)가 이제 실험용입니다. (I6ef86, b/171378521)
  • 이전 ui-test 모듈 및 해당 스텁을 삭제했습니다. (I3a7cb)
  • 다른 단위와의 일관성을 위해 TextUnit.Inherit의 이름을 TextUnit.Unspecified로 바꿨습니다. (Ifce19)
  • 정렬 인터페이스가 업데이트되어 정상 작동합니다. (I46a07, b/172311734)
  • id를 LayoutIdParentData의 layoutId로 이름을 바꿨습니다. Measurable.id를 Measurable.layoutId로 이름을 바꿨습니다. (Iadbcb, b/172449643)

버전 1.0.0-alpha07

2020년 11월 11일

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

API 변경사항

  • Emphasis를 지원 중단하고 AmbientContentAlpha로 대체했습니다. AmbientContentAlpha는 AmbientContentColor가 기본 콘텐츠 색상을 나타내는 방식과 유사하게 계층 구조 일부의 기본 콘텐츠 알파를 나타내는 더 간단한 추상화입니다. 이제 Text와 Icon이 기본적으로 AmbientContentAlpha의 현재 값을 사용하고 수동으로 color.copy(alpha = AmbientContentAlpha.current)를 실행하여 구성요소에 동일한 효과를 적용할 수 있습니다. ProvideEmphasis를 사용하는 대신 AmbientContentAlpha를 통해 값을 직접 제공할 수 있고 ContentAlpha의 새 기본 수준을 사용하여 이전 EmphasisLevels를 대체할 수 있습니다. (Idf03e, b/159017896)
  • androidx.compose.material.AmbientContentColor를 추가하여 androidx.compose.foundation.AmbientContentColor를 대체합니다. (I84f7b, b/172067770)
  • androidx.compose.material.Text를 추가하여 상위 수준의 테마 지정 가능한 Text 구성요소로 androidx.compose.foundation.Text를 대체합니다. 테마에서 색상/텍스트 스타일을 사용하지 않는 기본 텍스트 구성요소의 경우 BasicText를 사용하세요. (Ie6ae0)
  • TextFields에 maxLines가 추가되었습니다. (Ib2a5b)
  • keyboardOptions를 허용하도록 TextFields를 업데이트했습니다. (Ida7f3)
  • 이제 Surface가 고도 오버레이를 계산할 때 절대 (총) 고도를 사용하므로 다른 Surface에 중첩된 Surface는 결합된 고도를 사용하여 오버레이를 그립니다. (I7bd2b, b/171031040)

버그 수정

  • captureToBitmapcaptureToImage로 이동했습니다. (I86385)
  • 기본 AmbientTextStyle, ProvideTextStyle, AmbientContentColor가 지원 중단되었습니다. 대신 머티리얼 라이브러리에서 사용할 수 있는 새 버전을 사용하세요. 비머티리얼 애플리케이션의 경우 자체 구성요소에 사용할 수 있는 고유 디자인 시스템별 테마 설정 앰비언트를 만들어야 합니다. (I74acc, b/172067770 참조)
  • foundation.Text가 지원 중단되고 material.Text로 대체되었습니다. 테마의 값을 사용하지 않는 비독단적인 기본 텍스트 API는 androidx.compose.foundation.BasicText를 참고하세요. (If64cb)
  • KeyboardOptions의 이름을 ImeOptions로 바꿨습니다. (I82f36)
  • KeyboardType 및 ImeAction을 KeyboardOptions로 이동했습니다. (I910ce)
  • BaseTextField가 지원 중단되었습니다. BasicTextField를 대신 사용하세요. (I896eb)
  • ExperimentalSubcomposeLayoutApi 주석을 삭제했습니다. 이제 @OptIn을 추가하지 않고도 SubcomposeLayout을 사용할 수 있습니다. (I708ad)
  • FirstBaseline 및 LastBaseline을 androidx.compose.ui.layout 패키지로 이동했습니다. (Ied2e7)
  • ColorFilter 없이도 제공된 애셋 또는 페인터를 그리는 가능한 색조 색상으로 Color.Unspecified를 사용하도록 Icon API를 업데이트했습니다. 이전에는 Color.Unspecified를 사용한 색조 조정을 투명한 색으로 지정해 무시하려고 했습니다. 결과적으로 아무것도 렌더링되지 않습니다. (I049e2, b/171624632)
  • relativePaddingFrom의 이름이 paddingFrom으로 바뀌었습니다. 레이아웃 경계에서 텍스트 기준선까지의 거리를 쉽게 지정할 수 있도록 paddingFromBaseline 수정자를 추가했습니다. (I0440a, b/170633813)
  • SideEffect 및 DisposableEffect API와 일관성을 유지하기 위해 LaunchedTask의 이름을 LaunchedEffect로 바꿨습니다. 제목 매개변수가 없는 LaunchedEffect는 권장사항을 장려하기 위해 허용되지 않습니다. (Ifd3d4)
  • MeasureResult를 MeasureScope 외부로 이동했습니다. (Ibf96d, b/171184002)
  • 여러 레이아웃 관련 기호를 androidx.compose.ui에서 androidx.compose.layout.ui로 이동했습니다. (I0fa98, b/170475424)

버전 1.0.0-alpha06

2020년 10월 28일

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

API 변경사항

  • androidx.compose.foundation.Icon을 androidx.compose.material.Icon으로 이동했습니다. 머티리얼 라이브러리를 사용하지 않으려는 경우 이미지 구성요소/Modifier.paint()를 Painter와 함께 사용할 수도 있습니다. (I9f622)
  • FloatingActionButtonElevation을 추가하여 다양한 상태의 FAB에 사용되는 고도를 나타냅니다. 기본 구현은 FloatingActionButtonConstants.defaultElevation()을 참고하세요. (I2d4f5)
  • SwitchColors 인터페이스를 추가하여 다양한 상태의 Switch에 사용되는 색상을 나타냅니다. 이러한 색상을 맞춤설정하려면 SwitchConstants.defaultColors를 참고하세요. (I93805)
  • ButtonElevation 및 ButtonColors 인터페이스를 추가하여 다양한 상태의 버튼에 사용되는 고도와 색상을 나타냅니다. 이러한 매개변수를 맞춤설정하려면 ButtonConstants의 기본 함수를 참고하세요. (Ic5b7b)
  • RadioButtonColors 인터페이스를 추가하여 다양한 상태의 RadioButton에 사용되는 색상을 나타냅니다. 다양한 상태에서 사용되는 색상을 맞춤설정하려면 RadioButtonConstants.defaultColors()를 참고하세요. (I74130)
  • CheckboxColors 인터페이스를 추가하여 다양한 상태의 체크박스에 사용되는 색상을 나타냅니다. 다양한 상태에서 사용되는 색상을 맞춤설정하려면 CheckboxConstants.defaultColors()를 참고하세요. (I7dbdb)

버그 수정

  • Material 구성요소가 더 이상 고도를 zIndex로 설정하지 않습니다. 즉, 동일한 상위 요소 내에서 그림자 크기가 큰 하위 요소가 그림자 크기가 작은 하위 요소 위에 자동으로 그려지지 않습니다. 그래도 이러한 동작이 필요하면 필요에 따라 Modifier.zIndex()를 수동으로 설정하세요. (I70417, b/170623932)
  • 컴포저블 API에서 내부적으로 'remember'를 활용하여 컴포지션에서 데이터 유지를 더 잘 나타내도록 VectorPainter를 지원 중단하고 rememberVectorPainter로 대체했습니다. (Ifda43 참조)
  • ComposeTestRule에서 전환을 사용 설정하여 ComposeTestRule에서 깜박이는 커서를 사용 설정하는 옵션을 삭제했습니다. (If0de3 참조)
  • CoreTextField에 한 줄 키보드 옵션을 추가했습니다. (I72e6d 참조)
  • Compose 전체에서 사용되는 방식을 더 잘 표현하도록 Radius API의 이름을 CornerRadius로 바꿨습니다. 음의 모서리 반지름이 0으로 고정되어 있음을 나타내도록 문서를 업데이트했습니다. (I130c7, b/168762961)
  • DrawScope 및 ContentDrawScope를 추상 클래스가 아닌 인터페이스가 되도록 리팩터링했습니다.
    • DrawScope의 CanvasDrawScope 구현을 생성했습니다.
    • CanvasScope를 대신 사용하도록 DrawScope의 구현을 리팩터링했습니다.
    • DrawScope의 종속 항목을 래핑하도록 DrawContext를 생성했습니다.
    • DrawScope에서 지원 중단된 메서드를 삭제했습니다. (I56f5e)
  • Box가 인라인 함수로 생성되었습니다. (Ibce0c, b/155056091)

버전 1.0.0-alpha05

2020년 10월 14일

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

API 변경사항

  • 이제 팝업 및 대화상자는 상위 Window에서 FLAG_SECURE를 상속합니다. 또한, 이를 명시적으로 구성하는 옵션이 추가되었습니다. (I64966, b/143778148, b/143778149)
  • 현재 Modifier.swipeable은 기본적으로 56.dp 상태 임계값을 포함합니다 (Iab825, b/168610267)
  • ScaffoldState에서 @Stable.drawerGesturesEnabled로 표시된 모든 scaffold 상태가 Scaffold 자체로 이동했습니다. (I36645, b/168297016)
  • Scaffold 람다 매개변수에서 null을 허용하는 유형을 삭제합니다. emptyContent()를 사용하여 지정된 매개변수의 어떤 콘텐츠도 나타낼 수 없습니다. (I2b318, b/157633857, b/158551084)
  • contentColor() 및 currentTextStyle() API를 지원 중단하고 각각 AmbientContentColor 및 AmbientTextStyle 앰비언트로 대체합니다. 다른 앰비언트와 마찬가지로 앰비언트 속성에서 .current를 사용하여 현재 값에 액세스할 수 있습니다. 이러한 변경은 일관성을 유지하고 여러 가지 방법을 사용하여 동일한 결과를 얻는 것을 피하기 위해 이루어졌습니다. 또한, 목적을 더 잘 나타내도록 앰비언트 속성 일부의 이름을 다음과 같이 바꿉니다.

    • ContentColorAmbient -> AmbientContentColor
    • TextStyleAmbient -> AmbientTextStyle
    • IndicationAmbient -> AmbientIndication
    • EmphasisAmbient -> AmbientEmphasisLevels
    • RippleThemeAmbient -> AmbientRippleTheme (I37b6d)
  • AmbientElevationOverlay를 추가하여 어두운 테마의 Surfaces에 적용된 기본 고도 오버레이를 맞춤설정/사용 중지할 수 있습니다. (I5b74d)

버그 수정

  • 인라인 클래스의 센티널 값을 표준화하는 과정의 일환으로 다른 인라인 클래스와의 일관성을 위해 Color.Unset의 이름을 Color.Unspecified로 바꿉니다. (I97611, b/169797763)
  • TextOverflow.None이 도입되었습니다. 오버플로가 None이면 Text에서 더 이상 오버플로를 처리하지 않으며 LayoutNode에 실제 크기를 보고합니다. (I175c9, b/158830170)
  • launchInComposition의 이름이 Compose API 가이드라인에 맞게 LaunchedTask로 바뀌었습니다. (I99a8e)
  • OnPositionedModifier 이름이 OnGloballyPositionedModifier로 바뀌고 onPositioned()의 이름이 onGloballyPositioned()로 바뀝니다. (I587e8, b/169083903)

버전 1.0.0-alpha04

2020년 10월 1일

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

API 변경사항

  • 상태를 끌어 올리고 상태를 읽고 제어할 수 있도록 스테이트풀(Stateful) Material 구성요소에 InteractionState 매개변수를 노출합니다. (Iaca5f, b/168025711, b/167164434)
  • RadioButton 및 TriStateCheckbox의 *color 매개변수가 변경되어 각 상태에 사용된 색상을 완전히 맞춤설정하고 원하는 경우 상태 간에 색상 애니메이션 방식을 변경할 수 있습니다. 자세한 내용은 CheckboxConstants 및 RadioButtonConstants에서 새로운 animateDefault* 색상 함수를 참고하세요. (I1c532)
  • rememberBackdropState 이름을 rememberBackdropScaffoldState로 변경했으며 애니메이션 클록에 추가 매개변수를 추가했습니다. BackdropScaffold의 backdropScaffoldState 매개변수의 이름을 scaffoldState로 변경했습니다. BackgroundConstants 이름을 BackgroundScaffoldConstants로 변경했습니다. (Ib644d)
  • 실험용 BottomSheetScaffold 구성요소를 추가했습니다. (Ie02f0, b/148996320)
  • 실험용 ModalBottomSheetLayout 구성요소를 추가했습니다. (Ic209e, b/148996320)
  • ButtonConstants/FloatingActionButtonConstants.defaultAnimatedElevation 이름을 defaultElevation으로 변경했으며, 이제 AnimatedValue 대신 Dp 값을 반환합니다. (I5f3ed)

버그 수정

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

버전 1.0.0-alpha03

2020년 9월 16일

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

API 변경사항

  • BottomNavigationItemonSelect 매개변수 이름이 onClick으로 바뀌었습니다. (I91925, b/161809324)
  • BottomNavigationItem 및 Tab에 InteractionState 매개변수를 추가하여 이 상태를 유지하고 구성요소가 다양한 상태에서 표시되는 방식을 조정할 수 있게 합니다. (Ia3e9e, b/168025711)
  • 버튼에서 disabledBackgroundColordisabledContentColor 매개변수를 삭제합니다. 대신 ButtonConstants 내에서 새로운 기본 색상 함수를 사용해야 합니다. contentColor/backgroundColor를 이미 명시적으로 설정한 경우, 이러한 기본 함수를 사용하고 전체/일부 매개변수를 맞춤설정하여 사용 설정된 상태 및 사용 중지된 상태의 색상을 덮어쓰지 않도록 해야 합니다. (If9b52)
  • Textfield의 배경 색상에 더 이상 투명도 알파를 암시적으로 적용하지 않습니다. 대신, backgroundColor 매개변수를 통해 제공되는 모든 색상이 직접 적용됩니다. (Iecee9, b/167951441)
  • InnerPadding이 PaddingValues로 이름이 바뀌었습니다. (I195f1, b/167389171)
  • Modifier.swipeableresistanceFactorAtMinresistanceFactorAtMax 매개변수가 단일 저항 매개변수로 대체되었습니다. SwipeableConstants에 새로운 defaultResistanceConfig 메서드가 추가되었습니다. (I54238)
  • Button 및 FloatingActionButton에 대한 애니메이션 스테이트풀(Stateful) 고도 지원을 추가합니다. 이제 고도에서 기본 상태와 눌림 상태 사이에 애니메이션을 적용합니다. 상태 간의 고도를 맞춤설정하려면 모든 경우에 flat Dp 값을 설정하는 대신 ButtonConstants.defaultAnimatedElevation()FloatingActionButtonConstants.defaultAnimatedElevation()을 사용합니다. (I37925)
  • TextField 및 OutlinedTextField 내의 라벨이 선택적 매개변수가 되었습니다. (I267f6, b/162234081)

버그 수정

  • onNode 또는 waitForIdle과 같은 전역 테스트 함수는 이제 지원 중단되었습니다. ComposeTestRule에 정의된 새로운 함수로 이전하세요. (I7f45a)
  • DpConstraints 및 DpConstraints를 사용하는 API가 지원 중단되었습니다. (I90cdb, b/167389835)
  • widthIn의 minWidth와 maxWidth 매개변수의 이름이 min과 max로 바뀌었습니다. preferredWidthIn, heightIn 및 preferredHeightIn도 마찬가지입니다. (I0e5e1, b/167389544)
  • 앞으로 스크롤하거나 뒤로 스크롤하는 의미 체계 작업을 삭제합니다. AccessibilityRangeInfo에 단계가 추가되었습니다. (Ia47b0)
  • 레이아웃 API에서 중력 사용에 관한 이름이 align 또는 alignment로 일관성 있게 바뀌었습니다. (I2421a, b/164077038)
  • 현재 전역 메서드가 지원 중단될 예정이므로 onNode 및 다른 전역 메서드가 ComposeTestRule에 추가되었습니다. (Ieae36)
  • createAndroidComposeRuleAndroidInputDispatcherandroidx.ui.test.android에서 androidx.ui.test로 이동했습니다. (Idef08, b/164060572)

버전 1.0.0-alpha02

2020년 9월 2일

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

API 변경사항

  • 실험용 BackdropScaffold 구성요소가 추가되었습니다. (Iad908)

버그 수정

  • Matrix4가 Matrix로 대체되었습니다. vectormath 패키지의 다른 모든 부분이 삭제되었습니다. (Ibd665, b/160140398)

버전 1.0.0-alpha01

2020년 8월 26일

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

알려진 문제

머티리얼 TextField의 첫 번째 문자는 백스페이스를 사용하여 삭제할 수 없습니다. (b/165956313)

버전 0.1.0-dev

버전 0.1.0-dev17

2020년 8월 19일

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

API 변경사항

  • 이전에 지원 중단된 RadioGroup 및 RadioGroupItem을 삭제했습니다. 대신 Row 및 RadioBotton을 사용해야 합니다. (I381b7, b/163806637)
  • TextField에서 onFocusChanged 콜백을 삭제했습니다. 대신 Modifier.focusObserver를 사용해야 합니다. (I51089, b/161297615)
  • Modifier.drawBorder가 지원 중단되었습니다. 대신 Modifier.border를 사용하세요. Border 데이터 클래스를 BorderStroke로 대체했습니다. (I4257d, b/158160576)
  • SwipeableState에서 일부 속성의 이름을 바꿨습니다(swipeTarget -> targetValue, swipeProgress -> progress, swipeDirection -> direction). SwipeableState를 생성하기 위한 rememberSwipeableState 함수를 추가했습니다. (I2fc9c, b/163129614, b/163132293)
  • 위치 지정 및 적절한 큐 추가가 포함된 스낵바 지원을 추가했습니다. SnackbarHostState.showSnackbar 정지 함수를 통해 액세스할 수 있습니다. 또한 다음 변경사항에 유의하세요.
    • SnackbarHost 구성요소를 추가했습니다. 이 구성요소는 상태를 기반으로 스낵바를 호스팅하며 스낵바 간 전환을 담당합니다.
    • SnackbarHostState를 추가하여 스낵바 및 스낵바 호스트를 제어할 수 있으며 ScaffoldState에서 이를 분리하였습니다. scaffoldState.snackbarHostState를 통해서도 이 상태에 액세스할 수 있습니다.
    • snackbarHostState와 스낵바 자체 간의 공통 인터페이스를 지원하기 위해 스낵바 오버로드를 추가했습니다. (I79aaa)
  • 사용 설정된 매개변수를 IconButton에 추가하고 IconToggleButton의 매개변수를 재정렬했습니다. (I0a941, b/161809385, b/161807956)
  • 문자열 기반 API가 있는 ListItem 버전을 삭제했습니다. 대신 슬롯 버전을 사용해야 합니다. (Ib8f57, b/161804681)
  • 지원 중단된 FilledTextField 구성요소를 삭제했습니다. 채워진 텍스트 입력란의 머티리얼 디자인 구현을 얻으려면 대신 TextField를 사용하세요. (I5e889)
  • AlertDialog는 이제 버튼에 FlowRow를 사용합니다. (I00ec1, b/161809319, b/143682374)
  • 경계를 지나 스와이프할 때 저항의 양을 변경할 수 있도록 Modifier.swipeable에 매개변수를 추가했습니다. [min/max]Value 매개변수를 삭제했습니다. (I93d98)
  • LinearProgressIndicator에 backgroundColor 매개변수를 추가하고 CircularProgressIndicator에서 내부 패딩을 삭제했습니다. 값 사이의 진행률을 애니메이션화할 때 기본 AnimationSpec으로 사용할 수 있는 새로운 ProgressIndicatorConstants.DefaultProgressAnimationSpec을 추가했습니다. (If38b5, b/161809914, b/161804677)
  • Modifier.swipeable에 선택적 매개변수 velocityThreshold를 추가했습니다. (I698ba)
  • bottomBarSize, fabSize 등을 ScaffoldState에서 더 이상 사용할 수 없습니다. 크기를 알고 싶은 구성요소에는 Modifier.onPosition을 대신 사용해야 합니다. contentColor 및 수정자 매개변수를 Scaffold에 추가했습니다. (Ic6f7b, b/161811485, b/157174382)
  • 다른 API와의 일관성을 위해 Tab에서 일부 매개변수의 이름을 변경하고 재정렬합니다. (Ia2d12, b/161807532)
  • TabRow를 TabRow 및 ScrollableTabRow로 분할하며 TabRow에서 isScrollable을 삭제합니다. 또한 ScrollableTabRow의 edgePadding을 노출하여 탭 앞/뒤의 여유 공간을 제어할 수 있습니다. (I583e8, b/161809544)
  • TabRow 객체를 삭제하여 TabConstants로 대체했습니다. TabRow.TabPosition을 최상위 수준(TabPosition)으로 이동하였으며 indicatorContainer의 이름을 indicator로 변경했습니다. 업데이트된 API 및 기본값 사용 방법에 관한 자세한 내용은 샘플 및 문서를 참조하세요. (I54d45, b/161809544)
  • Modifier.swipeable의 임계값 매개변수를 수정했습니다. 이제 한 쌍의 상태(T 유형)를 사용하여 이러한 상태 간의 임계값을 ThresholdConfig 형식으로 반환합니다. 매개변수 dismissThresholds를 SwipeToDismiss에 추가했습니다. 이는 람다(DismissDirection) -> ThresholdConfig입니다. (Ie1080)
  • 슬라이더에 세분화된 맞춤설정을 위한 색상이 추가되었습니다. (I73e64, b/161810475)
  • 카드의 색상 매개변수 이름을 backgroundColor로 바꿨습니다. (I01fc1, b/161809546)
  • 이제 스낵바에 맞춤설정 가능한 배경 및 콘텐츠 색상이 있습니다. (I238f2, b/161804381)
  • modifier, backgroundColor, contentColor 및 scrimColor 맞춤설정 매개변수를 Drawer에 추가했습니다. (I23655, b/161804378)
  • state { ... } 컴포저블이 이제 지원 중단되고 명확성을 위해 명시적 remember { mutableStateOf(...) } 호출로 대체됩니다. 이렇게 하면 전체 API 노출 영역 및 상태 관리를 위한 개념 수가 감소하고 클래스 속성 위임을 위한 by mutableStateOf() 패턴과 일치합니다. (Ia5727)
  • 버튼의 패딩 매개변수 이름을 contentPadding으로 바꿨습니다. (Id252e, b/161809394)
  • 실험용 머티리얼 구성요소인 SwipeToDismiss를 추가했습니다. (I129e5)

버그 수정

  • onChildPositionedOnChildPositionedModifier가 삭제되었습니다. 개발자는 하위 레이아웃에서 onPositionedOnPositionedModifier를 대신 사용해야 합니다. (I4522e, b/162109766)
  • SemanticsPropertyKey에 mergePolicy 람다를 추가했습니다. 이는 mergeAllDescendants 의미 체계 병합을 위한 맞춤 정책을 정의하는 데 사용할 수 있습니다. 기본 정책은 상위 값이 이미 있다면 상위 값을 사용하고 상위 값이 없으면 하위 값을 사용하는 것입니다. (Iaf6c4, b/161979921)
  • IntSize는 이제 인라인 클래스입니다. (I2bf42)
  • PlacementScope.placeAbsolute()의 이름이 PlacementScope.place()로 변경되었으며 이전 PlacementScope.place()의 이름은 PlacementScope.placeRelative()로 변경되었습니다. 따라서 PlacementScope.place() 메서드는 더 이상 RTL 컨텍스트의 위치를 자동으로 미러링하지 않습니다. 이를 원한다면 PlacementScope.placeRelative()를 대신 사용해야 합니다. (I873ac, b/162916675)
  • PxBounds가 지원 중단되고 Rect로 대체되었습니다. PxBounds의 모든 사용이 Rect로 업데이트되었으며 이전을 지원하기 위해 적절한 지원 중단/주석으로 대체가 추가되었습니다. (I37038, b/162627058)
  • Compose 이름 지정 패턴에 더 잘 맞게 RRect의 이름을 RoundRect로 변경했습니다. RRect와 유사한 함수 생성자를 만들었으며 RRect 함수 생성자는 지원 중단되었습니다. (I5d325)

버전 0.1.0-dev16

2020년 8월 5일

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

API 변경사항

  • Colors는 인터페이스가 아닌 최종 클래스입니다. 맞춤 구현을 확장하고 제공하는 대신 맞춤 테마 객체의 새 앰비언트를 생성하고 MaterialTheme가 내부적으로 작동하는 방식과 유사하게 구성요소의 새 앰비언트를 통해 테마 객체에 액세스해야 합니다. (Ibae84)
  • Material 색상 시스템에 더 잘 매핑하고 ColorPalette가 Material 색상 시스템의 특정 구현이 아니라 '일반적인' 테마 객체인 것과 관련한 혼동을 없애기 위해 ColorPalette가 Colors로 이름이 변경되었습니다. 또한 lightColorPalette 및 darkColorPalette가 각각 lightColors 및 darkColors로 이름이 변경되었습니다. (I9e976, b/161812111)
  • BottomNavigationItem의 매개변수 이름을 text에서 label로, onSelected에서 onSelect로, activeColor에서 selectedContentColor로, inactiveColor에서 unselectedContentColor로 바꾸고 가이드라인과 일치하도록 매개변수 순서를 업데이트했습니다. (Icb605, b/161809324)
  • Modifier.stateDraggable이 완전히 재작업되고 Modifier.swipeable로 이름이 바뀌었습니다. 새로운 SwipeableState 클래스가 도입되었으며 DrawerState 및 BottomDrawerState가 이 클래스에서 상속하도록 리팩터링되었습니다. [Modal/Bottom]DrawerLayout은 더 이상 onStateChange 매개변수를 사용하지 않습니다. (I72332, b/148023068)
  • foundation.shape.corner 패키지가 foundation.share로 평면화되었습니다. (I46491, b/161887429)
  • ExperimentalMaterialApi 주석을 추가했습니다. RippleTheme을 실험용으로 표시했습니다. (Ic5fa0, b/161784800)
  • Material FilledTextField는 TextField로 이름이 바뀌었으며 기본 TextField는 BaseTextField로 이름이 바뀌어 원하는 가장 간단한 API를 쉽게 찾고 사용할 수 있습니다. (Ia6242, b/155482676)

버그 수정

  • OnChildPositioned가 지원 중단되었습니다. 대신 하위 요소에서 OnPositioned를 사용해야 합니다. (I87f95, b/162109766)
  • 광범위한 API 수정사항을 처리했습니다. (I077bc)
    1. 사용하지 않는 OffsetBase 인터페이스를 삭제했습니다.
    2. 일관된 API 노출 영역을 갖도록 Offset 및 IntOffset 클래스를 정렬했습니다.
    3. Offset API와 일치하도록 IntOffset.Origin의 이름을 IntOffset.Zero로 바꿨습니다.
    4. 소비자가 자체 캔버스 인스턴스를 만들 수 있도록 지원하기 위해 캔버스 인터페이스에서 nativeCanvas 메서드를 이동했습니다.
    5. lateinit 대신 null이 아닌 매개변수가 되도록 DrawScope를 리팩터링하고 필드의 비 null 허용 여부를 보장하기 위해 스터브 EmptyCanvas 클래스를 만들었습니다.
    6. ClipOp enum의 이름을 파스칼 표기법으로 바꿨습니다.
    7. FilterQuality enum의 이름을 파스칼 표기법으로 바꿨습니다.
    8. StrokeJoin enum의 이름을 파스칼 표기법으로 바꿨습니다.
    9. PointMode enum의 이름을 파스칼 표기법으로 바꿨습니다.
    10. PaintingStyle enum의 이름을 파스칼 표기법으로 바꿨습니다.
    11. PathFillType enum의 이름을 파스칼 표기법으로 바꿨습니다.
    12. StrokeCap enum의 이름을 파스칼 표기법으로 바꿨습니다.
    13. lateinit 매개변수를 더 이상 사용하지 않도록 DrawCache 구현을 업데이트했습니다.
    14. fillPaint 및 strokePaint 내부 매개변수에 지연 위임을 더 이상 사용하지 않도록 DrawScope를 업데이트했습니다.
    15. 적은 오버헤드로 Box 사용을 방지하기 위해 이미지 컴포저블을 업데이트했습니다.
    16. @Immutable 주석을 포함하도록 Outline 클래스를 업데이트했습니다.
    17. 각 경로 명령에 대해 @Immutable 주석을 포함하도록 PathNode를 업데이트했습니다.
    18. 동등성에 대한 중복 조건부 검사를 삭제하도록(Compose가 사전에 처리하므로) 벡터 하위 구성을 업데이트했습니다.
    19. Rect 컴패니언 생성자 메서드를 지원 중단하고 함수 생성자로 대체했습니다.
    20. @Immutable 및 @Stable API를 사용하여 Brush 클래스 및 함수 생성자를 업데이트했습니다.
    21. VertexMode enum을 파스칼 표기법으로 업데이트했습니다.
    22. 페인트의 stroke 매개변수가 변경된 경우 이 매개변수를 조건부로 덮어쓰도록 DrawScope selectPaint 메서드를 업데이트했습니다.
    23. 디스트럭처링 API를 추가하고 UnspecifiedSize 이름을 Unspecified로 바꾸며 사용하지 않는 메서드를 삭제하도록 Size를 업데이트했습니다.
  • 대화상자를 UI로 이동합니다. (I47fa6)
  • SemanticsNodeInteraction.performPartialGesture를 삭제했습니다. 대신 SemanticsNodeInteraction.performGesture를 사용해야 합니다. (Id9b62 참조)
  • SemanticsNodeInteraction.getBoundsInRoot() 이름을 SemanticsNodeInteraction.getUnclippedBoundsInRoot()로 바꿨습니다. (Icafdf, b/161336532 참조)
  • 오른쪽에서 왼쪽 지원을 위한 API가 업데이트되었습니다. LayoutDirectionAmbient가 추가되어 레이아웃 방향을 읽고 변경하는 데 사용할 수 있습니다. Modifier.rtl 및 Modifier.ltr이 삭제되었습니다. (I080b3)
  • Modifier.deternimateProgress 이름을 Modifier.progressSemantics로 바꿨습니다. (I9c0b4)
  • Material.io/icons에 추가된 최신 아이콘으로 material-icons-extended를 업데이트합니다. (I4b1d3)
  • transitionDefinition에 T 유형을 명시적으로 지정해야 합니다. (I1aded)
  • Modifier.plus가 지원 중단되었습니다. 대신 Modifier.then을 사용해야 합니다. 'then'에는 더 강력한 순서 지정 신호가 있지만 체인을 끊으며 읽기가 더 어려운 Modifier.padding().background() + anotherModifier 입력도 금지합니다. (Iedd58, b/161529964)
  • AndroidComposeTestRule 이름을 createAndroidComposeRule로 바꿨습니다. (I70aaf)
  • isFocused() 및 isNotFocused() SemanticsMatcher가 추가됩니다. (I0b760)
  • 테스트에서 사용해서는 안 되는 BaseGestureScope.globalBounds가 삭제되었습니다. 상호작용하고 있는 노드에 로컬인 좌표를 대신 사용하세요. (Ie9b08)
  • 잘라낸 디스플레이에서 팝업 위치가 수정되었습니다. (Idd7dd)
  • Modifier.drawBackground 이름을 Modifier.background로 바꿨습니다. (I13677)

버전 0.1.0-dev15

2020년 7월 22일

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

종속 항목 업데이트

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

API 변경사항

  • 이제 @Model 주석이 지원 중단됩니다. state 및 mutableStateOf를 대안으로 사용합니다. 이번 지원 중단은 여러 신중한 논의 끝에 결정되었습니다.

    근거

    근거에는 다음이 포함되지만 이에 국한되지는 않습니다.

    • 교육이 필요한 API 노출 영역 및 개념이 감소합니다.
    • 다른 유사한 툴킷(Swift UI, React, Flutter)과 더욱 원활하게 호환됩니다.
    • 되돌릴 수 있는 결정입니다. 나중에 언제든지 @Model을 가져올 수 있습니다.
    • @Model을 처리해야 할 작업으로 구성하는 데 있어서 발생하는 특수한 사용 및 답변하기 어려운 질문을 삭제합니다.
    • @Model 데이터 클래스, 등호, 해시코드 등
    • 일부 속성은 '관찰'되고 나머지는 관찰되지 않게 하려면 어떻게 해야 하나요?
    • 관찰에서 사용할 구조 동등성과 참조 동등성을 각각 지정하려면 어떻게 해야 하나요?
    • 시스템에서 '매직'을 줄입니다. 즉, 시스템이 실제보다 더 영리하다고(즉, 목록을 식별하는 방법을 알고 있다고) 가정할 가능성을 줄입니다.
    • 관찰의 세부사항을 더 직관적으로 파악할 수 있습니다.
    • 클래스의 변수에서 속성으로의 리팩터링 가능성을 개선합니다.
    • State별로 수동 최적화할 가능성이 잠재적으로 생깁니다.
    • 나머지 생태계와 더 원활하게 호환되고 불변 또는 '변경 가능한 상태를 허용'하는 데 모호성을 줄입니다.

    이전 참고사항

    @Model의 거의 모든 기존 사용법은 두 가지 방법 중 하나로 상당히 쉽게 변환됩니다. 아래 예에서는 속성이 두 개인 @Model 클래스가 호환 가능하게 사용됨을 보여줍니다.

    @Model class Position(
     var x: Int,
     var y: Int
    )
    
    @Composable fun Example() {
     var p = remember { Position(0, 0) }
     PositionChanger(
       position=p,
       onXChange={ p.x = it }
       onYChange={ p.y = it }
     )
    }
    

    대안 1: State<OriginalClass> 사용 및 사본 생성

    이 접근 방식은 Kotlin의 데이터 클래스를 사용하면 더 쉽습니다. 기본적으로 모든 이전 var 속성을 데이터 클래스의 val 속성으로 만들고 remember 대신 state를 사용한 다음 데이터 클래스 copy(...) 편의 메서드를 사용하여 상태 값을 원본을 복제한 사본에 할당합니다.

    데이터 클래스의 유일한 변형이 State 인스턴스가 만들어진 동일한 범위에서 실행된 경우에만 이 접근 방식이 효과가 있다는 데 유의해야 합니다. 데이터 클래스가 내부적으로 자신을 변형하여 사용 범위 밖에서 사용되고 있으며 이를 관찰하는 데 의존하고 있다면 다음 접근 방식을 사용하는 것이 좋습니다.

    data class Position(
     val x: Int,
     val y: Int
    )
    
    @Composable fun Example() {
     var p by state { Position(0, 0) }
     PositionChanger(
       position=p,
       onXChange={ p = p.copy(x=it) }
       onYChange={ p = p.copy(y=it) }
     )
    }
    

    대안 2: mutableStateOf 및 속성 위임 사용

    이 접근 방식은 Kotlin의 속성 위임과 개발자가 MutableState 인스턴스를 구성 밖에서 만들도록 허용하는 mutableStateOf API를 사용하면 더 쉽습니다. 기본적으로 원래 클래스의 모든 var 속성을 속성 위임으로 mutableStateOf가 있는 var 속성으로 교체합니다. 이렇게 하면 클래스 사용법이 전혀 변경되지 않고 클래스의 내부 구현만 변경되는 이점이 있습니다. 그러나 각 속성이 이제 개별적으로 관찰/작성되므로 동작은 원래 예와 완전히 동일하지는 않습니다. 따라서 리팩터링 후에 확인하는 재구성 범위가 더 좁아질 수 있는데 이는 좋은 현상입니다.

    class Position(x: Int, y: Int) {
     var x by mutableStateOf(x)
     var y by mutableStateOf(y)
    }
    
    // source of Example is identical to original
    @Composable fun Example() {
     var p = remember { Position(0, 0) }
     PositionChanger(
       position=p,
       onXChange={ p.x = it }
       onYChange={ p.y = it }
     )
    }
    

    (I409e8, b/152050010, b/146362815, b/146342522, b/143413369, b/135715219, b/143263925, b/139653744)

  • 텍스트 필드의 onFocusChange 콜백 이름을 onFocusChanged로 바꿨습니다. (Ida4a1)

  • 앵커 사이에 임계값을 지정하기 위해 stateDraggable에 thresholds 매개변수를 추가했습니다. 이는 하단 창에서 56dp 임계값을 설정하는 데 사용되었습니다. 또한, 이제 BottomDrawerLayout에서 별도의 BottomDrawerState enum을 사용합니다. (I533fa)

  • 이전에 지원 중단된 Modifier.ripple을 삭제합니다. 이제 clickable이 ripple을 기본 표시로 사용하므로(애플리케이션에 MaterialTheme {} 세트가 있는 경우) 대부분의 경우 clickable을 사용하여 자유롭게 ripple 표시를 가져올 수 있습니다. ripple의 색상/크기/제한 매개변수를 맞춤설정해야 한다면 수동으로 RippleIndication을 만들어 표시 매개변수로 clickable에 전달하면 됩니다. (I663b2, b/155375067)

  • 지원 중단된 FilledTextField 컴포저블 재정의를 삭제했습니다. (I7f8f8)

  • Button 객체(Button 함수에서 사용되는 기본값 포함)의 이름이 ButtonConstants로 바뀌었습니다. (I7c5f7, b/159687878)

  • 이제 버튼 콘텐츠의 슬롯이 행처럼 작동합니다. 이는 텍스트가 있는 아이콘이 필요한 경우 유용합니다. 작성 방법은 Button의 샘플을 참고하세요. (I0ff10, b/158677863)

  • RadioGroup 및 RadioGroupItem이 지원 중단되었습니다. 디자인에 따라 radioButton 선택의 적절한 세트를 만들도록 Modifier.selectable, Row, Column과 함께 Box를 사용합니다. (I7f5cf, b/149528535)

  • Material Outlined Textfield를 추가했습니다. (I1a518)

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

  • TabRow.TabPosition에는 IntPx가 아닌 Dp 위치가 포함되지 않습니다. (I34a07, b/158577776)

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

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

  • Modifier.ripple을 지원 중단합니다. 이제 clickable이 ripple을 기본 표시로 사용하므로(애플리케이션에 MaterialTheme {} 세트가 있는 경우) 대부분의 경우 clickable을 사용하여 자유롭게 ripple 표시를 가져올 수 있습니다. ripple의 색상/크기/제한 매개변수를 맞춤설정해야 한다면 수동으로 RippleIndication을 만들어 표시 매개변수로 clickable에 전달하면 됩니다. (I101cd, b/155375067)

  • Scaffold API가 재작업되었습니다. 이름이 바뀐 매개변수가 거의 없고 더 나은 맞춤설정을 위해 새 매개변수가 추가되었습니다. Fab, TopBar 및 BottomBar의 쿼리 크기에 getter를 추가했습니다. (I0e7ce)

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

  • SoftwareKeyboardController를 사용하여 소프트웨어 키보드를 수동으로 표시하거나 숨길 수 있습니다. (Ifb9d6, b/155427736)

  • Modifier.indication을 기본 패키지에 추가했습니다. 이 패키지를 사용하여 상호작용 가능한 맞춤 요소에 누르기/드래그/기타 표시를 나타낼 수 있습니다. (I8425f, b/155287131)

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

  • Emphasis.emphasize() 이름이 Emphasis.applyEmphasis()로 바뀌었습니다. (Iceebe)

  • 사용 중지된 버튼은 머티리얼 디자인 사양을 시각적으로 따릅니다. (I47dcb, b/155076924)

  • FilledTextField는 IME 작업, 시각적 변환 및 키보드 유형 지원을 받습니다. (I1f9cf, b/155075201)

  • 획 크기를 맞춤설정하도록 strokeWidth 매개변수가 CircularProgressIndicator에 추가되었습니다. LinearProgressIndicator의 획 크기(높이)를 변경하려면 Modifier.preferredHeight() 또는 다른 크기 수정자를 사용하면 됩니다. (Icea16, b/154919081)

  • 획 크기를 맞춤설정하도록 strokeWidth 매개변수가 CircularProgressIndicator에 추가되었습니다. LinearProgressIndicator의 획 크기(높이)를 변경하려면 Modifier.preferredHeight() 또는 다른 크기 수정자를 사용하면 됩니다. (Icea16, b/154919081)

  • FilledTextField의 후행 및 선행 아이콘과 오류 상태 처리를 위한 슬롯 API를 추가했습니다. (Ic12e0)

  • FAB 및 확장 FAB의 기본 색상이 MaterialTheme.colors.secondary로 변경되었습니다. (I3b9b9, b/154118816)

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

  • EdgeInsets 이름을 InnerPadding으로 바꿨습니다. 머티리얼 버튼의 innerPadding 매개변수 이름을 padding으로 바꿨습니다. (I66165)

  • 슬라이더가 이제 스테이트리스(Stateless)입니다. 사용자는 다른 컨트롤의 경우처럼 직접 상태를 전달하고 업데이트해야 합니다. (Ia00aa)

  • StaticDrawer가 삭제되었습니다. StaticDrawer가 필요한 경우, 대신 머티리얼 사양에 지정된 너비로 Box를 사용하세요. (I244a7)

  • 머티리얼 디자인의 채워진 텍스트 입력란 구현을 추가했습니다. (Ic75cd)

  • ListItem에 수정자 매개변수를 추가하고 후행 람다 본문의 순위를 올리기 위해 매개변수를 재정렬했습니다. (I66e21)

  • 글꼴 모음이 설정되지 않은 TextStyle이 제공된 경우 여기에 사용될 기본 글꼴 모음을 지정하도록 Typography에 defaultFontFamily 생성자 매개변수를 추가합니다. (I89d07)

  • API 노출 영역에서 머티리얼 데이터 테이블을 일시적으로 삭제했습니다. (Iaea61)

  • Divider 컴포저블의 매개변수 이름을 바꿨습니다. (Ic4373)

  • 하위 요소 (Ia6d19)

  • MaterialTheme.emphasisLevels를 삭제하고 대신 강조 수준을 가져오도록 EmphasisAmbient.current를 사용합니다. (Ib5e40)

  • 도형 테마 설정 시스템이 머티리얼 디자인 사양에 따라 업데이트됩니다. 이제 대부분의 구성요소에 사용되는 소형, 중형, 대형 도형을 제공할 수 있습니다. (Ifb4d1)

  • MaterialTheme.colors(), MaterialTheme.typography()와 같은 MaterialTheme API를 함수가 아닌 속성으로 변경했습니다. 기존 호출에서 괄호를 삭제했습니다. 동작 변경사항은 없습니다. (I3565a)

  • 프리미티브 대신 구성 가능한 람다를 허용하도록 FloatingActionButton API를 리팩터링했습니다. 사용량 정보는 업데이트된 샘플을 참조하세요. (I00622)

  • Checkbox, Switch 및 Toggleable에 enabled 매개변수를 추가합니다. (I41c16)

  • 물결 효과는 이제 수정자입니다. Clickable이 아직 전환되지 않은 동안 권장되는 사용법은 Clickable(onClick = { ... }, modifier = ripple())입니다. (Ie5200, b/151331852, b/150060763)

  • Surface 및 Card는 androidx.ui.material.surface에서 androidx.ui.material로 이동했습니다. (I88a6d, b/150863888)

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

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

  • String 매개변수가 있는 Snackbar API를 삭제했으며 대신 구성 가능한 람다를 허용하는 오버로드를 사용합니다. 사용법 정보는 업데이트된 샘플을 참고하세요. (I55f80)

  • texticon 람다를 허용하도록 Tab API를 리팩터링했습니다. (Ia057e)

  • BottomNavigation 구성요소를 추가했습니다. 사용법 정보는 문서와 샘플을 참고하세요. (I731a0)

  • Icon, IconButton, IconToggleButton을 추가하고 AppBarIcon을 삭제했습니다. 기존의 AppBarIcon 사용을 IconButton으로 직접 대체할 수 있으며 이제 터치 타겟이 올바르게 지정됩니다. 사용법 정보는 샘플을 참조하고 이러한 구성요소와 함께 직접 사용할 수 있도록 제공되는 머티리얼 아이콘을 확인하려면 아이콘을 참조하세요. (I96849)

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

  • Border 수정자의 이름을 DrawBorder로 바꿨습니다. (I8ffcc)

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

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

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

  • Scaffold 머티리얼 구성요소가 추가되었습니다. Scaffold를 구현합니다. (I7731b)

  • DrawBorder를 Border 수정자로 대체했습니다. (Id335a)

버그 수정

  • FocusModifier는 지원 중단되고 Modifier.focus, Modifier.focusRequester, Modifier.focusObserver로 대체되었습니다. FocusState 및 FocusDetailedState는 지원 중단되고 FocusState2로 대체되었습니다. (I46919, b/160822875, b/160922136)
  • 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)
  • runOnIdleCompose 이름을 runOnIdle로 바꿨습니다. (I83607)
  • 이제 단일 값 의미 체계 속성에 호출 스타일이 사용됩니다. 예를 들어 'semantics { hidden = true }'는 이제 'semantics { hidden() }'으로 작성됩니다. (Ic1afd, b/145951226, b/145955412)
  • 여러 테스트 API의 이름이 더 직관적으로 바뀌었습니다. 모든 findXYZ API의 이름이 onNodeXYZ로 바뀌었습니다. 모든 doXYZ API의 이름이 performXYZ로 바뀌었습니다. (I7f164)
  • TransitionState를 하위 요소에 전달하는 대신 TransitionState를 반환하도록 Transition API가 변경되었습니다. 이렇게 하면, API와 animate() API의 일관성이 더 높아집니다. (I24e38)
  • 레이아웃에서 정수 픽셀 경계를 표현하는 IntBounds 단위 클래스가 추가되었습니다. 이 기능을 사용하도록 PopupPositionProvider API를 업데이트했습니다. (I0d8d0, b/159596546)
  • 테스트 찾기에 새 옵션 플래그인 useUnmergedTree가 추가되었습니다. (I2ce48)
  • 더 이상 사용되지 않는 크기 테스트 API를 삭제했습니다. (Iba0a0)
  • NativeShader 클래스를 래핑했던 Shader 인라인 클래스를 삭제하고 NativeShader 이름을 Shader로 바꿨습니다. 래핑된 Shader 인라인 클래스는 API 노출 영역에 중요한 항목을 추가하지 않았으며 인라인 클래스이므로 NativeShader 클래스를 직접 사용하면 됩니다. (I25e4d)
  • 이제 팝업, 대화상자 및 메뉴는 상황별 MaterialTheme를 상속합니다. (Ia3665, b/156527485)
  • 이제 머티리얼의 DropdownMenu에서 스크롤이 가능합니다. (Ide699)
  • Layout() 함수의 측정 블록에서 레이아웃 방향 매개변수를 삭제했습니다. 하지만 레이아웃 방향은 측정 범위 객체를 통해 콜백 내에서 사용할 수 있습니다. (Ic7d9d)
  • 정적 애니메이션 사양 개념을 명확하게 하려면 최상위 API에서 AnimationBuilder 대신 AnimationSpec을 사용하세요. -트윈, 스프링과 같은 AnimationSpec을 만들기 위한 람다 요구사항을 삭제하여 전환 DSL을 개선합니다. 대신 생성자 매개변수가 직접 사용됩니다. -빌더에 의존하는 대신 생성자를 여는 AnimationSpec의 사용 편의성이 전반적으로 향상됩니다. -KeyFrames와 Tween의 재생 시간과 지연이 Int로 변경됩니다. 이를 통해 불필요한 유형 변환 및 메서드 오버로드가 사라집니다(Long과 Int를 모두 지원하는 경우). (Ica0b4)
  • 이제 enabled가 거짓으로 설정되면 스위치가 사용 중지 상태로 표시됩니다. (If4624, b/155941869, b/159331694)
  • Modifier.tag는 Modifier.testTag와 혼동을 피하고자 Modifier.layoutId로 이름이 바뀌었습니다. (I995f0)
  • 이제 Placeable#get(AlignmentLine)에서 반환된 정렬 행 Int 위치는 null이 아닙니다. 쿼리된 정렬 행이 없으면 AlignmentLine.Unspecified가 반환됩니다. (I896c5, b/158134875)
  • Radius 클래스를 인라인 클래스로 리팩터링했습니다. y축의 반경이 필수 x축 반경 매개변수의 반경과 일치하도록 컴패니언 생성 메서드가 삭제되고 기본 매개변수가 있는 함수 생성자로 대체되었습니다.

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

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

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

  • Toggleable 구성요소가 지원 중단되었습니다. 대신 Modifier.toggleable을 사용하세요. (I35220, b/157642842)

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

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

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

  • DropdownMenuItems에 onClick이 호출되지 않는 문제를 수정했습니다. (I3998b, b/157673259)

  • MutuallyExclusiveSetItem이 지원 중단되었습니다. 대신 Modifier.selectable을 사용하세요. (I02b47, b/157642842 참조)

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

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

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

  • 이제 VerticalScroller에서 즉시 Column을 제공합니다. 이제 HorizontalScroller에서 즉시 Row를 제공합니다. (Ieca5d, b/157020670 참조)

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

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

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

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

  • AlignmentLineOffset 컴포저블이 지원 중단되었습니다. relativePaddingFrom() 수정자를 대신 사용하세요. CenterAlignmentLine 컴포저블을 삭제했습니다. (I60107)

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

  • 상응하는 수신 제약 조건이 지정되지 않은 경우에만(최소 제약 조건은 0, 최대 제약 조건은 무한대) 크기 제약 조건을 래핑된 레이아웃으로 설정하는 defaultMinSizeConstraints 레이아웃 수정자를 추가했습니다. (I311ea, b/150460257)

  • FocusManagerAmbient가 삭제되었습니다. 포커스를 가져오려면 FocusModifier.requestFocus를 사용합니다. (Ic4826)

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

    선언적 그래픽 데모를 포함하기 위해 CanvasScopeSample을 추가하고 데모 앱을 업데이트했습니다. (Ifd86d)

  • TextField에 커서 색상 맞춤설정을 추가합니다. (I6e33f)

  • 이제 TextField와 함께 사용되는 TextFieldValue가 var text by savedInstanceState(saver = TextFieldValue.Saver) { TextFieldValue() }와 같이 사용되면 활동 재현에도 유지될 수 있습니다. (I5c3ce, b/155075724)

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

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

  • 포커스 하위 시스템과 통합하기 위해 CoreTextField/TextField focusIdentifier 매개변수를 FocusNode로 대체했습니다. (I7ea48)

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

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

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

  • TextField API 업데이트 - onFocus 및 onBlur 콜백이 매개변수가 있는 단일 onFocusChange(부울) 콜백으로 병합되었습니다. (I66cd3)

  • Row와 Column에 각각 verticalGravity 및 horizontalGravity 매개변수를 추가했습니다. (I7dc5a 참조)

  • 임의의 Alignment가 아닌 세로 또는 가로 Alignment를 예상하도록 wrapContentWidth 및 wrapContentHeight를 업데이트했습니다. 중력 수정자가 세로 또는 가로 Alignment를 허용하도록 업데이트되었습니다. 맞춤 연속 Alignment를 지원하기 위해 Row, Column, Stack이 업데이트되었습니다. (Ib0728)

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

  • ProvideContentColor를 삭제했습니다. 대신 Providers와 함께 ContentColorAmbient를 사용하세요. (Iee942)

  • 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)

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

    • draw()의 수신기 범위를 ContentDrawScope로 설정했습니다.
    • draw()의 모든 매개변수를 삭제했습니다.
    • DrawScope는 이전 CanvasScope와 동일한 인터페이스를 사용합니다.
    • ContentDrawScope에 drawContent() 메서드가 있습니다. (Ibaced, b/152919067)
  • 이제 runOnIdleComposerunOnUiThread는 ComposeTestRule의 메서드가 아닌 전역 함수입니다. (Icbe8f 참조)

  • [변경 가능] 주 속성 위임 연산자가 Kotlin 1.4 속성 위임 최적화를 지원하기 위해 확장 프로그램으로 이동했습니다. by state { ... } 또는 by mutableStateOf(...)를 계속 사용하려면 호출자가 가져오기를 추가해야 합니다. (I5312c)

  • LayoutCoordinates에 positionInParent 및 boundsInParent를 추가했습니다. (Icacdd, b/152735784)

  • ColoredRect가 지원 중단되었습니다. 대신 Box(Modifier.preferredSize(width, height).drawBackground(color))를 사용하세요. (I499fa, b/152753731)

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

  • 레이아웃 수정자를 정의하는 새 API인 LayoutModifier2를 추가했으며, LayoutModifier를 지원 중단했습니다. (If32ac)

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

  • Draggable을 수정자로 이동했습니다. (Id9b16, b/151959544)

  • ParentData 컴포저블이 지원 중단되었습니다. ParentDataModifier 인터페이스를 구현하는 수정자를 만들거나, 측정 블록 내에서 인식되도록 레이아웃 하위 요소에 태그만 지정하면 되는 경우에는 LayoutTag 수정자를 사용해야 합니다. (I51368, b/150953183)

  • Center 컴포저블을 지원 중단했습니다. LayoutSize.Fill + LayoutAlign.Center 수정자로 대체되거나 적절한 수정자가 적용된 Box 또는 Stack 컴포저블 중 하나로 대체됩니다. (Idf5e0)

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

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

  • LayoutFlexible을 LayoutWeight로 이름을 변경했습니다. 채우기 위해 긴 매개변수의 이름을 변경했습니다. (If4738)

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

  • 일반적인 구성 가능한 함수인 DrawVector를 레이아웃의 배경으로 벡터를 그리는 수정자인 drawVector()를 반환하는 기능으로 변경했습니다. (I7b8e0)

  • 불투명도 구성 가능한 함수를 drawOpacity 수정자로 대체했습니다. (I5fb62)

  • 구성 가능한 함수 Clip을 수정자 drawClip()으로 대체합니다. DrawClipToBounds는 사각형으로 레이어 경계에 맞춰 잘라내야 하는 경우에만 사용하기 편리한 수정자입니다. (If28eb 참조)

  • DrawShadow 구성 가능한 함수를 drawShadow() 수정자로 대체했습니다. 이제 그림자가 LayerModifier의 일부로 그려집니다. (I0317a)

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

  • 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)

  • 지정된 ImageAsset을 화면에 그리는 것 외에 크기 조정/레이아웃도 처리하는 Image 컴포저블을 만들었습니다. 이 컴포저블은 또한 고유의 크기를 고려하면서도 주어진 고정 크기나 최소 크기를 지원하며 임의의 Painter 인스턴스 그리기를 지원합니다. (Ibcc8f)

  • Wrap 컴포저블을 지원 중단했습니다. LayoutAlign 수정자나 Stack 컴포저블로 대체할 수 있습니다. (Ib237f)

  • withConstraints에 LayoutDirection 매개변수가 있습니다.(I6d6f7)

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

  • 지원 중단됨: 현 상황에서 버그의 일반적인 원인은 Draw 컴포저블입니다. (I78392, b/149827027)

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

  • DrawShape 컴포저블이 삭제되었습니다. 대신 DrawBackground 수정자를 사용하세요. (I7ceb2)

  • LayoutPadding 수정자의 오른쪽에서 왼쪽 방향을 지원합니다. (I9e8da)

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

  • ComposeFlags.COMPOSER_PARAM 플래그를 true가 되도록 업데이트했습니다. 이는 Compose 플러그인의 코드 생성 전략을 변경합니다. 높은 수준에서 이는 @Composable 함수가 추가 합성 매개변수와 함께 생성되어 후속 @Composable 호출로 전달되도록 합니다. 이는 실행을 적절히 관리하기 위한 런타임을 확보하기 위함입니다. 그러나, 이 기능은 중요한 바이너리 브레이킹 체인지이므로 승인된 모든 Compose 사용 시 소스 수준의 호환성을 유지해야 합니다. (I7971c)

  • Canvas 구성요소를 추가했습니다. 크기(사용자가 제공함)를 일부 차지하는 이 컴포저블은 CanvasScope를 사용한 그리기를 허용합니다. (I0d622)

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

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

  • 이제 스크롤러가 네이티브 Android 플링 모션 동작을 표시합니다. (I922af, b/147493715)

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