Compose Foundation
androidx.compose.foundation
androidx.compose.foundation.layout
androidx.compose.foundation.estures
androidx.compose.foundation.selection
androidx.compose.foundation.lazy
androidx.compose.foundation.interaction
androidx.compose.foundation.text
(Lihat dokumen referensi API untuk semua paket compose)
Update Terbaru | Rilis Stabil | Kandidat Rilis | Rilis Beta | Rilis Alfa |
---|---|---|---|---|
21 Agustus 2024 | 1.6.8 | 1.7.0-rc01 | - | - |
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.
Grup | Deskripsi |
---|---|
compose.animation | Mem-build animasi di aplikasi Jetpack Compose untuk memperkaya pengalaman pengguna. |
compose.compiler | Mentransformasi fungsi @Composable dan mengaktifkan pengoptimalan dengan plugin compiler Kotlin. |
compose.foundation | Menulis aplikasi Jetpack Compose dengan elemen penyusun siap pakai dan memperluas dasar untuk mem-build bagian sistem desain Anda sendiri. |
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. |
compose.material3 | Mem-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.runtime | Elemen penyusun yang penting untuk model pemrograman dan pengelolaan status Compose, serta runtime inti untuk ditargetkan oleh Plugin Compose Compiler. |
compose.ui | Komponen 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.foundation:foundation:1.6.8" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.foundation:foundation:1.6.8") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } 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.
Lihat dokumentasi Issue Tracker untuk informasi selengkapnya.
Versi 1.7
Versi 1.7.0-rc01
21 Agustus 2024
androidx.compose.foundation:foundation-*:1.7.0-rc01
dirilis. Versi 1.7.0-rc01 berisi commit ini.
Perbaikan Bug
- Memperbaiki regresi yang terjadi saat error terjadi saat elemen apa pun difokuskan di dalam induk yang dapat difokuskan (atau dapat diklik) dan dinonaktifkan. (b/317561689)
Versi 1.7.0-beta07
7 Agustus 2024
androidx.compose.foundation:foundation-*:1.7.0-beta07
dirilis. Versi 1.7.0-beta07 berisi commit ini.
Perbaikan Bug
- Fungsi
SemanticsNodeInteraction
yang terkait dengan input teks, sepertiperformTextReplacement
,performTextInput
, danperformTextClearance
, kini akan menampilkan error pernyataan saat dipanggil diTextFields
hanya baca. (I4ae8f) - Memperbaiki gangguan visual di hyperlink. (I23311)
- Memperbaiki pengubah
contentReceiver
yang tidak berfungsi dengan beberapa IME. - Pembuatan kecepatan: Mencegah penyebaran nilai NaN di UI Compose dan Fondasi.
Versi 1.7.0-beta06
24 Juli 2024
androidx.compose.foundation:foundation-*:1.7.0-beta06
dirilis. Versi 1.7.0-beta06 berisi commit ini.
Versi 1.7.0-beta05
10 Juli 2024
androidx.compose.foundation:foundation-*:1.7.0-beta05
dirilis. Versi 1.7.0-beta05 berisi commit ini.
Perbaikan Bug
- Perbaikan untuk perlakuan nilai Nan di
SnapFlingBehavior
dan Pager.
Versi 1.7.0-beta04
26 Juni 2024
androidx.compose.foundation:foundation-*:1.7.0-beta04
dirilis. Versi 1.7.0-beta04 berisi commit ini.
Perbaikan Bug
- Menghindari error saat mengukur baris teks yang sangat besar (misalnya, 10 ribu karakter) (8157ab)
- Memperbaiki pengukuran teks yang sangat besar yang menyebabkan error di
BasicTextField
baru (6b7575) - Mengembalikan perubahan perilaku dalam pengukuran Baris/Kolom yang merusak penggunaan Teks dalam skenario tertentu (69e8ba)
Versi 1.7.0-beta03
12 Juni 2024
androidx.compose.foundation:foundation-*:1.7.0-beta03
dirilis. Versi 1.7.0-beta03 berisi commit ini.
Versi 1.7.0-beta02
29 Mei 2024
androidx.compose.foundation:foundation-*:1.7.0-beta02
dirilis. Versi 1.7.0-beta02 berisi commit ini.
Perubahan API
- Menambahkan API eksperimental untuk mengonfigurasi perilaku pengambilan data
LazyGrids
yang mirip dengan API eksperimental yang ada untukLazyLists
. Hal ini mencakup dukungan untuk pengambilan data item diLazyGrids
bertingkat. Serupa denganLazyListPrefetchStrategy
, default implementasinya adalah mengambil data 2 item bertingkat pertama dari setiap petak, tetapi dapat dikonfigurasi oleh APILazyGridPrefetchStrategy(nestedPrefetchItemCount)
danLazyListPrefetchStrategy#onNestedPrefetch
yang baru. (I591c4) - Mengganti nama
SemanticsProperties.Editable
menjadiIsEditable
dan mengubahSemanticsPropertyReceiver.editable
menjadi valisEditable
. Properti ini sekarang berupa boolean dan selalu ditentukan berdasarkan kolom teks. (I8acd8) - Memindahkan nilai default
basicMarquee
ke dalam objekMarqueeDefaults
. (I12ff6) - Mengganti nama parameter
basicMarquee
delayMillis
menjadirepeatDelayMillis
. (I12ff6) - Mengupdate API untuk menata gaya link: memindahkan
TextLinkStyles
keTextStyle
dan menghapusTextDefaults
dari material (I5477b)
Perbaikan Bug
- Mengganti nama
LayoutCoordinates.introducesFrameOfReference
menjadiLayoutCoordinates.introducesMotionFrameOfReference
agar lebih mencerminkan tujuannya. Mengganti nama fungsi terkait untuk menghitung koordinat berdasarkan tanda tersebut. (I3a330) - 'Default' Dihapus dari properti
MarqueeDefaults
. (I1d8a0) - 'Marquee' dihapus dari
MarqueeDefaults
properti. (Iad4f4) - Menghapus
TextLinkStyles
dari classTextStyle
. Sebagai gantinya,TextLinkStyles
adalah bagian dari konstruktorLinkAnntation
dan metodeAnnotatedString.fromHtml
(I90b2b) - Memperbaiki bug yang membuat Pager akan dipaskan saat mengayunkan jari ke arah ikatan sementara sudah menetap di batas. (I9f373, b/339171222)
- BTF2 kini memiliki gestur pemilihan mouse yang benar. (Ibe8c6)
Kontribusi Eksternal
- Kirim ulang 'Buat jenis konten penghitungan/pengukuran waktu berdasarkan pengambilan data untuk meningkatkan akurasi' (Iea622)
- Membuat jenis konten penghitungan waktu penulisan/mengukur jenis konten berdasarkan pengambilan data untuk meningkatkan akurasi (Ibccb1)
- Menyediakan pengubah
WindowInsetsPadding
dari set sumber umum (I070b2)
Versi 1.7.0-beta01
14 Mei 2024
androidx.compose.foundation:foundation-*:1.7.0-beta01
dirilis. Versi 1.7.0-beta01 berisi commit ini.
Perubahan API
- Menambahkan kembali properti
KeyboardOptions.shouldShowKeyboardOnFocus
sebagai tidak digunakan lagi dan tersembunyi untuk kompatibilitas biner. (I15cfe) Modifier.anchoredDraggable
kini membalik delta tarik secara default untuk komponen dengan orientasi Horizontal saat digunakan dalam tata letak RTL. (I3c6d9)AnnotatedString.hasEqualsAnnotations
sekarang menjadihasEqualAnnotations
. (I685c0)- Mengupdate API untuk mendapatkan link bertema Material dalam teks. Secara khusus, menghapus metode dari
TextDefaults
untuk membuatLinkAnnotations
bertema dan mengurai HTML dengan link bertema. Sebagai gantinya, telah ditambahkan classTextLinkStyles
yang memungkinkan penataan gaya link sebagai parameter ke composable Text. (I31b93) - Mengganti
onDragStarted
danonDragStopped
dengan callback yang tidak ditangguhkan. (I59de8)
Perbaikan Bug
- Memperbaiki bug yang menyebabkan Pager error saat
contentPadding
lebih besar dari batasan yang masuk. Pager sekarang mengonversi nilai negatif yang ditampilkan dariPageSize
ke 0. (Iba5d8, b/314008560)
Versi 1.7.0-alpha08
1 Mei 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha08
dirilis. Versi 1.7.0-alpha08 berisi commit ini.
Fitur Baru
- Menambahkan menu konteks klik kanan ke
BasicTextField
danSelectionContainer
dengan item untuk tindakan potong, salin, tempel, dan pilih semua. (If8c93, Ia2b49, I6f268)
Perubahan API
- Saat ini, permintaan pengambilan data
LazyLayout
dapat ditandai sebagai mendesak, yang berarti kami memperkirakan item ini akan diperlukan di frame berikutnya dan ingin mengabaikan anggaran frame untuk memastikan Anda melakukan lebih banyak pekerjaan sebelumnya (Id513f) - Mengganti nama
isPositionedByParentWithDirectManipulation
menjadiintroducesFrameOfReference
. Perhatikan bahwa kode tersebut sekarang memiliki efek sebaliknya, yang berarti bahwa secara default, sebagian besarLayoutCoordinates
memperkenalkan frame referensi, dan, hanya jika ditempatkan dalam manipulasi langsung, properti akan menjadi salah. Untuk mengkueri posisi hanya dengan posisi yang memperkenalkan frame referensi, gunakanpositionInLocalFrameOfReference(...)
. AtaupositionInLocalLookaheadFrameOfReference
dariLookaheadScope
. (Ifc5f7) - Mengganti nama
onClicked
menjadionClick
di dalamLinkInteractionListener
(Iaa35c) - Mengubah lambda tindakan untuk
getScrollViewportLength
sesuai masukan dewan API. (Ibc74a) - Mengganti nama API delegasi tulis tangan stilus. (Ica45f, b/327271923)
- Mengganti nama
TextInclusionStrategy.isInside
menjadiisIncluded
. Membuat jenis nilai yang ditampilkanParagraph/MultiParagraph#getRangeForRect()
non nullable. (I51f26)
Perbaikan Bug
- "Pilih semua" ditambahkan ke semua menu kontekstual teks di
SelectionContainer
. (Ib750e, b/240143283) - Memperbaiki pengambilan screenshot panjang untuk penampung scroll dengan
reverseScrolling=true
. (I7c59c) - Memperbaiki masalah saat
currentValue
AnchoredDraggableState
akan berubah saat mendekati batas status. (Iea30b, b/333846848)
Kontribusi Eksternal
- Mengganti nama
PrefetchExecutor
->PrefetchScheduler
untuk lebih mencerminkan tanggung jawabnya. (Ib9154) - Menambahkan dukungan untuk pengambilan data item di
LazyLists
bertingkat (misalnyaLazyColumn
yang merenderLazyRows
bertingkat). Perubahan ini diharapkan akan mengurangi penurunan frame selama scroll untukLazyLists
ini. Default implementasi adalah mengambil data 2 item bertingkat pertama, tetapi perilaku ini dapat dikontrol oleh APILazyLayoutPrefetchStrategy(nestedPrefetchItemCount)
danLazyListPrefetchStrategy#onNestedPrefetch
yang baru. (I51952)
Versi 1.7.0-alpha07
17 April 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha07
dirilis. Versi 1.7.0-alpha07 berisi commit ini.
Fitur Baru
- Menambahkan objek
TextDefaults
yang berisi metode untuk membuatLinkAnnotation
dan mengurai string yang diberi tag HTML yang menerapkanMaterialTheme
ke link. (I98532, b/139312671) - Dukungan animasi kemunculan dan hilangnya item telah ditambahkan ke
LazyVerticalGrid
danLazyHorizontalGrid
. Sebelumnya, pengubahModifier.animateItemPlacement()
dapat ditambahkan untuk mendukung penempatan (pengurutan ulang) animasi. Kami tidak lagi menggunakan pengubah ini dan memperkenalkan pengubah non-eksperimental baru yang disebutModifier.animateItem()
, yang memungkinkan Anda mendukung ketiga jenis animasi: penampilan (fade in), menghilang (fade out), dan pengurutan ulang. (Ib7d12, b/330510929) - Dukungan animasi kemunculan dan hilangnya item telah ditambahkan ke
LazyVerticalStaggeredGrid
danLazyHorizontalStaggeredGrid
. Sebelumnya, pengubahModifier.animateItemPlacement()
dapat ditambahkan untuk mendukung penempatan (pengurutan ulang) animasi. Kami tidak lagi menggunakan pengubah ini dan memperkenalkan pengubah non-eksperimental baru yang disebutModifier.animateItem()
, yang memungkinkan Anda mendukung ketiga jenis animasi: penampilan (fade in), menghilang (fade out), dan pengurutan ulang. (I69bc9, b/330511290)
Perubahan API
- Menambahkan
ContextMenuColors
danProvidableCompositionLocal
LocalContextMenuTheme
yang terkait. Warna menu konteks pada kolom teks dan teks yang dapat dipilih dapat diubah dengan menyediakan lokal komposisi. (Ifa154) - Link teks mendapatkan opsi gaya visual status yang ditekan, selain gaya normal, yaitu diarahkan kursor dan difokuskan. (I5f864, b/139312671)
- Memperkenalkan bahasa
ViewConfiguration.HandwritingGestureLineMargin
untuk gestur tulis tangan. Mendukung gestur tulis tangan untuk bahasaBasicTextField
. (Ie6e13, b/325660505) - Menghapus
DelegatableNode.scrollIntoView
untuk rilis 1.7 karena kami tidak punya waktu untuk menyelesaikan stabilisasi platform API terkait lainnya. Fungsi ini akan diperkenalkan kembali pada versi 1.8 (I6cf61, b/333421581, b/332900232) - Saat membuat kueri koordinat Tata letak, kini Anda dapat menggunakan argumen
excludeDirectManipulationOffset
untuk mengecualikan offset yang ditetapkan oleh Tata Letak induk yang menempatkan turunannya menggunakanPlaceable.PlacementScope.withDirectManipulationPlacement
. Demikian pula, Tata letak yang sering mengubah posisi turunannya kini dapat menempatkannya menggunakanwithDirectManipulationPlacement
(seperti Scroll, yang diimplementasikan secara default). Hal ini membantu animasi berbasisapproachLayout
menjadi lebih intuitif, dengan memiliki peluang untuk membedakan offset apa yang akan dianimasikan, dan apa yang harus diterapkan langsung saat memutuskan untuk menganimasikan pendekatannya. (I60ec7) - Memperkenalkan
requestScrollToItem
untukLazyStaggeredGrid
. Untuk setiap tahap pengukuran, klien kini dapat memilih untuk tidak mempertahankan indeks berdasarkan kunci dengan memanggilrequestScrollToItem
. Hal ini tidak mengubah perilaku yang ada dengan cara apa pun kecuali jikarequestScrollToItem
dipanggil. (I63983) - Memperkenalkan
requestScrollToPage
di Pager. Untuk setiap tahap pengukuran, klien kini dapat memilih untuk tidak mempertahankan indeks berdasarkan kunci dengan memanggilrequestScrollToPage
. Hal ini tidak mengubah perilaku yang ada dengan cara apa pun kecuali jikarequestScrollToPage
dipanggil. (Ic4213) - Memperkenalkan
requestScrollToItem
untukLazyGrids
. Untuk setiap tahap pengukuran, klien kini dapat memilih untuk tidak mempertahankan indeks berdasarkan kunci dengan memanggilrequestScrollToItem
. Hal ini tidak mengubah perilaku yang ada dengan cara apa pun kecuali jikarequestScrollToItem
dipanggil. (I0a7a0) ClickableText
ditandai sebagai tidak digunakan lagi. Untuk menambahkan link ke teks, buatAnnotatedString
denganLinkAnnotation
yang sesuai dengan link Anda dan teruskanAnnotatedString
ini ke composableText
(I34d4b, b/323346994)UrlAnnotation
tidak digunakan lagi. Sebagai gantinya, gunakanLinkAnnotation.Url
. Jika Anda menggunakan tema Material, gunakan objekTextDefaults
untuk membuat anotasi dengan penerapan tema Material (I8d180, b/323346545)- Mengganti nama
String.parseAsHtml
menjadiAnnotatedString.Companion.fromHtml
(I43dcd) - Menambahkan argumen gaya visual (
linkStyle
,focusedLinkStyle
,hoveredLinkStyle
) dan pemroses interaksi link ke metodeparseAsHtml
. Saat mengurai string yang diberi tag HTML dengan tag<a>
, metode ini akan membuatLinkAnnotation.Url
untuk setiap tag tersebut dan meneruskan objek gaya visual dan pemroses interaksi link ke setiap anotasi. (I7c977) LinkAnnotation
kini menggunakan argumen gaya visual berbasis status danLinkInteractionListener
. Tambahkan anotasi ini keAnnotatedString
untuk mendapatkan hyperlink. Dengan meneruskanfocusedState
dan/atauhoveredState
, Anda dapat menentukan konfigurasi visual untuk link saat link tersebut difokuskan dan/atau diarahkan ke atasnya. (I81ce4, b/139312671)- Tombol fitur untuk screenshot panjang telah dihapus. (I28648, b/329128246)
LazyColumn
kini akan merender header melekat dengan benar dalam screenshot panjang. (I8d239, b/329296635)- Stabilisasi sebagian besar API eksperimental yang tersisa yang diperkenalkan dengan
BasicTextField
baru. (I714e2) - Menambahkan parameter
textObfuscationCharacter
keBasicSecureTextField
yang mengontrol karakter mana yang akan digunakan saat mengaburkan konten. (I0588b) - Sumber
NestedScroll
Drag dan Fling diganti denganUserInput
danSideEffect
untuk mengakomodasi definisi yang diperluas dari sumber ini yang sekarang menyertakan animasi (Efek Samping) serta Roda Mouse dan Keyboard (UserInput
). (I40579) - Memperkenalkan
LocalBringIntoViewSpec
, perilaku scroll fokus yang bergantung pada platform yang diterapkan pada lapisan pengubah yang dapat di-scroll. (I27aa5, b/317453911) TextFieldCharSequence
dihapus.TextFieldBuffer.originalValues
diganti denganTextFieldBuffer.originalText
danTextFieldBuffer.originalSelection
. (I2c7d6)ImeOptions.hintLocales
tidak lagi nullable. Jika Anda ingin meneruskan daftar Lokalitas kosong, gunakanLocaleList.Empty
. (Ic5bc4)- Mengganti nama
getOffsetFractionForPage
menjadigetOffsetDistanceInPages
. (Ia05e2)
Perbaikan Bug
- Saat
InputTransformations
digabungkan dengannext
,KeyboardOptions
-nya kini digabungkan dengan benar berdasarkan masing-masing opsi menggunakan metodeKeyboardOptions.merge
yang baru. (Ie5304, b/295951492) targetValue
AnchoredDraggableState
sekarang tidak mempertimbangkan nilai minimum posisi lagi. Class ini sekarang memiliki nilai minimum implisit 50%, yang berartitargetValue
akan berubah di titik tengah antara dua anchor. (I82c2c)
Kontribusi Eksternal
- Mengganti nama 2 API scroll (I56a75)
Versi 1.7.0-alpha06
3 April 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha06
dirilis. Versi 1.7.0-alpha06 berisi commit ini.
Fitur Baru
- Dukungan animasi kemunculan dan hilangnya item telah ditambahkan ke
LazyColumn
danLazyRow
. Sebelumnya, pengubahModifier.animateItemPlacement()
dapat ditambahkan untuk mendukung penempatan (pengurutan ulang) animasi. Kami tidak lagi menggunakan pengubah ini dan memperkenalkan pengubah non-eksperimental baru yang disebutModifier.animateItem()
, yang memungkinkan Anda mendukung ketiga jenis animasi: penampilan (fade in), menghilang (fade out), dan pengurutan ulang. (I2d7f7, b/150812265) - Klien
LazyColumn/LazyRow
kini dapat memilih untuk tidak mempertahankan indeks berdasarkan kunci untuk tahap pengukuran mendatang dengan memanggilLazyListState.requestToScroll
yang tidak ditangguhkan. (I98036, b/209652366) - Menambahkan metode
parseAsHtml
untuk string bergaya: metode ini memungkinkan konversi string yang ditandai dengan tag HTML menjadiAnnotatedString
. Perhatikan bahwa tidak semua tag didukung, misalnya Anda belum dapat menampilkan daftar berbutir. (I84d3d) - Menerapkan dukungan eksperimental untuk screenshot panjang di penampung scroll Compose menggunakan Android API resmi (
ScrollCaptureCallback
). Fitur ini bersifat eksperimental dan saat ini mungkin tidak menangani semua kasus dengan benar. Oleh karena itu, fitur ini saat ini dinonaktifkan secara default. Untuk memilih ikut serta, setel tandaComposeFeatureFlag_LongScreenshotsEnabled
ke benar (true). Tanda ini akan dihapus sebelum versi 1.7 beta. (I2b055, b/329296471) - Memperkenalkan
GraphicsLayer
API baru untuk memberikan fleksibilitas yang lebih besar dalam penempatan dan rendering instanceGraphicsLayer
serta mendukung fitur rendering intrinsik tanpa perlu berkoordinasi dengan implementasi Composable untuk menentukan instance pengubahGraphicsLayer
.
Perubahan API
- Semua parameter
KeyboardOptions
sekarang memiliki nilai yang tidak ditentukan secara default. Menambahkan metodeKeyboardOptions.merge
. - Mengganti nama
KeyboardOptions.autoCorrect
menjadiautoCorrectEnabled
dan membuatnya nullable, dengan null menunjukkan tidak ada nilai yang ditentukan. (Ia8ba0, b/295951492) - Mengganti nama
outOfBoundsPageCount
menjadibeyondViewportPageCount
. (I129c6) fun ClipEntry.getMetadata()
diubah menjadival ClipEntry.clipMetadata
. (I50155)TextFieldState.valueAsFlow()
dihapus. Lebih suka menggunakansnapshotFlow { state.text }
, atausnapshotFlow { TextFieldCharSequence(state.text, state.selection) }
(I7d629)- Mengatur ulang parameter
InputTransformation.transformInput
.originalValue: TextFieldCharSequence
dihapus. Sebagai gantinya,TextFieldBuffer
kini membawa nilai ini dengan nama yang sama. Juga menghapus parametervalueWithChanges: TextFieldBuffer
.TextFieldBuffer
sekarang adalah cakupan penerima pada fungsi. (I919cc) - Varian
BasicTextField(state)
danBasicSecureTextField
kini menggunakanKeyboardActionHandler
, bukanKeyboardActions
, untuk memproses tindakan yang dilakukan oleh keyboard virtual. (I58dda) - API delegasi tulisan tangan stilus untuk mendukung tulis tangan stilus di kolom "palsu" bidang input teks. (I9c09c, b/327271923)
- Mengganti nama
KeyboardOptions.shouldShowKeyboardOnFocus
menjadishowKeyboardOnFocus
. (Ib4b7a, b/295951492) - Menghapus parameter
hintMediaTypes
dariModifier.contentReceiver
. Developer sudah disarankan untuk memeriksa jenis mediaTransferableContent
yang diterima karena mungkin tidak kompatibel denganhintMediaTypes
yang dikonfigurasi. (I82f99) - Mengurutkan ulang parameter
BasicSecureTextField
. Menghapus parameterkeyboardType
danimeAction
dan menggantinya dengan classKeyboardOptions
lengkap, sekaligus mempertahankan default yang sama untukBasicSecureTextField
. Juga menghapus parameterscrollState
. (Ibbfa9) - Jenis
TextFieldState.text
diubah dariTextFieldCharSequence
menjadi hanyaCharSequence
. Oleh karena itu, menambahkanTextFieldState.selection: TextRange
danTextFieldState.composition: TextRange?
untuk membaca nilai komposisi dan pilihan saat ini langsung dari objek status. TextFieldState.forEachTextValue
dihapus. (Idb2a2)- Menghapus fungsi
ClipboardManager.getClipMetadata
danClipboardManager.hasClip
. GunakanclipEntry.getMetadata()
untuk membaca metadata entri klip saat ini. Periksa juga hasilClipboardManager.getClip
jika null atau tidak untuk memahami apakah Papan Klip memiliki klip saat ini. (I50498) ClipboardManager.setClip
kini menerima null agar dapat menghapus Papan Klip. (I7d2e9)ReceiveContentListener
dikonversi menjadi antarmuka fungsi. Selain itu, overloadModifier.receiveContent
yang menggunakan lambda akan dihapus karenaReceiveContentListener
sekarang merupakan antarmuka fungsi.Modifier.receiveContent
diganti namanya menjadiModifier.contentReceiver
. (I1e6af)- Mengganti nama
TransferableContent.consumeEach
menjadiTransferableContent.consume
. I1e462 rememberTextFieldState
telah lulus menjadi Stabil API. (I37999)
Perbaikan Bug
- Memperbaiki bug saat varian
BasicTextField(state)
tidak berfungsi dengan keyboard CJK(berbasis komposisi). (I54425) - Memperbaiki bug saat
Modifier.dragAndDropTarget()
dapat mereferensikan data yang sudah tidak berlaku dalam skenario tertentu dengan penggunaan kembaliModifier.Node
. (I05bb1) - Mengembalikan perubahan kontrak terbaru di mana panggilan
AnchoredDraggableState#anchoredDrag
akan terputus di akhir operasianchoredDrag
. (I95715)
Versi 1.7.0-alpha05
20 Maret 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha05
dirilis. Versi 1.7.0-alpha05 berisi commit ini.
Perubahan API
- Menghapus lokal komposisi
LocalTextLinkStyle
eksperimental untuk hyperlink gaya visual. (Iebfa7) - Menghapus penggantian eksperimental
BasicText
dengan argumenonLinkClicked
. API pengganti untuk dukungan hyperlink akan menyusul di masa mendatang. (I107d5) - Menghapus metode dan properti terkait Codepoint dalam
TextFieldState
danTextFieldBuffer
. Juga menghapus akhiraninChars
dari API terkait pilihan dan komposisi yang tersisa. (Ief7ce) currentValue
AnchoredDraggable
sekarang akan diperbarui saat melewati titik link. GunakansettledValue
untuk menerima semantikcurrentValue
sebelumnya, hanya diperbarui saat menentukan anchor. Kini progres ditampilkan sebagai fungsi (yang memerlukan titik awal dan akhir), bukan properti. (Ibe6e8, b/318707189, b/298271489, b/294991954)BasicTextField(state)
,TextFieldState
,InputTransformation
,OutputTransformation
,TextFieldLineLimits
,TextFieldDecorator
lulus menjadi stabil. (I9582b)- Memperkenalkan
InterceptPlatformTextInput
untuk membantu menulis pengujian terkait IME tingkat rendah dan kasus penggunaan IME tingkat rendah lainnya.PlatformTextInputTestOverride
tidak digunakan lagi. (I862ed, b/322680547) - Memisahkan
restrictedConstraints()
menjadi dua metode:fitPrioritizingWidth()
danfitPrioritizingHeight()
(I6d7fd)
Kontribusi Eksternal
- Menambahkan 2 API baru
isLastScrollForward
/isLastScrollBackward
untuk memeriksa arah scroll tindakan scroll terbaru, menampilkan nilai salah jika belum ada tindakan scroll. (I63a0e)
Versi 1.7.0-alpha04
6 Maret 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha04
dirilis. Versi 1.7.0-alpha04 berisi commit ini.
Perubahan API
- Mendukung fitur tulis tangan stilus di perangkat setelah Android U. (I002e4)
- Menambahkan
hintLocales
keKeyboardOptions
untuk memberiTextFields
kemampuan untuk memberi petunjuk IME dengan lokalitas tertentu untuk preset bahasa pilihan. (Id18c2) - Menghapus overload
BasicTextField2
danBasicSecureTextField
Eksperimental yang menggunakan parametervalue: String
danonValueChange: () -> String
. (I568b4) - Tambahkan fungsi
applySemantics
opsional keInputTransformation
untuk memengaruhi semantikBasicTextField2
yang diterapkan. (I74a2f, b/170648072) - Di CL ini, kita menambahkan tindakan semantik
GetScrollViewportLength
sehingga kita dapat menyalurkan informasi tentang komponen yang di-scroll dalam compose ke sistem a11y. CL ini juga menerapkan penggunaan properti tersebut dalam Daftar yang Dapat Di-scroll pada Fondasi. (Ic5fa2) BasicTextField2
diganti namanya menjadiBasicTextField
. (Ie5713)FocusRequester.createRefs
kini stabil (I4d92c, b/261436820)- Memperkenalkan
DelegatableNode.scrollIntoView()
untuk memungkinkan node pengubah membuat permintaanscrollIntoView
secara langsung. (I2b3b7, b/299939840) - Memperkenalkan
DelegatableNode.requireView()
untuk memungkinkan node pengubah mendapatkanView
Android saat ini tanpa membaca lokal komposisi. (I40768) - Memperkenalkan informasi tata letak kontekstual dalam Cakupan Baris Alur Kontekstual dan Cakupan Kolom Alur Kontekstual, yang menampilkan indeks garis, posisi, dan batasan pada lebar dan tinggi maksimum agar tetap berada di posisi yang ditentukan. Item yang melebihi lebar/tinggi maksimum dapat mengalir ke baris berikutnya atau dihilangkan berdasarkan setelan tambahan. (Id13f8, b/292114798)
Perbaikan Bug
- Memperbaiki bug saat dalam kondisi tertentu mengalihkan atribut
enabled
ataureadOnly
dariTextField
akan menyebabkan error. (Iae17b)
Versi 1.7.0-alpha03
21 Februari 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha03
dirilis. Versi 1.7.0-alpha03 berisi commit ini.
Perubahan API
- Memperkenalkan
DelegatableNode.requireLayoutCoordinates()
sebagai cara untuk mendapatkanLayoutCoordinates
Modifier.Node
saat ini tanpa perlu menggantionPlaced
dan menyimpan sendiri koordinatnya di properti. (Ia8657) - Memperkenalkan
DelegatableNode.currentLayoutCoordinates
sebagai cara untuk mendapatkanLayoutCoordinates
Modifier.Node
saat ini tanpa perlu menggantionPlaced
dan menyimpan sendiri koordinatnya di properti. (Iaebaa) - Pengoptimalan performa di
DraggableAnchors
yang digunakan olehAnchoredDraggable
. (I89cff) BasicTextField2
dan API terkait pada paketandroidx.compose.foundation.text2
dipindahkan keandroidx.compose.foundation.text
. (I9f635)BasicTextField2
tidak lagi menerima parameterCodepointTransformation
. GunakanBasicSecureTextField
atauOutputTransformation
. (Id34ff)- Menambahkan metode untuk hanya membandingkan anotasi dari dua
AnnotatedStrings
. (I32659) - Memperkenalkan
ContextualFlowRow
danFlowRow
/Column
yang Ditingkatkan denganMaxLines
danOverflow
. Kami dengan senang hati mengumumkan peningkatan padaFlowRow
danFlowColumn
eksperimental, yang sekarang menampilkanmaxLines
dan dukungan tambahan, bersamaan dengan debutContextualFlowRow
danContextualFlowColumn
. Update ini didesain untuk memberikan komponen performa yang optimal, denganContextualFlow*
sangat sesuai untuk sejumlah besar item yang menggunakan konfigurasimaxLines
kecil dan tombol +N dinamis untuk melihat lebih banyak tombol, sertaFlowRow
danFlowColumn
cocok untuk sejumlah kecil item, kurang dari 100 item. Penting: Untuk mempertahankan perilaku yang ada diFlowRow
atauFlowColumn
tempat semua item disusun terlepas dari apakah item tersebut sesuai dengan maksimum sumbu silang, tetapkanoverflow
keFlowRowOverflow.Visible
atauFlowColumnOverflow.Visible
selama inisialisasi. PelajariContextualFlowRowSample
danFlowRowSample
untuk melihat contoh penerapan fitur baru ini. (Ib9135, b/293577082)
Perbaikan Bug
- Animasi kursor tidak lagi meminta frame antara status aktif dan nonaktif. (Ia2253)
KeyboardOptions
mnt konstruktor penyalinan yang tidak digunakan lagi sekarang akan menyalin semua properti dengan benar. (If12de)
Versi 1.7.0-alpha02
7 Februari 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha02
dirilis. Versi 1.7.0-alpha02 berisi commit ini.
Perubahan API
HorizontalPager
,VerticalPager
, danPagerState
dipromosikan menjadi stabil. (I67660, b/316966909)- Menambahkan lokal komposisi
LocalTextLinkStyle
yang memungkinkan untuk mengubah gaya link dalam Text di seluruh aplikasi. Jika menggunakan tema sendiri di aplikasi, Anda harus menyetel komposisi ini secara lokal sesuai dengan tema. Saat menggunakan tema Material, warna link secara default akan ditetapkan ke warna primer Material. (I7eb10) - Memperkenalkan pengubah
receiveContent
yang memberi developer cara untuk menerima konten lengkap di Jetpack Compose. receiveContent
terintegrasi denganBasicTextField2
untuk menerima konten lengkap yang disediakan oleh keyboard software, atau melalui tindakan menempel di Papan klip. (I81b72)- Dalam perubahan ini, kami mengganti
SnapFlingBehavior
denganTargetedFlingBehavior
di Pager untuk kasus penggunaan lainnya dan memberikan fleksibilitas yang lebih besar. (I762ea) - Dalam perubahan ini, kami membuat Snapping API Stabil. Kita juga membersihkan beberapa kode pengujian dan menambahkan lebih banyak contoh ke Snapping. (Id8da9)
- Memperkenalkan
TargetedFlingBehavior
,FlingBehavior
yang memungkinkan penyebaran informasi tentang status animasi yang sedang berlangsung dan offset scroll targetnya. (I6a207)
Perbaikan Bug
BasicTextField2
kini membuat kursor tetap terlihat saat mengetik saat di-scroll keluar dari tampilan atau akan berpindah keluar dari tampilan karena input. (Ieb856, b/237190748)
Kontribusi Eksternal
- Menambahkan API eksperimental untuk mengonfigurasi perilaku pengambilan data LazyLists. (I022a4)
Versi 1.7.0-alpha01
24 Januari 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha01
dirilis. Versi 1.7.0-alpha01 berisi commit ini.
Fitur Baru
- Menambahkan
Indication API
baru,IndicationNodeFactory
. Hal ini menyebabkan implementasiIndication
berperforma lebih tinggi dibandingkan denganrememberUpdatedInstance
API sebelumnya (sekarang tidak digunakan lagi). Untuk informasi migrasi, lihat developer.android.com. clickable / combinedClickable / selectable / toggleable
kini menerima parameterMutableInteractionSource
nullable. Jika null, danIndication
yang disediakan adalahIndicationNodeFactory
,Indication
hanya dapat dibuat dengan lambat jika diperlukan, sehingga meningkatkan performa. Jika Anda tidak mengangkat dan menggunakanMutableInteractionSource
, sebaiknya teruskan null.
Perubahan API
- Memperkenalkan
DecayAnimation
diAnchoredDraggable
, perubahan ini akan menambahkan parameterdecayAnimationSpec
keAnchoredDraggable
yang memungkinkan penggunaan animasi peluruhan saat menetapkan ke salah satu anchor. Perubahan ini juga mencakup penggantian namaanimationSpec
yang ada menjadisnapAnimationSpec
untuk membantu memahami kasus penggunaan setiap spesifikasi. BasicTextField2
tersedia untuk penggunaan eksperimental. Nilai ini harus kurang lebih setara dengan fiturBasicTextField
, dan perilakunya harus siap produksi. Namun, API ini tetap bersifat eksperimental untuk saat ini. Sebelum distabilkan, namanya akan diganti menjadiBasicTextField
dan dipindahkan ke paket yang sama.- Memperkenalkan draf pertama
OutputTransformation
API untukBasicTextField2
. API ini menggantikan sebagian besar kasus penggunaanVisualTransformation
diBasicTextField
lama. Namun, proses ini belum selesai, dan beberapa hal tidak akan berfungsi dengan benar, tetapi kami mengharapkan masukan terkait kegunaan API untuk kasus penggunaan Anda. (AOS 2708848) - Memperkenalkan
LinkAnnotation
yang memungkinkan penambahan link dan teks yang dapat diklik ke dalam teks. Fitur link belum lengkap dan akan ada perubahan API lainnya yang akan segera hadir. - Memperkenalkan pengubah
receiveContent
yang memberi developer cara untuk menerima konten lengkap di Jetpack Compose. receiveContent
terintegrasi denganBasicTextField2
untuk menerima konten lengkap yang disediakan oleh keyboard virtual, atau melalui tempel dari Papan Klip.KeyboardOptions.shouldShowKeyboardOnFocus
memungkinkan Anda menonaktifkan perilaku defaultBasicTextField
dalam meminta keyboard virtual saat fokus.TextInputService
danLocalTextInputService
kini tidak digunakan lagi. Sebagai gantinya, gunakanPlatformTextInputModifierNode
untuk berintegrasi langsung dengan IME API platform. (AOSP/2862698)Indication#rememberUpdatedInstance
tidak digunakan lagi. Error ini memiliki penalti performa yang tinggi yang tidak dapat dihindari, dan mencegah pengoptimalan lainnya. Sebagai gantinya, Anda harus menggunakanIndicationNodeFactory
API yang baru.
Perbaikan Bug
BasicTextField
kini akan melakukan pra-validasi untuk sejumlah kecil pemetaan offset saatVisualTransformation
diteruskan. Hal ini membantu menangkap error coding umum yang menyebabkan pengecualian yang tidak dapat dipulihkan dalam pengukuran atau penerusan gambar nanti. Dengan menampilkan selama komposisi, developer memiliki kemungkinan besar akan melihat error ini selama pengembangan, sehingga membantu menghindari error produksi. (I0fd42)VisualTransformation
tidak akan ditampilkan jika Anda menampilkan indeks yang tidak valid untuk indeks yang tidak valid (b/316401857 )
Versi 1.6
Versi 1.6.8
12 Juni 2024
androidx.compose.foundation:foundation-*:1.6.8
dirilis. Versi 1.6.8 berisi commit ini.
Versi 1.6.7
1 Mei 2024
androidx.compose.foundation:foundation-*:1.6.7
dirilis. Versi 1.6.7 berisi commit ini.
Versi 1.6.6
17 April 2024
androidx.compose.foundation:foundation-*:1.6.6
dirilis. Versi 1.6.6 berisi commit ini.
Perbaikan Bug
- Memperbaiki bug saat dalam kondisi tertentu mengalihkan atribut
enabled
ataureadOnly
dariTextField
akan menyebabkan error. (Iae17b)
Versi 1.6.5
3 April 2024
androidx.compose.foundation:foundation-*:1.6.5
dirilis. Versi 1.6.5 berisi commit ini.
Perbaikan Bug
- Menambahkan log proses debug ke bug yang sulit direproduksi di Row/Column: (b/300280216 dan b/297974033)
Versi 1.6.4
20 Maret 2024
androidx.compose.foundation:foundation-*:1.6.4
dirilis. Versi 1.6.4 berisi commit ini.
Perbaikan Bug
- Gestur pemilihan tekan lama, lalu tarik yang bergerak keluar dari batas tata letak teks di bingkai pertama tarik tidak lagi error. (Icdf90, b/325307463)
Versi 1.6.3
6 Maret 2024
androidx.compose.foundation:foundation-*:1.6.3
dirilis. Versi 1.6.3 berisi commit ini.
Versi 1.6.2
21 Februari 2024
androidx.compose.foundation:foundation-*:1.6.2
dirilis. Versi 1.6.2 berisi commit ini.
Perbaikan Bug
- Memperbaiki
AnimateContentSize
yang tidak direset dengan benar. (I07051) - Memperbaiki masalah saat
intrinsicHeight
teks akan di-cache secara berlebihan dalam beberapa situasi. (3cd398, b/217910352)
Versi 1.6.1
7 Februari 2024
androidx.compose.foundation:foundation-*:1.6.1
dirilis. Versi 1.6.1 berisi commit ini.
Perbaikan Bug
- Memperbaiki ukuran petak bergilir saat di-scroll melebihi batas. (bffc39)
- Menambahkan pemeriksaan untuk tata letak dengan dimensi besar. (e74af5)
- Memperbaiki penempatan item berukuran 0 di awal petak bergilir. (785f94)
- Panggil callback onRelease dalam urutan yang sama seperti onforgotten. (31ce3b)
Versi 1.6.0
24 Januari 2024
androidx.compose.foundation:foundation-*:1.6.0
dirilis. Versi 1.6.0 berisi commit ini.
Perubahan penting sejak versi 1.5.0
- Pengubah baru
Modifier.anchoredDraggable
yang membuka kemampuan untuk menarik dan menganimasikan antara kumpulan anchor yang telah ditentukan sebelumnya. Pengubah ini dimaksudkan untuk menggantikanModifier.swipeable
. Pelajari cara menggunakannya dan bermigrasi dariModifier.swipeable
di panduan migrasi. - Fungsi tarik lalu lepas antara aplikasi dan komponen telah ditambahkan. Lihat
DragAndDropTarget
,Modifier.dragAndDropSource
dan API lainnya untuk memulai Modifier.draggable2D
adalah pengubah baru yang memungkinkan dukungan penarikan 2D yang mudah. Lihat Contoh.AndroidExternalSurface
danAndroidEmbeddedExternalSurface
telah ditambahkan untuk mempermudah penambahan komponen berbasis platform di compose- Berbagai perubahan dan peningkatan API di
Pager
dansnapFlingBehaviour
- Berbagai API fokus, teks, dan inset telah dipromosikan ke API stabil
Versi 1.6.0-rc01
10 Januari 2024
androidx.compose.foundation:foundation-*:1.6.0-rc01
dirilis. Versi 1.6.0-rc01 berisi commit ini.
Perubahan API
- Konstruktor ekstensi
DragAndDropTarget()
telah dihapus. Buat instance baru menggunakanobject: DragAndDropTarget {}
. (I32318)
Versi 1.6.0-beta03
13 Desember 2023
androidx.compose.foundation:foundation-*:1.6.0-beta03
dirilis. Versi 1.6.0-beta03 berisi commit ini.
Perbaikan Bug
- Memperbaiki error yang memengaruhi teks yang sangat besar dan diukur dengan batasan tak terbatas. (I1a7df, b/312294386)
PlatformImeOptions
kini menjadi class konkret, bukan antarmuka. (If40a4)
Versi 1.6.0-beta02
29 November 2023
androidx.compose.foundation:foundation-*:1.6.0-beta02
dirilis. Versi 1.6.0-beta02 berisi commit ini.
Perbaikan Bug
- Perbaikan untuk
canScroll
yang tidak diperbarui setelah men-scroll hanya tata letak ulang. (I60a86) - Perbaiki untuk
Modifier.animateItemPlacement()
danLookaheadScope
setelah scroll kecil. (I3a2b7)
Versi 1.6.0-beta01
15 November 2023
androidx.compose.foundation:foundation-*:1.6.0-beta01
dirilis. Versi 1.6.0-beta01 berisi commit ini.
Perubahan API
- Pengubah
DragAndDropTarget
kini menggunakanDragAndDropTarget
penerima secara eksplisit dan memiliki lambda untuk memilih sesi tarik lalu lepas. Sekarang ada dua fungsi factory untukDragAndDropModifierNode
. Satu untuk menerima transfer dan satu lagi untuk mentransfer data (I69481) - Memperbarui
maximumFlingVelocity
untuk ditampilkan sebagai Float. Memperbarui dokumentasi untuk lebih jelas tentang kesatuanmaximumFlingVelocity
. (I8adc7) onDragAndDropStart
dalamDragAndDropModifierNode
factory telah diganti namanya menjadiacceptDragAndDropTransfer
.acceptsDragAndDropTransfer
telah ditambahkan kedragAndDropTarget
Modifier
untuk menerima dari sesi tarik lalu lepas. Lambda ini menampilkan viableDragAndDropTarget
jika tertarik dengan sesi tarik lalu lepas. Lambda lain untuk memproses peristiwa tarik telah diganti dengan ini.Fungsi factory
DragAndDropTarget
telah ditambahkan untuk menerima dari sesi tarik lalu lepas (Iebf3a)Mengekspos
startDragImmediately
diAnchoredDraggable
memberikan kontrol untuk mendeteksi gestur tarik saat menggunakannya. Hal ini berguna untuk menyetelnya saat widget menganimasikan ke anchor target. Lihat Contoh. (Ie6d13, b/285139987)Foundation Tooltip API kini menjadi
@ExperimentalFoundationApi
(I30b0b)Menghapus
DragAndDropInfo
sebagai jenisDragAndDropModifierNode.drag
kini menggunakan parameter untuktransferData
, ukuran dekorasi, dan lambdaDrawScope
dekorasi tarikDragAndDropTarget
memiliki metode untuk peristiwa tarik lalu lepas tertentu, bukan metode abstrak tunggalonDragAndDropEvent
dalam fungsi factory untukDragAndDropModifierNode
telah diganti namanya menjadionDragAndDropStart
agar lebih baik dalam menyampaikan bahwaDragAndDropTarget
yang disediakan hanya valid untuk sesi tarik lalu lepas tertentuDragAndDropEventType
telah dihapus (I645b1)Mengganti nama
PlatformTextInputModifierNode.runTextInputSession
menjadiestablishTextInputSession
. (I03cd0)Ganti
OriginalText
denganTextSubstitution
. (Ifa5a8)Mengganti nama
PlatformTextInputModifierNode.textInputSession
menjadirunTextInputSession
. (Ie9c6b)Turunan
SubcomposeLayout
(dan tata letak sepertiLazyColumn
berdasarkan hal tersebut) yang dipertahankan untuk digunakan kembali di masa mendatang dianggap dinonaktifkan. API pengujianassertIsDeactivated()
baru diperkenalkan untuk menguji node tersebut. API pengujian lainnya akan memfilter node yang dinonaktifkan secara default. (I2ef84, b/187188981)Parameter
clippingEnabled
dariModifier.magnifier
diganti namanya menjadiclip
.Parameter
magnifierCenter
dariModifier.magnifier
dibuat nullable untuk mempertahankan perilaku default yang sama. (I6aa66)API
SwipeToReveal
Material (untuk Kartu dan Chip) kini mengandalkan API berbasis slot (seperti yang direkomendasikan oleh Compose), bukan instance berbasis class data untuk membuat slot tersebut. Ini adalah perubahan yang dapat menyebabkan gangguan, harap lihat demo dan kode contoh untuk mengetahui contoh cara menggunakan API baru. (Ia8943)
Perbaikan Bug
- Terapkan tanda sama dengan dan kode hash untuk
PageSize.Fixed
. (Ie3ede, b/300134276) - Memperbaiki bug yang menyebabkan tata letak
BasicText
tidak menyusut saatminWidth
berubah danminWidth
lebih kecil dari batasan ukuran awalmaxWidth
(Idb19c) - Menambahkan dukungan perender untuk Sweep Gradient di
ArcLine
. (I4d5bb) - Memperbaiki masalah kompatibilitas biner dengan perubahan Inset Jendela (Iee695)
- Hapus lapisan inti material untuk Chip/Tombol Material3 karena microbenchmark menunjukkan performa yang lebih baik tanpanya. (I55555)
Versi 1.6.0-alpha08
18 Oktober 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha08
dirilis. Versi 1.6.0-alpha08 berisi commit ini.
Fitur Baru
Modifier.draggable2D
adalah pengubah baru yang memungkinkan dukungan penarikan 2D yang mudah. Lihat Sampel (Id95f5, b/214412658)
Perubahan API
Modifier.dragAndDrawSource
telah mengganti nama lambdaonDrawDragShadow
menjadidrawDragDecoration
danDragAndDropInfo
telah mengganti nama parameter ukuran menjadidragDecorationSize
. (Id0e30, b/303904810)- Parameter
decorationBox
BasicTextField2
diganti namanya menjadidecorator
. Jenisnya juga diubah menjadi antarmuka seru yang setara,TextFieldDecorator
. (I23c1c)
Perbaikan Bug
- Dokumentasi tentang
BasicTextField
yang terkait dengan persyaratanonValueChange
menjadi lebih baik. (I90fc9, b/160257648)
Versi 1.6.0-alpha07
4 Oktober 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha07
dirilis. Versi 1.6.0-alpha07 berisi commit ini.
Perubahan API
- Memperkenalkan
PlatformTextInputMethodTestOverride
untuk menulis pengujian bagi editor teks kustom. (Id159b) - Mengganti nama
GraphicsSurface
menjadiAndroidExternalSurface
(I11680) - Menambahkan tanda sementara
DisableNonLinearFontScalingInCompose
untuk menonaktifkan penskalaan font non-linear. TetapkanDisableNonLinearFontScalingInCompose = true
dalam pengujian jika Anda perlu waktu untuk membersihkannya. Tanda ini akan dihapus di Compose 1.6.0-beta01. (Ic9486) - Menambahkan koleksi
ColorList
danColorSet
yang menghindari alokasi. (I744bd) - Perubahan ini menghapus
shortSnapVelocityThreshold
yang telah diubah menjadi detail implementasi dari implementasiSnapLayoutInfoProvider
. (I65f6d) - Menambahkan Pengubah
dragAndDropSource
untuk memulai sesi tarik lalu lepas, dan PengubahdragAndDropTarget
untuk menerima dari sesi tarik lalu lepas (Ib7828, b/286038936) - Perbarui dokumentasi dan metode posisi
SnapPositionInLayout
. Memperkenalkan padding konten ke metode posisi diSnapPositionInLayout
. (Id7938, b/300116110) - Menambahkan
UndoState
keTextFieldState
yang memberikan kemampuan untuk mengurungkan/mengulangi perubahan yang dibuat oleh pengguna. (Icc024)
Perbaikan Bug
- Memperbaiki
basicMarquee
yang tidak beranimasi setelah perubahan kecepatan. (Id2e77, b/297974036)
Versi 1.6.0-alpha06
20 September 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha06
dirilis. Versi 1.6.0-alpha06 berisi commit ini.
Fitur Baru
- Wrapper Composable baru untuk
SurfaceView
,TextureView: GraphicsSurface()
, danEmbeddedGraphicsSurface()
. API ini adalah API eksperimental serta dapat mengalami perubahan dan modifikasi. (I9ddb2) Modifier.magnifier()
kini menjadi API stabil. Hal ini mencakup penghapusanMagnifierStyle
yang mendukung parameter inline dalam pengubah itu sendiri. (I83bec, b/298381260, b/262367109, b/261438887)
Perubahan API
- Memperkenalkan
updateCurrentPage
danupdateTargetPage
diScrollScope
, keduanya adalah bagian terakhir yang diperlukan untuk memungkinkan penyesuaian scroll animasi melaluiPagerState.scroll
. (I9cad5, b/267744105, b/243786897) - Hapus kepadatan dari
SnapFlingBehavior
. Semua implementasiSnapLayoutInfoProvider
sudah memiliki cara untuk mengakses kepadatan. Cakupan penerima dapat dihapus sehingga menghasilkan implementasiSnapFlingBehavior
danSnapLayoutInfoProviders
yang tidak terlalu rumit. (I153c3) - Pengubah lainnya ditandai sebagai stabil. (I56af1, b/298046462)
- Menghapus
SnapStepSize
dariSnapLayoutInfoProvider
. Penghitungan harus dilakukan menggunakan informasi Tata letak dan disediakan melalui pendekatan atau offset snap. (If320c)
Perubahan Perilaku
- Compose kini menggunakan penskalaan font non-linear untuk keterbacaan dan aksesibilitas yang lebih baik. Ketika skala font > Di setelan sistem, teks kecil akan bertambah besar secara normal, tetapi teks yang sudah besar hanya akan bertambah sedikit. Selain itu, tinggi baris yang didefinisikan dalam SP akan secara otomatis disesuaikan agar tetap proporsional dengan tinggi yang diinginkan dari skala 100%. Lihat Praktik Terbaik Penskalaan Font untuk info selengkapnya. (I11518)
Perbaikan Bug
- Hapus penggunaan
rememberSaveable
untuk tooltip. (Icc131, b/299500338)
Versi 1.6.0-alpha05
6 September 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha05
dirilis. Versi 1.6.0-alpha05 berisi commit ini.
Perubahan API
- Tambahkan overload untuk
BasicSecureTextField
yang menerima nilai yang tidak dapat diubah dan callback untuk mengubah nilai tersebut, sama sepertiBasicTextField
API saat ini. (Ia4882) - Tambahkan
Modifier.preferKeepClear()
untuk menandai sebagai composable sebagai lebih dipilih untuk menghindari jendela mengambang di API 33 dan yang lebih baru. (Ib51d5, b/297260115) - Kecepatan ayunkan jari di komponen View seperti
ScrollView
danRecyclerView
dibatasi padaViewConfiguration.ScaledMaximumFlingVelocity
. Compose sekarang berisi versinya sendiri darimaximumFlingVelocity
yang sekarang berlaku untukDraggable
. (Ibf974) - Menghapus overload
Pager
danPagerState
yang tidak digunakan lagi. (Iea07e) - Menambahkan
BasicTooltipBox
kecompose.foundation
serta memperbaruiPlainTooltipBox
danRichTooltipBox
untuk menggunakanTooltipBox
dengan composablePlainTooltip
danRichTooltip
yang baru. (I79e1d)
Versi 1.6.0-alpha04
23 Agustus 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha04
dirilis. Versi 1.6.0-alpha04 berisi commit ini.
Perubahan API
- Menambahkan antarmuka
ReusableComposition
untuk mengelola siklus proses dan penggunaan ulang subkomposisi. (I812d1, b/252846775) Modifier.focusGroup
telah dipromosikan ke API stabil. (I7ffa3)- Tambahkan overload untuk
BasicTextField2
yang menerima nilai yang tidak dapat diubah dan callback untuk mengubah nilai tersebut, sama sepertiBasicTextField
API saat ini. (I3f2b8) GridItemSpan::currentLineSpan
kini menjadi API stabil. (Icc29c)- Canvas yang menerima
contentDescription
sekarang merupakan API stabil. (Ib3d29) - Memperkenalkan
viewportSize
diScrollState
, cara untuk mengetahui ukuranviewPort
komponen yang menggunakanScrollState
setelah pengukuran terjadi. (I8b85a, b/283102682) - Memperbaiki masalah saat pengambilan data di Pager tidak cocok dengan perilaku di View. (I93352, b/289088847)
Modifier.consumeWindowInsets(PaddingValues)
sekarang stabil.Deprecated Modifier.consumedWindowInsets
API kini telah dihapus. Sebagai gantinya, gunakanModifier.consumeWindowInsets
. (Id72bb)
Versi 1.6.0-alpha03
9 Agustus 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha03
dirilis. Versi 1.6.0-alpha03 berisi commit ini.
Perubahan API
- Kelebihan
LazyLayout
yang ditambahkan, kode ini menerima lambdaLazyLayoutItemProvider
, bukan objek biasa seperti sebelumnya. Overload sebelumnya tidak digunakan lagi. (I42a5a) - Menambahkan dukungan untuk mengonfigurasi
privateImeOptions
(Idb772)
Perbaikan Bug
- Memperbaiki kolom teks yang menampilkan keyboard dan dapat diedit saat
readOnly
bernilai benar (true). Selain itu, memperbaiki keyboard yang tidak muncul saatreadOnly
diubah dari true (benar) menjadi false (salah) saat difokuskan. (I34a19, b/246909589)
Versi 1.6.0-alpha02
26 Juli 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha02
dirilis. Versi 1.6.0-alpha02 berisi commit ini.
Perubahan API
- Memperkenalkan
PagerLayoutInfo
dengan informasi yang dikumpulkan setelah tahap pengukuran diPager
. Juga memperkenalkanPageInfo
, informasi tentang satu Halaman yang diukur diPager
. (Iad003, b/283098900) - Anotasi tambahan untuk menentukan input yang diizinkan ke composable (I51109)
- Menambahkan
SemanticsNodeInteraction.requestFocus
sebagai cara yang lebih nyaman dan mudah ditemukan untuk meminta fokus dalam pengujian. (Ie8722) PlatformTextInput*
API yang sepenuhnya didesain ulang. (I6c93a, b/274661182, b/267235947, b/277380808)SoftwareKeyboardController
danLocalSoftwareKeyboardController
tidak lagi bersifat eksperimental.LocalSoftwareKeyboardController
sekarang juga merupakanCompositionLocal
yang tepat. (I4c364)Modifier.transformable
kini menyediakan delta geser dalam parametercanPan
untuk membantu menentukan arah penggeseran untuk mengizinkan atau melarangnya. (I692aa, b/266829800)- Memperbarui pengubah
consumeWindowInsets
untuk memperluasAbstractComposeView
superclass (Iacd74, b/269479941)
Versi 1.6.0-alpha01
21 Juni 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha01
dirilis. Versi 1.6.0-alpha01 berisi commit ini.
Fitur Baru
- Memperkenalkan
AnchoredDraggable
API baru di Dasar-Dasar. Ini dapat digunakan untuk membangun komponen yang dapat diseret di antara status terpisah, seperti lembar bawah modal. API ini menggantikan APISwipeable
Material. (I4a2ed)
Perubahan API
- Mendukung
InputConnection#requestCursorUpdates
(I0c69b) - Memperkenalkan
scrollAnimationSpec
untuk memungkinkan spesifikasi animasi kustom.BringIntoViewCalculator
diperbarui menjadiBringIntoViewScroller
. (Idb741) - Tambahkan jenis
ResourceResolutionException
untuk menggabungkan throwable yang ditampilkan saat mencoba memuat aset bitmap dengan deskripsi jalur aset yang gagal dimuat. (I19f44, b/230166331, b/278424788) - Menambahkan properti dan tindakan semantik untuk mendukung terjemahan teks. (I4a6bc)
- Memperkenalkan
BringIntoViewCalculator
API yang dapat digunakan untuk menyesuaikan cara komponen sepertiScrollable
merespons permintaanbringIntoView
. Mengubah overload yang dapat di-scroll untuk menerima instanceBringIntoViewCalculator
secara opsional. (Iaf5af)
Perbaikan Bug
- Menambahkan pemeriksaan lint untuk memperingatkan jika Anda membuat
MutableInteractionSource
dalam komposisi tanpa mengingatnya, mirip dengan pemeriksaan lint untuk membuat status yang dapat diubah /Animatable
. (I5daae) - Menambahkan dukungan untuk pemilihan oleh mouse. Pilihan berbasis sentuhan akan diluaskan menurut kata, dan diperkecil menurut karakter. (Ic0c6c, b/180639271)
- Menambahkan antarmuka
FocusTargetModifierNode
yang dapat digunakan untuk membuatFocusTarget
kustom. (I9790e)
Versi 1.5
Versi 1.5.4
18 Oktober 2023
androidx.compose.foundation:foundation-*:1.5.4
dirilis. Versi 1.5.4 berisi commit ini.
Versi 1.5.3
4 Oktober 2023
androidx.compose.foundation:foundation-*:1.5.3
dirilis. Versi ini tidak memiliki perubahan.
Versi 1.5.2
27 September 2023
androidx.compose.foundation:foundation-*:1.5.2
dirilis. Versi 1.5.2 berisi commit ini.
Perbaikan Bug
- Memperbaiki bug dalam teks yang menyebabkan error dalam keadaan tertentu ketika semantik menjadi tidak valid.
Versi 1.5.1
6 September 2023
androidx.compose.foundation:foundation-*:1.5.1
dirilis. Versi 1.5.1 berisi commit ini.
Perbaikan Bug
- Memperbaiki kolom teks yang menampilkan keyboard dan dapat diedit saat
readOnly
bernilai benar (true). Selain itu, memperbaiki keyboard yang tidak muncul saatreadOnly
diubah dari true (benar) menjadi false (salah) saat difokuskan. (I34a19, b/246909589)
Versi 1.5.0
9 Agustus 2023
androidx.compose.foundation:foundation-*:1.5.0
dirilis. Versi 1.5.0 berisi commit ini.
Perubahan penting sejak versi 1.4.0
- Banyak pengubah dasar, termasuk
Modifier.clickable
,Modifier.draggable
,Modifier.scrollable
, pengubah tata letak, dan lainnya telah dimigrasikan keModifier.Node
API, sehingga mengurangi overhead pada komposisi awal. - Peningkatan stabilitas Pager. Banyak bug yang telah diatasi.
- Parameter
pageCount
kini berada diPagerState
, bukan di Pager itu sendiri
Versi 1.5.0-rc01
26 Juli 2023
androidx.compose.foundation:foundation-*:1.5.0-rc01
dirilis. Versi 1.5.0-rc01 berisi commit ini.
Perbaikan Bug
Tersedia pemeriksaan opsional untuk merekomendasikan migrasi panggilan
mutableStateOf()
ke jenis khusus yang sesuai untuk primitif. ID lint-nya adalahAutoboxingStateCreation
. Sebelumnya, pemeriksaan ini diaktifkan secara default untuk semua project. Untuk melihat peringatan ini di editor Android Studio dan output lint project Anda, ubah tingkat keparahannya dari informasi menjadi peringatan (atau yang lebih tinggi) dengan mendeklarasikanwarning "AutoboxingStateCreation"
di dalam konfigurasibuild.gradle
ataubuild.gradle.kts
modul seperti yang ditunjukkan (I34f7e):android { lint { warning "AutoboxingStateCreation" } ... }
Versi 1.5.0-beta03
28 Juni 2023
androidx.compose.foundation:foundation-*:1.5.0-beta03
dirilis. Versi 1.5.0-beta03 berisi commit ini.
Versi 1.5.0-beta02
7 Juni 2023
androidx.compose.foundation:foundation-*:1.5.0-beta02
dirilis. Versi 1.5.0-beta02 berisi commit ini.
Versi 1.5.0-beta01
24 Mei 2023
androidx.compose.foundation:foundation-*:1.5.0-beta01
dirilis. Versi 1.5.0-beta01 berisi commit ini.
Perubahan API
- Terapkan
PlatformDataProvider
untuk memberikan detak jantung dan langkah harian. AntarmukaSensorGateway
dihapus dari API publik. (I55b84)
Perbaikan Bug
- Mengurangi alokasi selama daftar lambat/kisi/dll. pengukuran (Iaf9e2)
- Mengurangi alokasi saat menerapkan snapshot (I65c09)
- Menghapus alokasi dari animasi pegas (Ie9431)
- Alokasi dihapus dari
TextLayout
(I0fd11) - Menghapus beberapa alokasi dalam pelacakan kecepatan pointer (I26bae)
Versi 1.5.0-alpha04
10 Mei 2023
androidx.compose.foundation:foundation:1.5.0-alpha04
dan androidx.compose.foundation:foundation-layout:1.5.0-alpha04
dirilis. Versi 1.5.0-alpha04 berisi commit ini.
Perubahan API
- Menambahkan
TextStyle.merge(...)
yang dioptimalkan dengan daftar parameter lengkap. (Iad234, b/246961787) - Memperkenalkan
SnapLayoutInfoProvider
yang dapat digunakan denganLazyGridState
. (I92134, b/269237141, b/260914964) Modifier.animateItemPlacement()
eksperimental telah ditambahkan untuk cakupan item petak bertahap yang lambat. Anda dapat menerapkannya pada item untuk mencapai animasi perubahan/susunan posisi otomatisasi. (I4b62d, b/257034719)- Mempromosikan
GridCells.FixedSize
ke stabil.FixedSize
menentukanLazyGrid
dengan setiap sel memiliki ukuran yang sama persis pada sumbu silang, dengan ruang tersisa yang didistribusikan menurut pengaturan sumbu silang. (I8542f) - Memperkenalkan cakupan penerima
PagerScope
untuk Pager dan fungsi utilitas untuk menghitung offset halaman tertentu. (If2577) - Memperkenalkan
snapPositionalThreshold
saat membuat perilaku snap fling. Gunakan parameter ini untuk menentukan nilai minimum posisi untuk pengepasan singkat di Pager. (If8f7f) SnapLayoutInfoProvider.calculateSnappingOffsetBounds
diganti dengancalculateSnappingOffset
. Dalam metode baru ini, kita cukup meminta offset berikutnya untuk dipaskan. Penghitungan batas harus dilakukan pada tingkat implementasi karena ini mungkin berbeda bergantung pada bagaimana diperlukan snap agar terjadi. (I923a4)LazyStaggeredGrid
API telah dipromosikan menjadi stabil. (I633a5)- Menghapus
pageCount
dariHorizontal/VerticalPager
. Ini harus disediakan pada saat pembuatan status. MemperbaruiPagerState
danrememberPagerState
untuk menerimapageCount
. (Ieb52d, b/266965072) - Menghapus
pageCount
dariHorizontal/VerticalPager
. Ini harus disediakan pada saat pembuatan status. MemperbaruiPagerState
danrememberPagerState
untuk menerimapageCount
. (Ifa3cb, b/266965072) - Memperkenalkan
shortSnapVelocityThreshold
diSnapFlingBehavior
Pager. (I7379e, b/275579012) - Menambahkan
FlowRowScope
danFlowColumnScope
. (I54fe2)
Perbaikan Bug
- Panggilan untuk mendapatkan semantik pada Text saat batasan memiliki
minWidth
danminHeight
tidak lagi error. (Ibd072) - Memperbaiki regresi saat keyboard tidak muncul untuk kolom teks dalam dialog yang tidak dibuat oleh composable
Dialog
. (I82551, b/262140644)
Versi 1.5.0-alpha03
19 April 2023
androidx.compose.foundation:foundation:1.5.0-alpha03
dan androidx.compose.foundation:foundation-layout:1.5.0-alpha03
dirilis. Versi 1.5.0-alpha03 berisi commit ini.
Rilis ini memungkinkan stack rendering teks baru untuk Compose. Stack yang baru dioptimalkan untuk performa, dan Anda tidak akan melihat perubahan yang terlihat.
Jika melihat perubahan pada teks yang dirender, Anda dapat melakukan debug dengan menyetel NewTextRendering1_5 = false
untuk mengonfirmasi perbedaan perilaku. Menetapkan ini akan memaksa rekomposisi. Harap laporkan perbedaan perilaku sebagai bug.
Tanda debug akan dihapus sebelum rilis 1.5 beta01.(Iada23, b/246960758)
Perubahan API
- Buat
FlowColumn/FlowRow
menjadi inline. (Idab37)
Versi 1.5.0-alpha02
5 April 2023
androidx.compose.foundation:foundation:1.5.0-alpha02
dan androidx.compose.foundation:foundation-layout:1.5.0-alpha02
dirilis. Versi 1.5.0-alpha02 berisi commit ini.
Perubahan API
- Menambahkan dukungan untuk sel berukuran tetap di
LazyGrid
dan mengaturnya dengan pengaturan sumbu silang. (I83ed9, b/235121277, b/267942510) - Menambahkan dukungan untuk lajur berukuran tetap di
LazyStaggeredGrid
dan mengaturnya dengan pengaturan sumbu silang. (I7d519) UrlAnnotation
dalamAnnotatedString
sekarang dapat dibuka melalui layanan aksesibilitas sepertiTalkBack
. (If4d82, b/253292081)- Menambahkan tindakan semantik
InsertTextAtCursor
untuk kolom teks. (I11ed5) - Tindakan pengujian terkait teks (misalnya,
performTextInput
) sekarang akan meminta fokus secara langsung, menggunakan tindakan semantik, bukan mengklik kolom. (I6ed05) - Menambahkan dukungan untuk spasi/pengaturan sumbu silang menggunakan
verticalArrangement
diFlowRow
danhorizontalArrangement
diFlowColumn
. Kami juga menghapusverticalAlignment
danhorizontalAlignment
level teratas diFlowRow/FlowColumn
. Sebagai gantinya, developer dapat menggunakanModifier.align
. Tindakan ini mengurangi kebingungan antara konvensi penamaanverticalAlignment
danverticalArrangement
. (I87b60, b/268365538)
Versi 1.5.0-alpha01
22 Maret 2023
androidx.compose.foundation:foundation:1.5.0-alpha01
dan androidx.compose.foundation:foundation-layout:1.5.0-alpha01
dirilis. Versi 1.5.0-alpha01 berisi commit ini.
Perubahan API
- Teks dan
BasicText
difaktorkan ulang untuk menggunakan sistem pengubah baru. Hal ini akan menghasilkan peningkatan performa yang substansial dalam banyak kasus. Tidak ada perubahan yang terlihat. (If1d17, b/246961435) - Menambahkan tindakan semantik
PerformImeAction
untuk memanggil tindakan IME pada node editor teks. (Ic606f, b/269633506)
Perbaikan Bug
- Internal
Modifier.hoverable
diperbarui. Pengubahhoverable
hanya akan ditampilkan di inspector jika diaktifkan. (I82103)
Versi 1.4
Versi 1.4.3
3 Mei 2023
androidx.compose.foundation:foundation:1.4.3
dan androidx.compose.foundation:foundation-layout:1.4.3
dirilis tanpa perubahan (hanya peningkatan versi).
Versi 1.4.2
19 April 2023
androidx.compose.foundation:foundation:1.4.2
dan androidx.compose.foundation:foundation-layout:1.4.2
dirilis. Versi 1.4.2 berisi commit ini.
Versi 1.4.1
5 April 2023
androidx.compose.foundation:foundation:1.4.1
dan androidx.compose.foundation:foundation-layout:1.4.1
dirilis. Versi 1.4.1 berisi commit ini.
Versi 1.4.0
22 Maret 2023
androidx.compose.foundation:foundation:1.4.0
dan androidx.compose.foundation:foundation-layout:1.4.0
dirilis. Versi 1.4.0 berisi commit ini.
Perubahan penting sejak versi 1.3.0
- Menambahkan integrasi compat Emoji ke
Text
danTextField
, serta Paragraf tingkat yang lebih rendah. Fitur ini diaktifkan secara default saat emojicompat dikonfigurasi. EmojiCompat
dapat dikonfigurasi pada Teks tertentu menggunakanPlatformParagraphStyle
.- Menambahkan dukungan span baris penuh ke
LazyStaggeredGrid
(I28252) - Menambahkan
onHover
eksperimental keClickableText
(I6938f) - Memperkenalkan overload eksperimental baru untuk fungsi
runComposeUiTest
dan fungsicreate*ComposeRule
yang menerima parameterCoroutineContext
. Konteks akan digunakan untuk komposisi pengujian serta panggilanLaunchedEffect
danrememberCoroutineScope()
dalam komposisi. (I10614, b/265177763) FlowRow
danFlowColumn
kini tersedia sebagai@ExperimentalFoundationApi
yang memungkinkan tata letak komponen berbasis baris dan kolom yang lebih fleksibel dan akan melanjutkan ke baris baru jika tidak ada cukup ruang pada sumbu utama. (I3a7b2)Modifier.basicMarquee()
tersedia sebagai eksperimental untuk menampilkan konten dengan efek marquee scroll. (I2df44, b/139321650)
Versi 1.4.0-rc01
8 Maret 2023
androidx.compose.foundation:foundation:1.4.0-rc01
dan androidx.compose.foundation:foundation-layout:1.4.0-rc01
dirilis. Versi 1.4.0-rc01 berisi commit ini.
Perubahan API
- Memperkenalkan
PlatformTextInputAdapter
API tingkat rendah baru untuk membangun implementasi input teks kustom yang berkomunikasi langsung dengan API platform. (I58df4) - Menambahkan dukungan untuk tata letak terbalik ke
LazyStaggeredGrid
. (I3ef4a)
Perbaikan Bug
- Tindakan semantik
SetText
BasicTextField
sekarang akan memperbarui buffer teks menggunakan jalur kode yang sama dengan update IME dan fungsi pengujian (misalnya,performTextReplacement
). - Fungsi pengujian teks
performTextClearance
,performTextReplacement
, danperformTextSelection
kini menggunakanSemanticsActions
. (I0807d, b/269633168, b/269624358)
Versi 1.4.0-beta02
22 Februari 2023
androidx.compose.foundation:foundation:1.4.0-beta02
dan androidx.compose.foundation:foundation-layout:1.4.0-beta02
dirilis. Versi 1.4.0-beta02 berisi commit ini.
Perubahan API
- Menambahkan callback
Modifier.Node.onReset()
baru yang memungkinkan Anda mereset beberapa status lokal untuk menangani kasus dengan benar saatLayout
akan digunakan kembali (misalnya sebagai itemLazyColumn
). MemperbaikiFocusTargetModifierNode
sehingga mereset status yang difokuskan dengan benar. (I65495, b/265201972) - Menambahkan parameter
BlendMode
ke metodeDrawScope.drawText
,Paragraph.paint
, danMultiParagraph.paint
untuk mendukung berbagai algoritma pencampuran saat menggambar teks di Canvas. (I57508) - Menghapus
modifierElementOf()
API. Luaskan dariModifierNodeElement
secara langsung. (Ie6d21)
Perbaikan Bug
- Menyesuaikan handle pemilihan tidak dapat lagi memilih karakter sebagian. (Idedd1)
- Memperbaiki error saat ctrl+backspace pada
TextField
kosong (I0427f, b/244185537)
Versi 1.4.0-beta01
8 Februari 2023
androidx.compose.foundation:foundation:1.4.0-beta01
dan androidx.compose.foundation:foundation-layout:1.4.0-beta01
dirilis. Versi 1.4.0-beta01 berisi commit ini.
Fitur Baru
- Menambahkan integrasi compat Emoji sejak versi 1.3 ke
Text
danTextField
, serta Paragraf tingkat rendah. Fitur ini diaktifkan secara default saat emojicompat dikonfigurasi. EmojiCompat
dapat dikonfigurasi pada Teks tertentu menggunakanPlatformParagraphStyle
.
Perubahan API
- Menambahkan implementasi umum
PinnableContainer
API yang digunakan di semuaLazyLayouts
untuk mempertahankan item yang keluar dari komposisi, tetapi masih harus aktif. (If45a4) PinnableContainer.PinnedHandle.unpin()
diganti namanya menjadirelease()
(I4667a)
Kontribusi Eksternal
- Menambahkan properti
mainAxisItemSpacing
keLazyListLayoutInfo
,LazyGridLayoutInfo
, danLazyStaggeredGridItemInfo
(I52fad)
Versi 1.4.0-alpha05
25 Januari 2023
androidx.compose.foundation:foundation:1.4.0-alpha05
dan androidx.compose.foundation:foundation-layout:1.4.0-alpha05
dirilis. Versi 1.4.0-alpha05 berisi commit ini.
Fitur Baru
- Menambahkan dukungan span baris penuh ke
LazyStaggeredGrid
(I28252) - Menambahkan
onHover
eksperimental keClickableText
(I6938f) - Memperkenalkan overload eksperimental baru untuk fungsi
runComposeUiTest
dan fungsicreate*ComposeRule
yang menerima parameterCoroutineContext
. Konteks akan digunakan untuk komposisi pengujian serta panggilanLaunchedEffect
danrememberCoroutineScope()
dalam komposisi. (I10614, b/265177763)
Perubahan API
- Menggabungkan API pra/pasca
OverscrollEffect
menjadi fungsiapplyToScroll
danapplyToFling
'dekorator' gabungan. Lihat contoh yang telah diperbarui dalam dokumentasi untuk mengetahui contoh cara menerapkan efek overscroll dengan bentuk API baru. (I8a9c4, b/255554340) - Lebih banyak jenis/nullability dari fungsi inline/tersembunyi yang tidak digunakan lagi (I24f91)
LineBreak
API danHyphens
API dalamTextStyle
kini menjadi stabil. (Ic1e1d)
Perbaikan Bug
- Kursor di kolom teks kini akan terus berkedip bahkan saat animasi dinonaktifkan. (I95e70, b/265177763)
Modifier.basicMarquee
kini akan terus menganimasikan bahkan saat animasi dinonaktifkan di setelan sistem. (I23389, b/262298306, b/265177763)
Kontribusi Eksternal
- Metode
notifyFocusedRect
diTextInputSession
danTextInputService
tidak digunakan lagi. (I23a04, b/262648050)
Versi 1.4.0-alpha04
11 Januari 2023
androidx.compose.foundation:foundation:1.4.0-alpha04
dan androidx.compose.foundation:foundation-layout:1.4.0-alpha04
dirilis. Versi 1.4.0-alpha04 berisi commit ini.
Fitur Baru
FlowRow
danFlowColumn
kini tersedia sebagai@ExperimentalFoundationApi
yang memungkinkan tata letak komponen berbasis baris dan kolom yang lebih fleksibel dan akan melanjutkan ke baris baru jika tidak ada cukup ruang pada sumbu utama. (I3a7b2)Modifier.basicMarquee()
tersedia sebagai eksperimental untuk menampilkan konten dengan efek marquee scroll. (I2df44, b/139321650)
Perubahan API
FocusRequesterModifier
tidak digunakan lagi dan digantikan denganFocusRequesterNode
(I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589)- Konstruktor
AndroidFont
denganvariationSettings
kini merupakan API stabil dan dapat digunakan untuk membuat jenis deskripsi font baru. (I5adcc, b/261565807) - Memperkenalkan
PinnableContainer
API yang disebarkan oleh daftar lambat melalui komposisi lokal yang memungkinkan penyematan item saat ini. Artinya, item tersebut tidak akan dibuang saat di-scroll keluar dari tampilan. Misalnya,Modifier.focusable()
akan menyematkan item yang difokuskan saat ini melalui mekanisme ini. (Ib8881, b/259274257, b/195049010) - Menulis ulang cara scrollable merespons
bringIntoViewRequesters
dan focusable untuk membuat model kompleksitas operasi tersebut dengan lebih baik serta menangani lebih banyak kasus ekstrem. (I2e5fe, b/241591211, b/192043120, b/237190748, b/230756508, b/239451114) - Lebih banyak nullability jenis nilai yang ditampilkan dari fungsi tersembunyi yang tidak digunakan lagi (Ibf7b0)
- Menambahkan
TextMotion
eksperimental keTextStyle
untuk menentukan Text menjadiStatic(default)
atau Animated. GunakanTextMotion.Animated
jika Text akan diskalakan, diterjemahkan, atau diputar melalui animasi. (I24dd7) - Menambahkan
TextFieldFocusModifier
untuk memperbaiki perilaku navigasi fokus untuk platform Android (I00303) - Mengganti argumen
maxSize: IntSize
didrawText
dengansize: Size
agar selaras dengan fungsiDrawScope
lainnya.size
disetel keSize.Unspecified
secara default yang tidak akan mengubah perilaku default sebelumnya. (Icd27d)
Perbaikan Bug
- Penyesuaian dalam fisika snapping di
SnapFlingBehaviour
untuk nuansa yang lebih alami.
Masalah Umum
- Saat mengupdate dari
androidx.compose.foundation:1.4.0-alpha03
keandroidx.compose.foundation:1.4.0-alpha04
, Anda mungkin mengalami errorjava.lang.NoSuchFieldError
. Masalah awalnya dilaporkan di sini. Perbaikan telah dikirim dan akan tersedia di update Compose berikutnya. Sebagai solusi, update libraryandroidx.compose.material
danandroidx.compose.material3
ke versi terbaru (1.1.0-alpha04) atau downgradeandroidx.compose.foundation
ke 1.4.0-alpha03.
Versi 1.4.0-alpha03
7 Desember 2022
androidx.compose.foundation:foundation:1.4.0-alpha03
dan androidx.compose.foundation:foundation-layout:1.4.0-alpha03
dirilis. Versi 1.4.0-alpha03 berisi commit ini.
Perubahan API
- Dalam pengujian UI menggunakan aturan Compose, kontinuasi yang dilanjutkan selama callback
withFrameNanos
tidak akan dikirim hingga semua callback frame selesai berjalan. Hal ini cocok dengan perilaku Compose saat berjalan secara normal. Namun, pengujian yang mengandalkan perilaku lama mungkin gagal. Hal ini hanya akan memengaruhi kode yang memanggilwithFrameNanos
atauwithFrameMillis
secara langsung, dan memiliki logika di luar callback yang diteruskan ke fungsi tersebut yang mungkin perlu dipindahkan di dalam callback. Lihat perubahan pengujian animasi di CL ini untuk contoh. - Menambahkan parameter
onPerformTraversals: (Long) -> Unit
opsional ke konstruktorTestMonotonicFrameClock
dan fungsi factory untuk menjalankan kode setelah callbackwithFrameNanos
, tetapi sebelum melanjutkan coroutine pemanggil. (Idb413, b/254115946, b/222093277, b/255802670) - Memperkenalkan tindakan aksesibilitas Page:
PageUp
,PageDown
,PageLeft
,PageRight
. Perhatikan bahwa ini hanya tersedia dari API 29. (Ida4ab) - Memperkenalkan
HorizontalPager
danVerticalPager
, cara menampilkan composable dengan cara Pager. MemperkenalkanPagerState
untuk mengontrol Pager serta informasi kueri tentang status Pager saat ini. MemperkenalkanPageSize
, cara untuk mengontrol ukuran halaman Pager. Ini dapat digunakan untuk membuat carousel seperti Pager. MemperkenalkanPagerSnapDistance
, cara untuk mengontrol bagaimana snap akan berfungsi dalam perilaku ayunkan jari Pager. (I01120) - Memperkenalkan overload di
SnapFlingBehavior.performFling
untuk membantu memahami posisi ayunkan jari. (I569f6) OverscrollEffect#isEnabled
dihapus. Daripada harus mengingat dan menetapkan flag ini, Anda tidak perlu mengirim peristiwa ke efek overscroll jika tidak ingin overscroll ditampilkan (misalnya, jikaScrollableState#canScrollForward/backward
menampilkan salah (false)). (I1a4b0, b/255554340, b/255557085)- Menambahkan
ScrollableState#canScrollForward
danScrollableState#canScrollBackward
untuk melakukan kueri apakahScrollableState
memiliki ruang untuk men-scroll ke salah satu arah (baik pada batas minimum/maksimum rentangnya). Nilai defaultnya adalah benar (true) untuk kompatibilitas mundur dengan implementasiScrollableState
yang ada. Konsumen dapat menggunakannya untuk menunjukkan indikasi kepada pengguna bahwa masih ada ruang untuk men-scroll, dan ini juga dapat digunakan untuk menghindari pengiriman delta keScrollableStates
yang tidak memiliki ruang untuk men-scroll ke arah tertentu, untuk mengurangi pekerjaan yang tidak perlu. (Idf1a0, b/255557085) - Menambahkan Modifier API untuk melakukan kueri 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 dalamScrollable ViewGroup
. - Mengupdate Drawer dan Sheet untuk menunda penekanan dengan benar jika gestur dapat menjadi peristiwa scroll.
- Memperbarui penamaan
snapStepSize
agar konsisten dengan metode lain diSnapLayoutInfoProvider
. (Ife67c) - Menambahkan
EmojiCompat
keCompose
(Ibf6f9, b/139326806) - Mengganti nama
consumedWindowInsets()
menjadiconsumeWindowInsets()
danwithConsumedWindowInsets()
menjadionConsumedWindowInsetsChanged()
, dan membuat Pengubah menjadi publik. (Ie44e1)
Perbaikan Bug
- Error pada petak Lambat dan
Modifier.animateItemPlacement()
telah diperbaiki. Hal ini terjadi dalam beberapa kondisi ketika jumlah item baru lebih kecil daripada item sebelumnya. (I0bcac, b/253195989)
Versi 1.4.0-alpha02
9 November 2022
androidx.compose.foundation:foundation:1.4.0-alpha02
dan androidx.compose.foundation:foundation-layout:1.4.0-alpha02
dirilis. Versi 1.4.0-alpha02 berisi commit ini.
Perubahan API
awaitFirstDown
danwaitForUpOrCancellation
kini menerimaPointerEventPass
untuk fleksibilitas yang lebih besar. (I7579a, b/212091796)- Mengembalikan
beyondBoundCount
API dari Lazy* API (I12197) - Memperkenalkan parameter di Lazy API untuk menyusun dan menempatkan item di area pandang (I69e89, b/172029355)
- Menambahkan parameter
minLines
keBasicText
danBasicTextField
. 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.foundation:foundation:1.4.0-alpha01
dan androidx.compose.foundation:foundation-layout: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 denganforEachGesture()
, tetapi gestur loop over beroperasi sepenuhnya dalamAwaitPointerEventScope
sehingga peristiwa di antara iterasi tidak dapat hilang. forEachGesture()
tidak digunakan lagi dan digantikan denganawaitEachGesture()
karena memungkinkan peristiwa di antara gestur hilang. (Iffc3f, b/251260206)- Menambahkan
WindowInsets.imeAnimationSourc
e danWindowInsets.imeAnimationTarget
untuk menentukan progres animasi dan mengetahui posisi IME setelah animasi selesai. (I356f1, b/217770337)
Versi 1.3
Versi 1.3.1
9 November 2022
androidx.compose.foundation:foundation:1.3.1
dan androidx.compose.foundation:foundation-layout:1.3.1
dirilis. Versi 1.3.1 berisi commit ini.
Perbaikan Bug
- Memperbaiki masalah performa di
BeyondBoundsLayout
(aosp/2255266) ContentInViewModifier
tidak akan membaca koordinat tata letak kecuali jika dipasang (aosp/2241316)
Versi 1.3.0
24 Oktober 2022
androidx.compose.foundation:foundation:1.3.0
dan androidx.compose.foundation:foundation-layout:1.3.0
dirilis. Versi 1.3.0 berisi commit ini.
Perubahan penting sejak versi 1.2.0
- Versi eksperimental
LazyVerticalStaggeredGrid
danLazyHorizontalStaggeredGrid
diperkenalkan. SnapFlingBehavior
,rememberSnapFlingBehavior
, dan API terkait lainnya ditambahkan sebagai eksperimental.Modifier.clickable
,Modifier.toggleable
, danModifier.selectable
sekarang menampilkan ripple jika diklik dengan keyboard atau d-pad pada remote control.
Versi 1.3.0-rc01
5 Oktober 2022
androidx.compose.foundation:foundation:1.3.0-rc01
dan androidx.compose.foundation:foundation-layout:1.3.0-rc01
dirilis. Versi 1.3.0-rc01 berisi commit ini.
Perubahan API
- Memperkenalkan
lowVelocityAnimationSpec
yang digunakan oleh langkah pendekatan saat gestur ayunkan jari kurang cepat untuk animasi decay. (Iaeb27) - Menambahkan Tanda Hubung API eksperimental baru untuk mendukung tanda hubung otomatis dalam Text (Iaa869)
Versi 1.3.0-beta03
21 September 2022
androidx.compose.foundation:foundation:1.3.0-beta03
dan androidx.compose.foundation:foundation-layout:1.3.0-beta03
dirilis. Versi 1.3.0-beta03 berisi commit ini.
Perubahan API
- Menambahkan opsi untuk menyesuaikan jeda baris di Text. (I86907)
BringIntoViewResponder
kini bisa mendapatkan batas permintaan terbaru saat memprosesnya. (If86a5, b/241591211)- Memperkenalkan dukungan untuk spasi antar-item ke
Staggered Grid
eksperimental (I10b82) - Memperkenalkan padding konten ke
Staggered Grid
eksperimental (I342ea) - Mengubah argumen
size:IntSize
denganconstraints: Constraints
dalam metodeTextMeasurer.measure
untuk mendukung batasan lebar minimum. (I37530, b/242707525) - Menambahkan
Modifier.withConsumedWindowInsets()
untuk digunakanWindowInsets
di luarwindowInsetsPadding
. - Menambahkan
MutableWindowInsets
untuk memungkinkan perubahanWindowInsets
dengan mudah tanpa rekomposisi. (I7fd28, b/237019262, b/243119659)
Versi 1.3.0-beta02
7 September 2022
androidx.compose.foundation:foundation:1.3.0-beta02
dan androidx.compose.foundation:foundation-layout:1.3.0-beta02
dirilis. Versi 1.3.0-beta02 berisi commit ini.
Perubahan API
- Versi awal
StaggeredGrid
eksperimental (Ia48be) - Mengganti nama
FocusDirection.In
danFocusDirection.Out
menjadiFocusDirection.Enter
danFocusDirection.Exit
(Ia4262, b/183746982) - Memperkenalkan overload
rememberSnapFlingBehavior
yang memberikan cara cepat untuk mengaktifkan snap diLazyLists
. (Ifb48a) - Mengganti factory
snapFlingBehavior
dengan classSnapFlingBehavior
konkret. Menyertakan metodeSnapLayoutInfoProvider
ke Density untuk mempermudah konversi Dp<->Px bagi pengguna API. (I54a11) - Mengupdate
LazyLayoutMeasureScope.measure
untuk menampilkan daftar placeable, yang memperjelas ketetapan yang diinginkan dari nilai yang ditampilkan. (I48b7c) - Memperkenalkan
SnapLayoutInfoProvider
yang menggunakanLazyListState
untuk membuat instanceSnapLayoutInfoProvider
yang dapat digunakan untuk memungkinkan snapFlingBehavior
untukLazyLists
. (I2dd10)
Perbaikan Bug
- Memfaktorkan ulang
AwaitPointerEventScope#awaitLongPressOrCancellation
agar cocok dengan fungsi tunggu lainnya (I646e6)
Versi 1.3.0-beta01
24 Agustus 2022
androidx.compose.foundation:foundation:1.3.0-beta01
dan androidx.compose.foundation:foundation-layout:1.3.0-beta01
dirilis. Versi 1.3.0-beta01 berisi commit ini.
Perubahan API
- Menghapus
pointerPosition
dariOverscrollEffect
- efek yang memperhatikan posisi pointer dapat menggunakanModifier.pointerInput { }
dieffectModifier
untuk mendapatkan posisi pointer saat ini. (I9f606, b/241239306) - Mengekspos
AwaitPointerEventScope#awaitLongPressOrCancellation
sebagai elemen penyusun tambahan untuk deteksi gestur yang lebih kompleks (I04374, b/181577176) - Memperkenalkan
lazyListSnapLayoutInfoProvider
untuk mengaktifkan snap dalam Daftar Lambat. (I3ecdf) - Memperkenalkan
SnapFlingBehavior
, perilaku ayunkan jari yang memungkinkan snap daftar. Berikan instanceSnapLayoutInfoProvider
yang berisi informasi tentang tata letak snap. (Ie754c)
Versi 1.3.0-alpha03
10 Agustus 2022
androidx.compose.foundation:foundation:1.3.0-alpha03
dan androidx.compose.foundation:foundation-layout:1.3.0-alpha03
dirilis. Versi 1.3.0-alpha03 berisi commit ini.
Perubahan API
- Font Resource kini mendukung setelan variasi font (API 26+). (I900dd, b/143703328)
- Dukungan font variabel dalam
DeviceFontFamilyNameFont
(Ic1279, b/143703328) - Menghapus anotasi eksperimental dari
PlatformTextStyle
danLineHeightStyle
. (I64bef) - Kolom teks kini akan menampilkan pengecualian yang lebih mendetail jika
OffsetMapping
yang disediakan olehVisualTransformation
akan menampilkan indeks yang tidak valid. (Ie73f9, b/229378536) - Memperkenalkan API eksperimental untuk membagikan logika penyedia item antara tata letak Lambat. (Ic891c)
ScrollableDefaults.reverseDirection()
tidak lagi bersifat eksperimental. (Iba646)- Menghentikan penggunaan
SemanticsModifier.id
dan memindahkan ID semantik keLayoutInfo.semanticsId
. (Iac808, b/203559524) checkScrollableContainerConstraints()
tidak lagi bersifat eksperimental. (I2c290)Modifier.clipScrollableContainer()
tidak lagi bersifat eksperimental. (Ia2b44)- Menghentikan penggunaan
TextInputService.show|hideSoftwareKeyboard
. Sebagai gantinya, gunakanSoftwareKeyboardController
dalam kode aplikasi danTextInputSession
dalam kode pengelolaan IME. (I14e4c, b/183448615)
Versi 1.3.0-alpha02
27 Juli 2022
androidx.compose.foundation:foundation:1.3.0-alpha02
dan androidx.compose.foundation:foundation-layout:1.3.0-alpha02
dirilis. Versi 1.3.0-alpha02 berisi commit ini.
Perubahan API
- Menambahkan fungsi ekstensi
drawText
padaDrawScope
untuk memberikan cara menggambar teks multigaya pada composable dan pengubah yang beroperasi diDrawScope
sepertiCanvas
dandrawBehind
. (I16a62, b/190787898)
Perbaikan Bug
- Keyboard virtual kini akan disembunyikan jika kolom teks dinonaktifkan saat difokuskan. (I6e3e4, b/237308379)
- Saat menambahkan peristiwa
InputEventChange
ke Pelacak Kecepatan, kita akan mempertimbangkan delta, bukan posisi. Hal ini akan menjamin kecepatan dihitung dengan benar untuk semua kasus meskipun elemen target bergerak (Icea9d, b/216582726, b/223440806, b/227709803) - Jika scrollable memiliki turunan yang difokuskan, turunan sekarang akan di-scroll dengan benar agar tampilan turunan yang difokuskan tetap terlihat saat ukurannya diperkecil, meskipun ukurannya dianimasikan. (I80867, b/230756508, b/220119990)
- Memperbaiki error ketika
TextField
dihapus dan diisi ulang saat pemilihan aktif. (I1235b, b/208655565, b/214253689)
Versi 1.3.0-alpha01
29 Juni 2022
androidx.compose.foundation:foundation:1.3.0-alpha01
dan androidx.compose.foundation:foundation-layout:1.3.0-alpha01
dirilis. Versi 1.3.0-alpha01 berisi commit ini.
Perubahan API
- Memperkenalkan jenis anotasi
UrlAnnotation
dan metode terkait untuk mendukung dukungan linkTalkBack
diAnnotatedString
. (I1c754, b/231495122)
Perbaikan Bug
BasicTextField
cursorBrush
kini dapat dianimasikan tanpa memulai ulang timer kursor. (I812e6, b/236383522)
Versi 1.2
Versi 1.2.1
10 Agustus 2022
androidx.compose.foundation:foundation:1.2.1
dan androidx.compose.foundation:foundation-layout:1.2.1
dirilis. Versi 1.2.1 berisi commit ini.
Versi 1.2.0
27 Juli 2022
androidx.compose.foundation:foundation:1.2.0
dan androidx.compose.foundation:foundation-layout:1.2.0
dirilis. Versi 1.2.0 berisi commit ini.
Perubahan penting sejak 1.1.0
LazyVerticalGrid
danLazyHorizontalGrid
sekarang menjadi stabil.- Anda sekarang dapat menentukan jenis konten untuk item dalam daftar dan petak Lambat. Perubahan ini akan memungkinkan komponen untuk menggunakan kembali elemen dengan lebih efisien.
- Daftar dan petak Lambat sekarang memiliki parameter
userScrollEnabled
yang memungkinkan untuk menonaktifkan scroll melalui gestur pengguna. - API eksperimental baru bernama
LazyLayout
telah ditambahkan. Ini adalah API yang kami gunakan secara internal untuk mendukung daftar dan petak Lambat. OverscrollEffect
API telah diperkenalkan sebagai eksperimental. Anda dapat menentukan efek overscroll kustom serta menambahkan platform standar satu ke penampung scrollable kustom.- API interoperabilitas scroll bertingkat telah diperkenalkan guna memungkinkan interoperabilitas antara tampilan dan pelaku scroll Compose.
- Scrolling mouse dan trackpad telah ditambahkan ke semua penampung scroll.
Versi 1.2.0-rc03
29 Juni 2022
androidx.compose.foundation:foundation:1.2.0-rc03
dan androidx.compose.foundation:foundation-layout: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.foundation:foundation:1.2.0-rc02
dan androidx.compose.foundation:foundation-layout:1.2.0-rc02
dirilis. Versi 1.2.0-rc02 berisi commit ini.
Versi 1.2.0-rc01
15 Juni 2022
androidx.compose.foundation:foundation:1.2.0-rc01
dan androidx.compose.foundation:foundation-layout:1.2.0-rc01
dirilis. Versi 1.2.0-rc01 berisi commit ini.
Perubahan API
OverscrollEffect
eksperimental telah diperkenalkan untuk memungkinkan efek overscroll kustom, bersama overloadModifier.scrollable
yang menerimanya.LocalOverScrollConfiguration
eksperimental telah dipindahkan darifoundation.gesture
ke paket dasar dan diganti namanya menjadiLocalOverscrollConfiguration
(If19fb, b/204650733)- Antarmuka di library Compose kini dibuat menggunakan metode antarmuka default jdk8 (I5bcf1)
- Memperkenalkan API eksperimental
checkScrollableContainerConstraints()
yang memungkinkan pemeriksaan apakah kita tidak membuat tingkat pada penampung yang dapat di-scroll. Anda dapat menggunakannya saat membuat tata letak lambat yang dapat di-scroll melaluiLazyLayout
. (Id6fab, b/233352497) - Menghapus
LazyVerticalGrid
yang tidak digunakan lagi dari paketandroidx.compose.foundation.lazy
. API stabil baru berada diandroidx.compose.foundation.lazy.grid
(I73c76, b/225192009)
Versi 1.2.0-beta03
1 Juni 2022
androidx.compose.foundation:foundation:1.2.0-beta03
dan androidx.compose.foundation:foundation-layout:1.2.0-beta03
dirilis. Versi 1.2.0-beta03 berisi commit ini.
Perubahan API
- Menambahkan
IntervalList
danMutableIntervalList
eksperimental baru. Hal ini memungkinkan untuk mewakili beberapa daftar nilai melalui beberapa interval. Ini akan berguna saat Anda ingin menentukan dsl Anda sendiri yang serupa dengan yang digunakan olehLazyColumn
, tempat item daftar dapat ditentukan melalui beberapa panggilan item. (I2d05e, b/228580728)
Perbaikan Bug
- Mengklarifikasi dokumentasi untuk
WindowInsets.ime
agar menyatakan bahwa insetime
dilaporkan sejak API 23, tetapi hanya dianimasikan pada API 30 dan yang lebih baru. (Ia7fc0, b/230756508) - Menekan tombol hapus maju saat kursor berada di akhir kolom teks tidak akan lagi error.
DeleteSurroundingTextCommand
danDeleteSurroundingTextInCodePointsCommand
sekarang mengharuskan argumen konstruktornya tidak negatif. (Ica8e6, b/199919707)
Versi 1.2.0-beta02
18 Mei 2022
androidx.compose.foundation:foundation:1.2.0-beta02
dan androidx.compose.foundation:foundation-layout:1.2.0-beta02
dirilis. Versi 1.2.0-beta02 berisi commit ini.
- Resolusi font yang dapat didownload yang tidak mengubah ukuran tata letak Text atau
TextField
sebelumnya tidak akan digambar ulang, sehingga menyebabkan tampilan font yang tidak berlaku. Perbaikan bug ini memastikan bahwa tata letak teks selalu memicu penggambaran ulang (b/229727404). (I1d49e, b/229727404)
Versi 1.2.0-beta01
11 Mei 2022
androidx.compose.foundation:foundation:1.2.0-beta01
dan androidx.compose.foundation:foundation-layout:1.2.0-beta01
dirilis. Versi 1.2.0-beta01 berisi commit ini.
Fitur Baru
- Ini adalah rilis beta pertama 1.2.
Perubahan API
- Menambahkan
BeyondBoundsInterval
eksperimental yang dapat digunakan oleh implementasi kustomLazyList
saat menata tata letak item di luar batas yang terlihat (Ifabfb, b/184670295) LineHeightBehavior
diganti namanya menjadiLineHeightStyle
LineVerticalAlignment
diganti namanya menjadiLineHeightStyle.Alignment
LineHeightTrim
diganti namanya menjadiLineHeightStyle.Trim
- Nilai konstruktor default dari
LineHeightStyle
dihapus (I582bf, b/181155707) - Menambahkan nilai default untuk anggota opsional antarmuka
LazyLayoutItemProvider
. (Iba8a0) - Dalam
LazyLayoutItemProvider
API, kami sekarang memiliki Item fungsi composable yang lebih sederhana yang menerima indeks, bukan factory yang menampilkan lambda composable berdasarkan indeks. (Id2196) - LazyLayoutItemsProvider diganti namanya menjadi LazyLayoutItemProvider (I0638c)
LazyLayoutItemsProvider.itemsCount
diganti namanya menjadiitemCount
(Id409c)- Menambahkan Brush ke
TextStyle
danSpanStyle
untuk memberikan cara menggambar teks dengan warna gradien. (I53869, b/187839528) - Atribut
trimFirstLineTop
,trimLastLineBottom
dariLineHeightBehavior
diubah menjadi satu enum:LineHeightTrim
.LineHeightTrim
memiliki nilai 4 status yang ditentukan oleh dua boolean:FirstLineTop
,LastLineBottom
, Both, dan None (Ifc6a5, b/181155707) Menambahkan
LineHeightBehavior
keTextStyle
danParagraphStyle. LineHeightBehavior
mengontrol apakah tinggi baris diterapkan di bagian atas baris pertama dan ke bagian bawah baris terakhir. Ini juga menentukan perataan garis di ruang yang disediakan olehTextStyle
(lineHeight
).Misalnya, Anda dapat memperoleh perilaku yang mirip dengan yang ditentukan oleh CSS melalui
LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false)
.Konfigurasi
trimFirstLineTop
,trimLastLineBottom
hanya berfungsi dengan benar saatincludeFontPadding
bernilai salah (false). (I97332, b/181155707)Menambahkan pengubah
imeNestedScroll()
eksperimental sehingga developer dapat mengontrol IME melalui scroll. (I60759)
Perbaikan Bug
- Memperbaiki regresi ketika kolom teks tidak akan menyembunyikan keyboard saat dihapus dari komposisi saat difokuskan. (I7a410, b/230536793, b/225541817)
- Mendukung elipsis jika tinggi terbatas dan tidak sesuai untuk semua baris teks (Ie528c, b/168720622)
BringIntoViewRequester.bringIntoView
sekarang akan selalu ditangguhkan sampai permintaan selesai atau diganggu oleh permintaan yang lebih baru dan tidak tumpang-tindih. Permintaan yang tumpang-tindih akan dimasukkan ke dalam antrean. (I43e7f, b/216790855)- Panggilan
BringIntoViewRequester.bringIntoView
serentak untuk kotak yang tumpang tindih kini hanya akan memenuhi permintaan kotak yang lebih besar. (I34be7, b/216790855, b/184760918) includeFontPadding
default diaktifkan. Anda dapat menonaktifkanincludeFontPadding
menggunakan atributTextStyle.platformTextStyle
. Dalam waktu dekat, kami akan mengubah perilaku default. Namun, sampai saatnya tiba, fungsi ini memungkinkan kami mengintegrasikan peningkatan tinggi baris dengan lebih baik (aosp/2058653) dan menyelesaikan masalah penyesuaian nilaiTextField
. (I01423, b/171394808)Modifier.bringIntoViewRequester
tidak lagi menggunakanonGloballyPositioned
. (I630f5)
Kontribusi Eksternal
MouseInjectionScope.scroll(delta = someDelta)
kini dibalik di Android jika kita men-scroll secara vertikal (jika someDelta positif, akan ter-scroll ke bawah) (Ifb697, b/224992993)
Versi 1.2.0-alpha08
20 April 2022
androidx.compose.foundation:foundation:1.2.0-alpha08
dan androidx.compose.foundation:foundation-layout:1.2.0-alpha08
dirilis. Versi 1.2.0-alpha08 berisi commit ini.
Perubahan API
- Menampilkan semua ketebalan yang tersedia untuk font sistem di Android saat menggunakan
FontFamily.SansSerif
. Ini akan menggunakan nama font pengganti seperti sans-serif-medium secara internal di API 21-28. Ini adalah perubahan perilaku karena sebelumnya hanya ketebalan 400 dan 700 yang didukung pada API 21-28. (I380fe, b/156048036, b/226441992) - Paragraph dan MultiParagraph kini menerima parameter Constraints. Meneruskan
Constraints.maxHeight
adalah tanpa pengoperasian untuk saat ini, tetapi akan memungkinkan penghitungan di masa mendatang, seperti membuat elipsis berdasarkan tinggi. (I6afee, b/168720622) SubcomposeSlotReusePolicy.getSlotsToRetain()
kini menerima class seperti MutableSet kustom yang tidak mengizinkan penambahan item baru ke dalamnya. (Icd314)- Konsumsi parsial (posisi OR turun) tidak digunakan lagi di
PointerInputChange
. Anda dapat menggunakanconsume()
untuk sepenuhnya memakai perubahan. Anda dapat menggunakanisConsumed
untuk menentukan apakah orang lain sudah pernah memakai perubahan tersebut sebelumnya. PointerInputChange::copy()
kini selalu membuat shallow copy. Ini berarti bahwa salinanPointerInputChange
akan dipakai setelah salah satu salinan tersebut digunakan. Jika Anda ingin membuatPointerInputChange
yang tidak terikat, gunakan konstruktor. (Ie6be4, b/225669674)LazyLayout
API eksperimental baru diperkenalkan. API ini memungkinkan Anda mem-build komponen sendiri sepertiLazyColumn
dariLazyVerticalGrid
. Perhatikan bahwa API masih dalam tahap awal dan dapat berubah dalam rilis mendatang. (Iba2bc, b/166591700)AndroidFont
kini menggunakantypefaceLoader
sebagai parameter konstruktor. (I2c971)- Pendamping
WindowInsets
kini mengekspos visibilitas (baik visibilitas ada di layar atau bersinggungan dengan jendela) dan ukurannya jika tersedia di perangkat, tetapi saat ini tidak aktif. (I65182, b/217770337)
Versi 1.2.0-alpha07
6 April 2022
androidx.compose.foundation:foundation:1.2.0-alpha07
dan androidx.compose.foundation:foundation-layout:1.2.0-alpha07
dirilis. Versi 1.2.0-alpha07 berisi commit ini.
Perubahan API
- Menambahkan
PinnableParent
API yang memungkinkan turunan tata letak lambat mencegah pembuangan item yang sedang disusun (Ibbdd0, b/184670295) LazyListLayoutInfo
danLazyGridLayoutInfo
kini memiliki kolombeforeContentPadding
danafterContentPadding
(I3b628, b/200920410)- Menambahkan
KeyboardType.Decimal
sebagai alternatifKeyboard.Number
untuk secara khusus menyertakan pemisah desimal di IME. (Iec4c8, b/209835363) - Menambahkan deskripsi font baru Font(DeviceFontFamilyName) untuk secara opsional mencari font yang diinstal sistem selama rantai penggantian font. (I30468, b/219754572)
PointerEventType.Scroll
danPointerEvent.scrollDelta
sekarang adalah API stabil (I574c5, b/225669674)- Menambahkan konfigurasi kompatibilitas sementara agar
includeFontPadding
diTextStyle/ParagraphStyle. includeFontPadding
bisa diubah melaluiTextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false))
. Ini adalah opsi konfigurasi sementara untuk mengaktifkan migrasi dan akan dihapus. (If47be, b/171394808) - Memperbarui
FontFamily.Resolver
untuk mengintegrasikan setelan aksesibilitas teks tebal di seluruh Sistem (I6c1e7) - Properti ekstensi
consumeWindowInsets
dariComposeView
memungkinkan developer menonaktifkan pemakaian Android WindowInsets. Hal ini memungkinkanComposeViews
terpisah dalam hierarki untuk menerapkanWindowInsets
tanpa mengganggu satu sama lain. (I0ef08, b/220943142)
Versi 1.2.0-alpha06
23 Maret 2022
androidx.compose.foundation:foundation:1.2.0-alpha06
dan androidx.compose.foundation:foundation-layout:1.2.0-alpha06
dirilis. Versi 1.2.0-alpha06 berisi commit ini.
Perubahan API
- Menambahkan tindakan semantik
RequestFocus
untuk meminta fokus pada target yang dapat difokuskan. (I17b71) FocusOrder
sekarang telah digabungkan keFocusProperties
danfocusProperties()
sekarang memiliki semua kemampuanfocusOrder()
.FocusOrder
danfocusOrder()
tidak digunakan lagi.focusOrder()
yang menerimafocusRequester
harus diganti dengan pengubahfocusRequester()
yang dikombinasikan denganfocusProperties()
. Hal ini memungkinkan pengubah memiliki pemisahan fokus yang lebih kuat. (I601b7)WindowInsets.asPaddingValues(Density)
ditambahkan untuk memungkinkan developer melakukan konversi tanpa perlu menggunakan komposisi. (I94c35)- Memperbarui penguraian vektor drawable untuk mendukung pencerminan otomatis untuk membalik konten
VectorPainter
jika arah tata letak saat ini adalah RTL. (I79cd9, b/185760237)
Perbaikan Bug
- Pengubah scroll (
Modifier.verticalScroll()
,Modifier.horizontalScroll()
, danModifier.scrollable()
) sekarang akan di-scroll agar composable yang difokuskan tetap terlihat jika area scroll diubah ukurannya dan composable yang difokuskan sebelumnya terlihat. - TextFields sekarang akan disimpan di atas keyboard saat difokuskan dan keyboard akan ditampilkan, jika berada di dalam scrollable non-lazy dan mode input virtualnya adalah
ADJUST_RESIZE
. (I4a485, b/190539358, b/192043120, b/216842427)
Versi 1.2.0-alpha05
9 Maret 2022
androidx.compose.foundation:foundation:1.2.0-alpha05
dan androidx.compose.foundation:foundation-layout:1.2.0-alpha05
dirilis. Versi 1.2.0-alpha05 berisi commit ini.
Perubahan API
LazyVerticalGrid
danLazyHorizontalGrid
kini stabil. (I307c0)LazyGridItemInfo.Unknown
diganti denganLazyGridItemInfo.UnknownRow
danLazyGridItemInfo.UnknownColumn
terpisah (I56d51)LazyVerticalGrid
/LazyHorizontalGrid
dan semua API terkait dipindahkan ke sub-paket.grid
. Update impor Anda dariandroidx.compose.foundation.lazy
keandroidx.compose.foundation.lazy.grid
. (I2d446, b/219942574)- Teks:
includeFontPadding
kini dinonaktifkan secara default. Masalah pemotongan akibatincludeFontPadding=false
ditangani dan tidak ada pemotongan yang harus dilakukan untuk skrip yang tinggi. (I31c84, b/171394808) - Antarmuka terukur kini mengekspos properti parentData (I3313f)
- Memperkenalkan
Modifier.onFocusedBoundsChanged
eksperimental untuk memungkinkan pengamatan batas turunan yang dapat difokuskan. (I14283, b/220030968, b/190539358, b/192043120, b/216842427) - LazyHorizontalGrid telah ditambahkan. (I61ae7, b/191238807)
- Menambahkan
LazyVerticalGrid
API baru untuk menentukan ukuran sumbu silang (I17723) - Menambahkan pengubah FocusGroup (I64bc0, b/213508274, b/184670295)
Perbaikan Bug
WindowInsets.toString()
sekarang akan menampilkan nilai yang benar. (I1585d)
Kontribusi Eksternal
- Diupdate untuk menggunakan coroutine Kotlinx 1.6.0 (I3366d)
Versi 1.2.0-alpha04
23 Februari 2022
androidx.compose.foundation:foundation:1.2.0-alpha04
dan androidx.compose.foundation:foundation-layout:1.2.0-alpha04
dirilis. Versi 1.2.0-alpha04 berisi commit ini.
Perubahan API
BringIntoViewResponders
tidak lagi diperlukan untuk meneruskan permintaan secara manual ke responder induk, dan justru diperlukan untuk segera menampilkan persegi panjang yang diinginkan agar ditampilkan oleh induknya. (I8e66a)- Mendukung pemuatan font asinkron di Text (I77057, b/214587005)
LazyVerticalGrid
kini mendukungline breaking
sebelum item dengan span tidak sesuai di dalam baris saat ini. (I05c40, b/207462103)- Nama
excludeFromSystemGestures
diganti menjadisystemGesturesExclusion
(I19526) LazyVerticalGrid
kini mendukung reverseLayout. (I6d7d7, b/215572963, b/211753558)- Menambahkan metode
WindowInsets.only()
agar developer hanya dapat menyertakan dimensi dari WindowInsets. (I14c94, b/217768486) Menambahkan
ComposableTarget
,ComposableTargetMarker
, danComposableOpenTarget
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
atauReusableComposeNode
perlu menambahkan anotasiCompoableTarget
untuk fungsi dan jenis parameter lambda composable. Namun, sebaiknya buat anotasi yang dianotasikan denganComposableTargetMarker
, lalu anotasi yang ditandai akan digunakan sebagai gantiComposableTarget
secara langsung. Anotasi composable yang ditandai denganComposableTargetMarker
setara denganComposbleTarget
dengan nama class atribut yang sepenuhnya memenuhi syarat sebagai parameter applier. Untuk contoh penggunaanComposableTargetMarker
, lihatanroidx.compose.ui.UiComposable
. (I38f11)
Perbaikan Bug
- Sekarang Anda dapat meneruskan offset scroll negatif ke dalam
LazyGridState.scrollToItem()
danLazyGridState.animateScrollToItem()
. (I025c6, b/211753558) - Mendukung pemuatan font asinkron untuk TextField. (Icc4bf, b/214587005)
Versi 1.2.0-alpha03
9 Februari 2022
androidx.compose.foundation:foundation:1.2.0-alpha03
dan androidx.compose.foundation:foundation-layout:1.2.0-alpha03
dirilis. Versi 1.2.0-alpha03 berisi commit ini.
Perubahan API
- Metode
notifyFocusedRect
diTextInputSession
danTextInputService
kini tidak digunakan lagi dan tidak akan dipanggil. Sebagai gantinya, gunakanBringIntoViewRequester
. (Ia4302, b/192043120, b/216842427, b/178211874) - Animasi diaktifkan untuk item petak lambat dengan Modifier.animateItemPlacement(). (Ib6621, b/211753218)
BringIntoViewRequester
sekarang menyebarkan permintaan ke View Android hosting. (Ia7a51)FontFamilyResolver
kini tersedia melaluiLocalFontFamilyResolver.current
- Menambahkan
createFontFamilyResolver(context)
dancreateFontFamilyResolver(context, coroutineScope)
untuk membuat resolver FontFamily baru di luar penggunaan Compose. - Paragraph dan MultiParagraph sekarang menggunakan
FontFamily.Resolver
TextLayoutResult.layoutInput.fontFamilyResolver
kini berisi resolver yang digunakan untuk tata letak ini,TextLayoutResult.layoutInput.resourceLoader
tidak digunakan lagi. (Id5a45, b/174162090)
- Menambahkan
- Menambahkan
AndroidFont
, API tingkat rendah baru untuk menyediakan jenis deskripsi resource font baru di Android. Misalnya, memuat font dari backend khusus aplikasi, secara opsional mendeteksi font yang sudah diinstal di perangkat, atau memuat font dari resource yang tidak disediakan oleh factory Font saat ini.- Memperluas API
Font.ResourceLoaded
untuk mendukung pemuatan font opsional dan asinkron. Sebaiknya developer aplikasi tidak menggunakan API ini secara langsung. Untuk menambahkan jenis font baru, lihat AndroidFont. - Fungsi ekstensi
Font.AndroidResourceLoader
memungkinkan konstruksiFont.ResourceLoader
saat berada di luar komposisi. - Menambahkan parameter
loadingStrategy
ke font berbasis resource, untuk memungkinkan pemuatan asinkron saat font resource mereferensikan XML font yang dapat didownload. (Ie5aea, b/174162090)
- Memperluas API
- Konstruktor
Typeface(FontFamily)
tidak digunakan lagi. Konstruktor ini sebelumnya digunakan untuk melakukan pramuat font, yang mungkin memerlukan waktu hingga 10 detik untuk font yang dapat didownload. Dengan font yang dapat didownload, panggilan ini dapat diblokir selama 10 detik. Sebagai gantinya, gunakanFontFamilyResolver.preload
fontResource(FontFamily): Typeface
tidak digunakan lagi. Konstruktor ini sebelumnya digunakan untuk melakukan pramuat font, yang mungkin memerlukan waktu hingga 10 detik untuk font yang dapat didownload. Sebagai gantinya, gunakanFontFamilyResolver.preload
(If8e7c, b/174162090)
- Anda sekarang dapat menentukan jenis konten untuk item
LazyVerticalGrid
- fungsi item/beberapa item diLazyGridScope
sekarang menerima parameter tersebut. Menyediakan informasi tersebut akan membantu komposisi item menggunakan kembali logika sehingga membuatnya lebih efisien dan hanya menggunakan kembali konten di antara item dengan jenis yang serupa. (I7b355, b/215372836) LazyListLayoutInfo
danLazyGridLayoutInfo
sekarang memiliki properti baru:viewportSize
,orientation
,reverseLayout
(Ifc8ed, b/200920410)- Anda sekarang dapat menentukan jenis konten untuk item LazyColumn/LazyRow - fungsi item/beberapa item di LazyListScope sekarang menerima parameter tersebut. Menyediakan informasi tersebut akan membantu komposisi item menggunakan kembali logika sehingga membuatnya lebih efisien dan hanya menggunakan kembali konten di antara item dengan jenis yang serupa. (I26506)
- Konstruktor
SubcomposeLayoutState
yang menerimamaxSlotsToRetainForReuse
kini tidak digunakan lagi. Sebagai gantinya, ada konstruktor baru yang menerimaSubcomposeSlotReusePolicy
- antarmuka baru yang memungkinkan kontrol lebih terperinci tentang slot yang harus dipertahankan untuk penggunaan ulang masa mendatang. (I52c4d) - Menambahkan Pengubah untuk WindowInsets, untuk padding dan penentuan ukuran. Hal ini memungkinkan beberapa konten diperluas ke area inset, dan masih memiliki konten utama yang tetap berada di luar area inset. Misalnya, windowInsetsPadding dapat digunakan untuk melakukan padding area konten guna menghindari area yang tertutup sepenuhnya atau sebagian. (Id0395, b/213942085)
Perbaikan Bug
- Kini TextFields akan dipertahankan di atas keyboard saat
difokuskan dan keyboard akan ditampilkan, jika mode input virtual adalah
ADJUST_PAN
. (I8eaeb, b/190539358, b/192043120) - Desktop menggunakan komposisi lokal untuk
FontFamily.Resolver
- Desktop
FontLoader
tidak digunakan lagi - Factory
createFontFamilyResolver
baru di Desktop (I6bbbb, b/174162090)
- Desktop
- Jenis input keyboard virtual tidak lagi berkedip saat mengubah fokus di antara kolom teks. (I1bf50, b/187746439)
- Kolom teks tidak lagi memerlukan penekanan tombol back tambahan saat handle kursor ditampilkan. (Ideb4b, b/205726883)
- Perilaku kaca pembesar pemilihan teks telah ditingkatkan agar sesuai dengan kaca pembesar platform. (Idd918, b/206833278)
Versi 1.2.0-alpha02
26 Januari 2022
androidx.compose.foundation:foundation:1.2.0-alpha02
dan androidx.compose.foundation:foundation-layout: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 Pengubah
excludeFromSystemGesture
untuk akses yang mudah kesetSystemGestureExclusionRects
Android (I46f07)
Perbaikan Bug
- Perilaku kaca pembesar pemilihan teks telah ditingkatkan agar sesuai dengan kaca pembesar platform. (Idd918, b/206833278)
LazyColumn
,LazyRow
,Modifier.verticalScroll
, dan penampung lainnya yang menggunakanModifier.scrollable
sekarang mendukung scroll roda mouse. (I2b5e1, b/198214718)
Versi 1.2.0-alpha01
12 Januari 2022
androidx.compose.foundation:foundation:1.2.0-alpha01
dan androidx.compose.foundation:foundation-layout:1.2.0-alpha01
dirilis. Versi 1.2.0-alpha01 berisi commit ini.
Perubahan API
- Parameter baru
userScrollEnabled
ditambahkan keLazyColumn
,LazyRow
, danLazyVerticalGrid
untuk memungkinkan pengguna menonaktifkan scroll yang dimulai pengguna untuk sementara atau secara permanen melalui gestur sentuh atau tindakan aksesibilitas. Melakukan scroll secara terprogram melalui metode pada status akan tetap diizinkan. (I7eae9, b/201150093) - Menambahkan callback
onSizeChanged
ke pengubah kaca pembesar. (I6879f) - Widget kaca pembesar sekarang ditampilkan saat menarik tuas pemilihan
dalam
SelectionContainer
. (I30b38, b/139320979)
Perbaikan Bug
- Memperbaiki tuas kursor
TextField
yang tidak disembunyikan saat di-scroll keluar tampilan. (I14552, b/208883748)
Update Dependensi
- Sekarang bergantung pada Kotlin
1.6.10
.
Versi 1.1
Versi 1.1.1
23 Februari 2022
androidx.compose.foundation:foundation:1.1.1
dan androidx.compose.foundation:foundation-layout:1.1.1
dirilis. Versi 1.1.1 berisi commit ini.
Perbaikan Bug
- Memperbaiki
NullPointerException
diandroidx.compose.ui.platform.RenderNodeLayer.updateDisplayList
(aosp/1947059, b/206677462) - Memperbaiki error yang disebabkan oleh konten papan klip saat membaca dari papan klip di Android. (I06020, b/197769306)
- Memperbaiki RTL di
LazyVerticalGrid
(aosp/1931080, b/207510535)
Versi 1.1.0
9 Februari 2022
androidx.compose.foundation:foundation:1.1.0
dan androidx.compose.foundation:foundation-layout: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 yang stabil untuk Navigation Rail
- Menstabilkan sejumlah API yang sebelumnya masih eksperimental
- Dukungan untuk versi Kotlin yang lebih baru
Versi 1.1.0-rc03
26 Januari 2022
androidx.compose.foundation:foundation:1.1.0-rc03
dan androidx.compose.foundation:foundation-layout:1.1.0-rc03
dirilis. Versi 1.1.0-rc03 berisi commit ini.
Perbaikan Bug
- Diupdate agar mendukung Compose Material 1.1.0-rc03
Versi 1.1.0-rc01
15 Desember 2021
androidx.compose.foundation:foundation:1.1.0-rc01
dan androidx.compose.foundation:foundation-layout:1.1.0-rc01
dirilis. Versi 1.1.0-rc01 berisi commit berikut ini.
Perbaikan Bug
- Sekarang Anda dapat meneruskan offset scroll negatif ke dalam
LazyListState.scrollToItem()
danLazyListState.animateScrollToItem()
. (Iceb90, b/184252837) - Memperbaiki bug yang menyebabkan tindakan scroll aksesibilitas tidak ada (I7cbfb)
Versi 1.1.0-beta04
1 Desember 2021
androidx.compose.foundation:foundation:1.1.0-beta04
dan androidx.compose.foundation:foundation-layout:1.1.0-beta04
dirilis. Versi 1.1.0-beta04 berisi commit ini.
Fitur Baru
- Diupdate agar kompatibel dengan Kotlin
1.6.0
Perubahan API
- Membersihkan nullability di
androidx.core.view
(I7078a, b/204917439) - API eksperimental telah ditambahkan sehingga PointerInputchange dapat digunakan secara keseluruhan atau periksa apakah API tersebut digunakan atau tidak. (I2e59d)
- Menampilkan widget kaca pembesar saat menarik kursor atau tuas pemilihan di dalam kolom teks. (I5391e, b/203781358)
Perbaikan Bug
- Memperbaiki tuas teks yang tidak bergerak jika visibilitas IME berubah. (I25f2e)
Versi 1.1.0-beta03
17 November 2021
androidx.compose.foundation:foundation:1.1.0-beta03
dan androidx.compose.foundation:foundation-layout:1.1.0-beta03
dirilis. Versi 1.1.0-beta03 berisi commit ini.
Perubahan API
- Dukungan untuk span horizontal ditambahkan ke LazyVerticalGrid. (I7e2fa, b/176758183)
Kemampuan eksperimental untuk menganimasikan posisi item daftar Lazy telah ditambahkan. Tersedia pengubah baru yang tersedia dalam LazyItemScope yang disebut
Modifier.animateItemPlacement()
. Contoh penggunaan:var list by remember { mutableStateOf(listOf("A", "B", "C")) } LazyColumn { item { Button(onClick = { list = list.shuffled() }) { Text("Shuffle") } } items(list, key = { it }) { Text("Item $it", Modifier.animateItemPlacement()) } }
- Saat Anda memberikan kunci melalui
LazyListScope.item
atauLazyListScope.items
, pengubah ini akan mengaktifkan animasi pengurutan ulang item. Selain mengubah urutan item, semua perubahan posisi lainnya yang disebabkan oleh peristiwa seperti perubahan pengaturan atau perataan juga akan menjadi animasi. (I59e7b, b/150812265)
- Saat Anda memberikan kunci melalui
Versi 1.1.0-beta02
3 November 2021
androidx.compose.foundation:foundation:1.1.0-beta02
dan androidx.compose.foundation:foundation-layout: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) - Menambahkan BringIntoView API eksperimental yang memungkinkan Anda mengirim permintaan ke induk agar men-scroll untuk menampilkan item (Ib918d, b/195353459)
Kontribusi Eksternal
- Menambahkan
Modifier.pointerHoverIcon
(I95f01)
Versi 1.1.0-beta01
27 Oktober 2021
androidx.compose.foundation:foundation:1.1.0-beta01
dan androidx.compose.foundation:foundation-layout:1.1.0-beta01
dirilis. Versi 1.1.0-beta01 berisi commit berikut.
Perbaikan Bug
- Menambahkan BringIntoView API eksperimental yang memungkinkan Anda mengirim permintaan ke induk agar men-scroll untuk menampilkan item (Ib918d, b/195353459)
Versi 1.1.0-alpha06
13 Oktober 2021
androidx.compose.foundation:foundation:1.1.0-alpha06
dan androidx.compose.foundation:foundation-layout:1.1.0-alpha06
dirilis. Versi 1.1.0-alpha06 berisi commit ini.
Perubahan API
- Overload tanpa turunan untuk Tata Letak telah ditambahkan, dengan peningkatan efisiensi (Ib0d9a)
SemanticsNodeInteraction.performSemanticsAction
sekarang menampilkanSemanticsNodeInteraction
tempat fungsi dipanggil. (I9e5db)- Menambahkan
performScrollToNode(matcher: SemanticsMatcher)
yang men-scroll container yang dapat di-scroll ke konten yang cocok dengan matcher yang diberikan. (Ic1cb8)
Versi 1.1.0-alpha05
29 September 2021
androidx.compose.foundation:foundation:1.1.0-alpha05
dan androidx.compose.foundation:foundation-layout:1.1.0-alpha05
dirilis. Versi 1.1.0-alpha05 berisi commit berikut ini.
Perubahan API
- Menambahkan pointer historis eksperimental ke PointerEventChange. (Ic1fd8, b/197553056, b/199921305)
Perbaikan Bug
- Memperbaiki dukungan aksesibilitas untuk scrollable (lambat dan tidak lambat) terkait scroll (I6cdb0)
Versi 1.1.0-alpha04
15 September 2021
androidx.compose.foundation:foundation:1.1.0-alpha04
dan androidx.compose.foundation:foundation-layout:1.1.0-alpha04
dirilis. Versi 1.1.0-alpha04 berisi commit berikut ini.
Perubahan API
performGesture
danGestureScope
tidak digunakan lagi, telah diganti denganperformTouchInput
danTouchInjectionScope
. (Ia5f3f, b/190493367)- Menambahkan
touchBoundsInRoot
keSemanticsNode
termasuk ukuran target sentuh minimum sehingga developer dapat memastikan bahwa target sentuh memenuhi batas minimum aksesibilitas. (I2e14b, b/197751214)
Perbaikan Bug
- Dukungan untuk overscroll regangan telah ditambahkan di perangkat Android 12. (Iccf3c, b/171682480)
Versi 1.1.0-alpha03
1 September 2021
androidx.compose.foundation:foundation:1.1.0-alpha03
dan androidx.compose.foundation:foundation-layout:1.1.0-alpha03
dirilis. Versi 1.1.0-alpha03 berisi commit berikut ini.
Fitur Baru
- Mengupdate Compose
1.1.0-alpha03
agar bergantung pada Kotlin1.5.30
. (I74545)
Perubahan API
- Efek glow untuk scroll telah ditambahkan. OverScrollConfiguration API eksperimental baru telah ditambahkan untuk memungkinkan konfigurasi efek visual overscroll. Menyediakan null untuk menonaktifkan efek overscroll. (I0c304, b/171682480)
- AwaitPointerEventScope sekarang memiliki withTimeout() dan withTimeoutOrNull() (I507f0, b/179239764, b/182397793)
- 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.foundation:foundation:1.1.0-alpha02
dan androidx.compose.foundation:foundation-layout:1.1.0-alpha02
dirilis. Versi 1.1.0-alpha02 berisi commit berikut ini.
Perubahan API
- Menambahkan versi DpSize untuk
Modifier.size
danrequiredSize
(I3fc7e, b/194219828)
Versi 1.1.0-alpha01
4 Agustus 2021
androidx.compose.foundation:foundation:1.1.0-alpha01
dan androidx.compose.foundation:foundation-layout: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) - Kini TextField akan menghapus pilihan saat tombol kembali ditekan, yang cocok dengan perilaku EditText Android. (I3ca16, b/174173645)
- Menambahkan Handel Kursor. (I07a82, b/173016579)
Perbaikan Bug
- Scrolling melalui tindakan semantik untuk lazy list dan komponen scroll reguler kini dianimasikan (Id9066, b/190742024)
Kontribusi Eksternal
LazyVerticalGrid
kini menerima parameter pengaturan horizontal dan vertikal. (If9c92)
Versi 1.0
Versi 1.0.5
3 November 2021
androidx.compose.foundation:foundation:1.0.5
dan androidx.compose.foundation:foundation-layout: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.foundation:foundation:1.0.4
dan androidx.compose.foundation:foundation-layout: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.foundation:foundation:1.0.3
dan androidx.compose.foundation:foundation-layout: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.foundation:foundation:1.0.2
dan androidx.compose.foundation:foundation-layout:1.0.2
dirilis. Versi 1.0.2 berisi commit berikut 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.foundation:foundation:1.0.1
dan androidx.compose.foundation:foundation-layout:1.0.1
dirilis. Versi 1.0.1 berisi commit berikut ini.
Update Dependensi
- Diupdate agar bergantung pada Kotlin
1.5.21
.
Versi 1.0.0
28 Juli 2021
androidx.compose.foundation:foundation:1.0.0
dan androidx.compose.foundation:foundation-layout: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 AGP7.1
. (b/194289155)
Versi 1.0.0-rc02
14 Juli 2021
androidx.compose.foundation:foundation:1.0.0-rc02
dan androidx.compose.foundation:foundation-layout:1.0.0-rc02
dirilis. Versi 1.0.0-rc02 berisi commit berikut ini.
- Mengupdate rendering batas untuk bentuk umum guna mengatasi masalah pada jalur yang ditentukan dengan dimensi tetap. (aosp/1748871, b/191817116)
Versi 1.0.0-rc01
1 Juli 2021
androidx.compose.foundation:foundation:1.0.0-rc01
dan androidx.compose.foundation:foundation-layout:1.0.0-rc01
dirilis. Versi 1.0.0-rc01 berisi commit berikut ini.
Perubahan API
- Canvas sekarang mendukung parameter contentDescription untuk aksesibilitas. (Ib547c)
Perbaikan Bug
- Tombol, Kartu, Kotak Centang, dan semua
Modifier.clickable(enabled=false)
yang dinonaktifkan akan memblokir klik agar tidak naik ke induk. (Ic2c3b, b/183908811)
Versi 1.0.0-beta09
16 Juni 2021
androidx.compose.foundation:foundation:1.0.0-beta09
dan androidx.compose.foundation:foundation-layout:1.0.0-beta09
dirilis. Versi 1.0.0-beta09 berisi commit berikut ini.
Perubahan API
ManualFrameClock
dihapus. Jika Anda perlu mengontrol animasi, gunakancomposeTestRule.mainClock
. (I3c3e8, b/189951065)- ubah enum Role dan LiveRegionMode menjadi class inline dengan konstruktor pribadi (Id1890)
- KeyboardCapitalization dikonversi menjadi class inline. (Id5a1c)
- TextOverflow diubah menjadi class inline. (I433af)
Perbaikan Bug
- Sekarang, saat Anda menentukan kunci unik untuk item LazyColumn/Row, posisi scroll akan dipertahankan berdasarkan kunci, yang berarti jika Anda menambahkan/menghapus item sebelum item yang terlihat saat ini, item dengan kunci yang diberikan akan disimpan sebagai item yang terlihat pertama. (Id263f, b/184257857)
- Untuk sekarang, konstanta kunci adalah @ExperimentalComposeUiApi. Memakai kode dapat mendeklarasikan konstanta pribadi sebelum stabilisasi. (Ia5d48)
- Menambahkan IdlingStrategy ke AndroidComposeTestRule yang dapat
digunakan oleh framework pengujian untuk menginstal mekanisme alternatif agar dapat menunggu
atau mencapai ketenangan. Gunakan
AndroidComposeTestRule.setIdlingStrategyFactory()
sebelum pengujian Anda mulai menginstal strategi Anda sendiri. (I608fa)
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 disrc/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 menggunakanadb 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 karakterH
,S
, danP
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, classandroidx.compose.runtime.SlotTable
akan memiliki deskripsiLandroidx/compose/runtime/SlotTable;
.<METHOD_SIGNATURE>
adalah tanda tangan metode, dan menyertakan nama, jenis parameter, serta jenis nilai yang ditampilkan metode. Misalnya, metodefun isPlaced(): Boolean
padaLayoutNode
memiliki tanda tanganisPlaced()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 aplikasi kemudian dibuat dengan menyertakan artefak tersebut, aturan ini akan digabung menjadi satu dan aturan yang digabungkan akan digunakan untuk membuat profil ART biner ringkas yang khusus untuk aplikasi. ART kemudian dapat memanfaatkan profil ini jika aplikasi tersebut diinstal di perangkat untuk kompilasi awal subset tertentu dari aplikasi guna meningkatkan performa aplikasi, terutama saat pertama kali dijalankan. Perhatikan bahwa tindakan ini tidak akan berpengaruh pada aplikasi yang dapat di-debug.
Versi 1.0.0-beta08
2 Juni 2021
androidx.compose.foundation:foundation:1.0.0-beta08
dan androidx.compose.foundation:foundation-layout:1.0.0-beta08
dirilis. Versi 1.0.0-beta08 berisi commit berikut ini.
Perubahan API
- Enum NestedScrollSource digantikan oleh class inline. (Ie321b, b/187055290)
- 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 denganModifier.focusTarget()
(I6c860)- Enum KeyboardType digantikan oleh class inline. (I73045, b/187055290)
- Mengganti enum
FocusState
dengan antarmukaFocusState
(Iccc1a, b/187055290) - Enum ImeAction digantikan oleh class inline. (I18be5, b/187055290)
- Fungsi
AnnotatedString.withAnnotation
sekarang menjadi ExperimentalTextApi, bukan ExperimentalComposeApi. (I0cd0a)- Konstruktor TextUnit dengan TextUnitType sekarang menjadi ExperimentalTextApi, bukan ExperimentalComposeApi.
- PaddingValues sekarang menjadi
@Stable
, bukan@Immutable
(I88c50)
Perbaikan Bug
- Memperbaiki error saat menekan lama area kosong dalam teks yang tidak kosong. (I33ab5, b/187437299)
- Menampilkan Toolbar setelah SelectAll (I495d9, b/185919613)
- Perbaikan untuk penampung yang dapat di-scroll yang menyesuaikan turunannya di sumbu silang. Cara ini mudah direproduksi jika Anda memiliki LazyRow dengan item Kartu. Kini bayangan tidak akan disesuaikan. (Icb635, b/186318448)
- Memperbaiki masalah saat ripple/indikasi lain terkadang macet saat mengklik lama bila menggunakan Modifier.combinedClickable (I2298c, b/186223077)
detectDragGesures
,detectVerticalGestures
, dandetectHorizontalGestures
sekarang akan otomatis menggunakan perubahan posisi tanpa perlu memanggil change.consumePositionChange dalam callback onDrag (I42fc4, b/185096350, b/187320697)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)
Versi 1.0.0-beta07
18 Mei 2021
androidx.compose.foundation:foundation:1.0.0-beta07
dan androidx.compose.foundation:foundation-layout:1.0.0-beta07
dirilis. Versi 1.0.0-beta07 berisi commit berikut ini.
Perubahan API
- Logika pengambilan data item yang terlihat berikutnya diperkenalkan untuk LazyColumn/Row (I8a4bc, b/184940225)
- Menambahkan Tuas Pemilihan Klip (Iff80d, b/183408447)
Perbaikan Bug
- LazyColumn/Row sekarang akan mempertahankan hingga 2 item yang sebelumnya terlihat aktif (tidak dibuang) meskipun item tersebut ter-scroll. Ini memungkinkan komponen untuk menggunakan kembali subkomposisi yang aktif ketika kita perlu membuat item baru yang meningkatkan performa scroll. (Ie5555)
- Menghapus paintBackground. (I38660)
- Menggambar Latar Belakang Pemilihan menggunakan DrawScope. (I73c61, b/186674472)
- Regresi beta06 yang memengaruhi Row/Column menggunakan pengaturan spacedBy untuk menata letak turunan tertimbang telah diperbaiki. (Ifaf8c, b/187326588)
Versi 1.0.0-beta06
5 Mei 2021
androidx.compose.foundation:foundation:1.0.0-beta06
dan androidx.compose.foundation:foundation-layout:1.0.0-beta06
dirilis. Versi 1.0.0-beta06 berisi commit berikut.
Perubahan API
- Mengatasi Konflik dengan Gestur Navigasi (I1145e)
- Menambahkan API aksesibilitas CollectionInfo dan CollectionItemInfo yang memungkinkan untuk menandai koleksi beserta itemnya untuk layanan aksesibilitas (Id54ef, b/180479017)
- Menambahkan
SemanticsActions.ScrollToIndex
untuk men-scroll daftar dengan item yang diindeks ke item dengan indeks tertentu, danSemanticsProperties.IndexForKey
guna mendapatkan indeks item dalam daftar dengan item yang terkunci. Kedua tindakan tersebut diterapkan oleh LazyList.- Menambahkan
SemanticsNodeInteraction.performScrollToIndex
yang men-scroll daftar ke indeks tertentu, danSemanticsNodeInteraction.performScrollToKey
yang men-scroll daftar ke item dengan kunci tertentu. (I4fe63, b/178483889, b/161584524)
- Menambahkan
- AnnotatedString menyimpan dukungan ke TextFieldValue.Saver. Menambahkan fungsi utilitas addTtsAnnotation dan withAnnotation ke AnnotatedString.Builder (I8cbdc, b/178446304)
- Nilai parameter
0.dp
default ditambahkan kePaddingValues(horizontal, vertical)
(I05571, b/181336792)
Perbaikan Bug
- Baris & Kolom turunan dengan
weight(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.foundation:foundation:1.0.0-beta05
dan androidx.compose.foundation:foundation-layout:1.0.0-beta05
dirilis. Versi 1.0.0-beta05 berisi commit berikut ini.
Perubahan API
- Antarmuka FlingBehavior sekarang ditandai sebagai @Stable. Semua implementasi harus mematuhi kontrak
@Stable
. (I93354, b/184830577)
Perbaikan Bug
- Memperbaiki tindakan scroll aksesibilitas
ACTION_SCROLL_FORWARD
,ACTION_SCROLL_BACKWARD
,accessibilityActionScrollLeft
,accessibilityActionScrollUp
,accessibilityActionScrollRight
, danaccessibilityActionScrollDown
. Sekarang tindakan scroll hanya akan men-scroll satu layar ke arah yang ditentukan, bukan lagi men-scroll ke akhir bagian yang dapat di-scroll. (Ieccb0) - File AndroidManifest dari ui-test-manifest dan ui-tooling-data kini kompatibel dengan Android 12 (I6f9de, b/184718994)
Versi 1.0.0-beta04
7 April 2021
androidx.compose.foundation:foundation:1.0.0-beta04
dan androidx.compose.foundation:foundation-layout:1.0.0-beta04
dirilis. Versi 1.0.0-beta04 berisi commit berikut ini.
Perubahan API
- Mengganti nama hideSoftwareKeyboard dan showSoftwareKeyboard pada
SoftwareKeyboardController menjadi
hide()
danshow()
.- Memberikan antarmuka CompositionLocal lengkap untuk LocalSoftwareKeyboardController, sehingga dapat ditetapkan (sangat berguna dalam pengujian) (I579a6)
TextOverflow.Visible
diperkenalkan. (Ic8f89)- Instance publik
RowScope
,ColumnScope
,BoxScope
,BoxWithConstraintsScope
telah dihapus. (I4e83e, b/181869067)
Perbaikan Bug
- Memperbaiki masalah saat item
LazyColumn
/LazyRow
yang terletak di tepi salah diposisikan setelah ayunan jari cepat (Ie4d13, b/183877420) Sebelum perubahan ini, fungsi lokal yang dapat dikomposisi dapat dilewati berdasarkan parameternya. Setelah perubahan ini, tidak ada fungsi composable lokal yang akan terlewat. Perubahan ini dilakukan karena fungsi lokal diharapkan dan umumnya mengambil parameter dari induk. Dilewatinya fungsi lokal juga merupakan sumber bug yang umum.
Singkatnya, pertimbangkan contoh berikut:
@Composable fun Counter(count: Int, onCountChange: (Int) -> Unit) { @Composable fun ShowCount() { Text("Count: $count") } ShowCount() Button(onClick={ onCountChange(count + 1) }) { Text("Increment") } }
Sebelum perubahan ini, fungsi composable
ShowCount
akan selalu dilewati, bahkan setelah parametercount
diperbarui. Namun, sekarang sudah tidak seperti itu lagi. (I5648a)
Versi 1.0.0-beta03
24 Maret 2021
androidx.compose.foundation:foundation:1.0.0-beta03
dan androidx.compose.foundation:foundation-layout:1.0.0-beta03
dirilis. Versi 1.0.0-beta03 berisi commit berikut ini.
Perubahan API
DefaultMonotonicFrameClock
tidak digunakan lagi. MemanggilwithFrameNanos
atauRecomposer.runRecomposeAndApplyChanges
tanpaMonotonicFrameClock
sekarang akan menampilkanIllegalStateException
. (I4eb0d)
Perbaikan Bug
FlingBehavior.performFling()
kini dipanggil bahkan ketika kecepatan bernilai 0 (I0b6e5, b/181237123)
Versi 1.0.0-beta02
10 Maret 2021
androidx.compose.foundation:foundation:1.0.0-beta02
dan androidx.compose.foundation:foundation-layout:1.0.0-beta02
dirilis. Version 1.0.0-beta02 berisi commit berikut ini.
Perubahan API
- Beberapa pengoptimalan kecil di logika pengukuran LazyColumn telah ditambahkan (Ic6889)
- Menambahkan API lokal komposisi
LocalSoftwareKeyboardController
baru untuk menggantikan antarmuka SoftwareKeyboardController sebelumnya di TextField. (I5951e, b/168778053) - Menambahkan API lokal komposisi
LocalSoftwareKeyboardController
baru untuk menggantikan antarmuka SoftwareKeyboardController sebelumnya di TextField. (I84472, b/168778053)
Perbaikan Bug
- Menerapkan batasan di penggunaan publik API eksperimental (I6aa29, b/174531520)
Versi 1.0.0-beta01
24 Februari 2021
androidx.compose.foundation:foundation:1.0.0-beta01
dan androidx.compose.foundation:foundation-layout:1.0.0-beta01
dirilis. Versi 1.0.0-beta01 berisi commit berikut ini.
Ini adalah rilis pertama Compose 1.0.0 Beta.
Perubahan API
- Callback onStart telah ditambahkan ke
detectDragGestures
(I67269, b/179995594) - 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)
- MeasureBlocks berganti nama ke MeasurePolicy yang menjadi antarmuka yang menarik. Layout API telah diperbarui/disederhanakan untuk menggunakan MeasurePolicy. (Icab48, b/167662468, b/156751158)
InteractionState
telah diganti dengan[Mutable]InteractionSource
- Antarmuka bertanggung jawab untuk mengirimkan/mengumpulkan peristiwa Interaksi.
- Daripada meneruskan
interactionState = remember { InteractionState() }
ke komponen sepertiButton
danModifier.clickable()
, gunakaninteractionSource = 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)
- Menghapus metode LayoutCoordinates yang tidak digunakan lagi dan menggunakan fungsi, bukan properti, untuk positionInParent dan boundsInParent (I580ed, b/169874631, b/175142755)
- Membuat TextInputSession baru untuk sesi input dari komponen teks tingkat rendah seperti CoreTextField. (I8817f, b/177662148)
- Placeable sekarang mengekspos measuredSize, yang menunjukkan ukuran tata letak turunan sebenarnya. Ukuran ini mungkin tidak mengikuti batasan pengukuran. (Ib2729, b/172560206, b/172338608)
- 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() telah berganti nama menjadi animateScrollBy() LazyListState.snapToItemIndex() telah berganti nama menjadi scrollToItem() ScrollState.smoothScrollTo() telah berganti nama menjadi animateScrollTo() (I35ded)
Modifier.zoomable telah menggantikan my Modifier.transformable. smoothPanBy, smoothRotationBy telah ditambahkan sebagai fungsi. (Ifc32b, b/175294473)
defaultFactory
untukcompositionLocalOf
danstaticCompositionLocalOf
sekarang bersifat wajib, bukan opsional.Perubahan ini menghapus error jenis potensial untuk jenis non-nullable jika tidak ada factory default yang tersedia. Sebelumnya, perubahan ini akan menyediakan referensi null untuk jenis non-nullable.
Untuk jenis nullable, pertimbangkan untuk menyediakan
{ null }
sebagai factory default.Sebaiknya jangan gunakan lokal dengan jenis non-nullable kecuali jika default yang logis tersedia. Jika tidak ada default yang logis, lambda
defaultFactory
akan memunculkan pengecualian. Namun, memunculkan pengecualian berarti bahwa konsumen lokal akan memiliki dependensi implisit yang diberikan yang tidak diterapkan oleh sistem jenis. (Ifbd2a)Mengubah
Indication#createIndication()
menjadiIndication#rememberUpdatedIndication(InteractionState)
dan menghapus parameterInteractionState
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 dalamrememberUpdatedIndication()
. Parameterindication
diModifier.indication
juga diubah menjadi parameter wajib. (Ic1764, b/152525426)Tindakan teks sekarang otomatis memeriksa fokus (I13777, b/179648629)
Menghapus
runBlockingWithManualClock
(I15cdc, b/179664814)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)
Modifier.tapGestureFilter telah dihapus. Sebagai gantinya, gunakan
Modifier.pointerInput { detectTapGestures(...) }
. (I266ed, b/175294473)konsumsi parsial dihapus dari sistem input pointer. Cara yang disarankan untuk mengoordinasi konsumsi parsial adalah Modifier.nestedScroll. (Ie9c9b)
Orientation telah dipindahkan ke paket foundation. VelocirtTracker dipindahkan dari ui.gesture ke ui.input.pointer. (Iff4a8, b/175294473)
AnimationClockObservable dan subclass telah dihapus. AnimatedFloat telah dihapus. (Icde52, b/177457083)
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)Pengubah requiredWidth(IntrinsicSize) dan requiredHeight(IntrinsicSize) ditambahkan untuk ukuran yang diperlukan ke ukuran instrinsik. (I0a6b4)
emptyContent()
yang tidak digunakan lagi akan dihapus. Sebagai gantinya, gunakan{}
. (Idb33f, b/179432510)Menghapus beberapa API sebelumnya yang tidak digunakan lagi (Ice5da, b/178633932)
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.foundation:foundation:1.0.0-alpha12
dan androidx.compose.foundation:foundation-layout:1.0.0-alpha12
dirilis. Versi 1.0.0-alpha12 berisi commit berikut ini.
Perubahan API
- Modifier.pointerInput sekarang mengharuskan kunci remember untuk menunjukkan kapan coroutine deteksi input pointer harus dimulai ulang untuk dependensi baru. (I849cd)
- Pembaruan pengujian: hasText() akan memeriksa teks input dan label/petunjuk/placeholder di kolom teks (Iab803)
- 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)
- API pengujian substring yang lebih baik dengan substring sekarang sebagai argumen (Icbe78)
- Memperkenalkan elemen konteks coroutine
InfiniteAnimationPolicy
yang akan diimplementasikan dalam animasi tak terbatas. Secara default tidak ada kebijakan yang diinstal, kecuali saat menjalankan pengujian denganComposeTestRule
. (I50ec4, b/151940543) - 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)
Dukungan tombol kustom untuk LazyColumn/LazyRow telah ditambahkan. Hal ini memungkinkan kami menangani penataan ulang item dengan lebih cerdas. Dengan demikian, status yang Anda simpan di blok remember {} akan dipindahkan bersama item saat Anda mengurutkan ulang elemen atau menghapus item dari tengah.
LazyColumn { items(users, key = { user -> user.id }) { ... } }
Mengubah Indication#createInstance menjadi @Composable, dan mengubah LocalIndication untuk memuat sebuah Indication, bukan () -> Indication. (I5eeea, b/157150564)
Constraints.enforce
diganti denganConstraints.constrain
. (I8b8ea)loadFontResource tidak digunakan lagi. Sebagai gantinya, gunakan fontResource. imageResource, loadImageResource, vectorResource, dan loadVectorResource tidak digunakan lagi. Sebagai gantinya, gunakan painterResource. (I6b809)
Untuk alasan performa, semantik ScrollAxisRange sekarang mengambil lambda yang menampilkan Float, bukan nilai Float langsung. (If4a35, b/178657186)
Menambahkan semantik EditableText untuk menandai teks input yang dapat diedit pada kolom teks untuk aksesibilitas dan metode pengujian yang sesuai guna memeriksa semantik (I8e07a)
Modifier.clickable sekarang tidak memiliki dukungan klik lama dan dua kali. Gunakan Modifier.combinedClickable untuk mendapatkan fungsi ini. (Iafad1)
toIntPx() diganti namanya menjadi roundToPx(). (I9b7e4, b/173502290)
IntBounds diganti namanya menjadi IntRect dan API-nya telah diperbaiki. (I1f6ff)
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 sepertiremember { mutableStateOf(0) }
, kami juga akan menghapus composablesavedInstanceState { 0 }
. Sebagai gantinya, Anda harus menggunakanrememberSaveable { mutableStateOf(0) }
dan tindakan ini akan disimpan dan otomatis dipulihkan jika jenis yang digunakan dalam MutableState dapat disimpan di Paket. Jika sebelumnya Anda meneruskan objek saver kustom, sekarang Anda harus menggunakan overload rememberSaveable baru yang memiliki parameterstateSaver
. Penggunaannya akan terlihat seperti ini:val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) }
(Ib4c26, b/177338004)Menambahkan semantik sandi untuk aksesibilitas (I231ce)
Menambahkan ProgressBarRangeInfo.Indeterminate guna menandai status progres tidak pasti untuk aksesibilitas (I6fe05)
Waktu putar dalam animasi sekarang digabungkan menjadi nanodetik (If776a)
@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)Kini Recomposer dapat ditutup. Recomposer yang ditutup akan melanjutkan rekomposisi hingga coroutine turunan komposisi selesai. Recomposer.shutDown diganti namanya menjadi cancel untuk membedakannya dengan close. (Ib6d76)
API yang terkait ke LazyVerticalGrid ditandai sebagai eksperimental (Ia53e3, b/178519862)
rememberSavedInstanceState() telah diganti namanya menjadi rememberSaveable() dan dipindahkan ke paket androidx.compose.runtime.saveable. (I1366e, b/177338004)
RestorableStateHolder diganti namanya menjadi SaveableStateHolder dan dipindahkan ke paket androidx.compose.runtime.saveable. Metode internal RestorableStateProvider diganti namanya menjadi SaveableStateProvider. Jenis umum telah dihapus agar Anda dapat meneruskan Any sebagai kunci. Anotasi eksperimental tidak diperlukan lagi. (I0902e, b/174598702)
Saver, listSaver(), mapSaver(), dan autoSaver telah dipindahkan dari androidx.compose.runtime.savedinstancestate ke androidx.compose.runtime.saveable (I77fe6)
Artefak androidx:compose:runtime:runtime-saved-instance-state diganti namanya menjadi androidx:compose:runtime:runtime-saveable (I6dcac)
Banyak API lama yang tidak digunakan lagi dalam paket UI akan dihapus. (I2f2dc)
Artefak compose:runtime-dispatch sekarang tidak digunakan lagi. MonotonicFrameClock sekarang dapat ditemukan di compose:runtime dan AndroidUiDispatcher dapat ditemukan di compose:ui. (Ib5c36)
Parameter di RounderCornerShape, CutCornerShape, dan CornerBasedShape telah diganti namanya dari kiri/kanan menjadi awal/akhir untuk mendukung pencerminan otomatis bentuk di arah rtl. AbsoluteRounderCornerShape dan AbsoluteCutCornerShape digunakan saat pencerminan otomatis tidak diinginkan. (I61040, b/152756983)
canDrag telah dihapus dari Modifier.scrollable. (Id66e7, b/175294473)
API yang menjadi target plugin compiler Compose telah difaktorkan ulang agar dapat menggunakan antarmuka, bukan class konkret. Antarmuka juga tidak lagi menggunakan parameter jenis.
Perubahan internal ini seharusnya tidak memengaruhi kompatibilitas kode sumber, tetapi merupakan perubahan yang dapat menyebabkan gangguan biner. (I3b922, b/169406779)
Modifier.scaleGestureFilter telah dihapus. Sebagai gantinya, gunakan Modifier.zoomable. Atau, gunakan
Modifier.pointerInput { detectMultitouchGestures { ... }}
(Id5da1, b/175294473)AnimatedValue/Float sekarang tidak digunakan lagi. Sebagai gantinya, gunakan Animatable. (I71345, b/177457083)
- Menghapus CoreText dan CoreTextField dari API publik
- Menghapus overload SelectionContainer yang tidak digunakan lagi (I99c19)
Menghapus fungsi scrolling non-penangguhan yang sudah tidak berlaku. Melanjutkan perubahan dari fungsi scrolling non-penangguhan yang terakhir dirilis sekarang dihapus sepenuhnya. Konversikan ke fungsi penangguhan dengan nama yang sama. Cakupan coroutine dapat diperoleh melalui rememberCoroutineScope(). (I3d39c, b/178169563)
androidx.compose.foundation.layout.ConstraintLayout tidak digunakan lagi dan digantikan dengan androidx.constraintlayout.compose.ConstraintLayout. Anda perlu menambahkan dependensi pada
androidx.constraintlayout:constraintlayout-compose:1.0.0-alpha01
. (I87adc)tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter, dan pressIndicaitonGestureFilter tidak digunakan lagi. Sebagai gantinya, gunakan Modifier.clickable atau Modifier.pointerInput dengan fungsi detectTapGestures. (I6baf9, b/175294473)
Menghapus
Recomposer.current()
. [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)Recomposer.runningRecomposers sekarang menawarkan StateFlow global dari RecomposerInfo yang hanya dapat dibaca untuk mengamati status komposisi yang sedang berlangsung dalam proses. Pilih API ini daripada Recomposer.current(), yang sekarang tidak digunakan lagi. (If8ebe)
Versi 1.0.0-alpha11
28 Januari 2021
androidx.compose.foundation:foundation:1.0.0-alpha11
dan androidx.compose.foundation:foundation-layout:1.0.0-alpha11
dirilis. Versi 1.0.0-alpha11 berisi commit berikut ini.
Perubahan API
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)
Parameter deskripsi konten telah ditambahkan ke Gambar dan Ikon. Digunakan untuk memberikan deskripsi ke layanan aksesibilitas (I2ac4c)
BasicTextField menerima parameter baru yang bernama 'decorationBox'. Dengan ini, penambahan dekorasi seperti ikon, placeholder, label, dan sejenisnya ke bidang teks dan perluasan area target klik dapat dilakukan. (I16996)
Parameter canDrag telah dihapus dari Modifier.draggable (IC4bec, b/175294473)
AnimatedFloat.fling yang menerima FlingConfig telah dihapus. Sebagai gantinya, gunakan Animatable.animateDecay yang ditangguhkan. (I4659b, b/177457083)
Menghapus
data class
dari kelas berikut:- InlineTextContent
- LocaleList
- (I605c7)
dapat diklik, dapat diubah, dan dapat dipilih, sekarang bisa dibuat di luar komposisi (I0a130, b/172938345, b/175294473)
ScrollableColumn/Row sudah 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)
danitemsIndexed(items: List)
kini merupakan fungsi ekstensi sehingga Anda harus mengimpornya secara manual saat digunakan. Kelebihan ekstensi baru untuk Array: item(item: Array) dan itemsIndexed(Array) (I803fc, b/175562574)AbsoluteArrangement yang tidak digunakan lagi telah dihapus. (Iffa96, b/177641870)
Parameter propagateMinConstraints telah ditambahkan ke Box, untuk menentukan apakah batasan min. yang masuk harus diteruskan ke konten Box atau tidak. Defaultnya adalah false. (I0125b, b/152613457)
Perbaikan Bug
- onCommit, onDispos, dan onActive sudah tidak digunakan lagi dan digantikan dengan API SideEffect dan DisposableEffect (If760e)
- WithConstraints didesain ulang sebagai BoxWithConstraints dan dipindahkan ke foundation.layout. (I9420b, b/173387208)
Perubahan fungsi factory untuk Font/FontFamily/Typeface
- Menambahkan fungsi factory yang dimulai dengan huruf kapital
- Menghentikan penggunaan fungsi factory sebelumnya dengan huruf pertama huruf kecil
- Fungsi factory baru menampilkan FontFamily, bukan subclass
- Menyembunyikan konstruktor subclass, sehingga hanya dapat dikonstruksi melalui fungsi factory.
- Mengganti nama Font.asFontFamily menjadi Font.toFontFamily
- (I42aa7)
Memperkenalkan
ComposeContentTestRule
, yang memperluasComposeTestRule
dan menentukansetContent
, yang telah dihapus dariComposeTestRule
. Menambahkan metode factorycreateEmptyComposeRule()
yang menampilkanComposeTestRule
dan tidak meluncurkan Aktivitas untuk Anda. Gunakan ini jika Anda ingin meluncurkan Aktivitas selama pengujian, misalnya menggunakanActivityScenario.launch
(I9d782, b/174472899)animateAsState sekarang menjadi animateFooAsState dengan Foo merupakan jenis variabel yang dianimasikan. misalnya, Float, Dp, Offset, dll. (Ie7e25)
Kepadatan sekarang menjadi cakupan penerima untuk antarmuka Arrangement. (I18aad)
TextFieldValue menerima AnnotatedString. Namun, ini hanya perubahan API dan pengeditan teks multi-gaya belum diterapkan.
- Menghapus
initial
dari parameter konstruktor EditingBuffer. (I326d5)
- Menghapus
invalidate dan compositionReference() sekarang tidak digunakan lagi dan masing-masing telah digantikan dengan currentRecomposeScope dan rememberCompositionReference. (I583a8)
AnnotatedString diubah untuk memperluas dari kotlin.CharSequence. Oleh karena itu, panjang dan subSequence sekarang menjadi fungsi instance, dan fungsi ekstensi dihapus. (Iaf429)
Durasi dan Waktu Beroperasi akan diganti dengan milidetik Buj, dan langkah ini akan menghapus dependensi input pointer di class tersebut. (Ia33b2, b/175142755, b/177420019)
RememberObserver menggantikan CompositionLifecycleObserver dan CompositionLifecycleObserver kini tidak digunakan lagi.
RememberObserver
adalah pengganti untukCompositionLifecycleObserver
dengan metode modifikasi semantik dan penggantian nama. Mengubah ke API baru dapat dilakukan secara mekanis untuk objek yang hanya diingat satu kali, dan terus menjadi, praktik yang direkomendasikan. Namun, jika referensi diingat lebih dari sekali dalam suatu komposisi,onRemembered
dipanggil untuk setiap referensi saatonEnter
hanya dipanggil sekali.onEnter
dipanggil beberapa kali jika objek digunakan dalam subkomposisi, sepertiWithConstraints
danScaffold
, yang membuat jaminan panggilanonEnter
tunggal tidak dapat diandalkan dan telah dihapus untukRememberObserver
.RememberObserver
menambahkanonAbandoned
yang dipanggil jika instanceRememberObserver
ditampilkan dari callback yang diteruskan keremember
tetapi tidak diingat dalam status komposisi, dan, oleh karena itu, tidak akan pernah memanggilonRemembered
. Hal ini dapat terjadi jika pengecualian menghentikan komposisi sebelum selesai atau komposisi dibuang karena status tujuan komposisi itu diproduksi tidak lagi aktif atau tidak diperlukan lagi. Jika instanceRememberObserver
yang mengikuti rekomendasi referensi tunggal di atas melacak resource eksternalonForgotten
danonAbandoned
, masing-masing menunjukkan bahwa resource tidak lagi diperlukan. Jika objek sedang melacak pekerjaan yang dimulai atau resource yang dialokasikan dionRemembered
,onAbandoned
dapat diabaikan karena tidak akan dipanggil jikaonRemembered
dipanggil. (I02c36)Mengganti nama TransformedText.transformedText menjadi TransformedText.text
- TransformedText bukan lagi class data (Ie672a)
Class berikut bukan lagi class data:
- AnnotatedString
- ParagraphStyle
- SpanStyle
- TextStyle
- FontWeight
- TextDecoration
- TextGeometricTransform
- TextIndex
- TextLayoutResult
- TextLayoutInput (Iaff99)
Menghapus metode monotonicFrameAnimationClockOf eksperimental (Ib753f, b/170708374)
Menghentikan penggunaan metode koordinat global dan membuat metode koordinat berbasis jendela yang baru. (Iee284)
Gunakan ImeAction.None, bukan ImeAction.NoAction
- Gunakan ImeAction.Default, bukan ImeAction.Unspecified (Ie1bcc)
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)
Mengubah VisualTransformation menjadi antarmuka fungsional (I3bba4)
Memanfaatkan TestCoroutineDispatcher dalam pengujian (I532b6)
Menghapus PointerInputData dan mengubah PointerInputChange untuk mendapatkan semua kolom PointerInputData. Membuat PointerInputEvent dan PointerInputEventData internal karena tidak digunakan di API publik mana pun. (Ifff97, b/175142755)
Mengganti nama TextInputService.onStateUpdated sebagai updateState (Id4853)
Menghapus displaySize karena harus dihindari. Biasanya, lebih baik gunakan ukuran onRoot() atau minimal ukuran jendela. (I62db4)
Versi 1.0.0-alpha10
13 Januari 2021
androidx.compose.foundation:foundation:1.0.0-alpha10
dan androidx.compose.foundation:foundation-layout:1.0.0-alpha10
dirilis. Versi 1.0.0-alpha10 berisi commit berikut ini.
Perubahan API
- ImeOptions dan KeyboardOptions bukan lagi class data (I3c898, b/168684531)
- Perubahan API VisualTransformation
- Mengganti Nama OffsetMap menjadi OffsetMapping
- Mengganti Nama OffsetMapping.identityOffsetMap menjadi OffsetMapping.Identity
- PasswordTransformation bukan lagi class data
- Memindahkan OffsetMapping ke filenya sendiri
- (I0bdf3)
- Perubahan API EditOperations
- Mengganti nama EditOperation sebagai EditCommand
- Menambahkan akhiran Command untuk implementasi konkret EditOperation
- EditCommand bukan lagi class data
- Mengganti nama fungsi EditOperation.process menjadi applyTo
- Mengganti nama InputEventListener menjadi InputEventCallback
- (I0a366)
- Modifikasi Velocity untuk memiliki bagian komponen dan operasi matematika. (Ib0447)
- Mengganti nama @ExperimentalTesting menjadi @ExperimentalTestApi agar konsisten dengan anotasi api eksperimental yang serupa (Ia4502, b/171464963)
- Menambahkan metode stickyHeader eksperimental untuk LazyColumn/LazyRow (I0a81d)
- Mengganti nama Color.useOrElse() menjadi Color.takeOrElse() (Ifdcf5)
- TestUiDispatcher tidak digunakan lagi. Gunakan Dispatchers.Main sebagai gantinya (Ic171f, b/175385255)
- Menambahkan Toggle ke dasar Strings.kt (I4a5b7, b/172366489)
- nativeClass dipindahkan ke modul ui dan membuatnya internal. Penggunaan nativeClass yang diperbarui sama dengan implementasi untuk menggunakan 'is MyClass' sebagai gantinya. (I4f734)
- 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)
- Memperkenalkan SelectionRegistrar.notifySelectableChange untuk memberi tahu update Selectable ke SelectionManager. (I6ff30, b/173215242)
fun Dp.isFinite()
diubah menjadival Dp.isFinite
(I50e00)- Constraints#satisfiedBy diganti namanya menjadi isSatisfiedBy. (I9cf5c)
- Menambahkan isSpecified, isUnspecified, dan useOrElse untuk class inline dengan konstanta Unspecified. (I93f7b, b/174310811)
Perbaikan Bug
Animatable
API baru berbasis coroutine yang memastikan pengalaman eksklusif di antara animasinya. DecayAnimationSpec baru untuk mendukung animasi peluruhan multi-dimensi (I820f2, b/168014930)- Menambahkan dukungan untuk bidang teks yang dinonaktifkan dan hanya baca (I35279, b/171040474, b/166478534)
animate()
sekarang diganti dengananimateAsState()
, yang menampilkanState<T>
, bukanT
. 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)
- keyEvent native sekarang dapat diakses melalui keyEvent.nativeKeyEvent (I87c57, b/173086397)
Versi 1.0.0-alpha09
16 Desember 2020
androidx.compose.foundation:foundation:1.0.0-alpha09
dan androidx.compose.foundation:foundation-layout:1.0.0-alpha09
dirilis. Versi 1.0.0-alpha09 berisi commit berikut ini.
Perubahan API
Tambahkan antarmuka Scrollable
Hal ini memungkinkan ScrollState dan LazyListState diperlakukan sebagai jenis umum, sehingga scroll kustom dapat diterapkan di kedua jenis tersebut.
Tindakan ini juga memindahkan smoothScrollBy ke fungsi ekstensi di Scrollable, yang memanfaatkan fungsi ini. (I2153b)
LazyVerticalGrid ditambahkan. (I17267, b/162213211)
Menghentikan penggunaan LazyColumnFor, LazyRowFor, LazyColumnForIndexed, dan LazyRowForIndexed. Gunakan LazyColumn dan LazyRow sebagai gantinya (I5b48c)
Untuk API input pointer yang menangguhkan, HandlePointerInputScope diganti namanya menjadi AwaitPointerEventScope dan handlePointerInput() diganti namanya menjadi awaitPointerEventScope(). (Idf0a1, b/175142755)
LazyListState.layoutInfo telah ditambahkan yang menampilkan daftar ukuran dan offset item yang saat ini terlihat (If8678, b/170472532)
Menghapus anotasi ExperimentalPointerInput (Ia7a24)
Dukungan InteractionState untuk TextFields telah ditambahkan. (I61d91)
Menambahkan parameter reverseLayout untuk LazyColumn/Row. saat item
true
akan disusun dari bawah ke atas danLazyListState.firstVisibleItemIndex == 0
berarti item pertama berada di bagian bawah. (I552ae, b/166589935)Parameter verticalArrangement telah ditambahkan untuk LazyColumn. Parameter horizontalArrangement telah ditambahkan untuk LazyRow. Pengaturan memungkinkan kami menambahkan spasi antar-item dan menentukan pengaturan item saat kita tidak memiliki cukup item untuk mengisi seluruh ukuran minimum. (Icf79a, b/170394300)
detectMultitouchGestures sekarang menggunakan satu callback dengan gabungan parameter sentroid, geser, zoom, dan putar. (Ie6e1c)
Memindahkan ContentDrawScope ke modul ui-graphics agar bersama dengan DrawScope. (Iee043, b/173832789)
Perbaikan Bug
- Lambda pada pengubah offset kini menampilkan IntOffset, bukan Float. (Ic9ee5, b/174137212, b/174146755)
Menghapus SlotTable, SlotReader, dan SlotWriter dari API publik. Sebelumnya, ini ditandai sebagai InternalComposeAPI. Kini keduanya bersifat internal untuk modul compose.
Menambahkan CompositionData dan CompositionGroup sebagai pengganti ui-tooling API yang digunakan untuk mengekstrak informasi komposisi. Ini bersifat publik, tetapi tidak dimaksudkan untuk digunakan di luar ui-tooling API karena menyediakan informasi mentah yang ditafsirkan oleh ui-tooling API (I31a9c)
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)
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)
Memperkenalkan beberapa fungsi baru dalam SelectionRegistrar serta mengganti nama onPositionChange menjadi notifyPositionChange. (Ifbaf7)
AndroidOwner dibuat internal (Ibcad0, b/170296980)
Fungsi infiniteRepeatable untuk membuat InfiniteRepeatableSpec (I668e5)
Antarmuka
Applier
telah diubah untuk menyederhanakan hierarki build dari bawah ke atas, bukan dari atas ke bawah.Metode
insert()
telah diganti namanya menjadiinsertTopDown()
.Menambahkan metode baru,
insertBottomUp()
.Applier akan memasukkan node ke hierarki yang sedang diedit menggunakan
insertTopDown()
atauinsertBottomUp()
bergantung mana yang berperforma lebih baik.Beberapa hierarki, seperti
LayoutNode
danView
, jauh lebih efisien untuk dibuat dari bawah ke atas daripada dari atas ke bawah. Sebelum perubahan ini, stack insert diperlukan untuk menerapkan konstruksi dari bawah ke atas yang perlu disalin ke setiap applier yang memerlukan konstruksi tersebut untuk performanya. Dengan perubahan ini,Applier
akan menggantikaninsertBottomUp()
untuk membuat hierarki dari bawah ke atas daninsertTopDown()
untuk membuat hierarki dari atas ke bawah. (Icbdc2)Menambahkan painterResource API untuk menangani objek Painter dimuat buram dari format aset raster (seperti PNG) atau VectorDrawable. Konsumen tidak perlu lagi menentukan jenis aset terlebih dahulu dan dapat memanggil metode ini untuk mendapatkan objek Painter yang akan digunakan dalam fungsi Image yang dapat dikomposisi atau pengubah pelukis. (I2c703, b/173818471)
Menambahkan fungsi factory buildAnnotatedString untuk membuat AnnotatedString. Menghentikan penggunaan fungsi builder annotatedString. (Idfe0b)
Versi 1.0.0-alpha08
2 Desember 2020
androidx.compose.foundation:foundation:1.0.0-alpha08
dan androidx.compose.foundation:foundation-layout:1.0.0-alpha08
dirilis. Versi 1.0.0-alpha08 berisi commit berikut ini.
Perubahan API
- Menghapus parameter
maxLines
dariCoreTextField
. Jika Anda ingin membatasi tinggi kolom teks dengan jumlah baris, gunakanBasicTextField
. (Iec002) - Mengubah metode
await*TouchSlop()
untuk tidak mendeteksi pointer dan mengganti namanya menjadi*OrCancellation
. Juga menghapus kebutuhan akan parameterorientationLock
. (Ie96e1) - Menambahkan pemeriksaan lint untuk penamaan dan posisi parameter lambda fungsi yang dapat dikomposisi, agar konsisten dengan pedoman Compose.
Selain itu, memigrasikan beberapa API menggunakan
children
sebagai nama untuk lambda akhirnya kecontent
, sesuai dengan pemeriksaan lint dan panduan. (Iec48e) - api
foundation:foundation-text
dipindahkan kefoundation:foundation
. Struktur paket tetap sama (Id3eb2) - Pendeteksi gestur multisentuh baru, termasuk helper untuk mendeteksi rotasi, zoom, dan penggeseran. (Ic459d)
- Pendeteksi gestur tarik baru yang menangguhkan API input pointer, termasuk penguncian orientasi. (Icef25)
- Mengganti nama VectorAsset menjadi ImageVector Memindahkan dan mengganti nama VectorAsset menjadi Builder agar menjadi class dalam ImageVector sesuai pedoman dewan API. Menambahkan typealias VectorAssetBuilder ke link ke ImageVector.Builder untuk compat. (Icfdc8)
- Mengganti nama ImageAsset dan metode terkait menjadi ImageBitmap. (Ia2d99)
- Memindahkan properti semantik dasar ke ui (I6f05c)
Menambahkan API scroll berbasis coroutine:
Menambahkan LazyListState.snapToItem dan LazyListState.smoothScrollBy, serta API level rendah untuk kontrol scroll. API ini menyediakan antarmuka penangguhan untuk mengontrol scroll yang menunggu hingga scroll selesai sebelum ditampilkan kembali. (Ie5642)
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)
Pendeteksi gestur untuk ketuk, ketuk dua kali, tekan lama, dan indikasi tekan ditambahkan menggunakan input pointer penangguhan yang baru. Beberapa aplikasi utilitas juga ditambahkan, sehingga memudahkan developer menulis pendeteksi gesturnya sendiri. (I00807)
Modifier.focusable perlu ditambahkan dalam dasar. Gunakan ini untuk menambahkan perilaku yang dapat difokuskan ke komponen, dengan semantik dan aksesibilitas yang tepat. (I41eb9, b/152525426, b/162865824)
API yang sebelumnya tidak digunakan lagi telah dihapus: Border dihapus, gunakan BorderStroke sebagai gantinya. Modifier.drawBorder telah dihapus, gunakan Modifier.border sebagai gantinya. Modifier.gravity dihapus, gunakan Modifier.align sebagai gantinya. Stack dihapus, gunakan Box sebagai gantinya (I32c2b, b/172470874)
AbsolutArrangement diganti namanya menjadi Arrangement.Absolute. (If26f2)
Perbaikan Bug
- 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 mengupdate class terkait GraphicsLayer sesuai masukan dewan API. (I0bd29, b/173834241)
<T>
telah dihapus dari deklarasi SubcomposeLayout. Kini Anda dapat menggunakannya tanpa menentukan jenis. (Ib60c8)- Membuat kolom waktu beroperasi dan posisi PointerInputData non-nullable. (Id468a)
- 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)
- 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)
- Menambahkan WindowManager.isWindowFocused untuk memeriksa apakah jendela host dalam fokus, dan WindowFocusObserver yang menyediakan callback onWindowFocusChanged. (I53b2a, b/170932874)
- Menambahkan parameter resetInput ke TextInputService#onStateUpdated (I3e8f5, b/172239032, b/171860947)
- Mengupdate TextFieldValue API
- menjadikan TextFieldValue.composition hanya baca
- menghapus pengecualian yang dimunculkan untuk rentang pilihan yang tidak valid (I4a675, b/172239032)
- 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 wrapper Typeface Android. Anda dapat memuat Typeface
Android melalui fungsi
typeface
, yaknitypeface(Typeface.DEFAULT)
. Juga mengganti namatypefaceFromFontFamily()
menjaditypeface()
(I52ab7) - Menambahkan pemeriksaan lint untuk memeriksa apakah factory Modifier menggunakan
androidx.compose.ui.composed {}
secara internal, bukan ditandai sebagai@Composable
. (I3c4bc) - Menambahkan pemeriksaan lint untuk memeriksa bahwa fungsi factory Modifier didefinisikan sebagai ekstensi di Modifier, sehingga dapat ditautkan secara efisien. (I07981)
- 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 lainnya. (Ifce19)
- Antarmuka Alignment telah diperbarui dan berfungsi. (I46a07, b/172311734)
- Modul
foundation:foundation-text
telah digabungkan kefoundation:foundation
(Idac0f) - Menghentikan penggunaan place(Offset) dan placeRelative(Offset). Menggunakan kelebihan beban dengan offset int (I4c5e7)
id
diganti namanya menjadilayoutId
untukLayoutIdParentData
.Measurable.id
diganti namanya menjadiMeasurable.layoutId
. (Iadbcb, b/172449643)
Versi 1.0.0-alpha07
11 November 2020
androidx.compose.foundation:foundation:1.0.0-alpha07
, androidx.compose.foundation:foundation-layout:1.0.0-alpha07
, dan androidx.compose.foundation:foundation-text:1.0.0-alpha07
dirilis. Versi 1.0.0-alpha07 berisi commit berikut ini.
Perubahan API
- Demikian pula untuk
Modifier.fillMaxSize[Width|Height]
, kini kami mendukung pecahan dalamModifier.fillParentMaxSize[Width|Height]
dalam cakupanLazyColumn/Row
(I797e2, b/166586426) - Menghapus
KeyboardOptions.toImeOptions
dari API publik. (Ic2e45) - Fondasi AmbientTextStyle, ProvideTextStyle, dan AmbientContentColor 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)
- Menambahkan maxLines ke TextFields (Ib2a5b)
- Mengupdate TextFields untuk menerima KeyboardOptions (Ida7f3)
- Menambahkan KeyboardOptions untuk digunakan di TextFields (I9ca32)
- Menambahkan BasicText sebagai API tidak terkonfigurasi untuk teks, paralel dengan BasicTextField. (I28268)
- Anotasi ExperimentalLazyDsl dihapus. LazyColumn/LazyRow kini dapat digunakan tanpa menambahkan @OptIn (Idab7a, b/166584730)
- BaseTextField sudah tidak digunakan lagi. BasicTextField digunakan sebagai gantinya. (I896eb)
- BasicTextField telah ditambahkan sebagai pengganti untuk CoreTextField dan BaseTextField (Id4cea)
- Menghapus LazyColumnItems/LazyRowItems yang tidak digunakan lagi (I1d8a8)
- Komponen yang tidak digunakan lagi untuk pengaturan ukuran ke pengukuran intrinsik telah dihapus. (I18537, b/171811496)
- relativePaddingFrom diganti namanya menjadi paddingFrom. Pengubah paddingFromBaseline ditambahkan, karena memudahkan penentuan jarak dari batas tata letak ke dasar pengukuran teks. (I0440a, b/170633813)
- Parameter matchHeightConstraintsFirst ditambahkan ke pengubah aspectRatio, yang dapat digunakan untuk menentukan pengubah guna mengatur ukuran ke batasan tinggi sebelum mencoba koresponden lebar. (Ie7c43, b/155290593)
- DpConstraints yang tidak digunakan lagi dihapus. (I87884, b/171702471)
Perbaikan Bug
- Memperkenalkan class inline
ScaleFactor untuk merepresentasikan faktor
skala sumbu horizontal dan
vertikal secara independen dari satu sama lain guna
mendukung kasus penggunaan penskalaan tidak seragam.
- Menambahkan metode DpConstraints ke ContentScale
- Menambahkan ContentScale.FillBounds untuk melakukan penskalaan tidak seragam guna meluaskan batas src agar sepenuhnya memenuhi tujuan.
- Menambahkan metode operator untuk menghitung parameter ScaleFactor dengan parameter Ukuran.
- (Ic96a6, b/172291582)
- captureToBitmap dipindahkan ke captureToImage. (I86385)
- Menandai CoreText sebagai @InternalTextApi. Sebagai gantinya, gunakan BasicText. (I6aaeb)
- Mengganti nama KeyboardOptions sebagai ImeOptions (I82f36)
- Memindahkan KeyboardType dan ImeAction ke KeyboardOptions (I910ce)
- CoreTextField telah ditandai sebagai @InternalTextApi. Gunakan BasicTextField sebagai gantinya (Ie2469)
- Anotasi ExperimentalSubcomposeLayoutApi dihapus. SubcomposeLayout kini dapat digunakan tanpa menambahkan @OptIn (I708ad)
- Memperkenalkan modul ui-test-junit4 (Ib91f8)
- 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)
- 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)
- androidx.ui.test dipindahkan ke androidx.compose.ui.test (I9ffdb)
- FirstBaseline dan LastBaseline dipindahkan ke paket androidx.compose.ui.layout (Ied2e7)
- Menambahkan SelectionContainer tanpa callback (Ibfadb)
- Menambahkan Test untuk Posisi SelectionHandles di SelectionContainer. (Ie93db)
- Menambahkan Opsi IME koreksi otomatis Keyboard (I57b8d)
Versi 1.0.0-alpha06
28 Oktober 2020
androidx.compose.foundation:foundation:1.0.0-alpha06
, androidx.compose.foundation:foundation-layout:1.0.0-alpha06
, dan androidx.compose.foundation:foundation-text: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 interactionState ke Modifier.scrollable, ScrollableColumn, dan LazyColumnFor (I81566, b/169509805)
- alignByBaseline ditambahkan ke RowScope dan alignWithSiblings diganti namanya menjadi alignBy (I06503, b/170628732)
- Box dibuat menjadi fungsi inline. (Ibce0c, b/155056091)
- Menambahkan maxLines ke CoreTextField (Ibee58, b/143687793)
- Menambahkan softwrap ke CoreTextField. (I21a4b)
Perbaikan Bug
- Tidak lagi menggunakan VectorPainter untuk kepentingan rememberVectorPainter agar lebih menunjukkan bahwa API komponen 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)
- Menambahkan kemampuan untuk menentukan info pemeriksa dalam pengubah terkomposisi (Idee08, b/163494569)
- Menambahkan Opsi IME KeyboardCapitalization (I8ac38)
- Memperbaiki Posisi Tuas Rtl. (I6e1e0)
- Perubahan yang dapat menyebabkan gangguan: menghapus nilai pengembalian dari PointerInputFilter.onPointerEvent(...) mengingat bahwa satu-satunya nilai yang seharusnya dapat diubah dalam peristiwa pointer adalah data pemakaian. Kini Anda cukup mengubah data pemakaian PointerEvents yang diteruskan, bukan menampilkan data dari PointerInputFilter.onPointerEvent(...). (I6acd0)
- Menambahkan opsi SelectAll ke menu pemilihan (Ief02b)
Versi 1.0.0-alpha05
14 Oktober 2020
androidx.compose.foundation:foundation:1.0.0-alpha05
, androidx.compose.foundation:foundation-layout:1.0.0-alpha05
, dan androidx.compose.foundation:foundation-text:1.0.0-alpha05
dirilis. Versi 1.0.0-alpha05 berisi commit berikut ini.
Perubahan API
- CoreTextField sekarang mendukung fungsi kursor (Id23aa)
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)
Perbaikan Bug
- Sebagai bagian dari standardisasi nilai sentinel untuk class inline, ganti nama Color.Unset menjadi Color.Unspecified agar konsisten dengan class inline lainnya (I97611, b/169797763)
- Menambahkan tindakan aksesibilitas Salin/Tempel/Potong (I6db4f)
- TextOverflow.None diperkenalkan. Bila tambahan adalah Tidak Ada, Teks tidak akan lagi menangani tambahan, dan akan melaporkan ukuran sebenarnya ke LayoutNode. (I175c9, b/158830170)
- Memperbarui parameter Size.Unspecified menjadi Float.NaN, bukan Float.POSITIVE_INFINITY. Memperbarui implementasi Painter untuk diperiksa dengan Size.Unspecified serta Ukuran yang tidak terbatas. (I95a7e)
- Menambahkan integrasi halaman dan modul Paging Compose (Ib85da)
- Mengubah LazyListScope untuk menerima nilai nullable (I1765b)
- OnPositionedModifier diganti nama menjadi OnGloballyPositionedModifier dan onPositioned() diganti nama menjadi onGloballyPositioned(). (I587e8, b/169083903)
- Menambahkan sampel untuk LazyColumn/Row (Idc16d)
- Memperbaiki item dan metode itemsIndexed untuk mengizinkan emptyList (I06647)
- Menambahkan DSL untuk menentukan informasi pemeriksa (Ic9a22)
- Memindahkan LongPress ke Text. (Iff2bc)
- Menonaktifkan Pilihan dalam Teks, dan Demo. (Ie7e97)
- Mendukung konversi AnnotatedString ke SpannableString untuk aksesibilitas. (Ief907)
- Menghapus
PointerInputFilter.onPointerInput(...)
.PointerInputFilter.onPointerEvent(...)
harus digunakan di tempatnya. (I6f04a)
Versi 1.0.0-alpha04
1 Oktober 2020
androidx.compose.foundation:foundation:1.0.0-alpha04
, androidx.compose.foundation:foundation-layout:1.0.0-alpha04
, dan androidx.compose.foundation:foundation-text:1.0.0-alpha04
dirilis. Versi 1.0.0-alpha04 berisi commit berikut ini.
Perubahan API
- Stack diganti namanya menjadi Box. foundation.Box yang sudah ada sebelumnya tidak akan digunakan lagi dan digantikan dengan 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)
- Menambahkan class LazyListState baru. Hal ini memungkinkan observasi dan kontrol posisi scroll komponen LazyRow dan LazyColumn. Instance dapat dibuat menggunakan rememberLazyListState() dan diteruskan ke parameter status komponen. Saat ini, item dan offset pertama yang terlihat dapat diamati di versi awal ini. (Ic7cb7, b/159307669)
- Posisi daftar Lazy dan offset scroll kini disimpan dan dipulihkan di seluruh pembuatan ulang Aktivitas (Ie045f, b/166589058)
- Menambahkan tindakan semantik klik panjang (I6281b, b/156468846)
- Menambahkan aplikasi utilitas MutatorMutex untuk mempertahankan satu mutator status bersama dari waktu ke waktu dan membatalkan mutator yang bertentangan menurut prioritas (I3f975)
- Menganotasi rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled dan textInputServiceFactory dengan @VisibleForTesting, menjadikannya API internal dan menyembunyikan kdoc (I554eb, b/168308412)
- Menghapus parameter inlineContent dari Teks dengan input String. Ini tidak akan digunakan karena inlineContent harus berfungsi dengan AnnotatedString. (Ief403)
- Arrangement API kustom yang sudah tidak digunakan lagi telah dihapus. (Ic576d, b/168297922, b/168297923)
- Parameter
unbounded
telah ditambahkan ke pengubah wrapContentSize, yang memungkinkan pengukuran elemen tata letak dengan batasan maksimal tak terbatas. (I77951, b/158559319) - 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)
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)
- Pengoptimalan performa untuk scrolling LazyColumnFor/LazyRowFor dengan tidak melakukan rekomposisi yang tidak diperlukan selama setiap scroll (I64f65, b/168293643, b/167972292, b/165028371)
- Memperbaiki error pada LazyColumnFor/LazyRowFor setelah scrolling yang kemudian mengubah item dan mengimplementasikan scroll otomatis ke atas saat item yang terlihat sebelumnya dihapus sehingga kami tidak menampilkan lagi celah kosong di akhir (I220ab, b/161480164, b/167855468)
- Pembuatan bertingkat yang dapat di-scroll dalam penampung yang sama arahnya seperti ScrollableContainer dan LazyColumnFor tidak diizinkan lagi. Ini tidak pernah didukung dan merusak lemparan dan semua perlambatan dalam menyusun item LazyColumnFor (I6e101)
- 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)
- menambahkan AccessibilityScrollState ke properti semantik. (Ifeda9)
- Menyejajarkan TextRange untuk menghindari pembuatan objek. (Id034b)
- ParagraphConstraints dihapus. Lebar kini diteruskan secara langsung ke Paragraf. (Ica712)
Versi 1.0.0-alpha03
16 September 2020
androidx.compose.foundation:foundation:1.0.0-alpha03
, androidx.compose.foundation:foundation-layout:1.0.0-alpha03
, dan androidx.compose.foundation:foundation-text:1.0.0-alpha03
dirilis. Versi 1.0.0-alpha03 berisi commit berikut ini.
Perubahan API
- InnerPadding diganti namanya menjadi PaddingValues. (I195f1, b/167389171)
- Penggunaan gravitasi secara konsisten diganti namanya menjadi untuk meratakan atau perataan dalam API tata letak. (I2421a, b/164077038)
- Parameter perataan telah ditambahkan ke Stack, yang memungkinkan penentuan perataan default untuk semua turunan Stack. (Ie80ca, b/164085265)
Perbaikan Bug
- DpConstraint dan API yang menggunakannya tidak digunakan lagi. (I90cdb, b/167389835)
- Parameter
minWidth
danmaxWidth
dariwidthIn
diganti namanya menjadimin
danmax
. Demikian pula untukpreferredWidthIn
,heightIn
,preferredHeightIn
. (I0e5e1, b/167389544) - Menambahkan onNode dan metode global lainnya di ComposeTestRule karena metode global yang ada saat ini akan segera dihentikan. (Ieae36)
- Memperbaiki penghitungan ukuran dan posisi di GestureScope, yang menyebabkan, diantaranya, gestur geser menjadi tidak valid (Iaf358, b/166589947)
- Memindahkan
createAndroidComposeRule
danAndroidInputDispatcher
dariandroidx.ui.test.android
keandroidx.ui.test
(Idef08, b/164060572)
Versi 1.0.0-alpha02
2 September 2020
androidx.compose.foundation:foundation:1.0.0-alpha02
, androidx.compose.foundation:foundation-layout:1.0.0-alpha02
, dan androidx.compose.foundation:foundation-text:1.0.0-alpha02
dirilis. Versi 1.0.0-alpha02 berisi commit berikut.
Perbaikan Bug
- TestUiDispatcher ditandai eksperimental (Iae99d, b/161247083)
Menambahkan
ManualFrameClock.hasAwaiters
untuk melihat apakah ada yang menunggu frame dari jam tersebut;runWithManualClock
sebagai penggantirunBlocking
saat menjalankan pengujian yang memerlukan ManualFrameClock;TestUiDispatcher.Main
yang memberikan akses mudah ke dispatcher UI utama dalam pengujian Anda.Contoh:
@Test fun myTest() = runWithManualClock { clock -> // set some compose content withContext(TestUiDispatcher.Main) { clock.advanceClock(1000L) } if (clock.hasAwaiters) { println("The clock has awaiters") } else { println("The clock has no more awaiters") } }
Versi 1.0.0-alpha01
26 Agustus 2020
androidx.compose.foundation:foundation:1.0.0-alpha01
, androidx.compose.foundation:foundation-layout:1.0.0-alpha01
, dan androidx.compose.foundation:foundation-text:1.0.0-alpha01
dirilis. Versi 1.0.0-alpha01 berisi commit berikut.
Versi 0.1.0-dev
Versi 0.1.0-dev17
19 Agustus 2020
androidx.compose.foundation:foundation:0.1.0-dev17
, androidx.compose.foundation:foundation-layout:0.1.0-dev17
, dan androidx.compose.foundation:foundation-text:0.1.0-dev17
dirilis. Versi 0.1.0-dev17 berisi commit berikut ini.
Perubahan API
- Pengaturan spacedBy telah ditambahkan untuk Baris dan Kolom, guna memungkinkan penempatan tata letak turunan dengan spasi tetap. Pengaturan yang disejajarkan juga ditambahkan untuk memungkinkan penempatan tata letak turunan di samping yang lainnya dan disejajarkan dalam Baris/Kolom sesuai dengan Penyelarasan. Metode Arrangement.Vertical#arrange dan Arrangement.Horizontal#arrange sebelumnya tidak digunakan lagi, dan penulisan Pengaturan kustom tidak akan didukung di masa mendatang. (I6733d, b/161985975)
- Offset telah menjadi class inline (Iaec70)
- 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)
- VerticalScroller dan HorizontalScroller telah dihapus. Sebagai gantinya, gunakan ScrollableColumn/Row. Modifier.drawBackground telah dihapus. Gunakan Modifier.background (I73b0d, b/163019183)
- Menghapus ditandai sebagai pengubah fillMax* yang tidak digunakan lagi dari LazyItemScope karena akan mempersulit penambahan pengubah tersebut dengan benar untuk item yang bukan turunan langsung dari LazyColumnFor (Ifa78d)
- menambahkan implementasi LazyColumn/LazyRow sebagai DSL (I93cc6)
- Batasannya kini menjadi class inline (I88736)
- Menambahkan kemampuan untuk mengubah ukuran tata letak menjadi bagian dari ruang yang tersedia, menggunakan pengubah fillMaxWidth, fillMaxHeight, dan fillMaxSize. (I945bb, b/161562591)
Perbaikan Bug
- Menambahkan parameter pengubah ke SelectionContainer (I4aada, b/161487952)
- 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)
PlacementScope.placeAbsolute()
diganti namanya menjadiPlacementScope.place()
, danPlacementScope.place()
sebelumnya diganti namanya menjadiPlacementScope.placeRelative()
. Akibatnya, metodePlacementScope.place()
tidak akan lagi secara otomatis mencerminkan posisi dalam konteks kanan-ke-kiri. Jika menginginkannya, gunakan sajaPlacementScope.placeRelative()
. (I873ac, b/162916675)- Menghapus komponen FilledTextField yang sudah tidak digunakan lagi. Sebagai gantinya, harap gunakan TextField untuk mendapatkan implementasi Filled text field Desain Material. (I5e889)
- 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)
- Composable
state { ... }
kini tidak lagi digunakan agar panggilan eksplisit keremember { mutableStateOf(...) }
menjadi lebih jelas. Ini mengurangi keseluruhan tampilan API dan jumlah konsep untuk pengelolaan status, serta mencocokkan polaby mutableStateOf()
untuk delegasi properti class. (Ia5727) - 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)
- Menghapus onChildPositioned dan OnChildPositionedModifier. Sebagai gantinya, developer harus menggunakan onPositioned dan OnPositionedModifier pada tata letak turunan. (I4522e, b/162109766)
- IntSize kini menjadi class inline (I2bf42)
- Tekan Lama Area Kosong untuk Mengedit. (Ib1e5b)
- Menyembunyikan FloatingToolbar Setelah Mengetuk Teks. (If4525)
- Menyembunyikan FloatingToolbar Saat Memperbarui Pilihan. (I8444c)
- Batalkan Pilihan Saat Blur. (I781a2)
Versi 0.1.0-dev16
5 Agustus 2020
androidx.compose.foundation:foundation:0.1.0-dev16
, androidx.compose.foundation:foundation-layout:0.1.0-dev16
, dan androidx.compose.foundation:foundation-text:0.1.0-dev16
dirilis. Versi 0.1.0-dev16 berisi commit berikut ini.
Perubahan API
- LazyItemScope telah ditambahkan untuk parameter itemContent dari daftar Lazy. Bagian ini menyediakan pengubah untuk mengisi ukuran maksimum induk yang akan menyelesaikan kasus penggunaan ketika item harus mengisi area pandang dan Modifier.fillMaxSize() biasa tidak akan berfungsi karena item diukur dengan batasan tak terbatas. (Ibd3b2, b/162248854)
- Memindahkan dialog ke ui (I47fa6)
- Menambahkan LazyColumnForIndexed/LazyRowForIndexed - versi LazyColumnFor/LazyRowFor yang menyediakan indeks dan item di itemCallback. Elemen ini berguna saat menambahkan item saat ini yang perlu Anda ketahui indeks saat ini. (I65ff3)
- Nama Modifier.deternimateProgress telah diganti menjadi Modifier.progressSemantics (I9c0b4)
- LazyColumnItems telah diganti namanya menjadi LazyColumnFor. LazyRowItems telah diganti namanya menjadi LazyRowFor (I84f84)
- Menambahkan beberapa Tanda/Anotasi untuk alasan praktik terbaik. (I66b20)
- Paket foundation.shape.corner diratakan menjadi foundation.share (I46491, b/161887429)
- Menambahkan parameter berat crossaxis untuk LazyRowItems/LazyColumItems. LazyRowItems/LazyColumnItems kini mendukung perilaku konten gabungkan. (Ib39fc)
- ZoomableState telah diganti namanya menjadi ZoomableController. Dukungan kurva kustom telah ditambahkan untuk smoothScale. Fungsi
enabled
danonZoomStarted
telah ditambahkan (If8b8f) - 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)
- AdapterList yang sebelumnya tidak digunakan lagi telah dihapus. Sebagai gantinya, gunakan LazyColumnItems (I12b9b)
- Nama Modifier.drawBackground telah diganti menjadi Modifier.background (I13677)
- DSL ConstraintLayout lama dihapus. ConstraintSet2 diganti namanya menjadi ConstraintSet. (If58d1, b/162450908)
- Menambahkan Modifier.absoluteOffset() dan Modifier.absoluteOffsetPx(). Tidak seperti pengubah offset, pengubah offset absolut tidak akan mencerminkan otomatis dalam konteks kanan-ke-kiri (I3a21)
Row
danColumn
kini berfungsi inline yang secara signifikan mengurangi overhead penggunaannya. (I75c10)
Perbaikan Bug
- Mengatasi masalah API umum (I077bc)
- Menghapus antarmuka OffsetBase yang tidak digunakan
- Meratakan class Offset dan IntOffset agar memiliki tampilan API yang konsisten
- Mengganti nama IntOffset.Origin menjadi IntOffset.Zero agar konsisten dengan Offset API
- Memindahkan metode nativeCanvas dari antarmuka Canvas untuk mendukung konsumen membuat instance Canvas mereka sendiri
- Membuat class EmptyCanvas stub untuk memfaktorkan ulang DrawScope menjadi parameter non-null, bukan lateinit, dan memastikan non-nullability pada kolom
- Mengganti nama enum ClipOp menjadi Pascal Case
- Mengganti nama enum FilterQuality menjadi Pascal Case
- Mengganti nama enum StrokeJoin menjadi Pascal Case
- Mengganti nama enum PointMode menjadi Pascal Case
- Mengganti nama enum PaintingStyle menjadi Pascal Case
- Mengganti nama enum PathFillType menjadi Pascal Case
- Mengganti nama enum StrokeCap menjadi Pascal Case
- Memperbarui implementasi DrawCache agar tidak lagi menggunakan parameter lateinit
- Memperbarui DrawScope agar tidak lagi menggunakan delegasi lambat untuk parameter internal fillPaint dan strokePaint
- Memperbarui composable Image untuk menghindari penggunaan Box untuk overhead yang lebih rendah
- Memperbarui class Outline agar memiliki anotasi @Immutable
- Memperbarui PathNode agar memiliki anotasi @Immutable untuk setiap petunjuk jalur
- Memperbarui subkomposisi Vektor untuk menghapus pemeriksaan persamaan bersyarat yang berlebihan karena compose sudah menanganinya
- Metode konstruktor pendamping Rect tidak digunakan lagi dan diganti dengan konstruktor fungsi
- Memperbarui class Brush dan konstruktor fungsi dengan API @Immutable dan @Stable
- Memperbarui enum VertexMode menjadi PascalCase
- Memperbarui metode DrawScope selectPaint untuk menimpa parameter goresan secara bersyarat pada paint jika telah diubah
- Memperbarui Ukuran untuk menambahkan API destrukturisasi, mengganti nama UnspecifiedSize menjadi Unspecified dan menghapus metode yang tidak digunakan
Menambahkan MonotonicFrameAnimationClock yang memungkinkan Anda menggunakan MonotonicFrameClock sebagai AnimationClockObservable untuk menutup kesenjangan antara jam berbasis coroutine baru dan API yang masih menggunakan jam berbasis callback lama.
MonotonicFrameClock yang setara dengan ManualAnimationClock kini menjadi ManualFrameClock. (I111c7, b/161247083)
Menghapus
SemanticsNodeInteraction.performPartialGesture
. Sebagai gantinya, gunakanSemanticsNodeInteraction.performGesture
. (Id9b62)Mengganti nama
SemanticsNodeInteraction.getBoundsInRoot()
menjadiSemanticsNodeInteraction.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)
Modifier.plus 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)Menambahkan SemanticsMatcher
isFocused()
danisNotFocused()
. (I0b760)RemeasurementModifier ditambahkan. Fitur ini memungkinkan pengguna menghapus tata letak secara sinkron. Secara umum, Anda tidak memerlukannya karena pengukuran ulang/penataan ulang tata letak terjadi secara otomatis, tetapi kami menggunakannya di dalam LazyColumnItems selama scroll. (I5f331, b/160791058)
isSystemInDarkTheme kini selalu mempertimbangkan setelan tema gelap di seluruh sistem, dan mengabaikan status penghematan daya sebelum Q, mengikuti panduan terbaru. (I0c10c)
OnChildPositioned tidak digunakan lagi. Sebagai gantinya, gunakan OnPositioned pada turunan. (I87f95, b/162109766)
Mengganti nama AndroidComposeTestRule menjadi createAndroidComposeRule. (I70aaf)
Menambahkan tindakan aksesibilitas untuk mendapatkan TextLayoutResult (I9d6e6)
Versi 0.1.0-dev15
22 Juli 2020
androidx.compose.foundation:foundation:0.1.0-dev15
, androidx.compose.foundation:foundation-layout:0.1.0-dev15
, dan androidx.compose.foundation:foundation-text:0.1.0-dev15
dirilis. Versi 0.1.0-dev15 berisi commit berikut.
Untuk menggunakan versi Compose 0.1.0-dev15
, yang diperlukan adalah:
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
- Serupa dengan parameter baru di ScrollableColumn/ScrollableRow, LazyColumnItems/LazyRowItems kini juga memiliki parameter contentPadding yang memungkinkan penambahan padding untuk konten setelah dipotong yang tidak mungkin dilakukan hanya dengan parameter pengubah. Parameter ini juga memungkinkan penambahan spasi hanya sebelum item pertama/setelah item terakhir. (Ibc24e)
- Nama callback onFocusChange di kolom teks diganti menjadi onFocusChanged (Ida4a1)
- VerticalScroller dan HorizontalScroller 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)
- Properti semantik satu nilai sekarang menggunakan gaya pemanggilan.
Misalnya, 'semantics {hidden = true}' sekarang ditulis sebagai:
semantics { hidden() }
. (Ic1afd, b/145951226, b/145955412) - Ukuran sudut yang digunakan oleh RoundedCornerShape dan CutCornerShape sekarang dapat lebih besar dari 50% (Id2340, b/160400213)
- Mengubah parameter ContentScale default untuk composable Image dari Inside menjadi Fit. Tindakan ini dilakukan guna mendapatkan perilaku untuk meningkatkan skala Painter dasar jika ukuran tata letak lebih besar dari ukuran intrinsik painter dengan tetap mempertahankan rasio lebar tinggi. Perilaku ini lebih cocok dengan ekspektasi untuk menyediakan ukuran tetap ke Image tanpa memengaruhi perilaku default jika hanya ukuran intrinsik yang digunakan untuk menghitung ukuran fungsi yang dapat dikomposisi. (I40ae3, b/159838006)
- 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)
- Clickable telah dihapus. Gunakan Modifier.clickable (I84bdf)
- Menambahkan LazyRowItems - Analog scroll horizontal untuk LazyColumnItems (Ibbcf7)
- Memperkenalkan API animasi stateless tingkat rendah. API ini (I63bf7)
- 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)
- Mengganti penggunaan IntPx dengan Int. Mengganti IntPxPosition dengan IntOffset. Mengganti IntPxSize dengan IntSize. (Ib7b44)
- androidx.ui.foundation.shape.RectangleShape dihapus; gunakan androidx.ui.graphics.RectangleShape (I94939, b/154507984)
- 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)
- 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)
- Menambahkan Modifier.zoomable untuk fungsi cubit untuk zoom (Id5d63)
- Komponen yang dapat dialihkan tidak digunakan lagi. Sebagai gantinya, gunakan Modifier.toggleable (I35220, b/157642842)
- MutuallyExclusiveSetItem tidak digunakan lagi. Sebagai gantinya, gunakan Modifier.selectable. (I02b47, b/157642842)
- TestTag sekarang tidak digunakan lagi. Sebagai gantinya, gunakan Modifier.testTag. (If5110, b/157173105)
- Menambahkan parameter fontWeight ke Text yang secara tidak sengaja telah ditambahkan sebelumnya (I56937)
- 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.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)
- VerticalScroller dan HorizontalScroller sekarang mendukung scroll terbalik jika isReversed ditetapkan pada ScrollerPosition (I953bd)
- Mendukung penambahan composable ke tata letak teks. (I1373c)
- 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)
- Menghapus DrawBackground API yang tidak digunakan lagi dan digantikan dengan API ekstensi drawBackground di Pengubah. Memfaktorkan ulang implementasi drawBackground cat, kuas, dan warna untuk mengurangi jalur kode serta menghapus persyaratan agar Pengubah dibuat sebagai bagian dari komposisi. (I0343a)
- 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)
- HorizontalScroller dan VerticalScroller tidak memulihkan posisi scroll-nya menggunakan status instance tersimpan. (Ia0fae, b/155075048)
- FocusManagerAmbient dihapus. Gunakan FocusModifier.requestFocus untuk mendapatkan fokus. (Ic4826)
- Tata letak tabel sementara waktu dihapus hingga kami menyediakannya kembali dengan API baru. (Id88a7)
Membuat API CanvasScope yang menggabungkan objek Canvas untuk mengekspos permukaan 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)
ColoredRect telah dihapus. Box Pengguna dengan pengubah drawBackground sebagai gantinya (I983c7, b/152753731)
Tambahkan penyesuaian warna kursor ke TextField (I6e33f)
Sekarang Anda dapat menyembunyikan/menampilkan keyboard software dengan menggunakan SoftwareKeyboardController yang dikirimkan oleh callback onTextInputStarted (I8dc44, b/151860051)
Sekarang TextFieldValue yang digunakan dengan TextField dapat mempertahankan aktivitas rekreasi saat digunakan seperti ini:
var text by savedInstanceState(saver = TextFieldValue.Saver) { TextFieldValue() }
(I5c3ce, b/155075724)Menambahkan parameter yang umum digunakan ke Text(). Jika saat ini Anda membuat gaya teks lokal untuk meneruskan sejumlah kecil parameter ini, seperti
Text(style = TextStyle(textAlign = TextAlign.Center))
, Anda sekarang dapat memberikan parameter secara langsung:Text(textAlign = TextAlign.Center)
(I82768)Mengganti parameter focusIdentifier CoreTextField/TextField dengan FocusNode untuk diintegrasikan dengan subsistem fokus. (I7ea48)
Mengupdate TextField agar menempati semua ruang yang tersedia yang diberikan dalam dimensi horizontal (Ib08df, b/154638552)
Menambahkan InteractionState dan Interaction sehingga mempermudah pembuatan komponen yang bereaksi terhadap perubahan status UI seperti tekan dan tarik (Icfe25, b/152525426)
RectangleShape dipindahkan dari androidx.ui.foundation.shape.* ke androidx.ui.graphics.* (Ia74d5, b/154507984)
Mengganti semua penggunaan Color nullable di API dengan non-nullable dan menggunakan Color.Unset, bukan null (Iabaa7)
Mengupdate TextField API agar menggabungkan callback onFocus dan onBlur ke dalam callback onFocusChange(Boolean) tunggal dengan parameter (I66cd3)
Mengganti nama ScaleFit menjadi ContentScale Memindahkan ContentScale dari modul ui-graphics ke ui-core agar berada di modul yang sama dengan Alignment API. Mengganti nama FillMaxDimension menjadi Crop Mengganti nama FillMinDimension menjadi Fit Mengganti nama Fit menjadi Inside agar lebih cocok dengan kesetaraan ImageView.ScaleType Menambahkan dokumentasi yang menunjukkan bahwa kombinasi Crop dan Alignment.Center mencapai hasil yang sama seperti ImageView.ScaleType.CENTER_CROP dan Fit yang digunakan dengan Alignment.Center mencapai hasil yang sama seperti ImageView.ScaleType.FIT_CENTER Inside yang digunakan dengan Alignment.Center mencapai hasil yang sama seperti ImageView.ScaleType.CENTER_INSIDE (I45f09, b/152842521)
Menghapus ProvideContentColor, sebagai gantinya cukup gunakan ContentColorAmbient langsung dengan
Providers
(Iee942)Menambahkan parameter warna ke teks, memungkinkan penggantian warna gaya teks tanpa perlu menggabungkan dengan gaya yang disediakan dalam tema secara manual. (I41a66)
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)
ColoredRect tidak digunakan lagi. Sebagai gantinya, gunakan
Box(Modifier.preferredSize(width, height).drawBackground(color))
. (I499fa, b/152753731)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)
Penggantian operator Modifier plus dengan fungsi ekstensi pabrik (I225e4)
Draggable telah dipindahkan ke pengubah (Id9b16, b/151959544)
Telah memindahkan
Text
ke paket androidx.ui.foundation dari androidx.ui.core. (I87ce5)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)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.
Mengganti nama
Image(Painter)
API menjadi composablePaintBox(Painter)
Created Vector yang berperilaku seperti composable Image kecuali dengan VectorAsset, bukan ImageAsset (I9af9a, b/149030271)Membuat fungsi yang dapat dikomposisi Image untuk menangani pengubahan ukuran/tata letak selain menggambar ImageAsset tertentu ke layar. Gambar yang dapat disusun ini juga mendukung semua instance Painter arbitrer yang berkaitan dengan ukuran intrinsiknya, serta mendukung ukuran yang telah ditetapkan atau ukuran minimumnya (Ibcc8f)
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.
Membuat metode ekstensi di android.graphics.Bitmap,
Bitmap.asImageAsset()
, untuk membuat instance ImageAsset yang berguna untuk menggabungkan pengembangan aplikasi Android tradisional dengan framework compose. (Id5bbd)DrawImage yang dapat disusun telah dihapus. Gunakan ImagePainter untuk menggambar pada tata letak yang ada, atau SimpleImage untuk memperkenalkan Image yang memerlukan ruang (I595e1, b/149827027)
Komponen stack mendukung arah kanan-ke-kiri (Ic9e00)
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)
DrawShape yang dapat dikomposisi telah dihapus. Sebagai gantinya, gunakan pengubah DrawBackground. (I7ceb2)
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)
Komponen yang dapat di-scroll telah ditambahkan sehingga memungkinkan pembuatan Scroller/List kustom (I5fd37)
Mengganti nama latar belakang menjadi DrawBackground dan menjadikannya agar dapat diingat secara default (Ia0bd3)
Menambahkan padding, batas, bentuk, dan parameter background ke Box (I05027, b/148147281)
Menambahkan komponen Canvas. Komponen ini dapat disusun dengan beberapa ukuran (disediakan oleh pengguna) dan Anda dapat menggambar menggunakan CanvasScope (I0d622)
Mengganti nama pengubah
Border
menjadiDrawBorder
(I8ffcc)Komponen Box telah ditambahkan untuk menggabungkan fungsi umum tata letak dan menggambar. (I6e2a7)
Sekarang, scroller menampilkan perilaku gerakan lempar pada Android native. (I922af, b/147493715)
DrawBorder diganti dengan Border Modifier (Id335a)
Nama Modifier.tag diganti menjadi Modifiers.layoutId untuk menghindari kebingungan dengan Modifier.testTag. (I995f0)
Parameter persen saat membuat panduan ConstraintLayout telah diganti namanya menjadi fraksi. (Ida2db)
Menambahkan dukungan untuk margin penghalang ConstraintLayout. (I47ffe)
Memperbaiki dukungan RTL di ConstraintLayout. Menambahkan API unaware RTL. (I3b1c7)
DSL baru untuk ConstraintLayout telah ditambahkan. Lihat contoh untuk detail selengkapnya. (Icaa9a)
Menambahkan anotasi @ExperimentalLayout. ConstraintLayout, FlowRow, dan FlowColumn sekarang diberi tag untuk menandai bahwa API mereka akan berubah. (I412a8)
Modifier.padding(InnerPadding)
telah ditambahkan (I94985, b/157133803)Menghapus RowAlign, ColumnAlign in Row, dan Column yang tidak digunakan lagi. (If60d4, b/155858731)
Menghapus LayoutTag() yang tidak digunakan lagi, sebagai gantinya gunakan Modifier.tag(). Menghapus Modifier.matchParent() yang tidak digunakan lagi, sebagai gantinya gunakan Modifier.matchParentSize(). (If8044)
Menambahkan pengubah tata letak offsetPx yang dapat digunakan untuk menentukan offset (dinamis) dalam px. (I5af57)
AlignmentLineOffset yang dapat disusun sudah tidak digunakan lagi, sebagai gantinya harap gunakan pengubah relativePaddingFrom(). Composable CenterAlignmentLine telah dihapus. (I60107)
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)
Penampung telah dihapus. Sebagai gantinya gunakan Box (Ibbc2b, b/151407926)
Menghapus pengubah LayoutWidth/Height/Size yang tidak digunakan lagi. (Ib0bc1)
Menambahkan parameter value default untuk pengubah offset. (I37f06)
Menambahkan pengubah padding simetris. (I39840)
Pengubah LayoutAspectRasio yang tidak digunakan lagi telah dihapus. (I65a74)
Pengubah LayoutAlign yang tidak digunakan lagi telah dihapus. (I10877)
Memperbaiki bug pada pengubah lebar dan tinggi yang menyebabkan tata letak gabungan diukur tanpa batasan sumbu yang berlawanan. (I210b8, b/154797971)
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 Alignment instantiable dengan nilai arbitrer. Menambahkan Alignment 1D. (Ia0c05)
Mengganti nama EdgeInsets menjadi InnerPadding. Mengganti parameter innerPadding dari Material Buttons menjadi padding. (I66165)
Sekarang alignToSiblings menerima Measured, bukan Placeable. (I5788d)
Menambahkan pengubah untuk mengubah ukuran ke pengukuran intrinsik dan menghentikan penggunaan komponen yang digunakan atas tujuan ini. (I8295d)
Menambahkan dukungan untuk menyesuaikan dimensi turunan dari ConstraintLayout (Idb1a5)
Menghapus Wrap dan Center yang dapat disusun dan tidak digunakan lagi. (I29e23)
Menambahkan LayoutModifier2, API baru untuk menentukan pengubah tata letak; LayoutModifier yang tidak digunakan lagi (If32ac)
Anggota RowScope dan ColumnScope kini dapat diakses dari luar Baris dan Kolom. (I3a641)
Penampung sudah tidak digunakan lagi. Sebagai gantinya, gunakan Box. (I675ce, b/151407926)
Menambahkan pengubah LayoutOffset untuk mengimbangi posisi tata letak (I0b8a3)
Dukungan awal untuk Rtl dalam tata letak Compose (Ia5519)
LayoutAlign telah diperbarui agar tidak mengisi ruang yang tersedia (I2b14f)
AspectRatio yang dapat disusun telah dihapus dan diganti dengan pengubah. Menghapus FlexColumn yang tidak digunakan lagi, FlexRow yang dapat disusun, dan pengubah Spacing (Iec8a7)
Menghapus pengubah LayoutInflexible untuk Row dan Column (I0d820)
Menerapkan Drag Selection Handles untuk mengubah pilihan TextField. (I27032)
Mengimplementasikan LongPressAndDrag untuk TextField Selection. (I17919)
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)
- Nama
runOnIdleCompose
diganti menjadirunOnIdle
(I83607) - Beberapa nama API pengujian diganti menjadi lebih intuitif. Semua nama API findXYZ diganti menjadi onNodeXYZ. Semua nama API doXYZ diganti menjadi performXYZ. (I7f164)
- 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 API pengujian ukuran yang tidak digunakan lagi. (Iba0a0)
- Membuat API eksperimental LayoutNode (I4f2e9)
- Versi 1 dari penguncian orientasi scroll diterapkan di seluruh Compose. (I1ce7a, b/150289741)
- Pop-ups, Dialogs, dan Menus sekarang mewarisi MaterialTheme kontekstual (Ia3665, b/156527485)
- Menghapus parameter arah tata letak dari blok ukuran fungsi Layout(). Namun, arah tata letak tersedia di dalam callback melalui objek cakupan pengukuran (Ic7d9d)
- Menambahkan AbsoluteArrangement memungkinkan penyusunan turunan di dalam Row tanpa pencerminan otomatis di RTL (I3a1df)
- Anotasi @Untracked sudah tidak digunakan lagi. Ganti dengan @ComposableContract(tracked=false) (Id211e)
- Sebelum perubahan ini, plugin compiler tulis akan melakukan intersepsi panggilan terhadap konstruktor di dalam fungsi @Composable jika terdapat (I5205a, b/158123804)
- Tambahkan composable
viewModel()
yang memungkinkan untuk membuat atau mendapatkan ViewModel yang sudah dibuat dan serupa dengan cara kerjanya di Aktivitas atau Fragmen (I5fdd1) 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)
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)
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)
Kursor TextField memiliki animasi berkedip (Id10a7)
Gestur parsial tidak lagi memerlukan penerusan GestureToken (Id7ae5)
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 (I57bff)
Modifier.semantics sudah tidak digunakan lagi untuk memungkinkan penggunaan komponen tingkat tinggi. (I4cfdc)
Nama AnnotatedString.Builder.addAnnotationString menjadi addStringAnnotation. (I5059e)
Memperbarui Alignment API dan menambahkan dukungan untuk perataan mutlak (yang tidak otomatis mencerminkan konteks Rtl) (I38cd3)
Turunan Layout dan LayoutModifier dapat diukur dengan arah layout yang berbeda. (Ibd731)
Memperkenalkan parameter perbaikan opsional tambahan ke ImagePainter untuk mendukung penggambaran subset ImageAsset dasar (I0ea9e)
Memperbaiki error di AdapterList saat menghapus item (Ic64b0, b/153195921)
Kami mengubah cara kami mengukur tata letak pertama yang Anda masukkan ke dalam blok activity.setContent { }. Sebelumnya, tata letak dipaksa mengisi seluruh layar aktivitas, dan sekarang berperilaku seolah-olah Anda memasukkan tata letak ke dalam Stack: tata letak bisa lebih kecil dari layar dan akan diposisikan di sebelah kiri atas layar. Jika Anda menginginkan perilaku lama, Anda dapat menerapkan Modifier.fillMaxSize() untuk tata letak Anda. (Ie88a7, b/153453714)
Nama modul ui-text-compose diganti menjadi ui-text. sekarang ui-text berisi fungsi yang dapat dikomposisi 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)
Sekarang
runOnIdleCompose
danrunOnUiThread
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 { ... }
atauby mutableStateOf(...)
. (I5312c)Sekarang DrawLayerModifier dan drawLayer() menjadi clipToBounds dan clipToOutline secara default ke false. (I0eb8b, b/152810850)
Nama LayoutResult diganti menjadi MeasureResult. (Id8c68)
Center yang dapat disusun 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)
Mengganti nama LayoutFlexible menjadi LayoutWeight. Mengganti nama parameter tight menjadi fill. (If4738)
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)
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)
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
atausetViewContent
. Compose.disposeComposition sudah tidak digunakan lagi. Sebagai gantinya, gunakan metodedispose
padaComposition
yang ditampilkan olehsetContent
. 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)Wrap yang dapat dikomposisi sudah tidak digunakan lagi. Ini dapat diganti dengan pengubah LayoutAlign atau dengan Stack yang dapat disusun (Ib237f)
Membuat arah tata letak disebarkan dari node tata letak induk ke turunan. Menambahkan pengubah arah tata letak. (I3d955)
Mengganti nama Painter.toModifier menjadi Painter.asModifier karena Modifier yang baru dibuat memiliki referensi ke Painter asli yang dapat dibagikan ke beberapa instance Modifier (I7195b)
Mendukung arah kanan-ke-kiri dalam pengubah LayoutPadding (I9e8da)
Density dan DensityScope telah digabungkan dalam satu antarmuka. Sebagai ganti ambientDensity(), sekarang Anda dapat menggunakan DensityAmbient.current. Sebagai ganti withDensity(density), cukup gunakan with(density) (I11cb1)
Menghapus class ValueHolder. Menyusun ulang class AnimatedValue, AnimatedFloat untuk membuat kolom nilai animasi menjadi abstrak sehingga subclass dapat menonton pembaruan nilai.
- Menambahkan class model untuk AnimatedValue, AnimatedFloat, dll.
- Menambahkan set baru @Composable API ringan untuk menganimasikan di antara nilai.
- (I79530)
Perubahan yang dapat menyebabkan gangguan pada API ambien. Lihat log dan dokumentasi
Ambient<T>
untuk detail selengkapnya (I4c7ee, b/143769776)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)
Memperbaiki bug ConstraintLayout yang menyebabkan error pada rekomposisi. (Ibee5a, b/158164341)
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)
Nama LayoutModifier2 diganti menjadi LayoutModifier. (Id29f3)
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)
LayoutDirectionAmbient tidak digunakan lagi. Untuk membaca arah tata letak yang ditentukan oleh lokal, gunakan localeLayoutDirection di ConfigurationAmbient (I851b1)
Menambahkan positionInParent dan boundsInParent untuk LayoutCoordinates. (Icacdd, b/152735784)
Fungsi yang dapat dikomposisi 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)
Menambahkan OnPositionedModifier dan OnChildPositionedModifier untuk menggantikan fungsi yang dapat dikomposisi OnPositioned dan OnChildPositioned. (I2ec8f)
Melarang padding negatif di LayoutPadding. Sebagai gantinya, gunakan LayoutOffset untuk offset posisi negatif. (Ifb5b1)
WithConstraints mendapatkan parameter LayoutDirection (I6d6f7)
Memperbarui flag
ComposeFlags.COMPOSER_PARAM
menjaditrue
, 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)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)
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)
Peningkatan kualitas pada platform API Constraints (I0fd15)
Menambahkan TextDirection.Content (I48f36)
Sesuaikan Toolbar Menu untuk menampilkan fungsi menyalin, memotong, menempel dengan benar. (Id3955)
Tambahkan FloatingToolbar untuk TextField Selection. (Ie8b07)
Nama TextDirectionAlgorithm diubah menjadi TextDirection (I75ce8)
Nama TextDirection diganti menjadi ResolvedTextDirection (I3ff38)
Menambahkan HapticFeedback ke TextField Selection. (I58050)
Menambahkan metode Copy, Cut, dan Paste ke TextField Selection. (Idb70b)
TestTag dan Semantics telah dihapus. Sebagai gantinya, gunakan Modifier.testTag dan Modifier.semantics (I15ff0, b/158841414)
Mengubah nama paket untuk Locale dan LocaleList dari androidx.ui.text menjadi androidx.ui.intl (I8132c)
Perubahan API: Nama
AnnotatedString(builder: Builder)
diganti menjadiannotatedString(builder: Builder)
. (Ia6377)Perubahan API: Nama
AnnotatedString.Item
diganti menjadiAnnotatedString.Range
. (I2d44d)Menambahkan Toolbar untuk operasi terkait teks. (I49d53)
Sekarang tersedia LifecycleOwnerAmbient yang baru. Sekarang, Aktivity yang Anda gunakan dengan UI Compose harus memperluas androidx.activity.ComponentActivity (atau AppCompatActivity). setContent di android.app.Activity sekarang tidak digunakan lagi (Idb25a, b/153141084)
Nama paket ui-android-text (androidx.text) diganti dengan androidx.ui.text.platform agar sesuai dengan kebijakan androidx. (I42711)