Compose Material

Mem-build UI Jetpack Compose dengan Komponen Desain Material siap pakai. Ini adalah titik entri pada tingkat yang lebih tinggi untuk Compose, yang dirancang untuk menyediakan komponen yang cocok dengan yang dijelaskan di www.material.io.
Update Terbaru Rilis Stabil Saat Ini Kandidat Rilis Berikutnya Rilis Beta Rilis Alfa
4 Agustus 2021 1.0.1 - - 1.1.0-alpha01

Struktur

Compose adalah kombinasi 6 ID Grup Maven dalam androidx. Setiap Grup berisi subkumpulan fungsi yang ditargetkan, masing-masing dengan kumpulan catatan rilisnya sendiri.

Tabel ini menjelaskan grup tersebut dan memiliki link ke setiap kumpulan catatan rilis.

GrupDeskripsi
compose.animationMem-build animasi di aplikasi Jetpack Compose untuk memperkaya pengalaman pengguna.
compose.compilerMentransformasi fungsi @Composable dan mengaktifkan pengoptimalan dengan plugin compiler Kotlin.
compose.foundationMenulis aplikasi Jetpack Compose dengan elemen penyusun siap pakai dan memperluas dasar untuk mem-build bagian sistem desain Anda sendiri.
compose.materialMem-build UI Jetpack Compose dengan Komponen Desain Material siap pakai. Ini adalah titik entri pada tingkat yang lebih tinggi untuk Compose, yang dirancang untuk menyediakan komponen yang cocok dengan yang dijelaskan di www.material.io.
compose.runtimeElemen penyusun yang penting untuk model pemrograman dan pengelolaan status Compose, serta runtime inti untuk ditarget Compose Compiler Plugin.
compose.uiKomponen dasar compose UI yang diperlukan untuk berinteraksi dengan perangkat, termasuk tata letak, gambar, dan input.

Mendeklarasikan dependensi

Untuk menambahkan dependensi pada Compose, Anda harus menambahkan repositori Maven Google ke project Anda. Baca repositori Maven Google untuk informasi selengkapnya.

Tambahkan dependensi untuk artefak yang diperlukan dalam file build.gradle bagi aplikasi atau modul Anda:

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"
    }
}

Untuk informasi dependensi selengkapnya, lihat Menambahkan dependensi build.

Masukan

Masukan Anda membantu meningkatkan kualitas Jetpack. Beri tahu kami jika Anda menemukan masalah baru atau mempunyai masukan untuk meningkatkan kualitas library ini. Harap periksa masalah yang sudah diketahui dalam library ini sebelum membuat laporan baru. Anda dapat memberikan suara untuk masalah yang sudah diketahui dengan mengklik tombol bintang.

Laporkan masalah baru

Lihat dokumentasi Issue Tracker untuk informasi selengkapnya.

Versi 1.1.0

Versi 1.1.0-alpha01

4 Agustus 2021

androidx.compose.material:material-*:1.1.0-alpha01 dirilis. Versi 1.1.0-alpha01 berisi commit berikut ini.

Perubahan API

  • Memperbarui metode DrawScope#drawImage yang menggunakan rect sumber dan tujuan untuk menggunakan parameter FilterQuality opsional. Hal ini berguna untuk seni piksel yang memang sengaja dibuat menjadi piksel saat diskalakan untuk seni berbasis piksel. Mengupdate composable BitmapPainter + Image agar menggunakan parameter FilterQuality opsional juga (Ie4fb0, b/180311607)
  • Mengganti nama BadgeBox menjadi BadgedBox, mengubah parameter agar menerima composable Badge. Menambahkan komponen Badge yang merupakan konten badge standar untuk BadgedBox. (I639c6)
  • Menambahkan komponen NavigationRail; lihat dokumen dan contoh untuk informasi penggunaannya (I8de77)

Perbaikan Bug

  • Menambahkan contoh NavigationRail rata bawah dan demo aplikasi Katalog. (I3cffc)
  • Dialogs sekarang mengikuti perilaku pengubahan ukuran platform. Setel usePlatformDefaultWidth ke salah (false) untuk mengganti perilaku ini. (Iffaed, b/192682388)
  • Menambahkan demo navigation-rail ke aplikasi katalog. (I04960)
  • Menambahkan demo badge ke aplikasi katalog. (If285d)

Versi 1.0.1

Versi 1.0.1

4 Agustus 2021

androidx.compose.material:material-*:1.0.1 dirilis. Versi 1.0.1 berisi commit berikut ini.

Update Dependensi

  • Diupdate agar bergantung pada Kotlin 1.5.21.

Versi 1.0.0

Versi 1.0.0

28 Juli 2021

androidx.compose.material:material-*:1.0.0 dirilis. Versi 1.0.0 berisi commit berikut ini.

Fitur utama 1.0.0

Ini adalah rilis stabil pertama Compose. Lihat blog Rilis Compose resmi untuk mengetahui detail selengkapnya.

Masalah Umum

  • Jika menggunakan Android Studio Bumblebee Canary 4 atau AGP 7.1.0-alpha04/7.1.0-alpha05, Anda mungkin mengalami error berikut:

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

    Untuk memperbaikinya, tingkatkan minSdkVersion Anda sementara waktu ke 24+ di file build.gradle. Masalah ini akan diperbaiki di versi Android Studio Bumblebee berikutnya dan AGP 7.1. (b/194289155)

Versi 1.0.0-rc02

14 Juli 2021

androidx.compose.material:material-*:1.0.0-rc02 dirilis. Versi 1.0.0-rc02 berisi commit berikut ini.

Perbaikan Bug

  • Dialogs sekarang mengikuti perilaku pengubahan ukuran platform. Setel usePlatformDefaultWidth ke salah (false) untuk mengganti perilaku ini. (Iffaed, b/192682388)

Versi 1.0.0-rc01

1 Juli 2021

androidx.compose.material:material-*:1.0.0-rc01 dirilis. Versi 1.0.0-rc01 berisi commit berikut ini.

Perubahan API

  • Menambahkan komponen BadgeBox, lihat dokumen dan contoh untuk mengetahui informasi penggunaannya (I5e284)
  • useDefaultMaxWidth di PopupProperties diganti namanya menjadi usePlatformDefaultWidth. (I05710)
  • Dialogs kini dapat menggunakan seluruh lebar layar. (I83929, b/190810877)
  • Menambahkan implementasi Penggeser Rentang Eksperimental (I2f4b3)

Perbaikan Bug

  • Agar selaras dengan spesifikasi Desain Material, OutlinedTextField dengan input yang tidak valid berhenti menggunakan warna error untuk label saat label digunakan sebagai placeholder. Hal ini berlaku jika tidak ada teks input dalam kolom teks dan kolom teks tidak dalam fokus. Dengan perubahan tersebut, arti parameter error:Boolean di fungsi TextFieldColors.labelColor() juga berubah: parameter tersebut sekarang akan menampilkan false bahkan saat input tidak valid jika label digunakan sebagai placeholder. (I45f78)

Versi 1.0.0-beta09

16 Juni 2021

androidx.compose.material:material-*:1.0.0-beta09 dirilis. Versi 1.0.0-beta09 berisi commit berikut ini.

Perubahan API

  • Menambahkan parameter Shape ke OutlinedTextField agar dapat menyesuaikan bentuk batas (I8f39e, b/181322957)
  • TextOverflow diubah menjadi class inline. (I433af)

Perbaikan Bug

  • Scrim dalam BottomDrawer, BackdropScaffold, dan ModalBottomSheetLayout akan hilang, lalu Color.Unspecified diteruskan (I2d899, b/182063309)

Aturan Profil yang Ditambahkan

Rilis ini menambahkan aturan profil ke modul Compose berikut (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

Apa itu aturan profil?

  • Aturan profil untuk library ditentukan dalam file teks baseline-prof.txt yang berada di src/main atau direktori yang setara. File menetapkan aturan per baris. Dalam hal ini, aturan adalah pola untuk pencocokan dengan metode atau class dalam library. Sintaksis untuk aturan ini adalah superset dari format profil ART yang dapat dibaca manusia yang digunakan saat menggunakan adb shell profman --dump-classes-and-methods .... Aturan ini menggunakan salah satu dari dua bentuk untuk menargetkan metode atau class.

  • Aturan metode akan memiliki pola berikut:

    <FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
    
  • Dan aturan class akan memiliki pola berikut:

    <CLASS_DESCRIPTOR>
    
  • Di sini, <FLAGS> adalah satu atau beberapa karakter H, S, dan P untuk menunjukkan apakah metode ini harus ditandai sebagai "Hot", "Startup", atau "Post Startup".

  • <CLASS_DESCRIPTOR> adalah deskripsi untuk class tempat metode yang ditargetkan berada. Misalnya, class androidx.compose.runtime.SlotTable akan memiliki deskripsi Landroidx/compose/runtime/SlotTable;.

  • <METHOD_SIGNATURE> adalah tanda tangan metode, dan menyertakan nama, jenis parameter, serta jenis nilai yang ditampilkan metode. Misalnya, metode fun isPlaced(): Boolean pada LayoutNode memiliki tanda tangan isPlaced()Z.

  • Pola ini dapat memiliki karakter pengganti (**, *, dan ?) agar memiliki satu aturan yang mencakup beberapa metode atau class.

Apa fungsi aturan tersebut?

  • Metode yang memiliki flag H menunjukkan bahwa metode ini adalah metode "hot", dan harus dikompilasi sebelumnya.

  • Metode yang memiliki flag S menunjukkan bahwa ini adalah metode yang dipanggil saat memulai, dan harus dikompilasi terlebih dahulu untuk menghindari biaya kompilasi dan penafsiran metode tersebut pada waktu mulai.

  • Metode yang memiliki flag P menunjukkan bahwa ini adalah metode yang dipanggil setelah memulai.

  • Class yang ada dalam file ini menunjukkan bahwa class digunakan saat memulai dan harus dialokasikan sebelumnya di heap untuk menghindari biaya pemuatan class.

Bagaimana cara kerjanya?

  • Library dapat menentukan aturan ini yang akan dikemas dalam artefak AAR. Saat APK kemudian dibuat dengan menyertakan artefak ini, aturan ini digabung menjadi satu dan aturan yang digabungkan digunakan untuk membuat profil ART biner ringkas yang khusus untuk APK. ART kemudian dapat memanfaatkan profil ini saat APK diinstal pada perangkat untuk mengompilasi subset aplikasi tertentu terlebih dahulu guna meningkatkan performa aplikasi, terutama saat dijalankan pertama kali. Perhatikan bahwa tindakan ini tidak akan berpengaruh pada aplikasi yang dapat di-debug.

Versi 1.0.0-beta08

2 Juni 2021

androidx.compose.material:material-*:1.0.0-beta08 dirilis. Versi 1.0.0-beta08 berisi commit berikut ini.

Fitur Baru

Perubahan API yang Dapat Menyebabkan Gangguan Perilaku

  • GANGGUAN PERILAKU: Card kini menggunakan klik, sehingga membuat klik yang ditambahkan melalui Card(Modifier.clickable) menjadi tanpa pengoperasian. Gunakan overload eksperimental baru untuk Card yang menerima onClick. (Ia8744, b/183775620)
    • Menambahkan overload Card baru yang menangani klik serta fungsi yang dapat diklik lainnya: indikasi, interactionSource, diaktifkan/dinonaktifkan. Penggunaan Card biasa yang tidak dapat diklik dengan Modifier.clickable tidak memungkinkan karena Card tidak akan memangkas indikasi ripple dalam kasus tersebut.
  • GANGGUAN PERILAKU: Surface kini menggunakan klik, sehingga membuat klik yang ditambahkan melalui Surface(Modifier.clickable) menjadi tanpa pengoperasian. Gunakan overload eksperimental baru untuk Surface yang menerima onClick. (I73e6c, b/183775620)
    • Menambahkan overload Surface baru yang menangani klik serta fungsi yang dapat diklik lainnya: indikasi, interactionSource, diaktifkan/dinonaktifkan. Penggunaan Surface biasa yang tidak dapat diklik dengan Modifier.clickable tidak memungkinkan karena Surface tidak akan memangkas indikasi ripple dalam kasus tersebut.

Perubahan API

  • FabPosition dikonversi ke class inline dari enum untuk mendukung potensi perluasan di masa mendatang (I030fb)
  • Memfaktorkan ulang penggunaan enum ke class inline untuk menghindari masalah menyeluruh saat pernyataan ketika nilai enum baru ditambahkan. (I2b5eb)
  • Menambahkan waktu tunggu ketuk untuk yang dapat diklik/dapat dialihkan agar tidak menampilkan ripple selama aktivitas scroll/tarik (Ia2704, b/168524931)
  • Properti semantik ContentDescription dan Text bukan lagi nilai tunggal, melainkan daftar. Hal ini memungkinkan untuk menggabungkannya sebagai daftar, bukan penyambungan. Juga disediakan API pengujian yang lebih baik untuk memanfaatkan perubahan ini (Ica6bf, b/184825850)
  • Modifier.focusModifier() tidak digunakan lagi dan diganti dengan Modifier.focusTarget() (I6c860)
  • Mengganti enum FocusState dengan antarmuka FocusState (Iccc1a, b/187055290)
  • Menghapus LocalRippleNativeRendering karena penerapan ripple yang didukung View sudah stabil (I7fab3, b/188569367)

Perbaikan Bug

  • Modifier.onGloballyPositioned() diubah untuk melaporkan koordinat pengubah ini dalam rantai pengubah, bukan koordinat tata letak setelah menerapkan semua pengubah. Artinya, kini urutan pengubah memengaruhi koordinat yang akan dilaporkan. (Ieb67d, b/177926591)
  • Menambahkan README untuk katalog Compose Material yang ada. (If9191)

Versi 1.0.0-beta07

18 Mei 2021

androidx.compose.material:material-*:1.0.0-beta07 dirilis. Versi 1.0.0-beta07 berisi commit berikut ini.

Perubahan API

  • Anda tidak perlu lagi menggunakan metode ekstensi untuk dukungan rute di Navigation Compose. (I22beb, b/172823546)

Versi 1.0.0-beta06

5 Mei 2021

androidx.compose.material:material-*:1.0.0-beta06 dirilis. Versi 1.0.0-beta06 berisi commit berikut ini.

Perubahan API

  • Ripple telah dimigrasikan untuk menggunakan RippleDrawable secara internal di perangkat Android. Artinya, animasi ripple akan terjadi di RenderThread, sehingga akan lancar bahkan saat thread UI sedang dimuat, seperti saat menavigasi antar-layar. Tindakan ini tidak mengubah antarmuka API ripple, tetapi mungkin terdapat perubahan perilaku yang diakibatkan oleh perubahan ini. Untuk membantu migrasi, LocalRippleNativeRendering telah ditambahkan - berikan nilai false ke CompositionLocal ini untuk kembali ke implementasi ripple sebelumnya di dalam CompositionLocalProvider. API ini bersifat sementara dan akan dihapus di masa mendatang, jadi jika Anda mengalami masalah yang menyebabkan Anda menggunakan API ini, laporkan bug. (I902f8, b/168777351, b/183019123)
  • Menambahkan API aksesibilitas CollectionInfo dan CollectionItemInfo yang memungkinkan untuk menandai koleksi beserta itemnya untuk layanan aksesibilitas (Id54ef, b/180479017)
  • Menambahkan API aksesibilitas error yang memungkinkan untuk menandai node berisi input yang tidak valid (I12997, b/180584804, b/182142737)

Perbaikan Bug

  • Memperbarui implementasi inset katalog Compose Material dari: https://github.com/google/accompanist/pull/365. (I25dc3)
  • Turunan Row & Column dengan ketebalan (fill = false) tidak lagi membuat induknya mengisi seluruh ruang sumbu utama yang tersedia. (Ied94d, b/186012444, b/184355105)

Versi 1.0.0-beta05

21 April 2021

androidx.compose.material:material-*:1.0.0-beta05 dirilis. Versi 1.0.0-beta05 berisi commit berikut ini.

Perbaikan Bug

  • Menambahkan gambar kartu komponen, alat pilih tema, dan URL menu yang lebih spesifik ke katalog Compose Material yang sudah ada. (I9b58e)

Versi 1.0.0-beta04

7 April 2021

androidx.compose.material:material-*:1.0.0-beta04 dirilis. Versi 1.0.0-beta04 berisi commit berikut ini.

Perubahan API

  • PERUBAHAN API: Status DrawerState tidak lagi memperpanjang SwipeableState eksperimental.
    • PERUBAHAN API: BottomDrawerState kini ditandai sebagai Eksperimental, agar cocok dengan komponen BottomDrawer Eksperimental (I81114, b/181656094)
  • Mengganti nama hideSoftwareKeyboard dan showSoftwareKeyboard di SoftwareKeyboardController menjadi hide() dan show().
    • Memberikan antarmuka CompositionLocal lengkap untuk LocalSoftwareKeyboardController, sehingga dapat ditetapkan (sangat berguna dalam pengujian) (I579a6)
  • API aksesibilitas LiveRegion ditambahkan. Jika node ditandai sebagai live region, layanan aksesibilitas akan otomatis memberi tahu pengguna tentang perubahannya (Idcf6f, b/172590946)

Perbaikan Bug

  • Menambahkan implementasi katalog Compose Material ke modul yang ada. Saat ini tidak ada: gambar kartu komponen, alat pilih tema (akan ditambahkan dalam perubahan berikutnya). (Ie7a94)

Versi 1.0.0-beta03

24 Maret 2021

androidx.compose.material:material-*:1.0.0-beta03 dirilis. Versi 1.0.0-beta03 berisi commit berikut ini.

Perubahan API

  • DefaultMonotonicFrameClock tidak digunakan lagi. Memanggil withFrameNanos atau Recomposer.runRecomposeAndApplyChanges tanpa MonotonicFrameClock sekarang akan menampilkan IllegalStateException. (I4eb0d)
  • Menambahkan API LeadingIconTab baru untuk mendukung ditampilkannya ikon dan teks inline di tab. (I23267)

Kontribusi Eksternal

  • [oleh Jossi Wolf] BottomDrawer sekarang menggabungkan konten slot panel samping. BottomDrawer tidak menampilkan IllegalStateException saat induk memiliki tinggi yang tak terbatas. Panel samping bawah sekarang akan terbuka ke status diluaskan jika panel tersebut lebih kecil 50% dari induknya. Dokumen tentang BottomDrawerState dan ModalBottomSheetLayoutState telah diperbarui. BottomDrawerState#isOpen sekarang akan menampilkan nilai benar (true) jika dalam status terbuka atau diluaskan. (I87241)

Versi 1.0.0-beta02

10 Maret 2021

androidx.compose.material:material-*:1.0.0-beta02 dirilis. Versi 1.0.0-beta02 berisi commit berikut ini.

Perubahan API

  • Menambahkan API lokal komposisi LocalSoftwareKeyboardController baru untuk menggantikan antarmuka SoftwareKeyboardController sebelumnya di TextField. (I5951e, b/168778053)

Perbaikan Bug

  • Menerapkan batasan di penggunaan API eksperimental publik (I6aa29, b/174531520)
  • Mengubah perataan horizontal default untuk TopAppBar dan BottomAppBar untuk Start, konsisten dengan Row (Ib2dc7)
  • Menambahkan modul dan UI placeholder baru untuk katalog Compose Material, yang saat ini bertingkat dalam demo pengujian integrasi yang ada. (Idfcb3)
  • androidx.compose.ui:ui tidak lagi bergantung pada AppCompat atau Fragment. Jika Anda menggunakan ComposeView di aplikasi, dan Anda menggunakan Fragment dan/atau AppCompat, pastikan bahwa Anda menggunakan AppCompat 1.3+/Fragment 1.3+ - versi ini diperlukan untuk menyetel siklus proses dengan benar dan menyimpan pemilik status yang diperlukan untuk ComposeView. (I1d6fa, b/161814404)

Versi 1.0.0-beta01

24 Februari 2021

androidx.compose.material:material-*:1.0.0-beta01 dirilis. Versi 1.0.0-beta01 berisi commit berikut ini.

Ini adalah rilis pertama Compose 1.0.0 Beta.

Perubahan API

  • Pengubah ukuran telah diganti namanya. Modifier.width/height/size diganti namanya menjadi requiredWidth/requiredHeight/requiredSize. Modifier.preferredWidth/preferredHeight/preferredSize diganti namanya menjadi width/height/size. (I5b414)
  • imageResource dan vectorResource sekarang merupakan fungsi ekstensi pada pendamping ImageBitmap dan ImageVector. Fungsi load{Image,Vector,Font}Resource telah dihapus. (I89130)
  • Pengubah ukuran ke intrinsik tidak lagi bersifat eksperimental. (I15744)
  • Menghapus pernyataan dp (I798d2)
  • Menghapus callback SoftwareKeyboardController dari semua kolom teks akan segera diganti dengan API baru. (Iae869, b/168778053)
  • Lambda tindakan Switch, Checkbox, dan RadioButton kini nullable. Contoh Checkbox-in-clickable-row diupdate untuk menggunakan fitur ini. (If601b, b/171819073)
  • InteractionState telah diganti dengan [Mutable]InteractionSource
    • Antarmuka bertanggung jawab untuk mengirimkan/mengumpulkan peristiwa Interaksi.
    • Daripada meneruskan interactionState = remember { InteractionState() } ke komponen seperti Button dan Modifier.clickable(), gunakan interactionSource = remember { MutableInteractionSource() }.
    • Sebagai ganti: Interaction.Pressed in interactionState Anda sebaiknya menggunakan fungsi ekstensi di InteractionSource, seperti InteractionSource.collectIsPressedAsState().
    • Untuk kasus penggunaan yang kompleks, Anda dapat menggunakan InteractionSource.interactions untuk mengamati streaming Interaksi. Lihat dokumentasi InteractionSource dan contoh untuk informasi selengkapnya.
    • (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
  • Menambahkan antarmuka AccessibilityManager dan LocalAccessibilityManager di CompositionLocals (I53520)
  • Menghapus metode LayoutCoordinates yang tidak digunakan lagi dan menggunakan fungsi, bukan properti, untuk positionInParent dan boundsInParent (I580ed, b/169874631, b/175142755)
  • Slider kini mendukung status yang diaktifkan/dinonaktifkan (I6d56b, b/179793072)
  • Membuat TextInputSession baru untuk sesi input dari komponen teks tingkat rendah seperti CoreTextField. (I8817f, b/177662148)
  • AnimationEndReason.Interrupted dihapus. CancellationException akan ditampilkan jika animasi terhenti. (I2cbbc, b/179695417)
  • Menghapus @ExperimentalRippleApi dan mengubah RippleAlpha menjadi class dengan properti, bukan antarmuka. (I6df7c)
  • Menambahkan antarmuka TextFieldColors untuk mewakili berbagai warna yang digunakan di TextField dan OutlinedTextField di status yang berbeda. Untuk implementasi default, lihat TextFieldDefaults.textFieldColors dan TextFieldDefaults.outlinedTextFieldColors.
  • Menambahkan pengubah selectionGroup yang memungkinkan untuk menandai koleksi Tab atau RadioButtons untuk tujuan aksesibilitas (Ie5c29)
  • Menambahkan LazyListState.animateScrollToItem

    Metode ini dapat men-scroll ke item tertentu dalam daftar dengan lancar. (I4bfd7)

  • ScrollableState.smoothScrollBy() diganti namanya menjadi animateScrollBy() LazyListState.snapToItemIndex() diganti namanya menjadi scrollToItem() ScrollState.smoothScrollTo() diganti namanya menjadi animateScrollTo() (I35ded)

  • Semua composable yang ditandai dengan @ReadOnlyComposable kini divalidasi di waktu kompilasi untuk memastikan bahwa komponen tersebut hanya melakukan panggilan ke @ReadOnlyComposables lainnya (I58961)

  • TargetAnimation API telah dihapus. (If47d1, b/177457083)

  • Posisi scroll di Modifier.verticalScroll()/horizontalScroll() kini ditampilkan dengan Ints (I81298)

  • Paket metode smoothScrollBy dan scrollBy berubah menjadi androidx.compose.foundation.gestures.* (I3f7c1, b/175294473)

  • FlingConfig telah berganti nama menjadi FlingBehavior dan kini memungkinkan penyesuaian animasi yang ditangguhkan, bukan Decay yang telah ditentukan. (I02b86, b/175294473)

  • Pengubah ukuran telah diganti namanya. Modifier.width/height/size diganti namanya menjadi requiredWidth/requiredHeight/requiredSize. Modifier.preferredWidth/preferredHeight/preferredSize diganti namanya menjadi width/height/size. (I5b414)

  • defaultMinSizeConstraints berganti nama menjadi defaultMinSize. (I4eaae)

  • Orientasi telah dipindahkan ke paket dasar. VelocirtTracker dipindahkan dari ui.gesture ke ui.input.pointer. (Iff4a8, b/175294473)

  • drawerState.open() dan drawerState.close() sekarang menjadi fungsi penangguhan. Gunakan rememberCoroutineScope() untuk mendapatkan cakupan komposisi untuk memanggilnya (I16f60, b/175294473)

  • Penyedia telah berganti nama menjadi CompositionLocalProvider

    • Konstruktor Composition tidak lagi menerima parameter kunci, dan sudah tidak digunakan lagi.
    • currentCompositeKeyHash telah diubah menjadi properti tingkat atas yang dapat disusun, bukan fungsi tingkat atas yang dapat disusun.
    • CompositionData dan CompositionGroup telah dipindahkan ke namespace androidx.compose.runtime.tooling
    • ComposableLambda telah dibuat sebagai antarmuka, bukan class konkret, dan tidak lagi memiliki parameter jenis.
    • ComposableLambdaN telah dibuat sebagai antarmuka, bukan class konkret, dan tidak lagi memiliki parameter jenis.
    • Fungsi snapshotFlow telah dipindahkan ke namespace androidx.compose.runtime
    • Metode penggabungan SnapshotMutationPolicy tidak lagi bersifat eksperimental
    • Fungsi clearRoots level atas @TestOnly telah dihapus. Fungsi tersebut tidak diperlukan lagi.
    • Fungsi keySourceInfoOf dan resetSourceInfo telah dihapus. Fungsi tersebut tidak diperlukan lagi.
    • Composer.collectKeySourceInformation telah dihapus. Fungsi tersebut tidak diperlukan lagi.
    • Metode isJoinedKey, joinedKeyLeft, dan joinedKeyRight telah dihapus. Fungsi tersebut tidak diperlukan lagi.
    • Berbagai API tingkat atas telah dipindahkan dan diatur ulang menjadi file yang berbeda. Karena semantik class file Kotlin, ini akan memutus kompatibilitas biner, tetapi tidak dengan kompatibilitas sumber, sehingga tidak menjadi masalah bagi sebagian besar pengguna.
    • (I99b7d, b/177245490)
  • Modifier.scrollable telah dikerjakan ulang. Kini menggunakan antarmuka Scrollable, bukan class ScrollableController (I4f5a5, b/174485541, b/175294473)

  • Modifier.draggable kini menerima DraggableState dan bukan lambda sederhana. Anda dapat membuat status melalui rememberDraggableState { delta -> } untuk mendapatkan perilaku yang sama seperti sebelumnya (Ica70f, b/175294473)

  • ZoomableController.smoothScaleBy dan ZoomableController.stopAnimation kini fungsi penangguhan. (I7f970, b/177457083)

  • Menghapus beberapa API sebelumnya yang tidak digunakan lagi (Ice5da, b/178633932)

  • Membuat perubahan Material API berikut:

    • Menambahkan parameter contentPadding ke Top/BottomAppBar untuk memungkinkan penyesuaian padding default.
    • Mengurutkan ulang parameter dalam BackdropScaffold untuk mengikuti panduan API bagi parameter wajib sebelum parameter opsional.
    • Memindahkan parameter icon di BottomNavigationItem ke setelah selected dan onClick.
    • Mengganti nama parameter alwaysShowLabels di BottomNavigationItem menjadi alwaysShowLabel.
    • Mengganti nama parameter bodyContent di beberapa komponen menjadi hanya content.
    • Mengurutkan ulang parameter di ButtonDefaults.buttonColors(). Harap perhatikan bahwa karena jenis parameter tidak berubah, hal ini tidak akan menyebabkan error di kode Anda. Pastikan Anda menggunakan parameter bernama atau memperbarui urutannya secara manual. Jika tidak, kode Anda tidak akan berfungsi sama seperti sebelumnya.
    • Menambahkan parameter secondaryVariant ke darkColors(). Warna ini biasanya sama dengan secondary dalam tema gelap, tetapi menambahkan konsistensi dan penyesuaian lebih lanjut.
    • Menghapus ElevationDefaults dan animateElevation() dari tampilan API publik karena tidak umum digunakan/berguna.
    • Mengganti nama onValueChangeEnd di Slider menjadi onValueChangeFinished dan membuatnya nullable.
    • Mengganti nama parameter text di Snackbar menjadi content untuk konsistensi.
    • Menambahkan parameter contentPadding ke DropdownMenuItem untuk memungkinkan penyesuaian padding default dan menjadikan content sebagai ekstensi di RowScope.
    • Mengganti nama ModalDrawerLayout menjadi ModalDrawer.
    • Mengganti nama BottomDrawerLayout menjadi BottomDrawer.
    • (I1cc66)
  • BasicTextField kini menerima Brush, bukan Color untuk penyesuaian yang lebih baik (I83a36)

  • imageResource dan vectorResource sekarang merupakan fungsi ekstensi pada pendamping ImageBitmap dan ImageVector. Fungsi load{Image,Vector,Font}Resource telah dihapus. (I89130)

  • Mengubah Indication#createIndication() menjadi Indication#rememberUpdatedIndication(InteractionState) dan menghapus parameter InteractionState dari IndicationInstance#drawIndication(). IndicationInstance seharusnya hanya bertanggung jawab untuk efek visual gambar, dan tidak meluncurkan animasi/status penulisan sebagai respons terhadap perubahan InteractionState. Animasi dan penulisan status ini seharusnya terjadi dalam rememberUpdatedIndication(). Parameter indication di Modifier.indication juga diubah menjadi parameter wajib. (Ic1764, b/152525426)

Perbaikan Bug

  • Menambahkan API lokal komposisi LocalSoftwareKeyboardController baru untuk menggantikan antarmuka SoftwareKeyboardController sebelumnya di TextField. (I658b6, b/168778053)

Versi 1.0.0-alpha12

10 Februari 2021

androidx.compose.material:material-*:1.0.0-alpha12 dirilis. Versi 1.0.0-alpha12 berisi commit berikut ini.

Perubahan API

  • Modifier.pointerInput sekarang mengharuskan kunci remember untuk menunjukkan kapan coroutine deteksi input pointer harus dimulai ulang untuk dependensi baru. (I849cd)
  • BottomDrawerLayout dan ListItem telah ditandai sebagai @ExperimentalMaterialApi (Id766e)
  • PaddingValues.Absolute telah ditambahkan dan dapat digunakan dalam API yang menerima PaddingValues. (Ia5f30)
  • onImeActionPerformed tidak digunakan lagi. Sebagai gantinya, gunakan KeyboardActions (If0bbd, b/179071523)
  • Untuk lebih mencocokkan konvensi penamaan dengan ImageBitmap dan ImageVector, ImagePainter diganti namanya menjadi BitmapPainter ke VectorPainter paralel. (Iba381, b/174565889)
  • Animatable.snapTo dan Animatable.stop sekarang menangguhkan fungsi (If4288)
  • ComponentActivity.setContent telah dipindahkan ke androidx.activity.compose.setContent di dalam modul androidx.activity:activity-compose. (Icf416)
  • Metode penataan dan copy() telah dihapus dari beberapa class yang jarang digunakan. (I26702, b/178659281)
  • Membuat halfExpand() dan expand() di internal ModalBottomSheetState (Ic914e)
  • Mengubah Indication#createInstance menjadi @Composable, dan mengubah LocalIndication agar dapat memuat sebuah Indikator, bukan Indikator () ->. (I5eeea, b/157150564)
  • Memindahkan AlertDialog dan DropdownMenu menjadi Android hanya untuk saat ini. Menambahkan parameter PopupProperties ke DropdownMenu untuk konfigurasi lebih lanjut Popup dasar. (I9c443)
  • loadFontResource tidak digunakan lagi. Sebagai gantinya, gunakan fontResource. imageResource, loadImageResource, vectorResource, dan loadVectorResource tidak digunakan lagi. Sebagai gantinya, gunakan painterResource. (I6b809)
  • Menghapus parameter toggle dan toggleModifier dari DropdownMenu, dan mengganti nama dropdownModifier, dropdownOffset dan dropdownContent masing-masing menjadi modifier, offset, dan content. DropdownMenu sekarang berperilaku konsisten terhadap Popup, dengan tata letak induk digunakan untuk posisi menu. Dalam sebagian besar kasus, Anda dapat memindahkan toggle untuk menjadi pasangan DropdownMenu dan menggabungkan keduanya di Box. Lihat contoh yang diupdate dalam dokumentasi untuk mengetahui informasi selengkapnya tentang penggunaan API ini. (I884fb)
  • toIntPx() diganti namanya menjadi roundToPx(). (I9b7e4, b/173502290)
  • IntBounds diganti namanya menjadi IntRect dan API-nya telah diperbaiki. (I1f6ff)
  • Menambahkan perluasan dan menciutkan tindakan semantik. Menambahkan perluasan dan halfExpand di ModalBottomSheetState (Ib5064)
  • Modifier.dragGestureFilter sudah tidak digunakan lagi. Sebagai gantinya, gunakan Modifier.pointerInput { detectDragGestures (...)}. Atau, gunakan Modifier.draggable untuk menarik satu sumbu (I0ba93, b/175294473)
  • Mengganti nama Ambients agar cocok dengan penggantian nama Ambient -> CompositionLocal. Ambients sebelumnya bernama AmbientFoo, dan sekarang CompositionLocals diberi nama LocalFoo. (I2d55d)
  • Pilihan telah dipindahkan ke fondasi. (I7892b)
  • Sama seperti saat kami menghapus composable state { 0 } dan kini mempromosikan penggunaan seperti remember { mutableStateOf(0) }, kami juga akan menghapus composable savedInstanceState { 0 }. Sebagai gantinya, Anda harus menggunakan rememberSaveable { mutableStateOf(0) } dan tindakan ini akan disimpan dan otomatis dipulihkan jika jenis yang digunakan dalam MutableState dapat disimpan di Paket. Jika sebelumnya Anda meneruskan objek saver kustom, sekarang Anda harus menggunakan overload rememberSaveable baru yang memiliki parameter stateSaver. Penggunaannya akan terlihat seperti ini: val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) } (Ib4c26, b/177338004)
  • Menambahkan ProgressBarRangeInfo.Indeterminate guna menandai status progres tidak pasti untuk aksesibilitas (I6fe05)
  • @ComposableContract tidak digunakan lagi dan digantikan dengan tiga anotasi yang lebih spesifik.

    • @ComposableContract(restartable = false) telah menjadi @NonRestartableComposable
    • @ComposableContract(readonly = true) telah menjadi @ReadOnlyComposable
    • @ComposableContract(preventCapture = true) telah menjadi @DisallowComposableCalls
    • @ComposableContract(tracked = true) telah dihapus
    • (I60a9d)
  • Utilitas emptyContent() dan (@Composable () -> Unit).orEmpty() tidak digunakan lagi karena tidak lagi memiliki dampak atau nilai performa yang bagus (I0484d)

  • rememberSavedInstanceState() telah diganti namanya menjadi rememberSaveable() dan dipindahkan ke paket androidx.compose.runtime.saveable. (I1366e, b/177338004)

  • Saver, listSaver(), mapSaver(), dan autoSaver telah dipindahkan dari androidx.compose.runtime.savedinstancestate ke androidx.compose.runtime.saveable (I77fe6)

  • Parameter di RounderCornerShape, CutCornerShape, dan CornerBasedShape telah diganti namanya dari kiri/kanan menjadi awal/akhir untuk mendukung pencerminan otomatis bentuk ke arah rtl. AbsoluteRounderCornerShape dan AbsoluteCutCornerShape digunakan saat pencerminan otomatis tidak diinginkan. (I61040, b/152756983)

  • Mengubah parameter text dan icon Tab, serta parameter label BottomNavigationItem menjadi nullable untuk menyampaikan perilaku komponen dengan lebih baik saat parameter ini disediakan/tidak disediakan karena ini akan memengaruhi ukuran dan tata letak tab komponen. Jika saat ini Anda mengirimkan emptyContent() agar tidak menampilkan teks/ikon/label, sebaiknya gunakan null. (I57ed4)

  • Mengganti nama parameter warna contentColorFor menjadi backgroundColor (I5bb67)

  • TabDefaults tidak digunakan lagi dan menggantinya dengan TabRowDefaults. (I0f189)

  • Memperkenalkan API ColorMatrix yang digunakan untuk mengubah nilai rgb di konten sumber API ColorFilter yang Difaktorkan Ulang menjadi antarmuka dan menyesuaikan implementasi PathEffect. (Ica1e8)

  • AnimatedValue/Float sekarang tidak digunakan lagi. Sebagai gantinya, gunakan Animatable. (I71345, b/177457083)

  • Menambahkan SemanticsProperties.PaneTitle API. (I20d5a)

  • Menambahkan parameter yang diaktifkan ke Tab dan BottomNavigationItem agar keduanya tidak dapat diklik. Mengubah BottomNavigationItem menjadi RowScope.BottomNavigationItem agar dapat menyatakan persyaratan tata letak di API-nya lebih baik. (Id683d)

  • tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter, dan pressIndicaitonGestureFilter tidak digunakan lagi. Sebagai gantinya, gunakan Modifier.clickable atau Modifier.pointerInput dengan fungsi detectTapGestures. (I6baf9, b/175294473)

  • Tambahkan parameter layoutDirection ke createOutline Shape. Ini memungkinkan untuk membuat bentuk sadar arah tata letak. (I57c20, b/152756983)

  • Recomposer.current() dihapus. [Abstract]ComposeView kini disetel secara default ke Recomposer dengan cakupan jendela dan dibuat secara lambat yang dikelola oleh ViewTreeLifecycleOwner untuk jendela. Rekomposisi dan tick animasi withFrameNanos-based dijeda selama Lifecycle host dihentikan. (I38e11)

Perbaikan Bug

  • Ukuran ikon kini akan ditingkatkan agar sesuai dengan ukurannya dengan memperhatikan pengubah ukuran yang diterapkan padanya. Misalnya, sekarang Icon(.., modifier = Modifier.size(50.dp) akan menggambar dalam ruang berukuran 50x50 dp. (Ib2ba9, b/178796190)

Versi 1.0.0-alpha11

28 Januari 2021

androidx.compose.material:material-*:1.0.0-alpha11 dirilis. Versi 1.0.0-alpha11 berisi commit berikut ini.

Perubahan API

  • Meningkatkan beberapa Material API agar tidak lagi menjadi @Experimental (I5d20e)
  • Parameter deskripsi konten telah ditambahkan ke Image dan Icon. Digunakan untuk memberikan deskripsi ke layanan aksesibilitas (I2ac4c)
  • Mengubah antarmuka parameter stateful Material agar memiliki fungsi @Composable yang menampilkan State<T>. Menambahkan Animatable.asState() untuk mempermudah konversi Animatable menjadi State. Selain itu, mengubah juga animateElevation menjadi ekstensi yang ditangguhkan di Animatable. (If613c)
  • Snackbar, SnackbarHost, SnackbarHostState sudah bukan lagi @ExperimentalMaterialAPI (Id1fb5)
  • Mengubah Typography, Shapes, dan TabPosition agar tidak lagi menjadi class data. Menambahkan fungsi salin untuk Typography dan Shapes guna menggantikan keduanya yang telah dibuat. (I40037)
  • Menghapus beberapa API Material yang tidak digunakan lagi sebelumnya (Ifaa25)

Perbaikan Bug

  • onCommit, onDispos, dan onActive sudah tidak digunakan lagi dan digantikan dengan API SideEffect dan DisposableEffect (If760e)
  • Transition berbasis TransitionDefinition sudah tidak digunakan lagi (I0ac57)
  • State awal di updateTransition sekarang didukung (Ifd51d)
  • WithConstraints didesain ulang sebagai BoxWithConstraints dan dipindahkan ke foundation.layout. (I9420b, b/173387208)
  • Menghentikan penggunaan scrollBy yang tidak ditangguhkan, menghapus scrollTo yang tidak ditangguhkan

    Sebaiknya gunakan fungsi menangguhkan untuk mengontrol scrolling dan tunggu hingga scroll selesai. Kami menghentikan penggunaan dan/atau menghapus versi fungsi ini yang tidak ditangguhkan sebagai bagian dari transisi ini. (Ie9ced)

  • Menghentikan penggunaan smoothScrollBy yang tidak ditangguhkan Sebaiknya gunakan fungsi menangguhkan untuk mengontrol scrolling dan tunggu hingga scroll selesai. Kami menghentikan penggunaan versi fungsi ini yang tidak ditangguhkan sebagai bagian dari transisi ini. (I12880)

  • Memperkenalkan ComposeContentTestRule, yang memperluas ComposeTestRule dan menentukan setContent, yang telah dihapus dari ComposeTestRule. Menambahkan metode factory createEmptyComposeRule() yang menampilkan ComposeTestRule dan tidak meluncurkan Aktivitas untuk Anda. Gunakan ini jika Anda ingin meluncurkan Aktivitas selama pengujian, misalnya menggunakan ActivityScenario.launch (I9d782, b/174472899)

  • Ripple yang digunakan di Button dan FloatingActionButton tidak dapat disesuaikan lagi dengan menyediakan Indication baru melalui AmbientIndication karena cara ini tidak pernah dimaksudkan untuk menyesuaikan komponen ini dan sekarang cara ini membuat komponen ini konsisten dengan komponen Material lainnya. Untuk menyesuaikan Ripple di seluruh aplikasi, lihat RippleTheme. (I546c5)

  • animateAsState sekarang menjadi animateFooAsState dengan Foo merupakan jenis variabel yang dianimasikan. misalnya, Float, Dp, Offset, dll. (Ie7e25)

  • BasicTextField menerima parameter baru bernama decorationBox. Dengan ini, penambahan dekorasi seperti ikon, placeholder, label, dan sejenisnya ke kolom teks dan perluasan area target klik dapat dilakukan. (I16996)

  • Memperbaiki bug yang menyebabkan lebar kolom teks material tidak dapat disetel kurang dari 280.dp (I78373)

  • Parameter canDrag telah dihapus dari Modifier.draggable (Ic4bec, b/175294473)

  • Menghapus displaySize karena harus dihindari. Biasanya, lebih baik gunakan ukuran onRoot() atau minimal ukuran jendela. (I62db4)

  • Sekarang permukaan dapat memiliki beberapa turunan tata letak. (I66a92, b/144488459)

  • invalidate dan compositionReference() sekarang tidak digunakan lagi dan masing-masing telah digantikan dengan currentRecomposeScope dan rememberCompositionReference. (I583a8)

  • Mengubah PopupPositionProvider untuk menggunakan koordinat relatif jendela, bukan koordinat global. Mengganti nama parentGlobalBounds menjadi anchorBounds, dan mengubah windowGlobalBounds menjadi windowSize: IntSize (I2994a)

  • Duration dan Uptime akan diganti dengan milidetik Long, dan langkah ini akan menghapus dependensi input pointer di class tersebut. (Ia33b2, b/175142755, b/177420019)

  • AnimatedFloat.fling yang menerima FlingConfig telah dihapus. Sebagai gantinya, gunakan Animatable.animateDecay yang ditangguhkan. (I4659b, b/177457083)

  • dapat diklik, dapat diubah, dan dapat dipilih, sekarang bisa dibuat di luar komposisi (I0a130, b/172938345, b/175294473)

  • Easing telah diubah menjadi antarmuka fungsional (Ib14e5)

  • ScrollableColumn/Row tidak digunakan lagi. Menggunakan ScrollableColumn kurang efisien dibandingkan dengan LazyColumn jika Anda memiliki konten scroll yang besar karena dengan LazyColumn kami hanya dapat menulis/mengukur/menggambar elemen yang terlihat. Untuk mencegah pengguna menggunakan cara yang tidak efisien, kami memutuskan untuk menghentikan penggunaan ScrollableColumn dan ScrollableRow serta mempromosikan penggunaan LazyColumn dan LazyRow. Pengguna tetap dapat memutuskan bahwa mereka tidak memerlukan perilaku lambat dan menggunakan pengubah secara langsung seperti ini: Column(Modifier.verticalScroll(rememberScrollState())) (Ib976b, b/170468083)

  • Metode factory items(count: Int) baru untuk cakupan LazyColumn/LazyRow/LazyVerticalGrid. items(items: List) dan itemsIndexed(items: List) kini merupakan fungsi ekstensi sehingga Anda harus mengimpornya secara manual saat digunakan. Kelebihan ekstensi baru untuk Array: items(items: Array) dan itemsIndexed(Array) (I803fc, b/175562574)

  • Menghapus metode monotonicFrameAnimationClockOf eksperimental (Ib753f, b/170708374)

  • Menghentikan penggunaan metode koordinat global dan membuat metode koordinat berbasis jendela yang baru. (Iee284)

  • Menambahkan Modifier.toolingGraphicsLayer yang menambah pengubah lapisan grafis saat pemeriksaan diaktifkan. (I315df)

  • FocusRequester.createRefs kini ditandai sebagai eksperimental karena mungkin berubah. (I2d898, b/177000821)

  • SemanticsPropertyReceiver.hidden diganti namanya menjadi invisibleToUser dan ditandai @ExperimentalComposeUiApi. AccessibilityRangeInfo diganti namanya menjadi ProgressBarRangeInfo. stateDescriptionRange diganti namanya menjadi progressBarRangeInfo. AccessibilityScrollState diganti namanya menjadi ScrollAxisRange. horizontalAccessibilityScrollState diganti namanya menjadi horizontalScrollAxisRange. verticalAccessibilityScrollState diganti namanya menjadi verticalScrollAxisRange. (Id3148)

  • Memanfaatkan TestCoroutineDispatcher dalam pengujian (I532b6)

  • Mengupdate API grafis vektor untuk mendukung parsing tint yang diterapkan ke root grafis vektor. (Id9d53, b/177210509)

Versi 1.0.0-alpha10

13 Januari 2021

androidx.compose.material:material-*:1.0.0-alpha10 dirilis. Versi 1.0.0-alpha10 berisi commit berikut ini.

Perubahan API

  • Mengubah Velocity agar memiliki bagian komponen dan operasi matematika. (Ib0447)
  • Mengganti nama @ExperimentalTesting menjadi @ExperimentalTestApi agar konsisten dengan anotasi API eksperimental yang serupa (Ia4502, b/171464963)
  • Mengganti nama Position menjadi DpOffset dan menghapus getDistance() (Ib2dfd)
  • Mengganti nama Color.useOrElse() menjadi Color.takeOrElse() (Ifdcf5)
  • Menambahkan Toggle ke dasar Strings.kt (I4a5b7, b/172366489)
  • FlowRow dan FlowColumn tidak digunakan lagi. Gunakan tata letak kustom sebagai gantinya. (I09027)
  • Modifier.focus() dan Modifier.focusRequester() tidak digunakan lagi. Gunakan Modifier.focusModifier() dan Modifier.focusReference() sebagai gantinya. (I75a48, b/175160751, b/175160532, b/175077829)
  • Memindahkan nativeClass ke modul ui dan membuatnya internal. Penggunaan nativeClass yang diperbarui sama dengan implementasi untuk menggunakan 'is MyClass' sebagai gantinya. (I4f734)

Perbaikan Bug

  • Menambahkan dukungan untuk kolom teks yang dinonaktifkan dan hanya baca (I35279, b/171040474, b/166478534)
  • animate() sekarang diganti dengan animateAsState(), yang menampilkan State<T>, bukan T. Hal ini memungkinkan performa yang lebih baik, karena cakupan pembatalan validasi dapat dipersempit ke tempat nilai Status dibaca. (Ib179e)
  • Menambahkan API peran Semantik dan menambahkan Peran sebagai parameter ke SemanticsModifier yang dapat diklik, dipilih, dan diubah. Mengubah Modifier.progressSemantics agar Penggeser juga dapat menggunakannya. (I216cd)

Versi 1.0.0-alpha09

16 Desember 2020

androidx.compose.material:material-*:1.0.0-alpha09 dirilis. Versi 1.0.0-alpha09 berisi commit berikut ini.

Perubahan API

  • menambahkan API untuk memicu animasi penyelesaian secara manual dan menarik Modifier.swipeable (Iaa17a, b/162408885)
  • Mengganti nama *Konstanta objek seperti ButtonConstants agar diakhiri dengan Defaults, misalnya ButtonDefaults. Hapus juga awalan default yang tidak diperlukan dari properti dalam objek baru ini. (Ibb915, b/159982740)
  • Compose mendukung pengambil properti yang dapat membuat pemanggilan composable. Dukungan untuk ini tidak akan dihapus, tetapi sintaksis untuk mendeklarasikan pengambil properti sebagai @Composable akan berubah.

    Sintaksis yang kini tidak digunakan lagi untuk melakukan tindakan ini adalah dengan menganotasi properti itu sendiri:

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

    Sintaksis yang sekarang benar untuk melakukan tindakan ini adalah dengan menganotasi pengambil properti:

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

    Kedua sintaksis akan berfungsi selama beberapa waktu, tetapi sintaksis yang tidak digunakan lagi pada akhirnya akan menjadi error kompilasi. (Id9197)

  • Menambahkan library androidx.compose.material:material-ripple yang berisi API ripple agar komponen interaktif dapat dibuat dapat dibuat tanpa memerlukan library Material lainnya. rememberRippleIndication sudah tidak digunakan lagi dan diganti dengan rememberRipple. (Ibdf11)

Perbaikan Bug

  • Lambda pada pengubah offset kini menampilkan IntOffset, bukan Float. (Ic9ee5, b/174137212, b/174146755)
  • Memfaktorkan ulang ShaderBrush untuk membuat instance shader dengan lambat saat pengaturan ukuran informasi lingkungan gambar tersedia. Ini berguna untuk menentukan gradien yang memenuhi batas gambar penuh fungsi composable pada waktu komposisi, tanpa harus menerapkan implementasi DrawModifier kustom.

    Menghentikan penggunaan API konstruktor fungsi gradien dan menggantinya dengan metode factory pada objek Gradient. (I511fc, b/173066799)

  • Modifier.focusObserver tidak digunakan lagi. Gunakan Modifier.onFocusChanged atau Modifier.onFocusEvent sebagai gantinya (I30f17, b/168511863, b/168511484)

  • Menghentikan penggunaan LazyColumnFor, LazyRowFor, LazyColumnForIndexed, dan LazyRowForIndexed. Gunakan LazyColumn dan LazyRow sebagai gantinya (I5b48c)

  • Memindahkan Dp.VectorConverter, Position.VectorConverter, dll. ke animasi inti, dan tidak menggunakan lagi VectorConveters lama (If0c4b)

  • Autofill API kini menjadi API eksperimental dan mewajibkan keikutsertaan (I0a1ec)

  • Menambahkan deklarasi destrukturisasi untuk membuat instance FocusRequester (I35d84, b/174817008)

  • accessibilityLabel diganti namanya menjadi contentDescription. accessibilityValue diganti namanya stateDescription. (I250f2)

  • Fungsi infiniteRepeatable untuk membuat InfiniteRepeatableSpec (I668e5)

  • Perilaku positioning DropdownMenus sedikit berubah sesuai dengan spesifikasi Material. (I34c72, b/168594123)

  • Dukungan InteractionState untuk TextFields telah ditambahkan. (I61d91)

  • Menambahkan Modifier.clearAndSetSemantics untuk menghapus semantik turunan dan menetapkan yang baru. (I277ca)

  • Memindahkan ContentDrawScope ke modul ui-graphics agar bersama dengan DrawScope. (Iee043, b/173832789)

Versi 1.0.0-alpha08

2 Desember 2020

androidx.compose.material:material:1.0.0-alpha08, androidx.compose.material:material-icons-core:1.0.0-alpha08, dan androidx.compose.material:material-icons-extended:1.0.0-alpha08 dirilis. Versi 1.0.0-alpha08 berisi commit berikut ini.

Perubahan API

  • MaterialTheme kini menetapkan warna yang tepat untuk handle pemilihan dan latar belakang pilihan. Aplikasi Non-Material dapat menggunakan AmbientTextSelectionColors secara manual untuk menyesuaikan warna yang digunakan untuk pemilihan. (I1e6f4, b/139320372, b/139320907)
  • Menambahkan pemeriksaan lint untuk penamaan dan posisi parameter lambda fungsi composable, agar konsisten dengan pedoman Compose. Selain itu, memigrasikan beberapa API menggunakan children sebagai nama untuk lambda akhirnya ke content, sesuai dengan pemeriksaan lint dan panduan. (Iec48e)
  • Mengganti nama VectorAsset menjadi ImageVector Memindahkan dan mengganti nama VectorAsset menjadi Builder agar menjadi class dalam ImageVector sesuai pedoman dewan API. Menambahkan typealias VectorAssetBuilder ke link ke ImageVector.Builder untuk compat. (Icfdc8)
  • Mengganti nama ImageAsset dan metode terkait menjadi ImageBitmap. (Ia2d99)
  • Memindahkan properti semantik dasar ke ui (I6f05c)
  • fun RippleIndication() sudah tidak digunakan lagi dan diganti dengan rememberRippleIndication() agar konsisten dengan API lain. (Id8e2c)
  • Menambahkan parameter singeLine ke BasicTextField, TextField, dan OutlineTextField. Setel parameter ini ke benar (true) untuk membuat kolom teks menjadi satu baris yang dapat di-scroll secara horizontal. (I57004, b/168187755)

Perbaikan Bug

  • Menambahkan tindakan semantik Dismiss (I2b706)
  • Memindahkan DrawModifier API dari paket androidx.compose.ui ke paket androidx.compose.ui.draw. Membuat file DrawModifierDeprecated.kt untuk menyertakan metode typealiases/helper guna membantu migrasi dari API yang tidak digunakan lagi ke API saat ini. (Id6044, b/173834241)
  • Mengganti nama Modifier.drawLayer menjadi Modifier.graphicsLayer Juga memperbarui class terkait GraphicsLayer sesuai masukan API. (I0bd29, b/173834241)
  • <T> telah dihapus dari deklarasi SubcomposeLayout. Kini Anda dapat menggunakannya tanpa menentukan jenis. (Ib60c8)
  • Menambahkan Modifier.scale/rotate API agar memudahkan untuk drawLayer.
    • Mengganti nama Modifier.drawOpacity menjadi Modifier.alpha
    • Mengganti nama Modifier.drawShadow menjadi Modifier.shadow (I264ca, b/173208140)
  • Parameter perataan Box diganti namanya menjadi contentAlignment. (I2c957)
  • Pengubah offsetPx diganti namanya menjadi offset. Pengubah tersebut kini mengambil parameter lambda, bukan State. (Ic3021, b/173594846)
  • Memperkenalkan SweepGradientShader API dan SweepGradientBrush API. (Ia22c1)
  • Menambahkan pemeriksaan lint untuk parameter Modifier dalam fungsi Composable. Pemeriksaan lint ini memeriksa penamaan, jenis nilai yang ditampilkan, nilai default, dan urutan parameter agar konsisten dengan pedoman Compose. (If493b)
  • Mengupdate TextFieldValue API
    • menjadikan TextFieldValue.composition hanya baca
    • menghapus pengecualian yang dimunculkan untuk rentang pilihan yang tidak valid (I4a675, b/172239032)
  • Menambahkan overload Modifier.drawLayer() baru. Dibutuhkan blok lambda pada GraphicsLayerScope baru tempat Anda menentukan parameter lapisan dengan cara yang memungkinkan untuk melewatkan rekomposisi dan penataan letak ulang saat perubahan status terjadi. DrawLayerModifier kini sedang disiapkan untuk memigrasikan logikanya ke dalam placeable.placeWithLayer() metode LayoutModifier (I15e9f, b/173030831)
  • Ambient yang tidak digunakan lagi dinamai dengan Ambient sebagai akhirannya, dan menggantinya dengan properti baru yang diawali dengan Ambient, mengikuti pedoman Ambients dan Compose API lainnya. (I33440)
  • Menambahkan pemeriksaan lint untuk memeriksa apakah factory Modifier menggunakan androidx.compose.ui.composed {} secara internal, bukan ditandai sebagai @Composable. (I3c4bc)
  • Argumen semantik mergeAllDescendants diganti namanya menjadi mergeDescendants. (Ib6250)
  • Kontrol waktu dalam pengujian (TestAnimationClock dan penggunaannya) kini bersifat eksperimental (I6ef86, b/171378521)
  • Menghapus modul ui-test lama dan stub-nya (I3a7cb)
  • TextUnit.Inherit diganti namanya menjadi TextUnit.Unspecified agar konsisten dengan unit lain. (Ifce19)
  • Antarmuka Alignment telah diperbarui dan berfungsi. (I46a07, b/172311734)
  • Nama id diganti menjadi LayoutIdParentData. Measurable.id diganti namanya menjadi Measurable.layoutId. (Iadbcb, b/172449643)

Versi 1.0.0-alpha07

11 November 2020

androidx.compose.material:material:1.0.0-alpha07, androidx.compose.material:material-icons-core:1.0.0-alpha07, dan androidx.compose.material:material-icons-extended:1.0.0-alpha07 dirilis. Versi 1.0.0-alpha07 berisi commit berikut ini.

Perubahan API

  • Emphasis sudah tidak digunakan lagi dan digantikan dengan AmbientContentAlpha. AmbientContentAlpha merupakan abstraksi sederhana yang mewakili alfa konten pilihan untuk bagian hierarki dan ini mirip dengan cara AmbientContentColor mewakili warna konten pilihan. Teks dan Ikon kini menggunakan nilai saat ini dari AmbientContentAlpha secara default, dan Anda dapat secara manual melakukan: color.copy(alpha = AmbientContentAlpha.current) agar memiliki efek yang sama dalam komponen. Daripada menggunakan ProvideEmphasis, Anda dapat langsung memberikan nilai melalui AmbientContentAlpha, dan menggunakan level default baru di ContentAlpha untuk menggantikan EmphasisLevels lama. (Idf03e, b/159017896)
  • Menambahkan androidx.compose.material.AmbientContentColor untuk mengganti androidx.compose.foundation.AmbientContentColor (I84f7b, b/172067770)
  • Menambahkan androidx.compose.material.Text untuk mengganti androidx.compose.foundation.Text sebagai komponen Teks tingkat tinggi yang bertema. Untuk komponen teks dasar yang tidak menggunakan gaya warna/teks dari tema, gunakan BasicText. (Ie6ae0)
  • Menambahkan maxLines ke TextFields (Ib2a5b)
  • Mengupdate TextFields untuk menerima KeyboardOptions (Ida7f3)
  • Kini permukaan menggunakan elevasi (total) mutlak saat menghitung overlay ketinggian sehingga Permukaan yang ditambahkan di atas Permukaan lain akan menggunakan elevasi gabungan untuk menggambar overlay. (I7bd2b, b/171031040)

Perbaikan Bug

  • captureToBitmap dipindahkan ke captureToImage. (I86385)
  • Fondasi AmbientTextStyle, ProvideTextStyle, dan AmbientContentColor sudah tidak digunakan lagi. Sebagai gantinya, gunakan versi baru yang tersedia di library Material. Untuk aplikasi non-Material, Anda harus membuat ambient tema khusus sistem desain sendiri yang dapat dipakai dalam komponen sendiri. (I74acc, b/172067770)
  • foundation.Text sudah tidak digunakan lagi dan diganti dengan material.Text. Untuk API teks dasar tidak terkonfigurasi yang tidak memakai nilai dari tema, lihat androidx.compose.foundation.BasicText. (If64cb)
  • Mengganti nama KeyboardOptions sebagai ImeOptions (I82f36)
  • Memindahkan KeyboardType dan ImeAction ke KeyboardOptions (I910ce)
  • BaseTextField sudah tidak digunakan lagi. BasicTextField digunakan sebagai gantinya. (I896eb)
  • Anotasi ExperimentalSubcomposeLayoutApi dihapus. SubcomposeLayout kini dapat digunakan tanpa menambahkan @OptIn (I708ad)
  • FirstBaseline dan LastBaseline dipindahkan ke paket androidx.compose.ui.layout (Ied2e7)
  • Memperbarui Icon API untuk menggunakan Color.Unspecified sebagai warna tint yang akan menggambar aset atau painter yang disediakan tanpa ColorFilter. Sebelumnya, upaya untuk mengabaikan penambahan tint dengan Color.Unspecified akan menambahkan tint berwarna transparan yang berakhir tanpa ada yang dirender. (I049e2, b/171624632)
  • relativePaddingFrom diganti namanya menjadi paddingFrom. Pengubah paddingFromBaseline ditambahkan, karena memudahkan penentuan jarak dari batas tata letak ke dasar pengukuran teks. (I0440a, b/170633813)
  • LaunchedTask diganti namanya menjadi LaunchedEffect agar konsisten dengan SideEffect dan DisposableEffect API. LaunchedEffect tanpa parameter subjek tidak diizinkan agar mendorong praktik terbaik. (Ifd3d4)
  • MeasureResult dikeluarkan dari MeasureScope. (Ibf96d, b/171184002)
  • Beberapa simbol terkait tata letak dipindahkan dari androidx.compose.ui ke androidx.compose.layout.ui. (I0fa98, b/170475424)

Versi 1.0.0-alpha06

28 Oktober 2020

androidx.compose.material:material:1.0.0-alpha06, androidx.compose.material:material-icons-core:1.0.0-alpha06, dan androidx.compose.material:material-icons-extended:1.0.0-alpha06 dirilis. Versi 1.0.0-alpha06 berisi commit berikut ini.

Perubahan API

  • androidx.compose.foundation.Icon telah dipindahkan ke androidx.compose.material.Icon. Anda juga dapat menggunakan komponen Image/Modifier.paint() dengan Painter jika tidak ingin menggunakan library Material. (I9f622)
  • Menambahkan FloatingActionButtonElevation untuk merepresentasikan elevasi yang digunakan oleh FAB di berbagai keadaan. Lihat FloatingActionButtonConstants.defaultElevation() untuk mengetahui implementasi default (I2d4f5)
  • Menambahkan antarmuka SwitchColors untuk merepresentasikan warna yang digunakan oleh Switch di berbagai keadaan. Lihat SwitchConstants.defaultColors untuk menyesuaikan warna ini. (I93805)
  • Menambahkan antarmuka ButtonElevation dan ButtonColors untuk merepresentasikan elevasi dan warna yang digunakan oleh tombol di berbagai keadaan. Lihat fungsi default di ButtonConstants untuk menyesuaikan parameter ini. (Ic5b7b)
  • Menambahkan antarmuka RadioButtonColors untuk merepresentasikan warna yang digunakan oleh RadioButton di berbagai keadaan. Lihat RadioButtonConstants.defaultColors() untuk menyesuaikan warna yang digunakan di berbagai keadaan. (I74130)
  • Menambahkan antarmuka CheckboxColors untuk merepresentasikan warna yang digunakan oleh kotak centang di berbagai keadaan. Lihat CheckboxConstants.defaultColors() untuk menyesuaikan warna yang digunakan di berbagai keadaan. (I7dbdb)

Perbaikan Bug

  • Komponen material tidak lagi menetapkan elevasi sebagai zIndex. Artinya, dalam induk yang sama, turunan dengan ukuran bayangan yang lebih besar tidak akan otomatis digambar pada turunan dengan ukuran bayangan yang lebih kecil. Jika Anda masih memerlukan perilaku tersebut, tetapkan Modifier.zIndex() secara manual bila perlu (I70417, b/170623932)
  • Tidak lagi menggunakan VectorPainter untuk kepentingan rememberVectorPainter agar lebih menunjukkan bahwa API composable secara internal memanfaatkan 'remember' untuk mempertahankan data di seluruh komposisi. (Ifda43)
  • Mengaktifkan transisi di ComposeTestRule; menghapus opsi untuk mengaktifkan kursor yang berkedip dari ComposeTestRule. (If0de3)
  • Menambahkan opsi keyboard satu baris ke CoreTextField (I72e6d)
  • Mengganti nama Radius API menjadi CornerRadius untuk menyatakan penggunaannya secara lebih baik di seluruh Compose. Memperbarui dokumen untuk menunjukkan bahwa radius sudut negatif dikunci ke nol. (I130c7, b/168762961)
  • DrawScope dan ContentDrawScope yang difaktorkan ulang menjadi antarmuka, bukan class abstrak
    • Membuat implementasi CanvasDrawScope dari DrawScope
    • Implementasi DrawScope yang difaktorkan ulang untuk menggunakan CanvasScope sebagai gantinya
    • Membuat DrawContext guna menggabungkan dependensi untuk DrawScope
    • Menghapus metode yang tidak digunakan lagi di DrawScope (I56f5e)
  • Box dibuat menjadi fungsi inline. (Ibce0c, b/155056091)

Versi 1.0.0-alpha05

14 Oktober 2020

androidx.compose.material:material:1.0.0-alpha05, androidx.compose.material:material-icons-core:1.0.0-alpha05, dan androidx.compose.material:material-icons-extended:1.0.0-alpha05 dirilis. Versi 1.0.0-alpha05 berisi commit berikut ini.

Perubahan API

  • Pop-ups dan dialogs sekarang mewarisi FLAG_SECURE dari Jendela induk. Juga menambahkan opsi untuk mengonfigurasi ini secara eksplisit (I64966, b/143778148, b/143778149)
  • Secara default, Modifier.swipeable kini memiliki nilai minimum status sebesar 56.dp (Iab825, b/168610267)
  • semua status scaffold yang ditandai sebagai @Stable. drawerGesturesEnabled dalam ScaffoldState dipindahkan ke Scaffold itu sendiri. (I36645, b/168297016)
  • Untuk menghapus jenis nullable dari parameter lambda Scafold, Anda dapat menggunakan emptyContent() untuk menyatakan tidak ada konten untuk parameter tertentu. (I2b318, b/157633857, b/158551084)
  • Tidak lagi menggunakan API contentColor() dan currentTextStyle(), dan menggantinya masing-masing dengan ambient AmbientContentColor dan AmbientTextStyle. Anda dapat mengakses nilai saat ini dengan menggunakan .current di properti ambient, seperti dengan ambient lainnya. Perubahan ini dilakukan demi konsistensi dan untuk menghindari banyaknya cara untuk menyelesaikan hal yang sama. Selain itu, mengganti nama properti ambient tertentu untuk mendeskripsikan tujuannya dengan lebih baik sebagai berikut:

    • ContentColorAmbient -> AmbientContentColor
    • TextStyleAmbient -> AmbientTextStyle
    • IndicationAmbient -> AmbientIndication
    • EmphasisAmbient -> AmbientEmphasisLevels
    • RippleThemeAmbient -> AmbientRippleTheme (I37b6d)
  • Penambahan AmbientElevationOverlay memungkinkan penyesuaian/penonaktifan overlay elevasi default yang diterapkan pada Surface dalam tema gelap. (I5b74d)

Perbaikan Bug

  • Sebagai bagian dari standardisasi nilai sentinel untuk class inline, ganti nama Color.Unset ke Color.Unspecified agar konsisten dengan class inline lainnya (I97611, b/169797763)
  • TextOverflow.None diperkenalkan. Bila tambahan adalah Tidak Ada, Teks tidak akan lagi menangani tambahan, dan akan melaporkan ukuran sebenarnya ke LayoutNode. (I175c9, b/158830170)
  • launchInComposition diganti nama menjadi LaunchedTask agar sesuai dengan pedoman Compose API (I99a8e)
  • OnPositionedModifier diganti nama menjadi OnGloballyPositionedModifier dan onPositioned() diganti nama menjadi onGloballyPositioned(). (I587e8, b/169083903)

Versi 1.0.0-alpha04

1 Oktober 2020

androidx.compose.material:material:1.0.0-alpha04, androidx.compose.material:material-icons-core:1.0.0-alpha04, dan androidx.compose.material:material-icons-extended:1.0.0-alpha04 dirilis. Versi 1.0.0-alpha04 berisi commit berikut ini.

Perubahan API

  • Mengekspos parameter InteractionState dalam komponen Material stateful, untuk memungkinkan penarikan status dan pembacaan/pengontrolan status. (Iaca5f, b/168025711, b/167164434)
  • Mengubah parameter *color di RadioButton dan TriStateCheckbox untuk memungkinkan penyesuaian sepenuhnya warna yang digunakan di setiap status, serta perubahan cara warna dianimasikan antar-status jika diinginkan. Lihat fungsi warna animateDefault* baru di CheckboxConstants dan RadioButtonConstants untuk informasi selengkapnya. (I1c532)
  • Mengganti nama rememberBackdropState menjadi rememberBackdropScaffoldState dan menambahkan parameter tambahan untuk jam animasi. Mengganti nama parameter backdropScaffoldState BackdropScaffold menjadi hanya scaffoldState. Mengganti nama BackdropConstants menjadi BackdropScaffoldConstants. (Ib644d)
  • Menambahkan komponen BottomSheetScaffold eksperimental. (Ie02f0, b/148996320)
  • Menambahkan komponen ModalBottomSheetLayout eksperimental. (Ic209e, b/148996320)
  • Mengganti nama ButtonConstants/FloatingActionButtonConstants.defaultAnimatedElevation menjadi defaultElevation, dan sekarang menampilkan nilai Dp, bukan AnimatedValue. (I5f3ed)

Perbaikan Bug

  • Mengupdate banyak Graphics API
    • Mengupdate API transformasi skala dan rotasi untuk menggunakan parameter Offset tunggal guna mewakili koordinat pivot, bukan parameter float terpisah untuk koordinat x/y di DrawScope dan DrawTransform
    • Menghapus metode Rect.expandToInclude dan Rect.join
    • Memperbarui dokumentasi Radius untuk menetapkan oval, selain eliptis
    • Menambahkan dokumentasi yang menunjukkan bahwa konstruktor publik untuk class Radius inline tidak akan dipanggil secara langsung, tetapi objek Radius harus dibuat instance-nya melalui konstruktor fungsinya
    • Menghapus RoundRect API untuk mengkueri topRight, bottomRight, bottomCenter, dll.
    • Rect.shift tidak digunakan lagi dan digantikan dengan Rect.translate
    • Menghapus API RoundRect.grow dan Rect.shrink
    • Mengganti nama RoundRect.outerRect menjadi Rect.boundingRect
    • Menghapus metode RoundRect.middleRect/tallMiddleRect/wideMiddleRect dan Rect.isStadium
    • Mengganti nama RoundRect.longestSide menjadi RoundRect.maxDimension
    • Mengganti nama RoundRect.shortestSide menjadi RoundRect.minDimension
    • Mengubah RoundRect.center menjadi properti, bukan fungsi
    • Mengupdate konstruktor RoundRect untuk menggunakan properti Radius, bukan parameter individual untuk nilai radius x/y
    • Menghapus Size API yang mengasumsikan sebagai Rectangle dengan asal pada 0,0
    • Menambahkan API penghancuran ke Radius
    • Memigrasikan berbagai fungsi ekstensi RoundRect sebagai properti
    • (I8f5c7, b/168762961)
  • foundation.Box sudah tidak digunakan lagi. Sebagai gantinya, gunakan foundation.layout.Box. (Ie5950, b/167680279)
  • Stack diganti namanya menjadi Box. Box yang sudah ada sebelumnya tidak akan digunakan lagi sebagai ganti Box baru di compose.foundation.layout. Perilaku Box baru adalah untuk menumpuk turunan satu per satu jika ada beberapa turunan - ini berbeda dari Box sebelumnya, yang berperilaku mirip dengan Column. (I94893, b/167680279)
  • Parameter dekorasi box tidak digunakan lagi. Jika Anda ingin memiliki dekorasi/padding di box, gunakan Modifier (Modifier.background, Modifier.border, Modifier.padding) (Ibae92, b/167680279)
  • Mengupdate banyak Graphics API
    • Mengupdate DrawScope API ke metode transformasi tercakup untuk menunjukkan bahwa transformasi hanya diterapkan dalam callback dan dihapus setelah callback dipanggil
    • Memperbarui dokumentasi clipPath untuk merujuk ke Path, bukan persegi panjang bulat
    • Memperbaiki spasi dalam dokumentasi untuk parameter yang tepat di clipPath
    • Mengganti nama DrawScope.drawCanvas menjadi drawIntoCanvas dan menghapus parameter ukuran
    • Mengganti nama parameter dx/dy dalam metode inset menjadi horizontal dan vertikal
    • Menambahkan kelebihan inset yang memberikan nilai inset yang sama ke 4 batas
    • Menghapus dokumentasi tentang metode inset yang menunjukkan bahwa inset tersebut akan diterapkan ke 4 sisi
    • Memperbarui dokumentasi untuk class Rect
    • Memperbarui komentar tentang parameter Rect agar cocok dengan gaya kdoc
    • Menghapus Rect.join dan Rect.expandToInclude
    • Membuat overload untuk Rect.translate(offset) dan Rect.shift yang tidak digunakan lagi
    • (If086a, b/167737376)
  • Kami mencegah impor statis konten dari cakupan tata letak (misalnya, alignWithSiblings di RowScope). Sebagai gantinya, alternatif cakupan eksplisit harus digunakan: with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) }. (I216be, b/166760797)

Versi 1.0.0-alpha03

16 September 2020

androidx.compose.material:material:1.0.0-alpha03, androidx.compose.material:material-icons-core:1.0.0-alpha03, dan androidx.compose.material:material-icons-extended:1.0.0-alpha03 dirilis. Versi 1.0.0-alpha03 berisi commit berikut ini.

Perubahan API

  • Mengganti nama parameter onSelect dari BottomNavigationItem menjadi onClick (I91925, b/161809324)
  • Menambahkan parameter InteractionState ke BottomNavigationItem dan Tab, yang memungkinkan penarikan status ini dan menyesuaikan tampilan komponen dalam status yang berbeda. (Ia3e9e, b/168025711)
  • Menghapus parameter disabledBackgroundColor dan disabledContentColor dari tombol. Sebagai gantinya, gunakan fungsi warna default baru di dalam ButtonConstants. Jika Anda telah menyetel contentColor/backgroundColor secara eksplisit, sebaiknya Anda menggunakan fungsi default ini dan menyesuaikan beberapa/semua parameter agar tidak menimpa warna untuk status diaktifkan/dinonaktifkan. (If9b52)
  • Warna latar belakang Textfield tidak menerapkan lagi alfa transparansi secara implisit. Sebagai gantinya, warna apa pun yang disediakan melalui parameter backgroundColor akan diterapkan secara langsung. (Iecee9, b/167951441)
  • InnerPadding diganti namanya menjadi PaddingValues. (I195f1, b/167389171)
  • Parameter resistanceFactorAtMin dan resistanceFactorAtMax di Modifier.swipeable diganti dengan parameter ketahanan tunggal. Metode defaultResistanceConfig baru telah ditambahkan di SwipeableConstants. (I54238)
  • Menambahkan dukungan elevasi stateful animasi untuk Button dan FloatingActionButton. Elevasi sekarang menganimasikan antara status default dan ditekan. Untuk menyesuaikan elevasi antarstatus, gunakan ButtonConstants.defaultAnimatedElevation() dan FloatingActionButtonConstants.defaultAnimatedElevation(), bukan menyetel nilai Dp tetap dalam semua kasus. (I37925)
  • Label menjadi parameter opsional di dalam TextField dan OutlinedTextField (I267f6, b/162234081)

Perbaikan Bug

  • Fungsi pengujian global seperti onNode atau waitForIdle kini tidak digunakan lagi. Bermigrasilah ke fungsi versi baru yang ditetapkan di ComposeTestRule (I7f45a)
  • DpConstraint dan API yang menggunakannya tidak digunakan lagi. (I90cdb, b/167389835)
  • Parameter minWidth dan maxWidth dari widthIn diganti namanya menjadi min dan maks. Demikian pula untuk preferredWidthIn, heightIn, preferredHeightIn. (I0e5e1, b/167389544)
  • Menghapus tindakan semantik scroll maju/mundur. Menambahkan langkah di AccessibilityRangeInfo. (Ia47b0)
  • Penggunaan gravitasi secara konsisten diganti namanya menjadi untuk meratakan atau perataan dalam API tata letak. (I2421a, b/164077038)
  • Menambahkan onNode dan metode global lainnya di ComposeTestRule karena metode global yang ada saat ini akan segera dihentikan. (Ieae36)
  • Memindahkan createAndroidComposeRule dan AndroidInputDispatcher dari androidx.ui.test.android ke androidx.ui.test (Idef08, b/164060572)

Versi 1.0.0-alpha02

2 September 2020

androidx.compose.material:material:1.0.0-alpha02, androidx.compose.material:material-icons-core:1.0.0-alpha02, dan androidx.compose.material:material-icons-extended:1.0.0-alpha02 dirilis. Versi 1.0.0-alpha02 berisi commit berikut ini.

Perubahan API

  • Menambahkan komponen BackdropScaffold eksperimental. (Iad908)

Perbaikan Bug

  • Matrix4 diganti dengan Matrix. Semua bagian lain dari paket vectormath telah dihapus. (Ibd665, b/160140398)

Versi 1.0.0-alpha01

26 Agustus 2020

androidx.compose.material:material:1.0.0-alpha01, androidx.compose.material:material-icons-core:1.0.0-alpha01, dan androidx.compose.material:material-icons-extended:1.0.0-alpha01 dirilis. Versi 1.0.0-alpha01 berisi commit berikut ini.

Masalah Umum

= Karakter pertama dalam TextField material tidak dapat dihapus menggunakan backspace (b/165956313)

Versi 0.1.0-dev

Versi 0.1.0-dev17

19 Agustus 2020

androidx.compose.material:material:0.1.0-dev17, androidx.compose.material:material-icons-core:0.1.0-dev17, dan androidx.compose.material:material-icons-extended:0.1.0-dev17 dirilis. Versi 0.1.0-dev17 berisi commit berikut ini.

Perubahan API

  • Sebelumnya, RadioGroup dan RadioGroupItems yang tidak digunakan lagi telah dihapus. Gunakan Row dan RadioButton sebagai gantinya (I381b7, b/163806637)
  • Menghapus callback onFocusChanged dari TextField. Gunakan Modifier.focusObserver sebagai gantinya. (I51089, b/161297615)
  • Modifier.drawBorder tidak digunakan lagi. Gunakan Modifier.border sebagai gantinya. Class data Border telah diganti dengan BorderStroke (I4257d, b/158160576)
  • Mengganti nama beberapa properti di SwipeableState: swipeTarget -> targetValue, swipeProgress -> progress, swipeDirection -> direction. Menambahkan fungsi rememberSwipeableState untuk membuat SwipeableStates. (I2fc9c, b/163129614, b/163132293)
  • Dukungan Snackbar dengan positioning dan antrean yang tepat telah ditambahkan. Akses melalui fungsi penangguhan SnackbarHostState.showSnackbar. Selain itu:
    • Komponen SnackbarHost telah ditambahkan. Komponen ini menjadi host Snackbar berdasarkan status dan bertanggung jawab atas transisi antar-snackbar.
    • SnackbarHostState telah ditambahkan untuk memungkinkan kontrol atas snackbar, host snackbar, dan memisahkannya dari ScaffoldState. Anda juga dapat mengakses status ini melalui scaffoldState.snackbarHostState.
    • Overload snackbar telah ditambahkan untuk mendukung antarmuka umum antara snackbarbarHostState dan snackbar itu sendiri. (I79aaa)
  • Menambahkan parameter yang diaktifkan ke IconButton, dan mengurutkan ulang parameter di IconToggleButton (I0a941, b/161809385, b/161807956)
  • Versi ListItem dengan API berbasis String telah dihapus. Gunakan versi slot sebagai gantinya. (Ib8f57, b/161804681)
  • Menghapus komponen FilledTextField yang sudah tidak digunakan lagi. Sebagai gantinya, harap gunakan TextField untuk mendapatkan implementasi Filled text field Desain Material. (I5e889)
  • AlertDialog kini menggunakan FlowRow untuk tombol (I00ec1, b/161809319, b/143682374)
  • Menambahkan parameter dalam Modifier.swipeable untuk mengubah jumlah ketahanan saat menggeser melewati garis batas. Parameter [min/max]Value dihapus. (I93d98)
  • Menambahkan parameter backgroundColor ke LinearProgressIndicator dan menghapus padding internal dari CircularProgressIndicator. Menambahkan ProgressIndicatorConstants.DefaultProgressAnimationSpec baru yang dapat digunakan sebagai AnimationSpec default saat membuat animasi progres antarnilai (If38b5, b/161809914, b/161804677)
  • Parameter opsional velocityThreshold ditambahkan ke Modifier.swipeable. (I698ba)
  • bottomBarSize, fabSize, dan lainnya tidak lagi tersedia di ScaffoldState. Sebagai gantinya, gunakan Modifier.onPosition pada komponen yang ingin Anda ketahui ukurannya. Parameter contentColor dan Modifier telah ditambahkan ke Scaffold (Ic6f7b, b/161811485, b/157174382)
  • Mengganti nama dan mengurutkan ulang beberapa parameter di Tab demi konsistensi dengan API lainnya (Ia2d12, b/161807532)
  • Memisahkan TabRow menjadi TabRow dan ScrollableTabRow dengan menghapus isScrollable dari TabRow. Juga mengekspos edgePadding dalam ScrollableTabRow yang memungkinkan pengontrolan ruang kosong di depan/di belakang tab. (I583e8, b/161809544)
  • Objek TabRow telah dihapus dan diganti dengan TabConstants. TabRow.TabPosition telah dipindahkan ke level teratas (TabPosition), dan indicatorContainer telah diganti nama menjadi indicator. Lihat contoh dan dokumentasi untuk informasi mendetail tentang cara menggunakan API yang diupdate dan default-nya. (I54d45, b/161809544)
  • Parameter ambang batas pada Modifier.swipeable telah diubah; sekarang parameter ini mengambil sepasang status (dari jenis T) dan menampilkan ambang batas di antara status tersebut dalam bentuk ThresholdConfig. Parameter dismissThresholds ditambahkan ke SwipeToDismiss yang merupakan lambda (DismissDirection) -> ThresholdConfig. (Ie1080)
  • Penggeser memiliki lebih banyak warna untuk penyesuaian terperinci (I73e64, b/161810475)
  • Nama parameter warna kartu telah diganti menjadi backgroundColor (I01fc1, b/161809546)
  • Sekarang, snackbar memiliki warna latar belakang dan konten yang dapat disesuaikan (I238f2, b/161804381)
  • Parameter penyesuaian modifier, backgroundColor, contentColor, dan scrimColor telah ditambahkan ke Drawers (I23655, b/161804378)
  • Composable state { ... } kini tidak lagi digunakan agar panggilan eksplisit ke remember { mutableStateOf(...) } menjadi lebih jelas. Ini mengurangi keseluruhan tampilan API dan jumlah konsep untuk pengelolaan status, serta mencocokkan pola by mutableStateOf() untuk delegasi properti class. (Ia5727)
  • Nama parameter padding tombol telah diganti menjadi contentPadding (Id252e, b/161809394)
  • Menambahkan komponen materi eksperimental SwipeToDismiss. (I129e5)

Perbaikan Bug

  • Menghapus onChildPositioned dan OnChildPositionedModifier. Sebagai gantinya, developer sebaiknya menggunakan onPositioned dan OnPositionedModifier pada tata letak turunan. (I4522e, b/162109766)
  • Menambahkan lambda mergePolicy ke SemanticsPropertiKey. Ini dapat digunakan untuk menentukan kebijakan kustom untuk penggabungan semantik mergeAllDescendants. Kebijakan defaultnya adalah menggunakan nilai induk jika sudah ada, atau nilai turunan jika tidak ada. (Iaf6c4, b/161979921)
  • IntSize kini menjadi class inline (I2bf42)
  • PlacementScope.placeAbsolute() diganti namanya menjadi PlacementScope.place(), dan PlacementScope.place() sebelumnya diganti namanya menjadi PlacementScope.placeRelative(). Akibatnya, metode PlacementScope.place() tidak akan lagi otomatis mencerminkan posisi dalam konteks kanan-ke-kiri. Jika menginginkannya, gunakan saja PlacementScope.placeRelative(). (I873ac, b/162916675)
  • Menghentikan penggunaan PxBounds untuk digantikan Rect. Memperbarui semua penggunaan PxBounds dengan Rect dan menambahkan penghentian/penggantian yang benar dengan anotasi untuk membantu migrasi. (I37038, b/162627058)
  • Mengganti nama RRect menjadi RoundRect agar lebih cocok untuk menulis pola penamaan Membuat konstruktor fungsi serupa pada RRect dan konstruktor fungsi RRect yang tidak digunakan lagi (I5d325)

Versi 0.1.0-dev16

5 Agustus 2020

androidx.compose.material:material:0.1.0-dev16, androidx.compose.material:material-icons-core:0.1.0-dev16, dan androidx.compose.material:material-icons-extended:0.1.0-dev16 dirilis. Versi 0.1.0-dev16 berisi commit berikut ini.

Perubahan API

  • Warna kini merupakan class final, bukan antarmuka. Daripada memperluas dan menyediakan implementasi kustom, Anda sebaiknya membuat suasana baru untuk objek tema khusus dan mengakses objek tema melalui suasana baru di komponen Anda, mirip dengan cara kerja MaterialTheme secara internal. (Ibae84)
  • Nama ColorPalette diganti menjadi Colors, untuk memetakan sistem warna Material dengan lebih baik dan menghilangkan kebingungan terkait ColorPalette menjadi objek bertema 'generik', bukan implementasi khusus sistem warna Material. Selain itu, nama lightColorPalette dan darkColorPalette diganti menjadi lightColors dan darkColors. (I9e976, b/161812111)
  • Mengganti nama parameter text BottomNavigationItem menjadi label, onSelected menjadi onSelect, activeColor menjadi selectedContentColor, inactiveColor menjadi unselectedContentColor, dan memperbarui urutan parameter agar cocok dengan panduan. (Icb605, b/161809324)
  • Modifier.stateDraggable sepenuhnya diperbaiki dan diganti namanya menjadi Modifier.swipeable. Class SwipeableState baru sudah diperkenalkan, serta DrawerState dan BottomDrawerState difaktorkan ulang untuk mewarisi class tersebut. [Modal/Bottom]DrawerLayout tidak lagi menggunakan parameter onStateChange. (I72332, b/148023068)
  • Paket foundation.shape.corner diratakan menjadi foundation.share (I46491, b/161887429)
  • Menambahkan anotasi ExperimentalMaterialApi. RippleTheme ditandai sebagai Experimental (IC5fa0, b/161784800)
  • Nama Material FillingTextField diganti menjadi TextField dan nama TextField dasar diganti menjadi BaseTextField, agar API paling sederhana yang diinginkan mudah ditemukan dan digunakan (Ia6242, b/155482676)

Perbaikan Bug

  • OnChildPositioned sudah tidak digunakan lagi. Sebagai gantinya, gunakan OnPositioned pada turunan. (I87f95, b/162109766)
  • Mengatasi masalah API umum (I077bc)
    1. Menghapus antarmuka OffsetBase yang tidak digunakan
    2. Meratakan class Offset dan IntOffset agar memiliki tampilan API yang konsisten
    3. Mengganti nama IntOffset.Origin menjadi IntOffset.Zero agar konsisten dengan Offset API
    4. Memindahkan metode nativeCanvas dari antarmuka Canvas untuk mendukung konsumen membuat instance Canvas mereka sendiri
    5. Membuat class EmptyCanvas stub untuk memfaktorkan ulang DrawScope menjadi parameter non-null, bukan lateinit, dan memastikan non-nullability pada kolom
    6. Mengganti nama enum ClipOp menjadi Pascal Case
    7. Mengganti nama enum FilterQuality menjadi Pascal Case
    8. Mengganti nama enum StrokeJoin menjadi Pascal Case
    9. Mengganti nama enum PointMode menjadi Pascal Case
    10. Mengganti nama enum PaintingStyle menjadi Pascal Case
    11. Mengganti nama enum PathFillType menjadi Pascal Case
    12. Mengganti nama enum StrokeCap menjadi Pascal Case
    13. Memperbarui implementasi DrawCache agar tidak lagi menggunakan parameter lateinit
    14. Memperbarui DrawScope agar tidak lagi menggunakan delegasi lambat untuk parameter internal fillPaint dan strokePaint
    15. Memperbarui composable Image untuk menghindari penggunaan Box untuk overhead yang lebih rendah
    16. Memperbarui class Outline agar memiliki anotasi @Immutable
    17. Memperbarui PathNode agar memiliki anotasi @Immutable untuk setiap petunjuk jalur
    18. Memperbarui subkomposisi Vektor untuk menghapus pemeriksaan persamaan bersyarat yang berlebihan karena compose sudah menanganinya
    19. Metode konstruktor pendamping Rect tidak digunakan lagi dan diganti dengan konstruktor fungsi
    20. Memperbarui class Brush dan konstruktor fungsi dengan API @Immutable dan @Stable
    21. Memperbarui enum VertexMode menjadi PascalCase
    22. Memperbarui metode DrawScope selectPaint untuk menimpa parameter goresan secara bersyarat pada paint jika telah diubah
    23. Memperbarui Ukuran untuk menambahkan API destrukturisasi, mengganti nama UnspecifiedSize menjadi Unspecified dan menghapus metode yang tidak digunakan
  • Memindahkan dialog ke ui (I47fa6)
  • SemanticsNodeInteraction.performPartialGesture dihapus. Sebagai gantinya, gunakan SemanticsNodeInteraction.performGesture. (Id9b62)
  • Mengganti nama SemanticsNodeInteraction.getBoundsInRoot() menjadi SemanticsNodeInteraction.getUnclippedBoundsInRoot() (Icafdf, b/161336532)
  • API untuk dukungan dari kanan ke kiri telah diupdate. Menambahkan LayoutDirectionAmbient yang bisa digunakan untuk membaca dan mengubah arah tata letak. Modifier.rtl dan Modifier.ltr telah dihapus. (I080b3)
  • Nama Modifier.deternimateProgress telah diganti menjadi Modifier.progressSemantics (I9c0b4)
  • Memperbarui ikon material-diperluas dengan ikon terbaru yang ditambahkan ke Material.io/icons (I4b1d3)
  • Memerlukan jenis T agar ditentukan secara eksplisit untuk transitionDefinition. (I1aded)
  • Modifier.plus sudah tidak digunakan lagi. Sebagai gantinya, gunakan Modifier.then. 'Then' memiliki sinyal pengurutan yang lebih kuat, serta melarang pengetikan Modifier.padding().background() + anotherModifier yang memutus rantai dan lebih sulit dibaca (Iedd58, b/161529964)
  • Mengganti nama AndroidComposeTestRule menjadi createAndroidComposeRule. (I70aaf)
  • Menambahkan SemanticsMatcher isFocused() dan isNotFocused(). (I0b760)
  • Menghapus BaseGestureScope.globalBounds, yang tidak boleh digunakan dari pengujian. Menggunakan koordinat lokal ke node tempat Anda berinteraksi. (Ie9b08)
  • Memperbaiki posisi pop-up pada tampilan terpotong. (Idd7dd)
  • Nama Modifier.drawBackground telah diganti menjadi Modifier.background (I13677)

Versi 0.1.0-dev15

22 Juli 2020

androidx.compose.material:material:0.1.0-dev15, androidx.compose.material:material-icons-core:0.1.0-dev15, dan androidx.compose.material:material-icons-extended:0.1.0-dev15 dirilis. Versi 0.1.0-dev15 berisi commit berikut ini.

Update Dependensi

  • Untuk menggunakan Compose versi 0.1.0-dev15, Anda harus mengupdate dependensi sesuai dengan cuplikan kode baru yang ditampilkan di atas dalam Mendeklarasikan dependensi.

Perubahan API

  • Anotasi @Model kini tidak digunakan lagi. Gunakan status dan mutableStateOf sebagai alternatif. Keputusan penghentian ini tercapai setelah diskusi yang dilakukan secara saksama.

    Pembenaran

    Alasan mencakup, tetapi tidak terbatas pada:

    • Mengurangi konsep dan area permukaan API yang perlu diajari
    • Lebih selaras dengan toolkit lainnya yang dapat dibandingkan (Swift UI, React, Flutter)
    • Keputusan yang reversibel. Kami dapat selalu mengembalikan @Model di lain waktu.
    • Meniadakan penggunaan corner-case dan pertanyaan yang sulit dijawab tentang mengonfigurasi @Model sebagai hal-hal yang perlu ditangani
    • Class data @Model, sama dengan, kode hash, dll.
    • Bagaimana cara membuat beberapa properti "diamati" dan yang lainnya tidak?
    • Bagaimana cara menentukan kesetaraan struktural vs. referensi untuk digunakan dalam pengamatan?
    • Mengurangi "magic" di dalam sistem. Akan mengurangi kemungkinan seseorang menganggap sistem lebih cerdas dari seharusnya (contoh, mengetahui cara membedakan daftar)
    • Membuat perincian pengamatan lebih intuitif.
    • Meningkatkan kemampuan pemfaktoran ulang dari variabel -> properti pada class
    • Berpotensi membuka kemungkinan untuk melakukan pengoptimalan khusus Status secara manual
    • Lebih selaras dengan bagian ekosistem lainnya dan mengurangi ambiguitas terhadap status yang tidak dapat diubah atau kami “menerapkan status yang dapat diubah”

    Catatan Migrasi

    Hampir semua penggunaan @Model yang sudah ada telah diubah dengan baik menggunakan salah satu dari dua cara. Contoh di bawah ini menampilkan class @Model dengan dua properti hanya untuk keperluan contoh, dan menunjukkan class tersebut saat sedang digunakan dalam composable.

    @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 }
     )
    }
    

    Alternatif 1: Gunakan State<OriginalClass> dan buat salinan.

    Pendekatan ini dibuat lebih mudah dengan class data Kotlin. Intinya, buat semua properti var sebelumnya menjadi properti val pada class data, kemudian gunakan state sebagai ganti dari remember, lalu tetapkan nilai status ke salinan clone aslinya menggunakan metode praktis copy(...) class data.

    Penting untuk diperhatikan bahwa pendekatan ini hanya berfungsi saat satu-satunya mutasi ke class tersebut dilakukan dalam cakupan yang sama tempat instance State dibuat. Jika class secara internal bermutasi sendiri di luar cakupan penggunaan tersebut, dan Anda mengandalkan pengamatannya, maka gunakan pendekatan berikutnya.

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

    Alternatif 2: Gunakan mutableStateOf dan delegasi properti

    Pendekatan ini dibuat lebih mudah dengan delegasi properti Kotlin dan mutableStateOf API yang memungkinkan Anda membuat instance MutableState di luar komposisi. Intinya, ganti semua properti var dari class asal menggunakan properti var dengan mutableStateOf sebagai delegasi propertinya. Hal ini memiliki keuntungan bahwa penggunaan class tidak akan berubah sama sekali, kecuali implementasi internalnya. Perilaku ini tidak sepenuhnya identik dengan contoh aslinya, karena setiap properti saat ini diamati/berlangganan satu per satu, sehingga rekomposisi yang Anda lihat setelah pemfaktoran ulang berikut dapat menjadi lebih sempit (hal yang baik).

    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)

  • Nama callback onFocusChange di kolom teks diganti menjadi onFocusChanged (Ida4a1)

  • Menambahkan parameter ambang batas pada stateDraggable untuk menentukan ambang batas antara anchor. Ini digunakan untuk menetapkan ambang batas 56dp di panel samping bawah. Selain itu, BottomDrawerLayout kini menggunakan enum BottomDrawerState terpisah. (I533fa)

  • Menghapus Modifier.ripple yang sebelumnya tidak digunakan lagi. Clickable kini menggunakan ripple sebagai indikasi default (jika Anda memiliki MaterialTheme {} yang disetel di aplikasi Anda) sehingga pada umumnya, Anda cukup menggunakan clickable saja dan mendapatkan indikasi ripple secara gratis. Jika Anda perlu menyesuaikan warna/ukuran/parameter terbatas untuk ripple, Anda dapat membuat RippleIndication secara manual dan meneruskannya ke clickable sebagai parameter indikasi. (I663b2, b/155375067)

  • Menghapus penggantian composable FilledTextField yang tidak digunakan lagi (I7f8f8)

  • Mengganti nama objek Button (berisi default yang digunakan oleh fungsi Button) menjadi ButtonConstants (I7c5f7, b/159687878)

  • Slot konten Button kini berfungsi sebagai Row (berguna jika Anda harus memiliki ikon dengan teks, lihat contoh cara menulis di Button) (I0ff10, b/158677863)

  • RadioGroup dan RadioGroupItem sudah tidak digunakan lagi. Gunakan Box dengan Modifier.selectable, Row, dan Column untuk menentukan kumpulan radioButton yang sesuai oleh desain Anda (I7f5cf, b/149528535)

  • Menambahkan Material Outlined Textfield (I1a518)

  • androidx.ui.foundation.TextFieldValue dan androidx.ui.input.EditorValue tidak digunakan lagi. Composable TextField, FilledTextField, dan CoreTextField yang menggunakan tipe tersebut juga tidak digunakan lagi. Sebagai gantinya, gunakan androidx.ui.input.TextFieldValue instead (I4066d, b/155211005)

  • TabRow.TabPosition tidak berisi posisi di Dp, bukan di IntPx (I34a07, b/158577776).

  • Mengganti penggunaan IntPx dengan Int. Mengganti IntPxPosition dengan IntOffset. Mengganti IntPxSize dengan IntSize. (Ib7b44)

  • Untuk menggabungkan jumlah class yang digunakan untuk menyatakan informasi pengubahan ukuran, standarkan penggunaan class Size, bukan PxSize. Tindakan ini memberikan manfaat dari class inline untuk menggunakan 2 nilai float yang panjang untuk dipaketkan untuk menyatakan lebar dan tinggi yang dinyatakan sebagai float. (Ic0191)

  • Menghentikan penggunaan Modifier.ripple. Clickable kini menggunakan ripple sebagai indikasi default (jika Anda memiliki MaterialTheme {} yang disetel di aplikasi Anda) sehingga pada umumnya, Anda cukup menggunakan clickable saja dan mendapatkan indikasi ripple secara gratis. Jika Anda perlu menyesuaikan warna/ukuran/parameter terbatas untuk ripple, Anda dapat membuat RippleIndication secara manual dan meneruskannya ke clickable sebagai parameter indikasi. (I101cd, b/155375067)

  • Scaffold API telah dibuat ulang: beberapa parameter telah berubah namanya, menambahkan parameter baru untuk penyesuaian yang lebih baik. Menambahkan pengambil ke ukuran kueri Fab, TopBar, dan BottomBar (I0e7ce)

  • Menambahkan komponen DropdownMenu di ui-material, untuk implementasi menu Desain Material. (I9bb3d)

  • Mengizinkan penampilan/penyembunyian keyboard virtual secara manual menggunakan SoftwareKeyboardController (Ifb9d6, b/155427736)

  • Modifier.indication telah ditambahkan ke paket dasar. Gunakan API tersebut untuk menampilkan indikator tekan/tarik/lainnya pada elemen khusus yang digunakan untuk berinteraksi (I8425f, b/155287131)

  • Menggabungkan implementasi CanvasScope sehingga hanya terdapat DrawScope dan ContentDrawScope Mengganti nama CanvasScope ke DrawScope. Mengupdate DrawScope untuk menerapkan antarmuka Density dan menyediakan subclass LayoutDirection. Menghapus DrawScope di ContentDrawScope Painter dan PainterModifier telah diupdate untuk tidak lagi mempertahankan properti RTL sendiri karena DrawScope menyediakan ini tanpa menyediakannya secara manual (I1798e)

  • Nama Emphasis.emphasize() berganti menjadi Emphasis.applyEmphasis() (Iceebe)

  • Desain tombol yang tidak aktif kini secara visual mengikuti spesifikasi Desain Material (I47dcb, b/155076924)

  • FilledTextField mendapatkan tindakan ime, transformasi visual, dan dukungan jenis keyboard (I1f9cf, b/155075201)

  • Menambahkan parameter strokeWidth ke CircularProgressIndicator untuk menyesuaikan ukuran goresan. Untuk mengubah ukuran goresan (tinggi) LinearProgressIndicator, Anda dapat menggunakan Modifier.preferredHeight() atau pengubah ukuran lainnya. (Icea16, b/154919081)

  • Menambahkan parameter strokeWidth ke CircularProgressIndicator untuk menyesuaikan ukuran goresan. Untuk mengubah ukuran goresan (tinggi) LinearProgressIndicator, Anda dapat menggunakan Modifier.preferredHeight() atau pengubah ukuran lainnya. (Icea16, b/154919081)

  • Menambahkan slot API untuk ikon awal dan ikon akhir pada FillingTextField dan penanganan status error-nya (Ic12e0)

  • Warna default FAB dan FAB yang Diperpanjang telah diubah menjadi MaterialTheme.colors.secondary. (I3b9b9, b/154118816)

  • Mengganti semua penggunaan Color nullable di API dengan non-nullable dan menggunakan Color.Unset, bukan null (Iabaa7)

  • Mengganti nama EdgeInsets menjadi InnerPadding. Mengganti parameter innerPadding dari Material Buttons menjadi padding. (I66165)

  • Penggeser sekarang bersifat stateless. Pengguna perlu meneruskan dan memperbarui statusnya sendiri, seperti halnya pada kontrol lainnya. (Ia00aa)

  • StaticDrawer telah dihapus. Jika Anda membutuhkannya, gunakan Box dengan lebar yang ditentukan material sebagai gantinya (I244a7)

  • Menambahkan implementasi Desain Material dari Kolom Teks yang Terisi (Ic75cd)

  • Menambahkan param pengubah ke ListItem dan mengurutkan ulang param untuk mempromosikan isi lambda di akhir (I66e21)

  • Menambahkan parameter konstruktor defaultFontFamily ke Typography, memungkinkan penetapan jenis font default yang akan digunakan untuk TextStyles yang disediakan yang tidak memiliki rangkaian jenis. (I89d07)

  • Menghapus Tabel Data Material untuk sementara dari antarmuka API. (Iaea61)

  • Nama parameter diganti dalam composable Divider (IC4373)

  • turunan (Ia6d19)

  • Menghapus MaterialTheme.emphasisLevels, bukan menggunakan EmphasisAmbient.current untuk mengambil tingkat penekanan (Ib5e40)

  • Sistem bertema bentuk telah diperbarui berdasarkan spesifikasi desain Material. Sekarang Anda dapat menyediakan bentuk kecil, sedang, dan besar untuk digunakan oleh sebagian besar komponen (Ifb4d1)

  • Mengubah MaterialTheme API seperti MaterialTheme.colors(), MaterialTheme.typography() menjadi properti, bukan fungsi. Menghapus tanda kurung dari panggilan yang ada, tidak ada perubahan perilaku yang diharapkan. (I3565a)

  • FloatingActionButton API telah difaktorkan ulang untuk menerima lambda composable, bukan primitive. Lihat contoh terbaru untuk informasi penggunaan. (I00622)

  • Menambahkan param enabled ke Checkbox, Switch, dan Toggleable I41c16)

  • Ripple kini menjadi Modifier. Meskipun Clickable belum dikonversi, penggunaan yang direkomendasikan adalah Clickable(onClick = { ... }, modifier = ripple()) (Ie5200, b/151331852, b/150060763)

  • Surface dan Card dipindahkan dari androidx.ui.material.surface ke androidx.ui.material (I88a6d, b/150863888)

  • Button, FloatingActionButton, dan Clickable kini memiliki param enabled tersendiri. Beberapa param pada Button telah diganti namanya atau disusun ulang. (I54b5a)

  • Mengganti nama Image menjadi ImageAsset agar dapat membedakan dengan jelas data Image dan composable Image yang mendatang yang digunakan untuk menyusun tata letak dan konten gambar. Metode ekstensi dibuat di android.graphics.Bitmap, Bitmap.asImageAsset(), untuk membuat instance ImageAsset yang berguna untuk menggabungkan pengembangan aplikasi Android tradisional dengan framework compose (Id5bbd)

  • Snackbar API dengan parameter String telah dihapus, karena telah digantikan dengan overload yang menerima lambda composable. Lihat contoh terbaru untuk mengetahui informasi penggunaan (I55f80)

  • Tab API telah difaktorkan ulang untuk menerima lambda text dan icon (Ia057e)

  • Komponen BottomNavigation telah ditambahkan, lihat dokumen dan contoh untuk mengetahui informasi penggunaannya (I731a0)

  • Menambahkan Icon, IconButton, dan IconToggleButton, serta menghapus AppBarIcon. Anda dapat langsung mengganti penggunaan AppBarIcon yang ada dengan IconButton, dan target sentuhnya akan menjadi benar. Lihat contoh untuk mengetahui informasi penggunaan, dan lihat Ikon untuk Ikon Material yang telah tersedia yang dapat Anda gunakan secara langsung dengan komponen ini. (I96849)

  • Mengganti ButtonStyle dengan fungsi yang berbeda dan penghapusan overload pada teks (string). Lihat contoh terbaru untuk informasi penggunaan. (If63ab, b/146478620, b/146482131)

  • Mengganti nama pengubah Border menjadi DrawBorder (I8ffcc)

  • LayoutCoordinates tidak lagi memiliki properti posisi. Properti posisi tidak berfungsi saat mempertimbangkan LayoutModifiers, rotasi, atau penskalaan. Sebagai gantinya, developer sebaiknya menggunakan parentCoordinates dan childToLocal() untuk menghitung transformasi dari suatu LayoutCoordinate ke yang lainnya.

    LayoutCoordinates menggunakan IntPxSize untuk properti ukuran, bukan PxSize. Layouts menggunakan ukuran piksel bilangan bulat untuk tata letak, sehingga semua ukuran tata letak harus menggunakan bilangan bulat dan bukan nilai floating point. (I9367b)

  • Perubahan yang dapat menyebabkan gangguan pada API ambien. Lihat log dan dokumentasi Ambient<T> untuk detail selengkapnya (I4c7ee, b/143769776)

  • Komponen material Scaffold telah ditambahkan. Scaffold mengimplementasikan (I7731b)

  • DrawBorder diganti dengan Border Modifier (Id335a)

Perbaikan Bug

  • FocusModifier tidak digunakan lagi dan digantikan oleh Modifier.focus, Modifier.focusRequester, Modifier.focusObserver. FocusState dan FocusDetailedState tidak digunakan lagi dan digantikan dengan FocusState2 (I46919, b/160822875, b/160922136)
  • VerticalScroller dan HorizontalScroller sudah tidak lagi digunakan. Gunakan ScrollableColumn dan ScrollableRow untuk pengalaman bawaan dengan parameter dan perilaku Column/Row, atau Modifier.verticalScroll dan Modifier.horizontalScroll pada elemen Anda sendiri. Demikian pula, ScrollerPosition tidak digunakan lagi untuk mendukung ScrollState' (I400ce, b/157225838, b/149460415, b/154105299)
  • API Modifier.draggable dan Modifier.scrollable telah dikerjakan ulang. DragDirection telah dihapus untuk mendukung Orientation. Status yang diperlukan untuk dapat di-scroll telah disederhanakan. Nama ScrollableState telah diganti menjadi ScrollableController (Iab63c, b/149460415)
  • runOnIdleCompose diganti namanya menjadi runOnIdle (I83607)
  • Properti semantik satu nilai sekarang menggunakan gaya pemanggilan. Misalnya, 'semantik { hidden = true }' sekarang ditulis sebagai: 'semantik { hidden() }'. (Ic1afd, b/145951226, b/145955412)
  • Beberapa nama API pengujian diganti menjadi lebih intuitif. Semua nama API findXYZ diganti menjadi onNodeXYZ. Semua nama API doXYZ diganti menjadi performXYZ. (I7f164)
  • Transition API telah diubah untuk mengembalikan TransitionState, bukan meneruskan TransitionState ke turunan. Hal ini membuat API lebih konsisten dengan API animate(). (I24e38)
  • Class unit IntBounds telah ditambahkan dan mewakili batas piksel bilangan bulat dari tata letak. API PopupPositionProvider telah diupdate untuk menggunakannya. (I0d8d0, b/159596546)
  • Sebuah flag opsional baru useUnmergedTree telah ditambahkan ke pencari pengujian. (I2ce48)
  • Menghapus API pengujian ukuran yang tidak digunakan lagi. (Iba0a0)
  • Menghapus class inline Shader yang menggabungkan class expect NativeShader. Mengganti nama NativeShader menjadi Shader. Class inline Shader yang digabungkan tidak menambahkan apa pun yang berharga ke permukaan API dan merupakan class inline, jadi gunakan class NativeShader secara langsung. (I25e4d)
  • Pop-ups, Dialogs, dan Menus sekarang mewarisi MaterialTheme kontekstual (Ia3665, b/156527485)
  • DropdownMenu material kini dapat di-scroll. (Ide699)
  • Menghapus parameter arah tata letak dari blok ukuran fungsi Layout(). Namun, arah tata letak tersedia di dalam callback melalui objek cakupan pengukuran (Ic7d9d)
  • Gunakan AnimationSpec, bukan AnimationBuilder di API level atas untuk memperjelas konsep spesifikasi animasi statis -Meningkatkan DSL transisi dengan menghapus persyaratan lambda untuk membuat AnimationSpec seperti tween, spring. Sebaliknya, API mengambil parameter konstruktor secara langsung. -Meningkatkan kemudahan penggunaan AnimationSpec secara keseluruhan yang membuka konstruktor, bukan mengandalkan builder -Mengubah durasi dan penundaan untuk KeyFrames dan Tween menjadi Int. Tindakan ini menghilangkan tipe transmisi yang tidak perlu dan overloading metode (untuk mendukung Long dan Int). (Ica0b4)
  • Tombol akses sekarang muncul dalam status nonaktif saat enabled ditetapkan ke false (If4624, b/155941869, b/159331694)
  • Nama Modifier.tag diganti menjadi Modifiers.layoutId untuk menghindari kebingungan dengan Modifier.testTag. (I995f0)
  • Posisi Int baris perataan yang ditampilkan dari Placeable#get(AlignmentLine) sekarang tidak null. Jika baris perataan kueri tidak ada, AlignmentLine.Unspecified akan ditampilkan. (I896c5, b/158134875)
  • Memfaktorkan ulang class Radius untuk menjadi class inline. Menghapus metode pembuatan pengiring yang mendukung konstruktor fungsi dengan parameter default agar memiliki radius sepanjang sumbu y yang cocok dengan parameter radius sumbu x wajib.

    Mengupdate DrawScope.drawRoundRect agar dapat menggunakan parameter Radius tunggal, bukan 2 nilai float terpisah untuk radius di sepanjang sumbu x dan y (I46d1b)

  • Untuk menggabungkan jumlah class yang digunakan untuk menyatakan informasi positioning, standarkan penggunaan class Offset, bukan PxPosition. Tindakan ini memberikan manfaat dari class inline untuk menggunakan 2 nilai float yang panjang untuk dipaketkan untuk menyatakan offset x dan y yang dinyatakan sebagai float. (I3ad98)

  • Mengganti penggunaan class Px di berbagai class compose sebagai bagian dari upaya pemfaktoran ulang besar-besaran agar hanya mengandalkan jenis primitif dan Dp untuk parameter piksel. Menghapus class Px secara keseluruhan (I3ff33)

  • Komponen yang dapat dialihkan sudah tidak digunakan lagi. Sebagai gantinya, gunakan Modifier.toggleable (I35220, b/157642842)

  • Mengganti penggunaan class Px dalam berbagai class compose sebagai bagian dari upaya pemfaktoran ulang yang besar-besaran agar hanya mengandalkan jenis primitif dan Dp untuk parameter piksel (I086f4)

  • Mengganti penggunaan class Px di berbagai class compose sebagai bagian dari upaya pemfaktoran ulang besar-besaran agar hanya mengandalkan jenis primitif dan Dp untuk parameter piksel (Id3434)

  • Mengganti penggunaan class Px dalam berbagai class compose sebagai bagian dari upaya pemfaktoran ulang besar-besaran agar hanya mengandalkan jenis primitif dan Dp untuk parameter piksel (I97a5a)

  • Memperbaiki onClick yang tidak dipanggil untuk DropdonMenuItems. (I3998b, b/157673259)

  • MutuallyExclusiveSetItem sudah tidak digunakan lagi. Sebagai gantinya, gunakan Modifier.selectable. (I02b47, b/157642842)

  • TestTag sekarang tidak digunakan lagi. Sebagai gantinya, gunakan Modifier.testTag. (If5110, b/157173105)

  • Kursor TextField memiliki animasi berkedip (Id10a7)

  • Mengganti penggunaan class Px di berbagai class compose sebagai bagian dari upaya pemfaktoran ulang besar-besaran agar hanya mengandalkan jenis primitif dan Dp untuk parameter piksel (I19d02)

  • VerticalScroller sekarang otomatis menyediakan Kolom. HorizontalScroller sekarang menyediakan Baris dari kotak. (Ieca5d, b/157020670)

  • Mengganti penggunaan class Px dalam berbagai class compose sebagai bagian dari upaya pemfaktoran ulang besar-besaran guna hanya mengandalkan jenis primitif dan Dp untuk parameter piksel (Ieda0b)

  • Modifier.semantics sudah tidak digunakan lagi untuk memungkinkan penggunaan komponen tingkat tinggi. (I4cfdc)

  • API pengubah DrawLayer telah diubah: nama outlineShape diganti ke shape dan memiliki nilai default RectangleShape, serta kini tidak dapat dinolkan; nama clipToOutline diganti menjadi clip; clipToBounds dihapus karena sama dengan clip == true dengan RectangleShape (I7ef11, b/155075735)

  • Mengupdate API compose dengan level yang lebih tinggi yang mengekspos Canvas untuk mengekspos CanvasScope. Tindakan ini akan menghapus keperluan konsumen untuk mengelola objek Paint-nya. Bagi konsumen yang masih memerlukan akses ke Canvas, mereka dapat menggunakan metode ekstensi drawCanvas yang menyediakan callback untuk mengeluarkan perintah menggambar menggunakan Canvas yang mendasarinya. (I80afd)

  • Composable AlignmentLineOffset sudah tidak digunakan lagi, sebagai gantinya harap gunakan pengubah relativePaddingFrom(). Composable CenterAlignmentLine telah dihapus. (I60107)

  • API lambda akhir WithConstraints telah diubah. Sekarang, sebagai ganti dua parameter, memiliki cakupan penerima yang merupakan tambahan untuk batasan dan layoutDirection menyediakan properti minWidth, maxWidth, minHeight, dan maxHeight di Dp (I91b9a, b/149979702)

  • Menambahkan pengubah tata letak defaultMinSizeConstraints yang menentukan batasan ukuran ke tata letak gabungan saja saat batasan tersebut belum ditentukan (0 untuk batasan minimal dan tidak terbatas untuk batasan maksimal). (I311ea, b/150460257)

  • FocusManagerAmbient dihapus. Gunakan FocusModifier.requestFocus untuk mendapatkan fokus. (Ic4826)

  • Membuat CanvasScope API yang menggabungkan objek Canvas untuk mengekspos antarmuka API gambar yang deklaratif dan stateless. Transformasi disertakan dalam cakupan penerimanya sendiri dan informasi pengubahan ukuran juga mencakup batas inset yang sesuai. Ini tidak mengharuskan konsumen untuk mempertahankan state object Paint-nya sendiri dalam mengonfigurasi operasi gambar.

    Menambahkan CanvasScopeSample serta mengupdate aplikasi demo guna menyertakan Demo grafis deklaratif (Ifd86d)

  • Tambahkan penyesuaian warna kursor ke TextField (I6e33f)

  • Sekarang TextFieldValue yang digunakan dengan TextField dapat mempertahankan rekreasi aktivitas saat digunakan seperti ini: var text by savedInstanceState(saver = TextFieldValue.Saver) { TextFieldValue() } (I5c3ce, b/155075724)

  • Nama LayoutModifier2 diganti menjadi LayoutModifier. (Id29f3)

  • Menghapus antarmuka LayoutModifier yang sudah tidak digunakan lagi. (I2a9d6)

  • Mengganti parameter focusIdentifier CoreTextField/TextField dengan FocusNode untuk diintegrasikan dengan subsistem fokus. (I7ea48)

  • Fungsi pengukuran intrinsik di Layout dan LayoutModifier2 kini memiliki penerima IntrinsicMeasureScope yang memberikan API kueri instrinsik dengan arah tata letak yang disebarkan secara implisit. (Id9945)

  • Modifier.zIndex() baru ditambahkan untuk mengontrol urutan gambar turunan dalam tata letak induk yang sama. Properti elevasi pada DrawLayerModifier diganti namanya menjadi shadowElevation dan tidak lagi mengontrol urutan gambar. Urutan parameter DrawShadow diubah: elevasi kini menjadi yang pertama dan bentuknya adalah yang kedua dengan default RectangleShape. (I20150, b/152417501)

  • RectangleShape dipindahkan dari androidx.ui.foundation.shape.* ke androidx.ui.graphics.* (Ia74d5, b/154507984)

  • Mengupdate TextField API agar menggabungkan callback onFocus dan onBlur ke dalam callback onFocusChange(Boolean) tunggal dengan parameter (I66cd3)

  • Menambahkan parameter verticalGravity dan horizontalGravity ke Row dan Column. (I7dc5a)

  • Memperbarui wrapContentWidth dan wrapContentHeight untuk mengharapkan Alignment vertikal atau horizontal, bukan sembarang Alignment. Pengubah gravitasi diperbarui untuk menerima Alignment vertikal atau horizontal. Row, Column, dan Stack telah diperbarui untuk mendukung Alignment berkelanjutan khusus. (Ib0728)

  • Membuat PixelMap API untuk mendukung kueri informasi piksel dari ImageAsset. (I69ad6)

  • Menghapus ProvideContentColor, sebagai gantinya cukup gunakan ContentColorAmbient langsung dengan Providers (Iee942)

  • Nama modul ui-text-compose diganti menjadi ui-text. sekarang ui-text berisi composable CoreText dan CoreTextField (Ib7d47)

  • Nama modul ui-text diganti menjadi ui-text-core (I57dec)

  • Memindahkan composable ui-framework/CoreText, CoreTextField di bawah ui-text-compose. Anda mungkin ingin menyertakan ui-text-compose dalam project Anda. (I32042)

  • Memperbaiki DrawModifier API:

    • Membuat cakupan penerima untuk draw() ContentDrawScope
    • Menghapus semua parameter pada draw()
    • DrawScope memiliki antarmuka yang sama dengan CanvasScope
    • ContentDrawScope memiliki metode drawContent() (Ibaced, b/152919067)
  • Sekarang runOnIdleCompose dan runOnUiThread menjadi fungsi global, bukan metode di ComposeTestRule. (Icbe8f)

  • Operator delegasi properti [Mutable]State dipindahkan ke ekstensi untuk mendukung pengoptimalan delegasi properti Kotlin 1.4. Pemanggil harus menambahkan impor untuk terus menggunakan by state { ... } atau by mutableStateOf(...). (I5312c)

  • Menambahkan positionInParent dan boundsInParent untuk LayoutCoordinates. (Icacdd, b/152735784)

  • ColoredRect sudah tidak digunakan lagi. Sebagai gantinya, gunakan Box(Modifier.preferredSize(width, height).drawBackground(color)). (I499fa, b/152753731)

  • Nama LayoutResult diganti menjadi MeasureResult. (Id8c68)

  • Menambahkan LayoutModifier2, API baru untuk menentukan pengubah tata letak; LayoutModifier yang tidak digunakan lagi (If32ac)

  • Mengganti operator Modifier plus dengan fungsi ekstensi factory (I225e4)

  • Draggable telah dipindahkan ke pengubah (Id9b16, b/151959544)

  • Composable ParentData tidak digunakan lagi. Sebaiknya buat pengubah yang mengimplementasikan antarmuka ParentDataModifier, atau gunakan pengubah LayoutTag jika Anda hanya perlu memberi tag turunan tata letak agar dapat mengenalinya di dalam blok pengukuran. (I51368, b/150953183)

  • Composable Center sudah tidak digunakan lagi. Center ini harus diganti baik dengan pengubah LayoutSize.Fill + LayoutAlign.Center maupun dengan salah satu composable Box atau Stack dengan pengubah yang sesuai diterapkan (Idf5e0)

  • Menambahkan VectorPainter API untuk menggantikan API subkomposisi yang ada untuk grafik vektor. Hasil subkomposisi adalah objek VectorPainter, bukan DrawModifier. Penggunaan composable DrawVector sebelumnya tidak digunakan lagi dan diganti dengan VectorPainter.

    Nama Image(Painter) API menjadi PaintBox(Painter) Membuat composable Vector yang berfungsi seperti composable Image kecuali dengan VectorAsset bukan ImageAsset (I9af9a, b/149030271)

  • Mengganti nama LayoutFlexible menjadi LayoutWeight. Mengganti nama parameter tight menjadi fill. (If4738)

  • RepaintBoundary dihapus dan digantikan dengan DrawLayerModifier (I00aa4)

  • DrawVector telah diubah dari fungsi yang dapat dikomposisi reguler menjadi menampilkan drawVector() Modifier yang akan menggambar vektor sebagai latar belakang dari suatu tata letak. (I7b8e0)

  • Fungsi yang dapat dikomposisi Opacity telah diganti dengan pengubah drawOpacity. (I5fb62)

  • Mengganti Clip fungsi yang dapat dikomposisi dengan drawClip() pengubah. DrawClipToBounds adalah pengubah yang dapat digunakan dengan mudah saat Anda hanya perlu menyesuaikan batas layer yang memiliki bentuk persegi panjang. (If28eb)

  • Mengganti fungsi yang dapat dikomposisi DrawShadow dengan pengubah drawShadow(). Sekarang bayangan digambar sebagai bagian dari LayerModifier. (I0317a)

  • Menambahkan LayerModifier, pengubah yang mengizinkan penambahan RenderNode untuk Layout. Pengubah tersebut memungkinkan pengaturan clipping, opasitas, rotasi, penskalaan, dan bayangan. Ini akan menggantikan RepaintBoundary. (I7100d, b/150774014)

  • androidx.compose.ViewComposer telah dipindahkan ke androidx.ui.node.UiComposer androidx.compose.Emittable telah dihapus. Berlebihan dengan ComponentNode. androidx.compose.ViewAdapters telah dihapus. Kasus penggunaannya sudah tidak didukung. Compose.composeInto sudah tidak digunakan lagi. Sebagai gantinya, gunakan setContent atau setViewContent. Compose.disposeComposition sudah tidak digunakan lagi. Sebagai gantinya, gunakan metode dispose pada Composition yang ditampilkan oleh setContent. androidx.compose.Compose.subcomposeInto telah dipindahkan ke androidx.ui.core.subcomposeInto Nama ComponentNode#emitInsertAt telah diganti menjadi ComponentNode#insertAt Nama ComponentNode#emitRemoveAt telah diganti menjadi ComponentNode#removeAt Nama ComponentNode#emitMode telah diganti menjadi ComponentNode#move (Idef00)

  • Membuat composable Image untuk menangani pengubahan ukuran/tata letak selain menggambar ImageAsset tertentu ke layar. Composable ini juga mendukung penggambaran semua instance Painter arbitrer yang berkaitan dengan ukuran intrinsiknya, serta mendukung ukuran yang telah ditetapkan atau ukuran minimumnya (Ibcc8f)

  • Composable Wrap sudah tidak digunakan lagi. Ini dapat diganti dengan pengubah LayoutAlign atau dengan composable Stack (Ib237f)

  • WithConstraints mendapatkan parameter LayoutDirection (I6d6f7)

  • Membuat arah tata letak disebarkan dari node tata letak induk ke turunan. Menambahkan pengubah arah tata letak. (I3d955)

  • Tidak digunakan lagi: composable Draw adalah sumber bug umum seperti (I78392, b/149827027)

  • Komponen stack mendukung arah kanan-ke-kiri (Ic9e00)

  • Composable DrawShape telah dihapus. Sebagai gantinya, gunakan pengubah DrawBackground. (I7ceb2)

  • Mendukung arah kanan-ke-kiri dalam pengubah LayoutPadding (I9e8da)

  • Menambahkan AdapterList, komponen daftar scroll yang hanya menyusun dan mengatur tata letak item yang terlihat. Saat ini, masalah yang diketahui mencakup vertikal saja dan tidak sepenuhnya menangani semua kasus perubahan pada turunannya. (Ib351b)

  • Memperbarui flag ComposeFlags.COMPOSER_PARAM menjadi true, yang akan mengubah strategi pembuatan kode untuk plugin compose. Pada tingkat tinggi, hal ini menyebabkan fungsi @Composable dibuat dengan parameter sintetik tambahan, yang akan diteruskan ke panggilan @Composable berikutnya agar runtime dapat mengelola eksekusi dengan benar. Ini adalah perubahan yang dapat menyebabkan gangguan biner yang signifikan, tetapi semestinya dapat menjaga kompatibilitas tingkat sumber pada semua penggunaan compose yang disetujui. (I7971c)

  • Komponen Canvas ditambahkan. Composable ini menggunakan beberapa ukuran (disediakan oleh pengguna) dan Anda dapat menggambar menggunakan CanvasScope (I0d622)

  • Density dan DensityScope telah digabungkan dalam satu antarmuka. Sebagai ganti ambientDensity(), sekarang Anda dapat menggunakan DensityAmbient.current. Sebagai ganti withDensity(density), gunakan with(density) (I11cb1)

  • Mengubah LayoutCoordinates untuk membuat providedAlignmentLines menjadi Set, bukan Map; dan membuat LayoutCoordinates mengimplementasikan operator get(), bukan mengambil nilai. Hal ini mempermudah pengubah untuk mengubah satu atau beberapa nilai kumpulan tanpa membuat koleksi baru untuk setiap pengubah. (I0245a)

  • Sekarang, scroller menampilkan perilaku gerakan lempar pada Android native. (I922af, b/147493715)

  • Perbaikan pada platform API Constraints (I0fd15)