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 Kandidat Rilis Rilis Beta Rilis Alfa
20 Maret 2024 1.6.4 - - 1.7.0-alpha05

Struktur

Compose adalah kombinasi 7 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 disertai 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.material3Mem-build UI Jetpack Compose dengan Komponen Desain Material 3, evolusi berikutnya dari Desain Material. Material 3 menyertakan tema dan komponen yang diperbarui serta fitur personalisasi Material You, seperti warna dinamis. Material 3 juga didesain agar selaras dengan gaya visual dan UI sistem Android 12 yang baru.
compose.runtimeElemen penyusun yang penting untuk model pemrograman dan pengelolaan status Compose, serta runtime inti untuk ditargetkan oleh Plugin Compose Compiler.
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.6.4"
}

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.11"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

dependencies {
    implementation("androidx.compose.material:material:1.6.4")
}

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.11"
    }

    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.7

Versi 1.7.0-alpha05

20 Maret 2024

androidx.compose.material:material-*:1.7.0-alpha05 dirilis. Versi 1.7.0-alpha05 berisi commit ini.

Perubahan API

  • Flag ScaffoldSubcomposeInMeasureFix telah dihapus. (I67363)

Versi 1.7.0-alpha04

6 Maret 2024

androidx.compose.material:material-*:1.7.0-alpha04 dirilis. Versi 1.7.0-alpha04 berisi commit ini.

Fitur Baru

Versi 1.7.0-alpha03

21 Februari 2024

androidx.compose.material:material-*:1.7.0-alpha03 dirilis. Versi 1.7.0-alpha03 berisi commit ini.

Perubahan API

  • BottomDrawer telah dipromosikan dari eksperimental ke stabil. BottomDrawerState kini menampilkan progres sebagai fungsi, sehingga memungkinkan progres kueri di antara target tertentu. BottomDrawerState kini memungkinkan penyesuaian spesifikasi animasi, dan confirmStateChange bukan lagi lambda di akhir. (I9c029, b/261423850)
  • BackdropScaffold telah dipromosikan dari eksperimental ke stabil. Spesifikasi animasi kini menjadi spesifikasi tween sesuai dengan panduan. Parameter snackbarHost dari BackdropScaffold tidak lagi menjadi parameter terakhir untuk menghindari kebingungan dengan lambda akhir. BackdropScaffoldState mengekspos progress(from, to) API untuk membuat kueri progres di antara anchor. (I73f48, b/261423218)
  • Sheet bawah standar telah ditingkatkan dari eksperimental ke stabil. Konstruktor yang tidak digunakan lagi telah dihapus. Spesifikasi animasi kini menjadi spesifikasi hitung nilai sesuai dengan panduan. (I3c1a8, b/278692145, b/261409034)
  • Lembar bawah modal telah dipromosikan dari eksperimental ke stabil. Konstruktor yang tidak digunakan lagi telah dihapus. Spesifikasi animasi kini menjadi spesifikasi tween sesuai dengan panduan. (Ic53f4, b/278692145, b/266780235, b/261409034)

Perbaikan Bug

  • Memperbaiki masalah yang menyebabkan BackdropScaffold mengalami error dalam skenario tertentu yang dikombinasikan dengan LookaheadScope. (I51396)
  • Menghapus subkomposisi di dalam BottomSheetScaffold untuk meningkatkan performa. Memperbaiki masalah yang menyebabkan BottomSheetScaffold mengalami error dalam skenario tertentu saat dikombinasikan dengan LookaheadScope. (I2f90c)
  • Menghapus subkomposisi di dalam ModalBottomSheetLayout, sehingga meningkatkan performa. (I7a025)

Versi 1.7.0-alpha02

7 Februari 2024

androidx.compose.material:material-*:1.7.0-alpha02 dirilis. Versi 1.7.0-alpha02 berisi commit ini.

Versi 1.7.0-alpha01

24 Januari 2024

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

Perubahan Perilaku

  • Komponen Material telah dimigrasikan untuk menggunakan API ripple baru, dan tidak lagi membuat kueri RippleTheme.

Perubahan API

  • rememberRipple dan RippleTheme tidak digunakan lagi karena material-ripple, dengan ripple baru dan RippleConfiguration API yang ditambahkan ke material dan library sistem desain lainnya.

  • Komponen Material yang sebelumnya menerima MutableInteractionSource dan secara default mengingat { MutableInteractionSource() } sekarang menerima MutableInteractionSource nullable dan secara default ke null. Jika tidak mengangkat dan menggunakan MutableInteractionSource, Anda harus meneruskan null. Hal ini memungkinkan beberapa komponen untuk membuat instance secara lambat hanya jika diperlukan, sehingga meningkatkan performa. Sebaiknya Anda juga membuat perubahan yang serupa pada komponen Anda sendiri.

Versi 1.6

Versi 1.6.4

20 Maret 2024

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

Versi 1.6.3

6 Maret 2024

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

Perbaikan Bug

  • Perbaiki regresi dalam ExposedDropdownMenu agar dapat difokuskan lagi. (c0e0ed, b/323694447)

Versi 1.6.2

21 Februari 2024

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

Versi 1.6.1

7 Februari 2024

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

Versi 1.6.0

24 Januari 2024

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

Versi 1.6.0-rc01

10 Januari 2024

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

Versi 1.6.0-beta03

13 Desember 2023

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

Versi 1.6.0-beta02

29 November 2023

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

Versi 1.6.0-beta01

15 November 2023

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

Versi 1.6.0-alpha08

18 Oktober 2023

androidx.compose.material:material-*:1.6.0-alpha08 dirilis. Versi 1.6.0-alpha08 berisi commit ini.

Perubahan API

  • Menghentikan penggunaan fungsi materialIcon untuk mendukung overload yang menggunakan parameter autoMirror. (Ia338d)

Perbaikan Bug - Otomatis meningkatkan tinggi item navigasi untuk konten berukuran besar. (0c4ecc, b/272336962)

Versi 1.6.0-alpha07

4 Oktober 2023

androidx.compose.material:material-*:1.6.0-alpha07 dirilis. Versi 1.6.0-alpha07 berisi commit ini.

  • Update dependensi

Versi 1.6.0-alpha06

20 September 2023

androidx.compose.material:material-*:1.6.0-alpha06 dirilis. Versi 1.6.0-alpha06 berisi commit ini.

Perubahan yang Dapat Menyebabkan Gangguan Perilaku

  • Menghapus fungsi terkait panel samping dari BottomSheetScaffold. Gabungkan BottomSheetScaffold Anda dalam composable Drawer untuk mencapai fungsi sebelumnya. Lihat BottomSheetScaffoldWithDrawerSample sebagai contoh. (I1dcc8)

Perubahan API

  • Memperkenalkan tanda sementara untuk mengontrol apakah Scaffold harus mengukur turunannya selama pengukuran atau selama penempatan. Secara default, hal ini akan diukur dalam pengukuran. Jika Anda mengalami masalah dengan perilaku baru, ajukan masalah. (If6e3b)

Versi 1.6.0-alpha05

6 September 2023

androidx.compose.material:material-*:1.6.0-alpha05 dirilis. Versi 1.6.0-alpha05 berisi commit ini.

Fitur Baru

  • Menambahkan dukungan untuk ikon yang dicerminkan otomatis saat dirender dalam tata letak kanan-ke-kiri. Ikon di modul ikon material-core dan ikon material-diperluas kini menyediakan kumpulan ikon tambahan untuk mendukung pencerminan otomatis jika ikon memungkinkannya. Kumpulan baru diawali dengan Icons.AutoMirrored.Filled... dll., serta menyimpan ikon yang akan tercermin secara otomatis pada tata letak RTL. Lihat daftar ikon Material untuk daftar ikon yang dapat (dan seharusnya) dicerminkan secara otomatis.

Perubahan API

  • Menambahkan dukungan untuk ikon yang dicerminkan otomatis saat dirender dalam tata letak kanan-ke-kiri. Ikon di modul ikon material-core dan ikon material-diperluas kini menyediakan kumpulan ikon tambahan untuk mendukung pencerminan otomatis jika ikon memungkinkannya. Kumpulan baru diawali dengan Icons.AutoMirrored.Filled... dll., serta menyimpan ikon yang akan tercermin secara otomatis pada tata letak RTL. Lihat daftar ikon Material untuk daftar ikon yang dapat (dan seharusnya) dicerminkan secara otomatis. Properti ikon yang disediakan sebelumnya untuk ikon tersebut kini ditandai sebagai tidak digunakan lagi, dan memberikan saran blok pengganti untuk membantu migrasi. Jika Anda tidak memiliki penanganan khusus untuk ikon pencerminan di RTL, sebaiknya migrasikan ke kumpulan ikon baru. Misalnya, Icons.Filled.ArrowBack harus difaktorkan ulang ke Icons.AutoMirrored.Filled.ArrowBack. (I4b511)

Versi 1.6.0-alpha04

23 Agustus 2023

androidx.compose.material:material-*:1.6.0-alpha04 dirilis. Versi 1.6.0-alpha04 berisi commit ini.

Perbaikan Bug

  • Memperbaiki masalah saat beberapa komponen yang menggunakan Subcomposition (misalnya BottomSheetScaffold) di dalam Scaffold di dalam LookaheadScope mencoba membaca ukurannya terlalu awal. (If2c5d)
  • Memperbaiki penghitungan offset DropdownMenu sehingga offset x hanya bergantung pada arah tata letak lokal, dan offset y tidak akan lagi dibalik saat menu berada di dekat bagian bawah layar. (Iccc74, b/294103942)
  • Mengoptimalkan internal tata letak BottomSheetScaffold dan memperbaiki potensi masalah dengan BottomSheetScaffold di dalam LookaheadLayout. (IC0afa)

Versi 1.6.0-alpha03

9 Agustus 2023

androidx.compose.material:material-*:1.6.0-alpha03 dirilis. Versi 1.6.0-alpha03 berisi commit ini.

Perubahan API

  • Komponen Material2 kini memiliki API terpisah untuk meneruskan windowInsets guna mendukung fungsi tata letak layar penuh di Android. Tidak seperti komponen material3, komponen material2 tidak mendukung inset secara default dan nilai harus diteruskan secara manual. Lihat contoh yang sesuai untuk mendapatkan panduan. (I655e8)

Versi 1.6.0-alpha02

26 Juli 2023

androidx.compose.material:material-*:1.6.0-alpha02 dirilis. Versi 1.6.0-alpha02 berisi commit ini.

Perubahan API

  • Kita memindahkan dependensi kepadatan ke tingkat komponen. Hal ini berlaku untuk komponen berikut: komponen berbasis Spreadsheet dan SwipeToDismiss. Gunakan overload baru yang disediakan jika kepadatan merupakan parameter. (I1846e)
  • Anotasi tambahan untuk menentukan input yang diizinkan ke composable (I51109)
  • Mengupdate file API untuk menganotasi penghentian kompatibilitas (I8e87a, b/287516207)
  • Menambahkan perataan Start baru untuk FabPosition (Ib7aea, b/170592777)
  • TextFieldColorsWithIcons di Material 2 tidak digunakan lagi dan digantikan dengan TextFieldColors. Saat mengganti leadingIconColor atau trailingIconColor, ganti juga overload dengan interactionSource. (Id57ed, b/199377790)

Versi 1.6.0-alpha01

21 Juni 2023

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

Perubahan Perilaku

  • includeFontPadding kini menjadi false secara default dalam tipografi Material 2. Gaya tinggi baris default juga telah diubah menjadi Trim.None dan Alignment.Center, dan lineHeight eksplisit (in sp) telah ditambahkan ke TextStyle Typography. Lihat dokumen API jika Anda ingin menyesuaikan nilai-nilai ini, dan lihat postingan blog untuk penjelasan mendalam tentang perubahan ini. (Icabc3, I3f801, I04c03)

Perubahan API

  • Swipeable API Material tidak digunakan lagi. Lihat AnchoredDraggable API Foundation yang dioptimalkan untuk kasus penggunaan sederhana dan kompleks. (I732e0)

Perbaikan Bug

  • BottomSheetState, ModalBottomSheetState, dan BottomDrawerState kini menampilkan properti progres yang menunjukkan progres antara anchor saat ini (sudah selesai) dan anchor terdekat dalam arah geser. (I1b317, b/271169225, b/276375124, b/276776071, b/270066861)

Versi 1.5

Versi 1.5.4

18 Oktober 2023

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

Versi 1.5.3

4 Oktober 2023

androidx.compose.material:material-*:1.5.3 dirilis. Versi ini tidak memiliki perubahan

Versi 1.5.2

27 September 2023

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

Versi 1.5.1

6 September 2023

androidx.compose.material:material-*:1.5.1 dirilis tanpa perubahan. Versi 1.5.1 berisi commit ini.

Versi 1.5.0

9 Agustus 2023

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

Perubahan penting sejak versi 1.4.0

Perubahan API

  • Menyertakan perubahan dalam Swipeable1 API di BottomSheetScaffold. Parameter confirmStateChange BottomSheetState telah diganti namanya menjadi confirmValueChange. progress sekarang ditampilkan sebagai nilai float. animateTo dan snapTo bersifat internal. Sebagai gantinya, gunakan expand() dan collapse(). direction dan overflow telah dihapus. offset telah diganti dengan requireOffset(). I323b4
  • Menandai fungsi snapTo di Panel Samping sebagai API non-eksperimental. (Ib9c18, b/261425368)
  • Menambahkan parameter warna trek untuk indikator progres sirkular, dan parameter ujung goresan untuk indikator progres sirkular dan linear. (Ie668c, b/216325962, b/222964817)
  • Mengganti nama confirmStateChange ModalBottomSheetState, ModalBottomSheetState.Saver, dan rememberModalBottomSheetState menjadi confirmValueChange. (Ib48d1)
  • Menambahkan Modifier.minimumInteractiveComponentSize. Ini dapat digunakan untuk menyimpan setidaknya 48.dp untuk membedakan interaksi sentuh jika elemen akan berukuran lebih kecil. (I33f58, b/258495559)
  • Menyertakan perubahan dalam Swipeable API di ModalBottomSheetLayout. animateTo ModalBottomSheetState tidak lagi menggunakan parameter animationSpec dan offset yang ditampilkan sekarang nullable. Gunakan requireOffset untuk mewajibkan offset. (Ia2e79)
  • Menambahkan anotasi @JvmDefaultWithCompatibility (I8f206)
  • Perubahan yang disertakan dalam Swipeable API di animateTo ModalDrawer. DrawerState telah diganti dengan metode buka dan tutup dan offsetnya sekarang nullable. Gunakan requireOffset untuk mewajibkan offset. (I3de9e)
  • Mengupdate Drawer dan Sheet untuk menunda penekanan dengan benar jika gestur dapat menjadi peristiwa scroll.
  • Menambahkan parameter minLines ke dalam material dan material3 Text, TextField, dan OutlinedTextField yang memungkinkan penetapan tinggi minimum komponen dalam jumlah baris (I4af1d)

Perbaikan Bug

  • Memperbaiki masalah yang menyebabkan pullRefresh tidak menggunakan kecepatan, sehingga menyebabkan overscroll ditampilkan. Selain itu, mengubah tanda tangan API lambda onRelease di Modifier.pullRefresh untuk menampilkan Float untuk kecepatan yang digunakan (I7db65, b/266874741)
  • BottomSheetState, ModalBottomSheetState, dan BottomDrawerState kini menampilkan properti progres yang menunjukkan progres antara anchor saat ini (sudah selesai) dan anchor terdekat dalam arah geser. (I1b317, b/271169225, b/276375124, b/276776071, b/270066861)
  • Memperbaiki tindakan tutup AlertDialog agar muncul di bawah tindakan konfirmasi saat tindakan ditumpuk di atas satu sama lain agar sesuai dengan lebar dialog. Perbaikan ini menyelaraskan implementasi tersebut dengan spesifikasi Desain Material. (I029de, b/235454277)
  • BottomSheetScaffold tidak akan berpartisipasi lagi dalam scroll bertingkat jika gesturesEnabled disetel ke salah (false). (I634f3, b/215403277)
  • Memperbaiki bug yang menyebabkan BottomSheetScaffold mengalami error saat diberi konten kosong untuk slot. (Ib24a5, b/235588730)
  • Memperbaiki PullRefreshIndicator yang mengintersep peristiwa klik/pointer. (2494256, b/271777421)
  • Memperbaiki masalah yang menyebabkan ModalBottomSheetLayout mengalami error dalam kasus ekstrem saat orientasi berubah. Animasi tata letak (misalnya, Modifier.animateContentSize) di/pada konten sheet kini berfungsi dengan lancar. (I2f981, b/266780234)

Versi 1.5.0-rc01

26 Juli 2023

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

Versi 1.5.0-beta03

28 Juni 2023

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

Perbaikan Bug

  • BottomSheetState, ModalBottomSheetState, dan BottomDrawerState kini menampilkan properti progres yang menunjukkan progres antara anchor saat ini (sudah selesai) dan anchor terdekat dalam arah geser. (I1b317, b/271169225, b/276375124, b/276776071, b/270066861)

Versi 1.5.0-beta02

7 Juni 2023

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

Versi 1.5.0-beta01

24 Mei 2023

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

Perubahan API

  • Offset DrawerState dan BottomDrawerState tidak lagi nullable. Sebagai gantinya, metode ini akan menampilkan Float.NaN untuk menunjukkan tidak adanya offset. (Ie9855)
  • Menambahkan opsi untuk meneruskan ScrollState saat membuat DropdownMenu atau ExposedDropdownMenu untuk mengontrol status scroll vertikal dari item menu yang ditampilkan. (Idb009, b/185304441)
  • Menambahkan dukungan untuk mengaktifkan/menonaktifkan gestur ModalBottomSheetLayout sehingga pengguna dapat mengonfigurasi ini untuk bottomsheet unggulan yang lebih banyak (I40af0)
  • Menambahkan parameter warna ke BasicText untuk memungkinkan animasi atau setelan warna teks secara efisien. (Iffd88, b/246961787)
  • Mengganti nama properti Semantik isContainer menjadi isTraversalGroup (I121f6)

Perbaikan Bug

  • Memperbaiki tindakan tutup AlertDialog agar muncul di bawah tindakan konfirmasi saat tindakan ditumpuk di atas satu sama lain agar sesuai dengan lebar dialog. Perbaikan ini menyelaraskan implementasi tersebut dengan spesifikasi Desain Material. (I029de, b/235454277)

Versi 1.5.0-alpha04

10 Mei 2023

androidx.compose.material:material-*:1.5.0-alpha04 dirilis. Versi 1.5.0-alpha04 berisi commit ini.

Perubahan API

  • Kita memindahkan dependensi kepadatan ke tingkat komponen. Hal ini berlaku untuk komponen berikut: BottomDrawer, ModalBottomSheetLayout, BottomSheetScaffold, Switch, ModalDrawer. Gunakan overload baru yang disediakan jika kepadatan merupakan parameter. (I8fbd8)

Versi 1.5.0-alpha03

19 April 2023

androidx.compose.material:material-*:1.5.0-alpha03 dirilis. Versi 1.5.0-alpha03 berisi commit ini.

Perubahan API

  • Mengupdate internal BottomDrawer untuk menggunakan SwipeableV2 API baru. Karena BottomDrawerState ini sekarang hanya akan memiliki API yang ditentukan di level class, kode tersebut tidak akan mewarisi metode/properti dari SwipeableState. Kita menggunakan komposisi dengan SwipeableV2State internal. Offset kini menjadi properti floating point nullable. Nilai saat ini dan nilai target geser masih dapat diakses melalui properti currentValue dan targetValue. Metode tingkat class sebelumnya seperti buka/luaskan/tutup dan properti seperti isOpen/isClosed akan terus didukung. (Iad40c, b/178529942, b/220676296)

Perbaikan Bug

  • Update internal komponen Switch. Tombol kini akan melihat pratinjau (status target) terdekat saat menarik. Id90d4
  • Konten sheet animasi (misalnya, Modifier.animateContentSize pada konten sheet) di BottomSheetScaffold telah dioptimalkan dan kini berfungsi dengan lancar. (Ia913c, b/270518202, b/254446195)
  • BottomSheetScaffold tidak akan berpartisipasi lagi dalam scroll bertingkat jika gesturesEnabled disetel ke false. (I634f3, b/215403277)

Versi 1.5.0-alpha02

5 April 2023

androidx.compose.material:material-*:1.5.0-alpha02 dirilis. Versi 1.5.0-alpha02 berisi commit ini.

Perbaikan Bug

  • Memperbaiki bug yang menyebabkan BottomSheetScaffold mengalami error saat diberi konten kosong untuk slot. (Ib24a5, b/235588730)
  • Memperbaiki PullRefreshIndicator intersepsi peristiwa klik / pointer (2494256, b/271777421)

Versi 1.5.0-alpha01

22 Maret 2023

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

Perbaikan Bug

  • Tambahkan contoh perubahan posisi/geometri chipgroup. Memperbarui padding horizontal di antara chip turunan dalam contoh chipgroup baris tunggal agar sesuai dengan spesifikasi. (I3b155)
  • Memperbaiki masalah yang menyebabkan ModalBottomSheetLayout mengalami error dalam kasus ekstrem saat orientasi berubah. Animasi tata letak (misalnya, Modifier.animateContentSize) di/pada konten sheet kini berfungsi dengan lancar. (I2f981, b/266780234)

Versi 1.4

Versi 1.4.3

3 Mei 2023

androidx.compose.material:material-*:1.4.3 dirilis tanpa perubahan (hanya tambahan versi).

Versi 1.4.2

19 April 2023

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

Versi 1.4.1

5 April 2023

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

Versi 1.4.0

22 Maret 2023

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

Perubahan penting sejak versi 1.3.0

Perubahan API

  • Menambahkan Modifier.minimumInteractiveComponentSize. Ini dapat digunakan untuk menyimpan setidaknya 48.dp untuk membedakan interaksi sentuh jika elemen akan berukuran lebih kecil. (I33f58, b/258495559)
  • Menyertakan perubahan dalam Swipeable API di ModalDrawer. animateTo DrawerState telah diganti dengan metode buka dan tutup dan offsetnya sekarang nullable. Gunakan requireOffset untuk mewajibkan offset. (I3de9e)
  • Menambahkan parameter minLines ke dalam material dan material3 Text, TextField, dan OutlinedTextField yang memungkinkan penetapan tinggi minimum komponen dalam jumlah baris (I4af1d)
  • Menambahkan parameter minLines ke BasicText dan BasicTextField. Perubahan ini memungkinkan untuk menetapkan tinggi minimum composable ini dalam jumlah baris (I24294, b/122476634)

Versi 1.4.0-rc01

8 Maret 2023

androidx.compose.material:material-*:1.4.0-rc01 dirilis tanpa perubahan. Versi 1.4.0-rc01 berisi commit ini.

Versi 1.4.0-beta02

22 Februari 2023

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

Perubahan API

  • Menyertakan perubahan dalam Swipeable API di BottomSheetScaffold. Parameter confirmStateChange BottomSheetState telah diganti namanya menjadi confirmValueChange. progress sekarang ditampilkan sebagai nilai float. animateTo dan snapTo bersifat internal. Sebagai gantinya, gunakan expand() dan collapse(). direction dan overflow telah dihapus. offset telah diganti dengan requireOffset(). (I323b4)

Perbaikan Bug

  • Menghapus peran semantik dari platform yang dapat diklik dan dapat dipilih, serta mengupdate komponen yang menggunakannya untuk menetapkan peran menggunakan modifier.semantics (Ibb4ba)
  • Update kecil pada ikon Material yang diperluas yang menyesuaikan ikon desktop_mac, directions, dan kitchen yang terisi. (I65f5e)

Versi 1.4.0-beta01

8 Februari 2023

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

Perubahan API

  • Memperbaiki masalah yang menyebabkan pullRefresh tidak menggunakan kecepatan, sehingga menyebabkan overscroll ditampilkan. Selain itu, mengubah tanda tangan API lambda onRelease di Modifier.pullRefresh untuk menampilkan Float untuk kecepatan yang digunakan (I7db65, b/266874741)
  • Memulihkan pengambil properti LocalMinimuTouchTargetEnforcement dan menandainya sebagai tidak digunakan lagi dan mengalihkan ke LocalMinimumInteractiveComponentEnforcement. (I60dd5)

Versi 1.4.0-alpha05

25 Januari 2023

androidx.compose.material:material-*:1.4.0-alpha05 dirilis. Versi 1.4.0-alpha05 berisi commit ini.

Perbaikan Bug

  • Memperbaiki masalah saat status ModalBottomSheetLayout's HalfExpanded salah dihitung dan sheet akan tampak mengambang. (I8c615, b/265610459)
  • Memperbaiki bug ModalBottomSheetLayout saat sheet mengalami error dan beralih dari status tersembunyi ke status yang terlihat dalam situasi tertentu. (Ia9265, b/265444789)

Versi 1.4.0-alpha04

11 Januari 2023

androidx.compose.material:material-*:1.4.0-alpha04 dirilis. Versi 1.4.0-alpha04 berisi commit ini.

Perubahan API

  • Menambahkan properti semantik IsContainer di Platform. Properti ini akan digunakan dalam perubahan selanjutnya yang menentukan urutan traversal berdasarkan makna semantik elemen seperti platform. (I63379)
  • Menandai fungsi snapTo di Panel Samping sebagai API non-eksperimental. (Ib9c18, b/261425368)
  • Menambahkan parameter warna trek untuk indikator progres sirkular, dan parameter ujung goresan untuk indikator progres sirkular dan linear. (Ie668c, b/216325962, b/222964817)
  • Mengganti nama confirmStateChange ModalBottomSheetState, ModalBottomSheetState.Saver, dan rememberModalBottomSheetState menjadi confirmValueChange. (Ib48d1)
  • Lebih banyak nullability jenis nilai yang ditampilkan dari fungsi tersembunyi yang tidak digunakan lagi (Ibf7b0)
  • Menambahkan Modifier.minimumInteractiveComponentSize. Ini dapat digunakan untuk menyimpan setidaknya 48.dp untuk membedakan interaksi sentuh jika elemen akan berukuran lebih kecil. (I33f58, b/258495559)
  • Menyertakan perubahan dalam Swipeable API di ModalBottomSheetLayout. animateTo ModalBottomSheetState tidak lagi menggunakan parameter animationSpec dan offset yang ditampilkan sekarang bersifat nullable. Gunakan requireOffset untuk mewajibkan offset. (Ia2e79)

Perbaikan Bug

  • Sheet ModalBottomSheetLayout sekarang memiliki lebar maksimum 640 dp. (I71a4f, b/234927577)
  • Memperbaiki masalah yang menyebabkan rememberPullRefreshState tidak mengupdate refreshThreshold dan refreshingOffset dari waktu ke waktu. (Ifed10, b/263159832)
  • Progres untuk indikator progres kini dikaitkan dengan benar ke rentang yang diharapkan. (I8a7eb, b/262262727)
  • Jika ModalBottomSheetState belum menerima anchor, currentValue akan diupdate tanpa animasi saat snapTo atau animateTo dipanggil, bukan menampilkan pengecualian. (I2c91b)
  • Memperbaiki status yang diaktifkan pada penerapan FilterChip Material 2. (Id326a, b/261329817)
  • Memperbaiki bug yang menyebabkan ModalBottomSheetLayout mengalami error jika HalfExpanded saat memutar dari orientasi potret ke lanskap. Pastikan Anda meneruskan initialValue yang benar, misalnya dengan memeriksa konfigurasi. (Ie8df7, b/182882364)
  • Memperbaiki masalah yang menyebabkan ModalBottomSheetLayout mengalami error jika konten sheet kosong. ModalBottomSheetLayout kini mengizinkan konten sheet kosong. Jika konten sheet kosong, konten hanya akan memiliki status Tersembunyi. (Ic2288, b/200980998, b/216693030)

Masalah Umum

  • Saat mengupdate dari androidx.compose.foundation:1.4.0-alpha03 ke androidx.compose.foundation:1.4.0-alpha04, Anda mungkin mengalami error java.lang.NoSuchFieldError. Masalah awalnya dilaporkan di sini. Perbaikan telah dikirim dan akan tersedia di update Compose berikutnya. Sebagai solusi, update library androidx.compose.material dan androidx.compose.material3 ke versi terbaru (1.1.0-alpha04) atau downgrade androidx.compose.foundation ke 1.4.0-alpha03.

Versi 1.4.0-alpha03

7 Desember 2022

androidx.compose.material:material-*:1.4.0-alpha03 dirilis. Versi 1.4.0-alpha03 berisi commit ini.

Perubahan API

  • Menambahkan anotasi @JvmDefaultWithCompatibility (I8f206)
  • Menyertakan perubahan dalam Swipeable API di ModalDrawer. animateTo DrawerState telah diganti dengan metode open dan close dan offsetnya sekarang nullable. Gunakan requireOffset untuk mewajibkan offset. (I3de9e)
  • Menambahkan Modifier API untuk mengkueri info scroll ancestor. (I2ba9d, b/203141462)
  • Digunakan di Clickable untuk menunda interaksi tekan dengan benar, saat gestur dapat menjadi peristiwa scroll.
  • Memperbaiki Clickables yang tidak menunda ripple dengan benar, saat digunakan di dalam Scrollable ViewGroup.
  • Mengupdate Panel Samping dan Sheet untuk menunda penekanan dengan benar jika gestur dapat menjadi peristiwa scroll.

Perbaikan Bug

  • Memperbaiki masalah yang menyebabkan PullRefreshIndicator macet setelah onRefresh dipanggil, jika status pemuatan ulang tidak diubah ke benar (true). (Ie2416, b/248274004)

Update Dependensi

  • Compose UI dan Compose Material sekarang bergantung pada Lifecycle 2.5.1. (I05ab0, b/258038814)

Versi 1.4.0-alpha02

9 November 2022

androidx.compose.material:material-*:1.4.0-alpha02 dirilis. Versi 1.4.0-alpha02 berisi commit ini.

Perubahan API

  • awaitFirstDown dan waitForUpOrCancellation kini menerima PointerEventPass untuk fleksibilitas yang lebih besar. (I7579a, b/212091796)
  • Menambahkan parameter minLines ke dalam material dan material3 Text, TextField, dan OutlinedTextField yang memungkinkan penetapan tinggi minimum komponen dalam jumlah baris (I4af1d)
  • Menambahkan parameter minLines ke BasicText dan BasicTextField. Perubahan ini memungkinkan untuk menetapkan tinggi minimum composable ini dalam jumlah baris (I24294, b/122476634)

Versi 1.4.0-alpha01

24 Oktober 2022

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

Perubahan API

  • Metode baru, awaitEachGesture(), untuk mendeteksi gestur telah ditambahkan. Metode ini beroperasi mirip dengan forEachGesture(), tetapi gestur loop over beroperasi sepenuhnya dalam AwaitPointerEventScope sehingga peristiwa di antara iterasi tidak dapat hilang.
  • forEachGesture() tidak digunakan lagi dan digantikan dengan awaitEachGesture() karena memungkinkan peristiwa di antara gestur hilang. (Iffc3f, b/251260206)

Versi 1.3

Versi 1.3.1

9 November 2022

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

Versi 1.3.0

24 Oktober 2022

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

Perubahan penting sejak versi 1.2.0

Perubahan yang dapat menyebabkan gangguan perilaku

  • Elevasi maksimum yang didukung dalam dialog dan pop-up telah dikurangi menjadi 8 dp.

Perubahan API

  • Menambahkan komponen Pull-To-Refresh ke Compose (I29168).
  • Mengubah nama parameter dari values menjadi value di RangeSlider (I3b79a).

Versi 1.3.0-rc01

5 Oktober 2022

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

Versi 1.3.0-beta03

21 September 2022

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

Perubahan API

  • Menambahkan komponen Pull-To-Refresh ke Compose (I29168)

Versi 1.3.0-beta02

7 September 2022

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

Tidak ada perubahan sejak versi 1.3.0-beta01

Versi 1.3.0-beta01

24 Agustus 2022

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

Perubahan yang dapat menyebabkan gangguan perilaku

Elevasi maksimum yang didukung dalam dialog dan pop-up telah dikurangi menjadi 8 dp.

Elevasi maksimum yang didukung untuk dialog dan pop-up Compose telah dikurangi dari 30 dp menjadi 8 dp. Perubahan ini memengaruhi dialog khusus dan pop-up Material dan UI. Perubahan ini dilakukan untuk memitigasi bug aksesibilitas pada versi Android di bawah S, dan untuk memastikan bahwa layanan aksesibilitas dalam jendela tersebut dapat berinteraksi dengan konten di dalam dialog atau pop-up.

Anda hanya akan terpengaruh oleh perubahan ini jika membuat dialog kustom atau penerapan pop-up dengan elevasi yang ditetapkan ke level yang lebih tinggi dari 8 dp. Sebaiknya turunkan elevasi dialog atau pop-up Anda. Jika tidak ingin menerapkan perilaku baru ini, sebaiknya lakukan fork dialog atau pop-up dengan kumpulan elevasi yang diinginkan. Hal ini tidak direkomendasikan, karena berpengaruh negatif pada aksesibilitas dan developer bertanggung jawab untuk memastikan bagian bawah dialog atau pop-up dapat berinteraksi dan dapat dibaca oleh layanan aksesibilitas.

Versi 1.3.0-alpha03

10 Agustus 2022

androidx.compose.material:material-*:1.3.0-alpha03 dirilis. Versi 1.3.0-alpha03 berisi commit ini.

Versi 1.3.0-alpha02

27 Juli 2022

androidx.compose.material:material-*:1.3.0-alpha02 dirilis. Versi 1.3.0-alpha02 berisi commit ini.

Kontribusi Eksternal

  • Memperbaiki masalah AnimatedVisibility dengan FloatingActionButton di Scaffold (I3a0ae, b/224005027)

Versi 1.3.0-alpha01

29 Juni 2022

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

Perubahan API

  • Mengubah nama parameter dari values menjadi value di RangeSlider (I3b79a)

Perbaikan Bug

  • Memperbarui contoh badge untuk memberikan deskripsi konten yang lebih bermakna. (I10b9d)

Versi 1.2

Versi 1.2.1

10 Agustus 2022

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

Versi 1.2.0

27 Juli 2022

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

Versi 1.2.0-rc03

29 Juni 2022

androidx.compose.material:material-*:1.2.0-rc03 dirilis. Versi 1.2.0-rc03 berisi commit ini.

  • Tidak ada perubahan sejak versi 1.2.0-rc02.

Versi 1.2.0-rc02

22 Juni 2022

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

Versi 1.2.0-rc01

15 Juni 2022

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

Perubahan API

  • Antarmuka di library Compose kini dibuat menggunakan metode antarmuka default jdk8 (I5bcf1)

Perbaikan Bug

  • Memperbarui badge dengan tab ikon utama untuk menempelkan badge ke label, bukan ikon. (I90993)

Versi 1.2.0-beta03

1 Juni 2022

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

Perbaikan Bug

  • Memperbaiki bug yang menyebabkan BottomSheetScaffold menggambar di atas bayangan panel aplikasi. BottomSheetScaffold kini juga mempertimbangkan status sheet saat menempatkan Snackbar: dalam status diciutkan, Snackbar ditempatkan di atas sheet dan FAB; dalam status diluaskan, Snackbar ditambatkan ke bagian bawah sheet. (Ia80b5, b/187771422)

Versi 1.2.0-beta02

18 Mei 2022

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

Versi 1.2.0-beta01

11 Mei 2022

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

Fitur Baru

  • Ini adalah rilis beta pertama 1.2.

Perubahan API

  • Mengganti nama composable TextFieldDefaults.BorderStroke yang menggambar goresan batas di OutlinedTextField menjadi TextFieldDefaults.BorderBox. (I5f295)

Versi 1.2.0-alpha08

20 April 2022

androidx.compose.material:material-*:1.2.0-alpha08 dirilis. Versi 1.2.0-alpha08 berisi commit ini.

Perubahan API

  • Konsumsi parsial (posisi OR turun) tidak digunakan lagi di PointerInputChange. Anda dapat menggunakan consume() untuk sepenuhnya memakai perubahan. Anda dapat menggunakan isConsumed untuk menentukan apakah orang lain sudah pernah memakai perubahan tersebut sebelumnya.
  • PointerInputChange::copy() kini selalu membuat shallow copy. Ini berarti bahwa salinan PointerInputChange akan dipakai setelah salah satu salinan tersebut digunakan. Jika Anda ingin membuat PointerInputChange yang tidak terikat, gunakan konstruktor. (Ie6be4, b/225669674)

Versi 1.2.0-alpha07

6 April 2022

androidx.compose.material:material-*:1.2.0-alpha07 dirilis. Versi 1.2.0-alpha07 berisi commit ini.

Versi 1.2.0-alpha06

23 Maret 2022

androidx.compose.material:material-*:1.2.0-alpha06 dirilis. Versi 1.2.0-alpha06 berisi commit ini.

Perubahan API

  • Update pada Card API yang dapat diklik untuk mengikuti perubahan di Surface API (I56bcb)
  • Update pada Material 2 Surface API yang menambahkan fungsi kelebihan beban tambahan untuk Platform yang dapat dipilih dan diganti. (Ifcca5)

Versi 1.2.0-alpha05

9 Maret 2022

androidx.compose.material:material-*:1.2.0-alpha05 dirilis. Versi 1.2.0-alpha05 berisi commit ini.

Perubahan API

  • LazyVerticalGrid dan LazyHorizontalGrid kini stabil. (I307c0)
  • LazyVerticalGrid/LazyHorizontalGrid dan semua API terkait dipindahkan ke sub-paket .grid. Update impor Anda dari androidx.compose.foundation.lazy ke androidx.compose.foundation.lazy.grid. (I2d446, b/219942574)
  • Mengembalikan perubahan sebelumnya yang hanya mengandalkan View untuk WindowInsetsControllerCompat, dan sekali lagi memerlukan Window yang diperlukan untuk mengelola beberapa flag jendela. ViewCompat.getWindowInsetsController tidak digunakan lagi dan diganti dengan WindowCompat.getInsetsController untuk memastikan bahwa Window yang benar digunakan (seperti jika View ada dalam dialog). (I660ae, b/219572936)
  • Teks:includeFontPadding kini dinonaktifkan secara default. Masalah pemotongan akibat includeFontPadding=false ditangani dan tidak ada pemotongan yang harus dilakukan untuk skrip yang tinggi. (I31c84, b/171394808)
  • Menambahkan LazyVerticalGrid API baru untuk menentukan ukuran sumbu silang (I17723)

Versi 1.2.0-alpha04

23 Februari 2022

androidx.compose.material:material-*:1.2.0-alpha04 dirilis. Versi 1.2.0-alpha04 berisi commit ini.

Perubahan API

  • Add support for filter chips (I39a6e, b/192585545)
  • Menambahkan TextFieldDecorationBox dan OutlinedTextFieldDecorationBox. Menggunakannya bersama dengan BasicTextField akan membantu Anda membuat kolom teks kustom berdasarkan kolom teks Desain Material, tetapi dengan lebih banyak opsi untuk penyesuaian.
  • Memberikan cara untuk menyesuaikan padding horizontal dan vertikal di kolom teks. (I8c9f1, b/203764564, b/191543915, b/189971673, b/183136600, b/179882597, b/168003617)
  • Menambahkan ComposableTarget, ComposableTargetMarker, dan ComposableOpenTarget yang memungkinkan pelaporan waktu kompilasi saat fungsi composable dipanggil, menargetkan applier yang tidak dirancang untuk digunakan.

    Dalam sebagian besar kasus, anotasi dapat ditentukan oleh plugin compiler Compose, sehingga penggunaan anotasi ini secara langsung seharusnya jarang terjadi. Kasus yang tidak dapat ditentukan mencakup pembuatan dan penggunaan applier kustom, fungsi composable abstrak (seperti metode antarmuka), kolom, atau variabel global yang merupakan lambda composable (variabel dan parameter lokal ditentukan), atau saat menggunakan ComposeNode atau fungsi composable terkait.

    Untuk applier kustom, fungsi composable yang memanggil ComposeNode atau ReusableComposeNode perlu menambahkan anotasi CompoableTarget untuk fungsi dan jenis parameter lambda composable. Namun, sebaiknya buat anotasi yang dianotasikan dengan ComposableTargetMarker, lalu anotasi yang ditandai akan digunakan sebagai ganti ComposableTarget secara langsung. Anotasi composable yang ditandai dengan ComposableTargetMarker setara dengan ComposbleTarget dengan nama class atribut yang sepenuhnya memenuhi syarat sebagai parameter applier. Untuk contoh penggunaan ComposableTargetMarker, lihat anroidx.compose.ui.UiComposable. (I38f11)

Versi 1.2.0-alpha03

9 Februari 2022

androidx.compose.material:material-*:1.2.0-alpha03 dirilis. Versi 1.2.0-alpha03 berisi commit ini.

Perbaikan Bug

Versi 1.2.0-alpha02

26 Januari 2022

androidx.compose.material:material-*:1.2.0-alpha02 dirilis. Versi 1.2.0-alpha02 berisi commit ini.

Perubahan API

  • Menambahkan NonRestartableComposable ke metode yang membebani metode yang ada tanpa logika yang kompleks. Tindakan ini akan mengurangi pemeriksaan memoisasi yang dihasilkan compiler (sama dengan) untuk semua parameter yang diulang dalam fungsi internal yang dipanggil. (I90490)
  • Menambahkan dukungan untuk chip tindakan (I07100, b/192585545)

Versi 1.2.0-alpha01

12 Januari 2022

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

Update Dependensi

  • Sekarang bergantung pada Kotlin 1.6.10.

Kontribusi Eksternal

  • ModalBottomSheetState sekarang memiliki flag isSkipHalfExpanded. Flag ini dapat disetel melalui konstruktor atau diperbarui nanti dengan menyetel properti isSkipHalfExpanded ModalBottomSheetState ke true. Memperbarui nilai isSkipHalfExpanded akan menyebabkan rekomposisi sheet. (I18b86, b/186669820)

Versi 1.1

Versi 1.1.1

23 Februari 2022

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

Perbaikan Bug

Versi 1.1.0

9 Februari 2022

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

Perubahan penting sejak versi 1.0.0

  • Dukungan yang stabil untuk Efek overscroll Android 12
  • Peningkatan penentuan ukuran target sentuh
  • Perhatikan bahwa, sehubungan dengan Compose 1.0, komponen Material akan memperluas ruang tata letaknya untuk memenuhi ukuran target sentuh panduan aksesibilitas Material. Misalnya, target sentuh Button akan diperluas hingga ukuran minimum 48x48 dp, meskipun Anda menyetel ukuran Button menjadi lebih kecil. Tindakan ini akan menyelaraskan Compose Material ke perilaku Komponen Desain Material yang sama, sehingga memberikan perilaku yang konsisten jika Anda menggabungkan View dan Compose. Perubahan ini juga memastikan bahwa saat Anda membuat UI menggunakan komponen Compose Material, persyaratan minimum untuk aksesibilitas target sentuh akan terpenuhi.
  • Dukungan Stabil untuk Navigation Rail
  • Menstabilkan sejumlah API eksperimental sebelumnya
  • Dukungan untuk versi Kotlin yang lebih baru

Versi 1.1.0-rc03

26 Januari 2022

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

Perubahan Perilaku

Perhatikan bahwa, sehubungan dengan Compose 1.0, komponen Material akan memperluas ruang tata letaknya untuk memenuhi ukuran target sentuh panduan aksesibilitas Material. Misalnya, target sentuh Button akan diperluas hingga ukuran minimum 48x48 dp, meskipun Anda menyetel ukuran Button menjadi lebih kecil. Tindakan ini akan menyelaraskan Compose Material ke perilaku Komponen Desain Material yang sama, sehingga memberikan perilaku yang konsisten jika Anda menggabungkan View dan Compose. Perubahan ini juga memastikan bahwa saat Anda membuat UI menggunakan komponen Compose Material, persyaratan minimum untuk aksesibilitas target sentuh akan terpenuhi.

Perbaikan Bug

  • Menambahkan beberapa informasi debug yang lebih baik untuk Layout Inspector saat memeriksa pengubah target sentuh minimum. (aosp/1955036)

Versi 1.1.0-rc01

15 Desember 2021

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

Perbaikan Bug

Versi 1.1.0-beta04

1 Desember 2021

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

Fitur Baru

  • Diupdate agar kompatibel dengan Kotlin 1.6.0

Versi 1.1.0-beta03

17 November 2021

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

Versi 1.1.0-beta02

3 November 2021

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

Perbaikan Bug

  • Ripple dan indikasi lainnya sekarang hanya akan tertunda jika berada dalam container Modifier.scrollable(), bukan selalu tertunda untuk peristiwa down. (Ibefe0, b/203141462)

Versi 1.1.0-beta01

27 Oktober 2021

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

Fitur Baru

  • Ripple kini mendukung status arahkan kursor dan fokus, sehingga pengarahan kursor/pemfokusan komponen seperti Button kini akan menampilkan overlay status yang benar.

Versi 1.1.0-alpha06

13 Oktober 2021

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

Perubahan API

  • Overload tanpa turunan untuk Layout telah ditambahkan, dengan peningkatan efisiensi (Ib0d9a)
  • Implementasi ExposedDropdownMenu berdasarkan ExposedDropdownMenuBox dengan TextField dan DropdownMenu di dalamnya (If60b2)
  • dismissOnOutsideClick ditambahkan ke PopupProperties, menggantikan dismissOnClickOutside yang tidak digunakan lagi. Properti baru menerima posisi klik dan batas anchor, yang memberikan kontrol yang lebih baik atas apakah onDismissRequest harus dipanggil atau tidak. Misalnya, hal ini dapat berguna untuk mencegah penutupan anchor untuk sentuhan pada anchor.
    • updateAndroidWindowManagerFlags telah ditambahkan ke PopupProperties, menawarkan kontrol tingkat rendah atas flag yang diteruskan oleh pop-up ke Android WindowManager. Parameter lambda akan menjadi flag yang dihitung dari nilai PopupProperties yang menghasilkan flag WindowManager: misalnya focusable. Hasil lambda akan menjadi flag akhir yang akan diteruskan ke Android WindowManager. Secara default, updateAndroidWindowManagerFlags tidak akan mengubah flag yang dihitung dari parameter. API ini harus digunakan dengan hati-hati, hanya jika pop-up memiliki persyaratan perilaku yang sangat spesifik. (I6e9f9)

Versi 1.1.0-alpha05

29 September 2021

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

Perubahan API

  • Menambahkan ukuran target sentuh minimum untuk komponen Material yang tidak memiliki target sentuh yang dapat diakses. Karena ini menambahkan ruang tambahan di sekitar komponen untuk memastikannya memiliki target sentuh yang cukup besar, hal ini dapat mengubah UI yang ada yang mengasumsikan ukuran komponen ini adalah ukuran visualnya, dan tidak memperhitungkan ukuran target sentuh. Anda dapat menggunakan lokal komposisi LocalMinimumTouchTargetEnforcement eksperimental untuk menonaktifkan perilaku ini di seluruh hierarki, tetapi ini hanya dimaksudkan sebagai solusi sementara saat memperbarui UI yang ada untuk memperhitungkan ukuran minimum baru. (I9b966, b/149691127, b/171509422)
  • Menambahkan antarmuka TextFieldColorsWithIcons eksperimental, yang memperluas TextFieldColors untuk menyediakan InteractionSource ke leadingColor dan trailingColor. Ini memungkinkan modifikasi tampilan TextField sesuai dengan status fokus. (I66923, b/198402662)

Versi 1.1.0-alpha04

15 September 2021

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

Perubahan API

  • performGesture dan GestureScope tidak digunakan lagi, telah diganti dengan performTouchInput dan TouchInjectionScope. (Ia5f3f, b/190493367)
  • Menambahkan touchBoundsInRoot ke SemanticsNode termasuk ukuran target sentuh minimum sehingga developer dapat memastikan bahwa target sentuh memenuhi batas minimum aksesibilitas. (I2e14b, b/197751214)

Perbaikan Bug

  • Mengizinkan klip untuk memperluas batas target sentuh di luar area klip untuk tujuan target sentuh minimum. (I43e10, b/171509422)
  • Memperbarui composable Divider untuk mengamati Dp.Hairline bagi parameter thickness guna mendukung penggambaran pembagi piksel tunggal terlepas dari kepadatan tampilan. (I16ffb, b/196840810)

Versi 1.1.0-alpha03

1 September 2021

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

Fitur Baru

  • Mengupdate Compose 1.1.0-alpha03 agar bergantung pada Kotlin 1.5.30. (I74545)

Perubahan API

  • Metode pengujian telah ditambahkan agar mendapatkan batas yang terpotong. (I6b28e)
  • Ukuran target sentuh minimum ditambahkan ke ViewConfiguration agar digunakan dalam semantik dan input pointer untuk memastikan aksesibilitas. (Ie861c)

Versi 1.1.0-alpha02

18 Agustus 2021

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

Kontribusi Eksternal

  • Memperbaiki perilaku SwipeableState jika selisih geser berada dalam error pembulatan anchor. (I03d39, b/191993377)

Versi 1.1.0-alpha01

4 Agustus 2021

androidx.compose.material:material-*:1.1.0-alpha01 dirilis. Versi 1.1.0-alpha01 berisi commit 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 Catalog. (I3cffc)
  • Dialog 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)
  • Demo badge ditambahkan ke aplikasi katalog. (If285d)

Versi 1.0

Versi 1.0.5

3 November 2021

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

Perbaikan Bug

  • Memperbaiki instance derivedStateOf pelacakan error. (aosp/1792247)

Versi 1.0.4

13 Oktober 2021

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

Update Dependensi

  • Diupdate agar bergantung pada Kotlin 1.5.31

Versi 1.0.3

29 September 2021

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

Update Dependensi

  • Diupdate agar bergantung pada Kotlin 1.5.30

Versi 1.0.2

1 September 2021

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

Diupdate untuk mendukung rilis Compose 1.0.2. Compose 1.0.2 masih kompatibel dengan Kotlin 1.5.21.

Versi 1.0.1

4 Agustus 2021

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

Update Dependensi

  • Diupdate agar bergantung pada Kotlin 1.5.21.

Versi 1.0.0

28 Juli 2021

androidx.compose.material:material-*:1.0.0 dirilis. Versi 1.0.0 berisi commit 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 ini.

Perbaikan Bug

  • Dialog 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 ini.

Perubahan API

  • Menambahkan komponen BadgeBox, lihat dokumen dan contoh untuk mengetahui informasi penggunaannya (I5e284)
  • useDefaultMaxWidth di PopupProperties diganti namanya menjadi usePlatformDefaultWidth. (I05710)
  • Dialog kini dapat menggunakan seluruh lebar layar. (I83929, b/190810877)
  • Menambahkan implementasi Range Slider 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 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 ini 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 ditarget, yaitu 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 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: indication, interactionSource, enabled/disabled. 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: indication, interactionSource, enabled/disabled. 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 pernyataan when menyeluruh saat 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 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 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 UI thread 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 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 pemilik status tersimpan 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 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, untuk 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 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 dilempar 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)

  • Orientation telah dipindahkan ke paket foundation. 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)

  • Providers telah diganti namanya menjadi CompositionLocalProvider

    • Konstruktor Composition tidak lagi menerima parameter kunci, dan sudah tidak digunakan lagi.
    • currentCompositeKeyHash telah diubah menjadi properti tingkat atas composable, bukan fungsi tingkat atas composable.
    • 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 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 Indication, bukan () -> Indication. (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 tindakan semantik expand dan collapse. Menambahkan expand 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)
  • Selection telah dipindahkan ke foundation. (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 Bundle. 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 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 ColorMatrix API yang digunakan untuk mengubah nilai rgb di konten sumber Memfaktorkan ulang ColorFilter API menjadi antarmuka dan sesuai dengan 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. Tick animasi berbasis Recomposition dan withFrameNanos 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 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 Surface 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)

  • clickable, toggleable, and selectable 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 grafik vektor untuk mendukung penguraian penambahan tint yang diterapkan ke root grafik 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 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 Strings.kt foundation (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 State 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 ini.

Perubahan API

  • menambahkan API untuk memicu animasi penyelesaian secara manual dan menarik Modifier.swipeable (Iaa17a, b/162408885)
  • Mengganti nama objek *Constants seperti ButtonConstants agar diakhiri dengan Defaults, misalnya ButtonDefaults. Juga menghapus 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 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 informasi pengaturan ukuran 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 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 untuk menjadikan 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 ke 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 metode placeable.placeWithLayer() 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 layoutId untuk 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 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 secara 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 state 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. Kita selalu dapat 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 asli 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 batas pada stateDraggable untuk menentukan 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 jenis 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 Image yang dapat disusun 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. ui-text kini berisi composable CoreText dan CoreTextField (Ib7d47)

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

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

  • Meningkatkan kualitas 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 composable 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)

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

  • Peningkatan kualitas pada platform API Constraints (I0fd15)