Compose UI
androidx.compose.ui
androidx.compose.ui.geometry
androidx.compose.ui.grafics
androidx.compose.ui.platform
androidx.compose.ui.test
(Lihat Dokumen referensi API untuk semua paket penulisan)
Update Terbaru | Rilis Stabil | Kandidat Rilis | Rilis Beta | Rilis Alfa |
---|---|---|---|---|
7 Agustus 2024 | 1.6.8 | - | 1.7.0-beta07 | - |
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.ui:ui:1.6.8" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.ui:ui: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-beta07
7 Agustus 2024
androidx.compose.ui:ui-*: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)
Versi 1.7.0-beta06
24 Juli 2024
androidx.compose.ui:ui-*:1.7.0-beta06
dirilis. Versi 1.7.0-beta06 berisi commit ini.
Versi 1.7.0-beta05
10 Juli 2024
androidx.compose.ui:ui-*:1.7.0-beta05
dirilis. Versi 1.7.0-beta05 berisi commit ini.
Perbaikan Bug
- Memperbaiki bug saat mengubah keyboard virtual akan menyebabkan
TextField
tidak menerima input dari keyboard baru hingga fokus hilang dan diperoleh kembali. - Memperbaiki masalah saat upaya mempertahankan konten lapisan akan menyebabkan efek samping yang tidak diinginkan saat merender dengan konten
SurfaceView
.
Versi 1.7.0-beta04
26 Juni 2024
androidx.compose.ui:ui-*: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)
- Nonaktifkan dukungan rendering software untuk
GraphicsLayer
API. (35ddd8) - Perbaikan untuk error dalam logika persistensi lapisan. (70b13e)
- Penggunaan kembali pengoptimalan objek lapisan dikembalikan, karena menyebabkan masalah rendering. (70b13e)
Versi 1.7.0-beta03
12 Juni 2024
androidx.compose.ui:ui-*:1.7.0-beta03
dirilis. Versi 1.7.0-beta03 berisi commit ini.
Versi 1.7.0-beta02
29 Mei 2024
androidx.compose.ui:ui-*:1.7.0-beta02
dirilis. Versi 1.7.0-beta02 berisi commit ini.
Perubahan API
- Mengganti nama
SemanticsProperties.Editable
menjadiIsEditable
dan mengubahSemanticsPropertyReceiver.editable
menjadi valisEditable
. Properti ini sekarang berupa boolean dan selalu ditentukan berdasarkan kolom teks. (I8acd8) - Ganti nama parameter tolok ukur aksesibilitas. (I3d440)
- Mengupdate API untuk menata gaya link:
TextLinkStyles
kini menjadi bagian dari konstruktorLinkAnnotation
dan metodeAnnotatedString.fromHtml
(I90b2b). Juga menghapusTextDefaults
dari materi (I5477b)
Perbaikan Bug
- Mengganti nama
LayoutCoordinates.introducesFrameOfReference
menjadiLayoutCoordinates.introducesMotionFrameOfReference
agar lebih mencerminkan tujuannya. Mengganti nama fungsi terkait untuk menghitung koordinat berdasarkan tanda tersebut. (I3a330)
Versi 1.7.0-beta01
14 Mei 2024
androidx.compose.ui:ui-*:1.7.0-beta01
dirilis. Versi 1.7.0-beta01 berisi commit ini.
Perubahan API
- Mengganti nama
performCustomAccessibilityActionLabelled
menjadiperformCustomAccessibilityActionWithLabel
, danperformCustomAccessibilityActionWhere
menjadiperformCustomAccessibilityActionWithLabelMatching
. (I5387f) AnnotatedString.hasEqualsAnnotations
kini 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)
Perbaikan Bug
- Memperbaiki kasus penggunaan lainnya saat menambahkan pengubah input pointer secara dinamis selama peristiwa 63e1504
Versi 1.7.0-alpha08
1 Mei 2024
androidx.compose.ui:ui-*:1.7.0-alpha08
dirilis. Versi 1.7.0-alpha08 berisi commit ini.
Perubahan API
- Menambahkan dukungan untuk penerapan bentuk yang dapat berubah.
Shape#createOutline
kini diamati di dalam lapisan grafis, sehingga nilai status pembacaan di dalamnya akan menyebabkan invalidasi saat status berubah, sehingga memungkinkan animasi bentuk yang lebih berperforma tinggi. (Id1629, b/326070216) - 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) LookaheadScope
API telah dibuat stabil (I21507)- Mengubah lambda tindakan untuk
getScrollViewportLength
sesuai masukan dewan API. (Ibc74a) - Mengupdate API outline
GraphicsLayer
untuk menggunakan parameter float, bukan int. Menghapus nilai sentinelUnsetOffset/UnsetSize IntSize
dan menggantinya dengan konstanta Unspecified yang sudah ada pada class inline Offset dan Size berbasis float (I2fb03, b/333863462) - Saat memasukkan input mouse selama pengujian,
MouseInjectionScope.click()
,MouseInjectionScope.doubleClick()
,MouseInjectionScope.tripleClick()
,MouseInjectionScope.longClick()
kini menerima parameterbutton: MouseButton
untuk membuatnya lebih berlaku secara universal. Nilai defaultnya adalahMouseButton.Primary
untuk semua metode. (I31a23, b/190493367, b/261439695) - Mengganti nama
onClicked
menjadionClick
di dalamLinkInteractionListener
. (Iaa35c) - Mengganti nama
TextInclusionStrategy.isInside
menjadiisIncluded
. Membuat jenis nilai yang ditampilkanParagraph/MultiParagraph#getRangeForRect()
non nullable. (I51f26)
Perbaikan Bug
- Memperbaiki pengambilan screenshot panjang untuk penampung scroll dengan
reverseScrolling=true
. (I7c59c)
Kontribusi Eksternal
- 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.ui:ui-*:1.7.0-alpha07
dirilis. Versi 1.7.0-alpha07 berisi commit ini.
Perubahan API
ClickableText
ditandai sebagai tidak digunakan lagi. Untuk menambahkan link ke teks, buatAnnotatedString
denganLinkAnnotation
yang sesuai dengan link Anda dan teruskanAnnotatedString
ini ke composable Text. (I34d4b, b/323346994)- Memperkenalkan bahasa
ViewConfiguration.HandwritingGestureLineMargin
untuk gestur tulis tangan. Mendukung gesturJoinOrSplit
untukBasicTextField
(Ie6e13, b/325660505) FocusProperties.enter
danFocusProperties.exit
tidak lagi bersifat eksperimental.FocusDirection.Enter
danFocusDirection.Exit
tidak lagi bersifat eksperimental.FocusRequester.Cancel
tidak lagi bersifat eksperimental (I461a1, b/261564106)- 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) - Tombol fitur untuk screenshot panjang telah dihapus. (I28648, b/329128246)
LazyColumn
kini akan merender header melekat dengan benar dalam screenshot panjang. (I8d239, b/329296635)- 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) ApproachLayoutModifierNode
danModifier.approachLayout
kini stabil, denganisMeasurementApproachInProgress()
danisPlacementApproachInProgress()
baru untuk menggantikanisMeasurementApproachComplete()
danisPlacementApproachComplete()
lama.- Menghapus penggubah
intermediateLayout
yang tidak digunakan lagi. (I3e91c) - Mengganti nama
GraphicsLayer#buildLayer
untuk merekam untuk mencerminkan metode start/endRecording dari API yang didukung Displaylist sepertiRenderNode
dan Picture. - Memperbarui
rememberGraphicsLayer
untuk memanfaatkanrememberObserver
. (I312c1, b/288494724, b/330758155) 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)- Link teks mendapatkan opsi gaya visual status ditekan selain gaya normal, diarahkan ke atas dan difokuskan (I5f864, b/139312671)
- 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 menentukanconfiguration
visual untuk link saat link difokuskan dan/atau diarahkan ke atasnya. (I81ce4, b/139312671)ImeOptions.hintLocales
tidak lagi nullable. Jika Anda ingin meneruskan daftar Lokalitas kosong, gunakanLocaleList.Empty
. (Ic5bc4)
Perbaikan Bug
- Menangani data peristiwa input historis yang buruk/rusak dengan baik (mengabaikan data offset buruk).
- Memperbaiki peristiwa pointer yang tidak terduga saat pengubah input pointer ditambahkan secara dinamis sebelum pengubah input pointer lainnya selama streaming peristiwa input pointer aktif (misalnya, antara saat kursor diarahkan ke posisi masuk dan saat kursor keluar saat kursor keluar [mouse/stylus]).
Versi 1.7.0-alpha06
3 April 2024
androidx.compose.ui:ui-*:1.7.0-alpha06
dirilis. Versi 1.7.0-alpha06 berisi commit ini.
Fitur Baru
- 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, I30626, b/139326648) - 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). (I2b055, b/329296471)
Perubahan API
fun ClipEntry.getMetadata()
diubah menjadival ClipEntry.clipMetadata
. (I50155)- 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) - Sekarang Anda dapat meneruskan objek
GraphicsLayer
ke dalam fungsiplaceable.placeWithLayer()
(I1b22f) ClipboardManager.setClip
kini menerima null agar dapat menghapus Papan Klip. (I7d2e9)- Menambahkan ID resource untuk membantu menyembunyikan View yang digunakan sebagai detail implementasi dalam alat build (I99531)
- Menambahkan metode penangguhan
GraphicsLayer#toImageBitmap
untuk mendukung rendering konten bitmap keGraphicsLayer
. Ini adalah operasi rendering yang dipercepat hardware pada API level 22+ (inklusif) yang mendukung lebih dari 99% dari semua perangkat Android. Pada Android API level 21, hal ini kembali ke rendering software. (I9e114) - Metode bantuan untuk mengonversi
RectF
Android menjadiComposeRect
(I39925, b/325660505) - 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) - Varian
BasicTextField(state)
danBasicSecureTextField
kini menggunakanKeyboardActionHandler
, bukanKeyboardActions
, untuk memproses tindakan yang dilakukan oleh keyboard virtual. (I58dda)
Versi 1.7.0-alpha05
20 Maret 2024
androidx.compose.ui:ui-*:1.7.0-alpha05
dirilis. Versi 1.7.0-alpha05 berisi commit ini.
Fitur Baru
- Memperkenalkan
GraphicsLayer
API baru untuk merekam perintah menggambar dalam daftar tampilan serta properti tambahan yang memengaruhi rendering daftar tampilan. Ini memberikan batas isolasi untuk membagi scene yang kompleks menjadi bagian-bagian lebih kecil yang dapat diupdate satu per satu tanpa harus membuat ulang seluruh scene. Transformasi yang dibuat keGraphicsLayer
dapat dilakukan tanpa merekam ulang daftar tampilan. Tidak sepertiModifier.graphicsLayer
,GraphicsLayer
memungkinkan rendering konten Composable di tempat lain dan berguna dalam kasus penggunaan animasi ketika konten diharapkan akan dirender dalam berbagai scene.
Perubahan API
GraphicsLayer.draw(Canvas)
bukan lagi API publik. Sebagai gantinya, gunakan fungsi ekstensiDrawScope.drawLayer(GraphicsLayer)
untuk menggambar lapisan. (I7a7c0)- Memisahkan
restrictedConstraints()
menjadi dua metode:fitPrioritizingWidth()
danfitPrioritizingHeight()
(I6d7fd) - Memperkenalkan stub
HardwareCanvas
untuk penggunaan Android L (I1c3b5, b/288494724) - Mengupdate framework Compose untuk menampilkan lokal komposisi
GraphicsContext
serta memperbarui implementasi Pengubah Pemilik,DelegateableNode
, dandrawWithCache
guna mengekspos akses keGraphicsContext
untuk akses terbatas yang akan otomatis membersihkan instanceGraphicsLayer
saat Pengubah dihapus. (I64a2f, b/288494724) - Memperkenalkan
InterceptPlatformTextInput
untuk membantu menulis pengujian terkait IME tingkat rendah dan kasus penggunaan IME tingkat rendah lainnya.PlatformTextInputTestOverride
tidak digunakan lagi. (I862ed, b/322680547) - Fungsi ekstensi
GraphicsLayer.setOutline(Outline)
telah ditambahkan. (Ib81f4) - Memperkenalkan konstruktor fungsi
GraphicsContext
untuk membuat factory guna membuat instanceGraphicsLayer
(Ib98d6, b/288494724) - Mengekspos
GraphicsLayer
API untuk memberikan fleksibilitas yang ditentukan developer dalam menangkap perintah gambar yang dapat digunakan untuk menggambar di tempat lain dan juga menerapkan efek visual yang berbeda ke hasil akhir. (I80245, b/288494724) - Memperkenalkan
Paragraph#getRangeForRect
yang menampilkan rentang teks yang ditutupi oleh area persegi panjang tertentu. (Iee516, b/325660505) - Menghapus penggantian eksperimental
BasicText
dengan argumenonLinkClicked
. API pengganti untuk dukungan hyperlink akan menyusul di masa mendatang. (I107d5)
Perbaikan Bug
- Menambahkan definisi API ekspektasi/aktual
GraphicsLayer
untuk mendukung perekaman dan pemutaran ulang perintah gambar dengan efek dan transformasi visual komposisi opsional. Memperkenalkan antarmukaGraphicsContext
untuk memuat dependensi grafis termasuk pembuatan dan pengelolaan instanceGraphicsLayer
. (I4a8d6, b/288494724) - Memperbaiki masalah interop pada penelusuran fokus 1D saat fokus akan macet di dalam
ComposeView
yang disematkan di antara tampilan lain. (I08fd4)
Kontribusi Eksternal
LocalLifecycleOwner
dipindahkan dari UI Compose kelifecycle-runtime-compose
sehingga API bantuan berbasis Compose-nya dapat digunakan di luar UI Compose. Terima kasih Jake Wharton atas kontribusinya. (I6c41b, b/328263448)- Mengekspos properti float bias secara konsisten pada semua subjenis perataan berbasis bias. (I69f0f, b/328088992)
Versi 1.7.0-alpha04
6 Maret 2024
androidx.compose.ui:ui-*:1.7.0-alpha04
dirilis. Versi 1.7.0-alpha04 berisi commit ini.
Perubahan API
- Mendukung fitur tulis tangan stilus untuk Basicmenjadi2 di perangkat setelah Android U. (I002e4)
- 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) FocusRequester.createRefs
kini stabil (I4d92c, b/261436820)- Memperkenalkan
DelegatableNode.requireView()
untuk memungkinkan node pengubah mendapatkanView
Android saat ini tanpa membaca lokal komposisi. (I40768) - API baru
Path.reverse()
untuk membalikkan arah jalur (I36348) - Menambahkan
hintLocales
keKeyboardOptions
untuk memberiTextFields
kemampuan untuk memberi petunjuk IME dengan lokalitas tertentu untuk preset bahasa pilihan. - Mengekspos properti
platformLocale
dariLocale
yang menampilkan objek platform pokok, misalnya,java.util.Locale
. (I921c6)
Versi 1.7.0-alpha03
21 Februari 2024
androidx.compose.ui:ui-*:1.7.0-alpha03
dirilis. Versi 1.7.0-alpha03 berisi commit ini.
Perubahan API
- Memperkenalkan
ContextualFlowRow
danFlowRow
/Column
yang Disempurnakan dengan MaxLines dan Overflow. Dengan senang hati kami mengumumkan peningkatan padaFlowRow
danFlowColumn
eksperimental, yang kini dilengkapi dengan dukungan maxLines dan tambahan, bersamaan dengan peluncuranContextualFlowRow
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) - Tambahkan properti semantik
maxTextLength
yang harus ditetapkan pada kolom teks yang memfilter jumlah karakter maksimum yang diizinkan. (I24d9f, b/170648072) - Wrapper
Modifier.inspectable
tidak digunakan lagi. API ini akan membuat pengubah pengubah Anda lebih banyak daripada yang diperlukan, sehingga penggunaannya sekarang tidak disarankan. Developer sebaiknya menerapkan metodeinspectableProperties()
diModifierNodeElement
jika ingin mengekspos properti pengubah ke alat. (Ib3236) - Konstruktor baru untuk
PopupProperties
yang memungkinkan kontrol penuh atas tandaWindowManager.LayoutParams
. (Ibb33e, b/312485503) - 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) BasicTextField2
dan API terkait pada paketandroidx.compose.foundation.text2
dipindahkan keandroidx.compose.foundation.text
. (I9f635)- Menambahkan
ApproachLayoutModifierNode
API baru untuk mendukung pembuatan logika pendekatan kustom di Node Pengubah eksplisit. Juga menambahkanDeferredTargetAnimation
API eksperimental baru untuk animasi yang targetnya tidak diketahui saat pembuatan instance. (I60745) Path
API baru untuk mengkueri arah Jalur dan mengekstrak kontur dariPath
. (I63d04)- Menambahkan
PathHitTest
danPath.contains(Offset)
untuk memeriksa apakahPath
berisi titik tertentu. (I3b218) TextLayoutResult
kini mengekspos metodegetLineBaseline(lineIndex)
. Hal ini memungkinkan pembacaan dasar pengukuran baris teks arbitrer selain properti praktisfirstBaseline
danlastBaseline
yang sudah ada. (Ide4e8, b/237428541)- Menambahkan metode untuk hanya membandingkan anotasi dari dua
AnnotatedStrings
. (I32659)
Perbaikan Bug
- Memperbaiki masalah kompatibilitas mundur dengan
SemanticsPropertyReceiver.performImeAction
danSemanticsActions.PerformImeAction
. (Id0528, b/322269946)
Versi 1.7.0-alpha02
7 Februari 2024
androidx.compose.ui:ui-*:1.7.0-alpha02
dirilis. Versi 1.7.0-alpha02 berisi commit ini.
Perubahan API
- Perbaikan masalah kompatibilitas biner dengan
SemanticsPropertyReceiver.performImeAction
. (I65865, b/322269946) - Konstruktor
PopupProperties
yang menggunakan parameterusePlatformDefaultWidth
tidak lagi bersifat eksperimental. (I8f8d2) - Menambahkan overload
ComposeTestRule.waitUntil
yang menggunakan deskripsi string kondisi untuk disertakan dalam pesan waktu tunggu. (I9413e) - API semantik baru
unset()
untuk menghapus properti semantik yang ditambahkan dalam rantai pengubah yang sama. Properti semantik baruisOpaque
. (I8c583, b/317966058, b/246056649) - Menghapus
originalEventPosition
dari metode penyalinan di API publikPointerInputChange
. (I7bead)
Perbaikan Bug
- Memperbaiki bug a11y yang memungkinkan non-tab dan non-radiobuttons dapat diklik saat dipilih. (I2181c)
VelocityTracker
kini akan memiliki perbaikan untuk menambahkan titik secara default. Perbaikan masih dapat dinonaktifkan dengan menyetelVelocityTrackerAddPointsFix
ke salah (false) jika ada masalah. (Ib3877, b/269487059)- Memperbaiki inkompatibilitas biner mundur di
TextStyle
danParagraphStyle
. (I179f0, b/320819734)
Kontribusi Eksternal
- Menambahkan konstruktor
DialogProperties
baru tanpa parameter khusus platform. (I45829) - Menambahkan konstruktor
PopupProperties
baru tanpa parameter khusus platform. (I9a038)
Versi 1.7.0-alpha01
24 Januari 2024
androidx.compose.ui:ui-*:1.7.0-alpha01
dirilis. Versi 1.7.0-alpha01 berisi commit ini.
Perubahan API
- Memperluas
ClipboardManager
dengan menambahkanClipEntry
danClipMetadata
untuk mendukung konten arbitrer seperti gambar. - Menambahkan
DeviceConfigurationOverride
API keui-test
untuk mengizinkan secara lokal mengganti perilaku konten yang sedang diuji, seperti menentukan atribut ukuran, lokalitas, arah tata letak, skala font, atau tema.
Versi 1.6
Versi 1.6.8
12 Juni 2024
androidx.compose.ui:ui-*:1.6.8
dirilis. Versi 1.6.8 berisi commit ini.
Perbaikan Bug
- Memperbaiki inkonsistensi dalam penskalaan font saat skala font lebih kecil dari tabel terendah yang ditentukan. Dalam kasus ini, sekarang kita berinterpolasi antara skala 1x linear dan tabel terendah yang didefinisikan, sehingga ukuran font meningkat secara monoton seiring bertambahnya skala. (Icbae3)
Versi 1.6.7
1 Mei 2024
androidx.compose.ui:ui-*:1.6.7
dirilis. Versi 1.6.7 berisi commit ini.
Versi 1.6.6
17 April 2024
androidx.compose.ui:ui-*:1.6.6
dirilis. Versi 1.6.6 berisi commit ini.
Perbaikan Bug
- Memperbaiki error
BasicTextField
yang jarang terjadi.
Versi 1.6.5
3 April 2024
androidx.compose.ui:ui-*:1.6.5
dirilis. Versi 1.6.5 berisi commit ini.
Versi 1.6.4
20 Maret 2024
androidx.compose.ui:ui-*:1.6.4
dirilis. Versi 1.6.4 berisi commit ini.
Versi 1.6.3
6 Maret 2024
androidx.compose.ui:ui-*:1.6.3
dirilis. Versi 1.6.3 berisi commit ini.
Versi 1.6.2
21 Februari 2024
androidx.compose.ui:ui-*:1.6.2
dirilis. Versi 1.6.2 berisi commit ini.
Versi 1.6.1
7 Februari 2024
androidx.compose.ui:ui-*:1.6.1
dirilis. Versi 1.6.1 berisi commit ini.
Perbaikan Bug
- Memperbaiki masalah kompatibilitas mundur dengan
SemanticsPropertyReceiver.performImeAction
danSemanticsActions.PerformImeAction
. (Ie0bb2, b/322269946) - Tata letak sekarang mengeluarkan error saat mengukur jika tata letak menampilkan ukuran yang sangat besar. Error semacam ini biasanya terjadi saat pengukuran menggunakan batasan maksimum secara langsung tanpa memeriksa
Constraints.Infinity
. Pemeriksaan ini akan membantu developer menemukan masalah terkait tata letak yang memiliki ukuran yang salah, bukan pada tata letak yang memuatnya. (I339a9)
Versi 1.6.0
24 Januari 2024
androidx.compose.ui:ui-*:1.6.0
dirilis. Versi 1.6.0 berisi commit ini.
Versi 1.6.0-rc01
10 Januari 2024
androidx.compose.ui:ui-*:1.6.0-rc01
dirilis. Versi 1.6.0-rc01 berisi commit ini.
Perbaikan Bug
- Mengoptimalkan implementasi grafik vektor untuk meningkatkan performa dengan meminimalkan rekomposisi tambahan.
Versi 1.6.0-beta03
13 Desember 2023
androidx.compose.ui:ui-*:1.6.0-beta03
dirilis. Versi 1.6.0-beta03 berisi commit ini.
Fitur Baru
LayoutCoordinates
kini dapat dilepas tanpa dilepas node. Melindungi dari hal tersebut di Layout Inspector compose (If693)
Perbaikan Bug
PlatformImeOptions
kini menjadi class konkret, bukan antarmuka. (If40a4)- Memperbaiki rekomposisi downstream tambahan yang disebabkan oleh
LocalSoftwareKeyboardController
danLocalTextInputService
yang diberikan nilai baru setiap kali root direkomposisi. (I42190, b/310510985)
Versi 1.6.0-beta02
29 November 2023
androidx.compose.ui:ui-*:1.6.0-beta02
dirilis. Versi 1.6.0-beta02 berisi commit ini.
Versi 1.6.0-beta01
15 November 2023
androidx.compose.ui:ui-*: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
di factoryDragAndDropModifierNode
diganti namanya menjadiacceptDragAndDropTransfer
.acceptsDragAndDropTransfer
telah ditambahkan ke PengubahdragAndDropTarget
untuk menerima sesi tarik lalu lepas. Lambda ini menampilkanDragAndDropTarget
yang valid jika tertarik dengan sesi tarik lalu lepas. Lambda lain untuk memproses peristiwa tarik telah diganti dengan ini. Fungsi factoryDragAndDropTarget
telah ditambahkan untuk menerima dari sesi tarik lalu lepas (Iebf3a)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)PlatformTextInputModifierNode.runTextInputSession
telah diganti namanya menjadiestablishTextInputSession
. (I03cd0)Meningkatkan nama node api yang dapat dilewati agar lebih mudah dipahami. (Ia4474)
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)Menghapus
FocusDirection.In
danFocusDirection.Out
menggunakanFocusDirection.Enter
danFocusDirection.Exit
sebagai gantinya (I2f660)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)Konstruktor
FontStyle(int)
tidak digunakan lagi. Sebagai gantinya, gunakanFontStyle.Normal
atauFontStyle.Italic
. (I66610)Mengganti nama antarmuka
FontScalable
menjadiFontScaling
(Ie804a)
Perbaikan Bug
SoftwareKeyboardController.show()
tidak akan lagi menampilkan keyboard software jika tidak ada editor teks yang difokuskan. (I2165a, b/301477279)- Peristiwa Atas tombol hardware untuk kunci yang belum menerima peristiwa Bawah dalam Tampilan Compose yang sama kini akan diabaikan. (Ib37b4, b/305518328)
- Menambahkan dukungan perender untuk Sweep Gradient di
ArcLine
. (I4d5bb) - Terapkan tanda sama dan kode hash untuk
PageSize.Fixed
. (Ie3ede, b/300134276) - 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)
TestDispatcher
yang diteruskan sebagaieffectContext
ke pengujian Compose kini akan digunakan untuk membuat pengujian dan jam frame. (Ia7178)
Versi 1.6.0-alpha08
18 Oktober 2023
androidx.compose.ui:ui-*:1.6.0-alpha08
dirilis. Versi 1.6.0-alpha08 berisi commit ini.
Perubahan API
Modifier.dragAndDrawSource
telah mengganti nama lambdaonDrawDragShadow
menjadidrawDragDecoration
danDragAndDropInfo
telah mengganti nama parameter ukuran menjadidragDecorationSize
. (Id0e30, b/303904810)- Memperkenalkan
SemanticsNodeInteraction.isDisplayed()
danSemanticsNodeInteraction.isNotDisplayed()
untuk memeriksa apakah node yang cocok terlihat atau tidak tanpa membuat pernyataan. (I2c196, b/302100809) - Memperkenalkan nilai
Unspecified
khusus untuk kolomTextAlign
,TextDirection
,Hyphens
, danLineBreak
dariParagraphTextStyle
untuk menggantikannull
. Karena class ini adalah class inline, dengan mengganti nullable dengan Unspecified, kita akan menghindari boxing jenis primitif. Konstruktor, pengambil, dan metode lainnya dalam gayaTextStyle
dan Paragraf diperbarui untuk menerima parameter yang disebutkan sebagai jenis non-null. (I4197e, b/299490814) - Tambahkan overload
GoogleFont
untuk membacaGoogleFont
dari XML. (If8f59) - Membuat
LoremIpsum
PreviewParameterProvider
sebagai kelas terbuka. (I41bf5, b/266918816, b/300116360)
Perbaikan Bug
FontFamilyResolver
kini menggunakanDispatchers.Main
untuk coroutine pengelolaan cache. (Ie8dd9)AndroidViewBinding
kini secara sinkron menghapus instanceFragment
yang di-inflate dengan menyertakanFragmentContainerView
di tata letak sebagai bagian darionRelease
-nya menggunakancommitNow
(bukancommit
yang digunakan sebelumnya), sehingga memperbaiki masalah pada metode Edit Live dengan mengganti komposisi setelah perubahan. (I58fbf)
Versi 1.6.0-alpha07
4 Oktober 2023
androidx.compose.ui:ui-*: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) - Menambahkan Pengubah
dragAndDropSource
untuk memulai sesi tarik lalu lepas, dan PengubahdragAndDropTarget
untuk menerima sesi tarik lalu lepas. (Ib7828, b/286038936) - Menambahkan koleksi
ColorList
danColorSet
yang menghindari alokasi. (I744bd) - 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)
Perbaikan Bug
- Penguraian vektor drawable XML yang dioptimalkan. (Ibb015)
Versi 1.6.0-alpha06
20 September 2023
androidx.compose.ui:ui-*:1.6.0-alpha06
dirilis. Versi 1.6.0-alpha06 berisi commit ini.
Perubahan API
- Pengoptimalan tambahan pada ikon Material. (I3e08d)
- Menambahkan kemampuan untuk menelusuri hierarki pengubah atas/bawah untuk menemukan node yang serupa. (I2d234)
- Menambahkan callback
onRestoreFailed()
ke pengubahfocusRestorer()
(Ie1d43) - Menambahkan anotasi androidx ke berbagai API grafis untuk menentukan
ColorInt
,FloatRange
,IntRange
,Size
, dan lainnya. (Id65c8, b/290950582) - Menambahkan
showSystemUi=true
ke definisiPreviewScreenSizes
(Ib61d3)
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)
Versi 1.6.0-alpha05
6 September 2023
androidx.compose.ui:ui-*:1.6.0-alpha05
dirilis. Versi 1.6.0-alpha05 berisi commit ini.
Perubahan API
- Aktifkan pengambilan konten di
AndroidComposeViewAccessibilityDelegateCompat
. (Ib2969) - Kecepatan ayunkan jari di komponen View seperti
ScrollView
danRecyclerView
dibatasi padaViewConfiguration.ScaledMaximumFlingVelocity
. Compose sekarang berisi versinya sendiri darimaximumFlingVelocity
yang sekarang berlaku untukDraggable
. (Ibf974) - Menambahkan scaffolding awal untuk mendukung API tarik lalu lepas platform. (If84ce)
- Menambahkan
deviceId
keRotaryScrollEvent
(Iba3bf) - Mengupdate
ui-tooling
Devices API untuk menyertakan perangkat yang lebih baru (Ib25b4)
Versi 1.6.0-alpha04
23 Agustus 2023
androidx.compose.ui:ui-*:1.6.0-alpha04
dirilis. Versi 1.6.0-alpha04 berisi commit ini.
Perubahan API
- Menambahkan metode untuk menonaktifkan
ReusableComposition
, menghapus pengamatan, tetapi mempertahankan node. Komposisi yang dinonaktifkan dapat diaktifkan lagi dengan memanggilsetContent
. (Ib7f31) - Menambahkan antarmuka
ReusableComposition
untuk mengelola siklus proses dan penggunaan ulang subkomposisi. (I812d1, b/252846775) Modifier.focusGroup
telah dipromosikan ke API stabil. (I7ffa3)- Menambahkan anotasi androidx ke berbagai API grafis untuk menentukan
ColorInt
,FloatRange
,IntRange
,Size
, dan lainnya. (I70487, b/290950582) - Mengupdate
ColorFilter
API untuk memiliki jenis subclass konkret guna meningkatkan kemampuan inspeksi parameter. (I5fe29) - Memperkenalkan library pratinjau wear-tooling untuk mencantumkan perangkat Wear yang valid yang dapat digunakan untuk pratinjau UI (Ib036e)
- Membuat antarmuka
FontScalable
untuk menangani bagian penskalaan font dari antarmuka Density. (I2cf3f)
Versi 1.6.0-alpha03
9 Agustus 2023
androidx.compose.ui:ui-*:1.6.0-alpha03
dirilis. Versi 1.6.0-alpha03 berisi commit ini.
Perubahan API
- Jenis transisi masuk/keluar baru yang menskalakan konten berdasarkan ukuran penampung animasi selama proses masuk &keluar animasi keluar.
LookaheadScope
Fungsi dan antarmuka composable kini stabil. (Ifb2ce) - Menambahkan dukungan untuk mengonfigurasi
privateImeOptions
(Idb772)
Perbaikan Bug
PopupPositionProvider.calculatePosition
sekarang akan otomatis memperbarui posisi pop-up saat status yang dibaca dalam penghitungan diubah. (I676a1, b/292257547)- 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) - Memperluas penerapan pernyataan global dalam pengujian UI. (I1f90d)
Versi 1.6.0-alpha02
26 Juli 2023
androidx.compose.ui:ui-*:1.6.0-alpha02
dirilis. Versi 1.6.0-alpha02 berisi commit ini.
Perubahan API
- Menambahkan antarmuka pencari lokasi layanan yang dapat diterapkan oleh pengimplementasi Komposisi yang memungkinkan penerapan Komposisi yang didelegasikan ke pencarian layanan delegasi komposisi lain ke Komposisi asli. Ini tidak boleh disebut directy dan digunakan untuk mengaktifkan pembuatan API eksperimental dalam runtime yang dapat ditemukan dari versi gabungan komposer seperti yang dilakukan modul UI. (I296b9)
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)LookaheadLayout
danLookaheadLayoutScope
tidak digunakan lagi untuk beberapa rilis dan sekarang dihapus. API pengganti adalahLookaheadScope
yang dapat berfungsi dengan Tata Letak apa pun. (I12ac3)- Menambahkan
SemanticsNodeInteraction.requestFocus
sebagai cara yang lebih nyaman dan mudah ditemukan untuk meminta fokus dalam pengujian. (Ie8722) - Menambahkan API eksperimental untuk mendaftarkan pernyataan global, agar dapat digunakan oleh framework pengujian di masa mendatang. (I12d77)
Perbaikan Bug
- Pemanggilan pertama callback
update
AndroidView
sekarang akan ditunda hingga tampilan dilampirkan, bukan berjalan saat komposisi yang memperkenalkanAndroidView
diterapkan. Tindakan ini memperbaiki bug saat callbackupdate
tidak akan dibatalkan jika status yang dibacanya segera diubah oleh suatu efek. (Ie9438, b/291094055)
Versi 1.6.0-alpha01
21 Juni 2023
androidx.compose.ui:ui-*:1.6.0-alpha01
dirilis. Versi 1.6.0-alpha01 berisi commit ini.
Fitur Baru
- Dukung masa depan di
LazyList
. Hal ini memungkinkanLazyList
di penerusan pencarian untuk mengabaikan animasi apa pun (misalnya, animasi penempatan item,AnimatedVisibility
, dll.) serta menghitung ukuran dan posisi target untuk semua turunan. Setelah langkah di masa depan, turunanLazyList
dapat menganimasikan secara independen terhadap realitas seperti yang terlihat pada tahap di masa depan.
Perubahan Perilaku: includeFontPadding sekarang bernilai salah (false) secara default di Compose
includeFontPadding
sekarang bernilai salah secara default (21d806) di Compose.
includeFontPadding
adalah atribut lama yang mengontrol apakah akan menyertakan padding tambahan di bagian atas baris pertama dan baris terakhir teks atau tidak untuk mengakomodasi karakter yang mungkin meluas di atas atau di bawah dasar pengukuran teks.
Mengupdate versi Compose ini akan mengubah cara semua teks dirender di UI Anda dengan menghapus padding tambahan di bagian atas baris pertama dan baris terakhir dari setiap teks yang Anda tampilkan.
Bergantung pada persyaratan UI dan metrik font yang Anda gunakan, perubahan akan minimal. Namun, Anda mungkin akan menemui pemblokir seperti: - Pengujian screenshot rusak. Perbaiki UI jika diperlukan, dan buat ulang gambar emas. - Teks sedikit tidak sejajar. Hapus padding negatif kustom atau tambahkan padding jika perlu.
Anda dapat memilih ikut serta dalam includeFontPadding
dengan menggunakan PlatformTextStyle
untuk setiap teks:
Text(
text = myText,
style = TextStyle(
lineHeight = 2.5.em,
platformStyle = PlatformTextStyle(
includeFontPadding = true/false
)
/* … */
)
)
Anda dapat memilih menggunakan includeFontPadding
untuk semua teks dengan mengonfigurasi gaya Material. Perhatikan bahwa nama parameter akan bervariasi antara M2 dan M3.
val Typography = Typography(
body1 = TextStyle(
fontFamily = /* … */,
fontSize = /* … */,
platformStyle = PlatformTextStyle(
includeFontPadding = false
)
/* … */
)
)
MaterialTheme(
typography = Typography,
/* … */
)
Anda dapat menemukan selengkapnya tentang Compose includeFontPadding
di dokumentasi developer dan postingan blog ini.
Jika Anda mengalami masalah/bug yang terhubung dengan perubahan ini, laporkan bug menggunakan issue tracker ini.
Perubahan API
- Mendukung
InputConnection#requestCursorUpdates
(I0c69b) - Menambahkan
FocusRequester.saveFocusedChild
danFocusRequester.restoreFocusedChild
(Ic557e, b/272302679, b/275157318) - 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) - Mengoptimalkan aksesibilitas untuk alokasi performa dan memori. (Iede48)
- Menambahkan properti dan tindakan semantik untuk mendukung terjemahan teks. (I4a6bc)
- Properti baru di
IntrinsincMeasureScope
dan penerapannya (misalnya,MeasureScope
) untuk menunjukkan apakah tahap pengukuran saat ini sudah teruji. (I7a812) - Mengupdate
DrawScope
API untuk memperkenalkan kemampuan untuk menargetkan ulang rendering ke dalam kanvas yang berbeda dengan kepadatan/arah tata letak alternatif dan ukuran. - Memperbarui
DrawContext
untuk mendukung konfigurasi kepadatan dan arah tata letak serta membuat kanvas dapat dikonfigurasi. (Ie1f9b, b/225408150) - Menambahkan
Paragraph#fillBoundingBoxes
untuk menghitung kotak pembatas karakter. (If30ee) - Menambahkan kumpulan
MultiPreviews
umum (Ia5a27)
Perbaikan Bug
- Menambahkan antarmuka
FocusTargetModifierNode
yang dapat digunakan untuk membuatFocusTarget
kustom. (I9790e) - Mengganti nama parameter
fallback*
di konstruktorTextMeasurer
menjadidefault*
. (I940a5) - Mengganti nama
SemanticsPropertyReceiver.performImeAction
menjadionImeAction
, danSemanticsActions.PerformImeAction
menjadiOnImeAction
. (I8e841) - Menambahkan Wheel untuk membedakan scroll mouse dari tarik dalam scroll bertingkat (khususnya, di
NestedScrollConnection
). (Ie57e4) - Menambahkan
asComposePaint
API untuk menggantikantoComposePaint
karena objek yang ditampilkan menggabungkanandroid.graphics.Paint
asli (I22b4c) - Hentikan
SemanticsProperties.imeAction
dan ganti dengan parameter baru untukSemanticsActions.performImeAction
. (I4a587) - Menambahkan dukungan untuk pemilihan oleh mouse. Pilihan berbasis sentuhan akan diluaskan menurut kata, dan diperkecil menurut karakter. (Ic0c6c, b/180639271)
- Metode
Paragraph
yang sebelumnya menampilkanAssertionError
untuk offset di luar batas kini akan menampilkanIllegalArgumentException
seperti yang dilakukanMultiParagraph
. (I549d3, b/243338896)
Versi 1.5
Versi 1.5.4
18 Oktober 2023
androidx.compose.ui:ui-*:1.5.4
dirilis. Versi 1.5.4 berisi commit ini.
Versi 1.5.3
4 Oktober 2023
androidx.compose.ui:ui-*:1.5.3
dirilis. Versi 1.5.3 berisi commit ini.
Perbaikan Bug
- (b/301209788)
TextField
terkadang salah menerapkan perintah sebelumnya saat memfokuskan dan memasukkan input bahasa Korea, yang menyebabkan karakter hilang.
Versi 1.5.2
27 September 2023
androidx.compose.ui:ui-*:1.5.2
dirilis. Versi 1.5.2 berisi commit ini.
Perbaikan Bug
- Menambahkan solusi untuk error saat aksesibilitas scroll API diakses dari thread latar belakang.
- Memperbaiki node tidak terkait yang ditambahkan ke hierarki semantik.
Versi 1.5.1
6 September 2023
androidx.compose.ui:ui-*: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.ui:ui-*:1.5.0
dirilis. Versi 1.5.0 berisi commit ini.
Versi 1.5.0-rc01
26 Juli 2023
androidx.compose.ui:ui-*:1.5.0-rc01
dirilis. Versi 1.5.0-rc01 berisi commit ini.
Perbaikan Bug
- Memperbaiki error yang terjadi saat
SubcomposeLayout
digunakan di dalammovableContentOf()
.
Versi 1.5.0-beta03
28 Juni 2023
androidx.compose.ui:ui-*:1.5.0-beta03
dirilis. Versi 1.5.0-beta03 berisi commit ini.
Perbaikan Bug
- Menambahkan antarmuka FocusTargetModifierNode yang dapat digunakan untuk membuat FocusTarget kustom. (Ifb1d6)
- Memperbaiki masalah pada composable Dialog dan Pop-up yang dapat menyebabkan jendela turunan tidak berubah ukuran seperti yang diharapkan saat
usePlatformDefaultWidth=true
. (I112ee)
Versi 1.5.0-beta02
7 Juni 2023
androidx.compose.ui:ui-*:1.5.0-beta02
dirilis. Versi 1.5.0-beta02 berisi commit ini.
Perubahan API
- Menambahkan
asComposePaint
API untuk memungkinkan penggunaan instanceandroid.graphics.Paint
untuk digunakan di Compose
Perbaikan Bug
- Menambahkan
asComposePaint
API untuk menggantikantoComposePaint
karena objek yang ditampilkan menggabungkanandroid.graphics.Paint
asli (I22b4c)
Versi 1.5.0-beta01
24 Mei 2023
androidx.compose.ui:ui-*:1.5.0-beta01
dirilis. Versi 1.5.0-beta01 berisi commit ini.
Perubahan API
- Menghapus alokasi dalam rekomposisi, animasi warna, dan
AndroidComposeView
(Ib2bfa) - Menambahkan kesenangan bantuan
CacheDrawModifierNode()
untuk memungkinkan delegasi (Icf8f9) - Memperkenalkan properti
isLookingAhead
, yang dapat diakses dariMeasureScope
, untuk mengamati hasil dalam waktu dekat dan memengaruhi kartu utama jika diinginkan. (Ibf4c3) - Properti semantik baru
traversalIndex
, float yang digunakan untuk menyusun ulang node dalam traversalTalkBack
(nilai lebih rendah muncul sebelumnya). (I9a81b, b/186443263) - Mengganti nama properti Semantik
isContainer
menjadiisTraversalGroup
(I121f6) ColorProducer
sekarang memilikioperator fun invoke
, bukanproduce
(I4a9a2)- Menambahkan API transformasi
Path
untuk menerapkan transformasi terjemahan/skala/rotasi ke objek jalur. (I23434, b/233772232) - Metode
ColorProducer
disebutproduce
. (I78bde) - Mengganti nama
toFrameworkColorSpace
menjaditoAndroidColorSpace
(I4f547) - Mengganti nama
ColorLambda
menjadiColorProducer
. (I73b1a) - Memperkenalkan API untuk melakukan konversi antara jenis ruang warna Android dan Compose. (Ie7db4, b/279979665)
- Menambahkan parameter warna ke
BasicText
untuk memungkinkan animasi atau penyetelan warna teks secara efisien. (Iffd88, b/246961787) - Mengganti nama
TextRange.constrain
menjadiTextRange.coerceIn
. (I31be2) - Menambahkan
TextStyle.merge(...)
yang dioptimalkan dengan daftar parameter lengkap. (Iad234, b/246961787) - Menstabilkan banyak API Teks yang mencakup
Brush
,DrawStyle
,TextMotion
,DrawScope.drawText
,Paragraph.paint(Brush)
,MultiParagraph.paint(Brush)
. (I2f740, b/261581564, b/261581931, b/261561245) PlatformTextStyle.includeFontPadding
tidak digunakan lagi. Tujuan awal kami adalah menghapus kolom ini, tetapi masukan menunjukkan bahwa developer memerlukan opsi konfigurasi ini. Oleh karena itu, menghapus penghentian penggunaan dari kolom (I98e96, b/277703184)- Menambahkan metode
TextRange.constrain
publik. (I97912) UrlAnnotation
dalamAnnotatedString
sekarang dapat dibuka melalui layanan aksesibilitas sepertiTalkBack
. (If4d82, b/253292081)- Menambahkan tindakan semantik
InsertTextAtCursor
untuk kolom teks. (I11ed5) - Konstruktor
LineHeightStyle.Alignment(topRatio)
dipromosikan menjadi API stabil. (I79c32, b/261565383) TextMeasurer
dan API terkait tidak lagi bersifat eksperimental. (I74647, b/261581753)- Menambahkan tindakan semantik
PerformImeAction
untuk memanggil tindakan IME pada node editor teks. (Ic606f, b/269633506) PlatformTextInput
API tidak lagi bersifat eksperimental untuk Android. (I668eb)- nama parameter nilai untuk
Enum.valueOf
diubah (Ia9b89) - lebih banyak pengecualian yang ditampilkan dari enum valueOf (I818fe)
- Memperkenalkan
PlatformTextInputAdapter
API tingkat rendah baru untuk membangun implementasi input teks kustom yang berkomunikasi langsung dengan API platform. (I58df4) - Menambahkan parameter
BlendMode
ke metodeDrawScope.drawText
,Paragraph.paint
, danMultiParagraph.paint
untuk mendukung berbagai algoritma pencampuran saat menggambar teks di Canvas. (I57508) - Mengganti nama
Font.MaximumAsyncTimeout
menjadiFont.MaximumAsyncTimeoutMillis
. Hanya ganti nama. (I07af5) - Memperbarui nilai DPI perangkat referensi
@Preview
(Id6151, b/254528382) - Tambahkan parameter
brush
,alpha
keBasicText
untuk memungkinkan animasi atau penyetelan kuas teks secara efisien. - Menentukan jenis lambda tanpa kotak untuk Float, Double, Long, Int, Short in :ui:ui-unit (I6f18d, b/246961787)
Perbaikan Bug
- Menghapus beberapa alokasi dalam pelacakan kecepatan pointer (I26bae)
- Pengurangan alokasi dalam pengelolaan input tata letak dan pointer (I5333a)
- Mengoptimalkan penggunaan memori Vektor dan rendering frame pertama (I2f3c6)
- Menghapus alokasi saat menggambar garis dan titik dengan Canvas (I9f535)
- Menambahkan dokumen untuk
AndroidFont.fontVariationSettings
(I7d9e2)
Kontribusi Eksternal
- Meningkatkan performa dan mengurangi alokasi di Vector API (I906cb)
Versi 1.5.0-alpha04
10 Mei 2023
androidx.compose.ui:ui-*:1.5.0-alpha04
dirilis. Versi 1.5.0-alpha04 berisi commit ini.
Fitur Baru
- Peningkatan Delegasi
Modifier.Node
Menambahkan kemampuan yang ditingkatkan untuk mendelegasikan ke instanceModifier.Node
lain dariDelegatingNode
. Hal ini dapat dilakukan dengan APIdelegate
danundelegate
. Sebelum perubahan ini, setiap API dari node yang mendelegasikan harus didelegasikan secara eksplisit ke node yang didelegasikan. Setelah perubahan ini, antarmuka node akan didelegasikan secara implisit kecualiDelegatingNode
secara eksplisit menggantinya. (67352bc)
Perubahan API
- Memperkenalkan
NestedScrollModifierNode
,NestedScroll Modifier.Node
yang dapat didelegasikan. (I69513) - Menambahkan parameter
onReset
danonRelease
ke composableAndroidViewBinding
, yang mencerminkan composableAndroidView
dan memungkinkan dukungan untuk penggunaan kembali View denganViewBinding
. (I00b1e, b/276802519) - Mengupdate Compose Path API untuk mendukung operasi mundur guna mendukung kasus penggunaan manipulasi Jalur yang sering dengan penggunaan kembali yang lebih cepat. (I7b797)
- Menambahkan
TextStyle.merge(...)
yang dioptimalkan dengan daftar parameter lengkap. (Iad234, b/246961787) - Menstabilkan banyak API Teks yang mencakup
Brush
,DrawStyle
,TextMotion
,DrawScope.drawText
,Paragraph.paint(Brush)
,MultiParagraph.paint(Brush)
. (I2f740, b/261581564, b/261581931, b/261561245) PlatformTextStyle.includeFontPadding
tidak digunakan lagi. Tujuan awal kami adalah menghapus kolom ini, tetapi masukan menunjukkan bahwa developer memerlukan opsi konfigurasi ini. Oleh karena itu, menghapus penghentian penggunaan dari kolom (I98e96, b/277703184)
Perbaikan Bug
- 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.ui:ui-*:1.5.0-alpha03
dirilis. Versi 1.5.0-alpha03 berisi commit ini.
Fitur Baru
- Perilaku default baru untuk
SubcomposeLayout
diLookaheadScope
:SubcomposeLayouts
yang tidak memiliki slot bersyarat (misalnyaTabRow
,Scaffold
,BoxWithConstraints
, dll.) kini berfungsi dengan baik dengan animasi Lookahead.
Perubahan API
intermediateMeasurePolicy
default baru yang menggunakan kembali kebijakan pengukuran dari Lookahead Pass memungkinkan subjenisSubcomposeLayout
tanpa slot bersyarat sepertiScaffold
,TabRow
, danBoxWithConstraints
berfungsi dengan Lookahead secara default. (Id84c8)- Recomposer yang dibuat untuk jendela Android kini hanya akan memblokir panggilan ke
withFrameNanos
, bukan semua komposisi saat menerima notifikasiON_STOP
. Hal ini berarti jendela yang terkait dengan aktivitas yang dihentikan akan terus merekomposisi untuk perubahan data, tetapi animasi, atau pemanggilwithFrameNanos
lainnya, akan diblokir. (Id9e7f, b/240975572) - Mengubah
motionEventSpy
menjadi stabil. (Ic5ec4, b/261560988) - Menambahkan metode
TextRange.constrain
publik. (I97912) PlatformTextStyle.includeFontPadding
tidak lagi digunakan untuk mendorong developer menggunakan API kompatibilitas ini untuk beralih dan menguji setelanincludeFontPadding
salah. (I98e96, b/277703184)
Versi 1.5.0-alpha02
5 April 2023
androidx.compose.ui:ui-*:1.5.0-alpha02
dirilis. Versi 1.5.0-alpha02 berisi commit ini.
Perubahan API
SubcomposeLayout
API baru yang menggunakan kebijakan pengukuran perantara tambahan untuk menangani logika ukuran/tata letak selama animasi berbasis Lookahead. (I017d3)- PointerInput sekarang lambat dan menggunakan Modifier.Node untuk performa yang lebih baik (baca tentang perubahan perilaku kecil). (15dab9)
- Mengubah API eksperimental menjadi stabil dengan Peristiwa utama. (I9c7d8, b/261566839, b/261567368)
- Mengubah API eksperimental menjadi stabil di
PointerInputChange
. (I1b543, b/261560988, b/261565762, b/261565749) - Menambahkan cara membuat instance
SuspendingPointerInputModifierNode
untuk implementasiModifier.Node
yang lebih kompleks. (Ic4933) UrlAnnotation
dalamAnnotatedString
sekarang dapat dibuka melalui layanan aksesibilitas sepertiTalkBack
. (If4d82, b/253292081)- Menambahkan API untuk mencegat tombol hardware sebelum dikirim ke keyboard virtual (I4f4c6, b/186800395)
- 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)
Perbaikan Bug
- Tindakan pengujian teks sekarang mengharuskan kolom teks diaktifkan. (Iab328)
Versi 1.5.0-alpha01
22 Maret 2023
androidx.compose.ui:ui-*:1.5.0-alpha01
dirilis. Versi 1.5.0-alpha01 berisi commit ini.
Perubahan API
- Modifier.intermediateLayout sekarang tidak memerlukan LookaheadScope yang eksplisit. Blok pengukuran di intermediateLayout memiliki Intermediate MeasureScope sebagai penerima, yang menyediakan CoroutineScope, LookaheadScope, dan MeasureScope yang mudah.(Ibe2e5)
- LookaheadLayout telah diganti dengan LookaheadScope, yang tidak lagi menjadi Layout. Hal ini memungkinkan konten chid di LookaheadScope dikontrol langsung oleh MeasurePolicy induk. (Ibe2e5)
- Menambahkan
Modifier.Node#coroutineScope
untuk mengizinkan Modifier.Nodes meluncurkan coroutine. (I76ef9) - Izinkan Modifier.Nodes untuk membaca CompositionLocals dengan menerapkan antarmuka CompositionLocalConsumerModifierNode. (Ib44df)
- Penyebaran class @Deprecated ke properti. (I882d1)
Versi 1.4
Versi 1.4.3
3 Mei 2023
androidx.compose.ui:ui-*:1.4.3
dirilis. Versi 1.4.3 berisi commit ini.
Perbaikan Bug
- Memperbaiki masalah
AndroidView
yang mungkin tidak ditata dengan benar saat digunakan dengan Pengubah tertentu. (I4dc77, b/274797771) - Memperbaiki bug di Penelusuran Fokus 2D yang memengaruhi Menu
DropDown
(b/276811828) - Memperbaiki bug dalam properti masuk/keluar fokus kustom yang hanya menjalankan blok masuk/keluar saat pertama kali lambda dipanggil (b/277234245)
- Memperbaiki regresi dalam sistem fokus yang menyebabkan error saat membaca
focusProperties
. (b/271324781, b/274897776)
Versi 1.4.2
19 April 2023
androidx.compose.ui:ui-*:1.4.2
dirilis. Versi 1.4.2 berisi commit ini.
Perbaikan Bug
- Memperbaiki masalah saat
AndroidView
tidak menggunakan kembali pengubahnya dengan benar, yang berpotensi mengakibatkan perilaku dan error yang tidak terduga. (Ib67ee, b/275919849) - Memperbaiki regresi saat keyboard tidak muncul untuk kolom teks dalam dialog yang tidak dibuat oleh composable
Dialog
(I82551, b/262140644)
Versi 1.4.1
5 April 2023
androidx.compose.ui:ui-*:1.4.1
dirilis. Versi 1.4.1 berisi commit ini.
Perbaikan Bug
- Memperbaiki masalah terkait
ParentDataModifier
yang tidak memengaruhiAndroidView
(b/274797771)
Versi 1.4.0
22 Maret 2023
androidx.compose.ui:ui-*:1.4.0
dirilis. Versi 1.4.0 berisi commit ini.
Perubahan penting sejak versi 1.3.0
- Menambahkan
PinnableContainer
API baru yang memungkinkan item daftar lambat disematkan, sehingga item tersebut tidak dibuang saat di-scroll keluar batas. Misalnya,Modifier.focusable()
menggunakan mekanisme ini untuk menyematkan item yang saat ini difokuskan. (Ib8881, b/259274257, b/195049010) - Sistem fokus ditulis ulang menggunakan
Modifier.Node
API eksperimental baru. (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589) - Menambahkan properti semantik
IsContainer
di Platform. Properti ini akan digunakan dalam perubahan selanjutnya yang menentukan urutan traversal berdasarkan makna semantik elemen seperti platform. (I63379) - Menambahkan peran aksesibilitas baru
DropdownList
. Ini dapat digunakan untuk mereplikasi perilakuTalkBack
saat memfokuskanandroid.widget.Spinner
. (I177e5, b/236159001) - Anda kini dapat menggunakan
PlatformTextStyle(emojiSupportMatch)
untuk secara opsional menonaktifkan pemrosesan dukungan emoji untuk satu Paragraf. (Ia7100, b/139326806) - Pengujian UI Android Compose kini akan menjalankan penerusan tata letak untuk setiap frame saat menjalankan frame agar masuk ke mode tidak ada aktivitas (misalnya melalui
waitForIdle
). Hal ini dapat memengaruhi pengujian yang menegaskan pada frame animasi tata letak individual. (I8ea08, b/222093277) - Menambahkan
TextMotion
eksperimental keTextStyle
untuk menentukan Teks menjadiStatic(default)
atau Animasi. GunakanTextMotion.Animated
jika Text akan diskalakan, diterjemahkan, atau diputar melalui animasi. (I24dd7)
Versi 1.4.0-rc01
8 Maret 2023
androidx.compose.ui:ui-*:1.4.0-rc01
dirilis. Versi 1.4.0-rc01 berisi commit ini.
Perubahan API
- Menambahkan overload fungsi composable
AndroidView
, yang menerima parameteronReset
. Class ini memungkinkan instance View digunakan kembali saat node-nya dalam komposisi dibuang dan digunakan kembali dengan cara yang kompatibel. Hal ini sangat berguna untukLazyRows
danLazyColumns
Tampilan. (I3f10d, b/230099236) - Memperkenalkan
PlatformTextInputAdapter
API tingkat rendah baru untuk membangun implementasi input teks kustom yang berkomunikasi langsung dengan API platform. (I58df4)
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.ui:ui-*:1.4.0-beta02
dirilis. Versi 1.4.0-beta02 berisi commit ini.
Perubahan API
- Menghapus
modifierElementOf()
API. Luaskan dariModifierNodeElement
secara langsung. (I2256b) - 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)
Perbaikan Bug
- Algoritma urutan fokus aksesibilitas ditingkatkan, misalnya batang atas/bawah lebih sering dibaca pertama/terakhir masing-masing (74e9c5)
Versi 1.4.0-beta01
8 Februari 2023
androidx.compose.ui:ui-*:1.4.0-beta01
dirilis. Versi 1.4.0-beta01 berisi commit ini.
Perubahan API
PinnableContainer.PinnedHandle.unpin()
diganti namanya menjadirelease()
(I4667a)- Menambahkan
waitUntilNodeCount
,waitUntilAtLeastOneExists
,waitUntilExactlyOneExists
, danwaitUntilDoesNotExist
sebagai API eksperimental keComposeTestRule
, memperluaswaitUntil
API untuk menerima pencocok dan jumlah node apa pun. LihatComposeTestRule
untuk dokumentasi lebih lanjut. (Ifa1b9, b/226934294) - Mengganti nama
Font.MaximumAsyncTimeout
menjadiFont.MaximumAsyncTimeoutMillis
. (I07af5) - Menghapus
GoogleFont.Provider.AllFontsListUri
dan menautkannya dalam ktdoc. (I16f29)
Perbaikan Bug
- Menambahkan dokumen untuk
AndroidFont.fontVariationSettings
(I7d9e2)
Versi 1.4.0-alpha05
25 Januari 2023
androidx.compose.ui:ui-*:1.4.0-alpha05
dirilis. Versi 1.4.0-alpha05 berisi commit ini.
Perubahan API
- 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) - Menambahkan API baru untuk melacak kecepatan 1 dimensi (If5a82)
FocusRequester
sekarang ditandai sebagai@Stable
. (I580ee)- Menghapus anotasi eksperimental dari konstruktor
DialogProperties
yang menggunakan parameterusePlatformDefaultWidth
. (Ic4048) - Menambahkan fungsi ke posisi penghitungan dan tangen pada jarak di jalur - dengan
PathMeasure.getPosition()
danPathMeasure.getTangent()
(I3b47c) - Menghapus penyetel publik yang terekspos secara tidak sengaja pada
PlatformParagraphStyle
. (I07f47) - Lebih banyak jenis/nullability dari fungsi inline/tersembunyi yang tidak digunakan lagi (I24f91)
- Menambahkan
AnnotatedString.hasStringAnnotations
untuk meng-kueri anotasi dengan alokasi nol. (I94dfe, b/246960758) - Menambahkan overload baru untuk fungsi
TextMeasurer.measure
yang menggunakanString
sebagai teks. (I47b2d, b/242705342) LineBreak
danHyphens
API di TextStyle kini menjadi stabil. (Ic1e1d)
Kontribusi Eksternal
- Metode
notifyFocusedRect
diTextInputSession
danTextInputService
tidak digunakan lagi. (I23a04, b/262648050)
Versi 1.4.0-alpha04
11 Januari 2023
androidx.compose.ui:ui-*:1.4.0-alpha04
dirilis. Versi 1.4.0-alpha04 berisi commit ini.
Fitur Baru
- Menambahkan
PinnableContainer
API baru yang memungkinkan item daftar lambat disematkan, sehingga item tersebut tidak dibuang saat di-scroll keluar batas. Misalnya,Modifier.focusable()
menggunakan mekanisme ini untuk menyematkan item yang saat ini difokuskan. (Ib8881, b/259274257, b/195049010) - Sistem fokus ditulis ulang menggunakan
Modifier.Node
API eksperimental baru. (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589) - Menambahkan properti semantik
IsContainer
di Platform. Properti ini akan digunakan dalam perubahan selanjutnya yang menentukan urutan traversal berdasarkan makna semantik elemen seperti platform. (I63379) - Menambahkan peran aksesibilitas baru
DropdownList
. Peran ini dapat digunakan untuk mereplikasi perilakuTalkBack's
saat memfokuskanandroid.widget.Spinner
. (I177e5, b/236159001) - Anda kini dapat menggunakan
PlatformTextStyle(emojiSupportMatch)
untuk secara opsional menonaktifkan pemrosesan dukungan emoji untuk satu Paragraf. (Ia7100, b/139326806) - Pengujian UI Android Compose kini akan menjalankan penerusan tata letak untuk setiap frame saat menjalankan frame agar masuk ke mode tidak ada aktivitas (misalnya melalui
waitForIdle
). Hal ini dapat memengaruhi pengujian yang menegaskan pada frame animasi tata letak individual. (I8ea08, b/222093277) - Menambahkan
TextMotion
eksperimental keTextStyle
untuk menentukan Teks menjadiStatic(default)
atau Animasi. GunakanTextMotion.Animated
jika Text akan diskalakan, diterjemahkan, atau diputar melalui animasi. (I24dd7)
Perubahan API
- 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) - Menghapus konstruktor font eksperimental yang tidak digunakan lagi. (I8a724, b/261435386)
- Class data alat UI
Group
kini memiliki kolom,isInline
, yang menunjukkan apakah grup tersebut untuk panggilan ke fungsi composable inline. JikaisInline
adalahtrue
, maka panggilan tersebut untuk fungsi composable inline. Namun, nilainya mungkin salah (false) untuk panggilan ke fungsi composable inline yang berasal dari modul yang dikompilasi dengan versi plugin compiler compose yang tidak menghasilkan informasi fungsi inline. (Idb846) - Menstabilkan sejumlah API yang sebelumnya masih eksperimental
- Rotary Scroll Event API kini stabil (I42ad3, b/261561229)
FontVariation
API sekarang stabil (I8779f, b/241016309)- Semua konstruktor
Font()
kini menjadi API stabil (I5948b, b/261435386) DeviceFontFamilyName
kini stabil (I8b640, b/261435386)- Konstruktor
AndroidFont
denganvariationSettings
kini merupakan API stabil, dan dapat digunakan untuk membuat jenis deskripsi font baru. (I5adcc, b/261565807) createFontFamilyResolver
API kini stabil. Ini dapat digunakan untuk menangkap pengecualian yang tidak tertangkap selama pemuatan font asinkron. (Ibb481, b/261435386)Font.loadingStrategy
API kini stabil. (I5937c, b/261435386)GoogleFont
API kini stabil. (Ic90b0, b/261435386)TextUnit(float, TextUnitType)
sekarang menjadi API stabil. (I90c84, b/261561612)pluralStringResource
sekarang menjadi API stabil. (I09849, b/261439703)
Versi 1.4.0-alpha03
7 Desember 2022
androidx.compose.ui:ui-*:1.4.0-alpha03
dirilis. Versi 1.4.0-alpha03 berisi commit ini.
Perubahan API
- Menghapus
ExperimentalComposeUiApi
dariPointerIcon
(I23af8) - Memperkenalkan tindakan aksesibilitas Halaman:
PageUp
,PageDown
,PageLeft
,PageRight
. Perhatikan bahwa ini hanya tersedia dari API 29. (Ida4ab) - Memperbarui tampilan parameter
rememberNestedScrollConnection
dari tampilan root ke tampilan host. (Ia5200) - 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 Panel Samping dan Sheet untuk menunda penekanan dengan benar jika gestur dapat menjadi peristiwa scroll.
- Mengganti nama
CompositingStrategy.Always
menjadiOffscreen
untuk menunjukkan bahwagraphicsLayer
akan selalu dirender menjadi buffering perantara (I47dc1) - Kelebihan tata letak dengan beberapa slot konten kini stabil (I10566, b/248294649)
- Menambahkan API baru eksperimental
PerfettoTrace.record {}
danPerfettoTraceRule
untuk merekam aktivitas Perfetto (juga dikenal sebagai Pelacakan Sistem) sebagai bagian dari pengujian, untuk memeriksa perilaku dan performa pengujian. (I3ba16) - 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 mengetahui contohnya. - 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) - Menambahkan EmojiCompat ke Compose (Ibf6f9, b/139326806)
- Menambahkan parameter wallpaper baru ke
@Preview
untuk dukungan warna dinamis (I9f512)
Perbaikan Bug
- Notifikasi penerapan snapshot sekarang dikirim setelah
Recomposer
selesai menerapkan perubahan. (Iad6c0, b/222093277) - Memperkenalkan perubahan dalam
captureToImage
untuk memungkinkan pengambilan screenshot multi-aplikasi. Hal ini berguna untuk pengujian screenshot yang menggunakan Compose PopUps. (I169c5)
Update Dependensi
- Compose UI dan Compose Material sekarang bergantung pada Lifecycle 2.5.1. (I05ab0, b/258038814)
Versi 1.4.0-alpha02
9 November 2022
androidx.compose.ui:ui-*:1.4.0-alpha02
dirilis. Versi 1.4.0-alpha02 berisi commit ini.
Perubahan API
- Memperbarui
GraphicsLayerScope
untuk mengekspos ukurangraphicsLayer
saat ini. Hal ini berguna untuk menghitung transformasigraphicsLayer
sebagai fungsi ukuran Composable. (If8c43,b/181387080) - Memperkenalkan
CompositingStrategy
untuk menentukan kapan harus memanfaatkan lapisan komposisi di luar layar untuk merender kontengraphicsLayer
. Otomatis mempertahankan perilaku default yang memanfaatkan lapisan secara internal jika versi alfa diterapkan atauRenderEffect/Overscroll
. Akan selalu menampilkan buffering di luar layar, tempatModulateAlpha
akan menghindari penggunaan buffering di luar layar dan sebagai gantinya akan memodulasi setiap petunjuk gambar yang direkam dalamgraphicsLayer
. PenggunaanModulateAlpha
akan tetap memanfaatkan buffering di luar layar untuk penggunaanRenderEffect/Overscroll
(I25e82, b/256382834) invalidateSubtree()
telah ditambahkan keModifier.Node
untuk memungkinkan pembatalan seluruh hierarki tata letak dan gambar. (I4bd90)- Mempromosikan
rememberNestedScrollInteropConnection
ke stabil. Memperkenalkan kemampuan untuk meneruskan tampilan root kerememberNestedScrollInteropConnection
. Hal ini dapat membantu tampilan kustom bereaksi lebih baik terhadap batasan scroll, terutama dalam tampilan non-standar (misalnyaModalBottomSheetDialog
). (I9e107) - Menambahkan antarmuka
ObserverNode
yang dapat digunakan oleh implementasiModifier.Node
yang perlu diberi tahu saat nilai yang sebelumnya dibaca telah berubah (I5728b, b/247716483) - Menambahkan konstruktor baru ke
Paint
yang menerimaandroid.graphics.Paint
native. Juga menambahkan fungsi ekstensitoComposePaint()
yang mengonversi objek Paint native yang ada menjadi Compose Paint. (Ica91b) - Menambahkan
FontFamily.Resolver.resolveAsTypeface
baru untuk digunakan di Android. (I8950b) - Menambahkan
ToolingState
untuk mengizinkan alat mengubah status internal Composable (Ie6614) - Memfaktorkan ulang alat agar memiliki dukungan yang lebih baik untuk animasi baru yang ditambahkan (I8677b)
- Menambahkan parameter
minLines
ke dalam material dan material3 Text,TextField
, danOutlinedTextField
yang memungkinkan penetapan tinggi minimum komponen dalam jumlah baris (I4af1d)
Versi 1.4.0-alpha01
24 Oktober 2022
androidx.compose.ui:ui-*: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)- Penghentian daur ulang objek aksesibilitas di androidx. Kami mendapati bahwa perubahan performa dapat diabaikan bahkan pada versi lama yang didukung. (I0a961)
- Menambahkan
DrawStyle
sebagai atribut Eksperimental keTextStyle
danSpanStyle
untuk mengaktifkan gambar teks yang digarisbatasi. (If24b8, b/155421273) AnnotatedString.Builder
sekarang mengimplementasikankotlin.text.Appendable
. (I1a061, b/231030444)AnnotatedString.Builder
sekarang memiliki metodeappend(AnnotatedString, start: Int, end: Int)
untuk menambahkan substringAnnotatedString
dan gaya yang berpotongan.- Menambahkan parameter
DrawStyle
ke fungsi gambarParagraph
danMultiParagraph
yang memungkinkan gambar teks yang digarisbatasi. (Ic8102, b/155421273)
Kontribusi Eksternal
- Terima kasih kepada
vighnesh
karena telah menambahkan Perangkat TV ke Pratinjau (Ie15cd)
Versi 1.3
Versi 1.3.3
11 Januari 2023
androidx.compose.ui:ui-*:1.3.3
dirilis. Versi 1.3.3 berisi commit ini.
Perbaikan Bug
- Memperbaiki error yang terkadang terjadi di Android 9 saat Activity menyimpan status View Compose. (I0b755, b/260322832)
Versi 1.3.2
7 Desember 2022
androidx.compose.ui:ui-*:1.3.2
dirilis. Versi 1.3.2 berisi commit berikut ini.
Perbaikan Bug
- Diupdate untuk menggunakan Profobuf 3.21.8, yang menghindari notifikasi keamanan di
protobuf-javalite:3.19.4
(CVE-2022-3171) (b/255545055)
Versi 1.3.1
9 November 2022
androidx.compose.ui:ui-*:1.3.1
dirilis. Versi 1.3.1 berisi commit ini.
Versi 1.3.0
24 Oktober 2022
androidx.compose.ui:ui-*:1.3.0
dirilis. Versi 1.3.0 berisi commit berikut ini.
Perubahan penting sejak versi 1.2.0
- Suite API eksperimental baru
LookaheadLayout
(memungkinkan perilaku animasi yang sebelumnya mustahil) - Suite API eksperimental baru
Modifier.Node
(alternatif berperforma lebih tinggi untukModifier.composed
) - Peningkatan dukungan inset jendela.
- Memfokuskan dukungan untuk D-Pad dan keyboard hardware di LazyLists.
- Elevasi maksimum yang didukung dalam dialog dan pop-up telah dikurangi menjadi 8 dp (perubahan yang dapat menyebabkan gangguan perilaku pada beberapa sistem desain yang disesuaikan – alasan dalam catatan rilis beta01)
- Berbagai peningkatan API minor yang tidak menyebabkan gangguan
- Berbagai perbaikan bug dan peningkatan performa
Versi 1.3.0-rc01
5 Oktober 2022
androidx.compose.ui:ui-*:1.3.0-rc01
dirilis. Version 1.3.0-rc01 berisi commit berikut ini.
Perubahan API
- Menambahkan Tanda Hubung API eksperimental baru untuk mendukung tanda hubung otomatis dalam Teks (Iaa869)
Perbaikan Bug
- Font
DeviceFontFamilyName
tidak akan mengonfigurasi setelan variasiwght
danital
secara default, melainkan menggunakan setelan platform untukTypeface
yang dimuat. (Ia7a6d, b/246989332) - Memperbaiki kebocoran memori
LazyColumn
-onModifierLocalsUpdated
tidak dipanggil dengan nilai default saat pengubah digunakan kembali (b/230168389)
Versi 1.3.0-beta03
21 September 2022
androidx.compose.ui:ui-*:1.3.0-beta03
dirilis. Versi 1.3.0-beta03 berisi commit ini.
Perubahan API
- Menambahkan opsi untuk menyesuaikan jeda baris di Text. (I86907)
- Mengubah argumen
size:IntSize
denganconstraints: Constraints
dalam metodeTextMeasurer.measure
untuk mendukung batasan lebar minimum. (I37530, b/242707525)
Perbaikan Bug
BackHandler
API Aktivitas AndroidX kini berfungsi dalam composableDialog
. (I35342)
Versi 1.3.0-beta02
7 September 2022
androidx.compose.ui:ui-*:1.3.0-beta02
dirilis. Versi 1.3.0-beta02 berisi commit ini.
Perubahan API
- Menambahkan overload eksperimental untuk Tata Letak yang menerima daftar beberapa lambda konten composable, yang memungkinkan ancaman yang dapat diukur untuk dimasukkan ke dalam berbagai lambda konten secara berbeda (Ic1b4e)
Perubahan pada Focus API eksperimental:
FocusDirection.In
danFocusDirection.Out
tidak digunakan lagi dan diganti denganFocusDirection.Enter
danFocusDirection.Exit
. (Ia4262, b/183746982)- Menambahkan dua properti fokus baru, yaitu masuk dan keluar, untuk menentukan perilaku kustom
FocusManager.moveFocus(Enter)
danFocusManager.moveFocus(Exit)
. (I5f3f9, b/183746982) - Anda kini dapat menggunakan
FocusRequester.Cancel
untuk membatalkan pemindahan fokus.FocusRequester.Cancel
dapat digunakan di salah satu properti fokus berikut: atas, bawah, kiri, kanan, berikutnya, sebelumnya, mulai, akhir, masuk, dan keluar. (Ib300f)
Versi 1.3.0-beta01
24 Agustus 2022
androidx.compose.ui:ui-*:1.3.0-beta01
dirilis. Versi 1.3.0-beta01 berisi commit ini.
Pemfaktoran Ulang Node Pengubah
Lapisan yang menangani instance Modifier/Modifier.Element
dan mengoordinasikan perilakunya di LayoutNodes
sebagian besar telah difaktorkan ulang. Karena ini adalah pemfaktoran ulang yang tidak memengaruhi API publik dari banyak pengubah di Compose, dan dapat dilihat sebagai perubahan khusus implementasi. Meskipun demikian, ini adalah perubahan penting karena berbagai alasan. (Ie4313)
Ringkasan Perubahan
Modifier.Node
API eksperimental yang ditambahkan menyediakan abstraksi yang memungkinkan status dipertahankan pada instance yang akan dipertahankan dengan siklus proses node tata letak, dan akan dialokasikan per node tata letak dan per penggunaan yang sesuai dengan Modifier.Element
yang menghasilkannya.
Secara garis besar, abstraksi ini menyediakan mekanisme alternatif untuk menghasilkan pengubah stateful tanpa mengandalkan mekanisme Modifier.composed
API.
Risiko
Perubahan ini binernya sangat kompatibel dengan rilis sebelumnya, dan dimaksudkan agar kompatibel dengan perilaku sebelumnya yang dapat diamati, baik secara praktis maupun wajar. Dengan demikian, ada beberapa subsistem compose yang tidak difaktorkan ulang, dan kemungkinan perilaku tersebut telah berubah dengan cara yang tidak dicakup oleh pengujian kami serta belum ditemukan dan diperbaiki.
Upgrade ke rilis ini dengan hati-hati. Jika Anda yakin hal ini telah merusak sesuatu, beri tahu kami.
API Eksperimental
Berbagai API eksperimental telah ditambahkan, semuanya terkait dengan konsep baru "Node Pengubah". Modifier.Node dibuat sebagai hasil dari
fun modifierElementOf(…): Modifier
abstract class ModifierNodeElement
abstract class Modifier.Node
abstract class DelegatingNode
interface LayoutModifierNode
interface DrawModifierNode
interface SemanticsNode
interface PointerInputNode
interface ModifierLocalNode
interface ParentDataModifierNode
interface LayoutAwareModifierNode
interface GlobalPositionAwareModifierNode
interface IntermediateLayoutModifierNode
Perubahan yang dapat menyebabkan gangguan perilaku
Elevasi maksimum yang didukung dalam dialog dan pop-up telah dikurangi menjadi 8 dp.
Elevasi maksimum yang didukung untuk dialog dan pop-up Compose telah dikurangi dari 30 dp menjadi 8 dp. Perubahan ini memengaruhi dialog khusus dan pop-up Material dan UI. Perubahan ini dilakukan untuk memitigasi bug aksesibilitas pada versi Android di bawah S, dan untuk memastikan bahwa layanan aksesibilitas dalam jendela tersebut dapat berinteraksi dengan konten di dalam dialog atau pop-up.
Anda hanya akan terpengaruh oleh perubahan ini jika membuat dialog kustom atau penerapan pop-up dengan elevasi yang ditetapkan ke level yang lebih tinggi dari 8 dp. Sebaiknya turunkan elevasi dialog atau pop-up Anda. Jika tidak ingin menerapkan perilaku baru ini, sebaiknya lakukan fork dialog atau pop-up dengan kumpulan elevasi yang diinginkan. Hal ini tidak direkomendasikan, karena berpengaruh negatif pada aksesibilitas dan developer bertanggung jawab untuk memastikan bagian bawah dialog atau pop-up dapat berinteraksi dan dapat dibaca oleh layanan aksesibilitas.
Perubahan API
- Memperbaiki masalah yang menyebabkan
painterResource
tidak dapat diupdate pada perubahan konfigurasi (I58e73, b/228862715) rememberTextMeasurer
tidak lagi menggunakan parameterFontFamily.Resolver
,Density
, atauLayoutDirection
. Gunakan konstruktorTextMeasurer
untuk memberikan nilai kustom untuk parameter ini. (Ia1da3)- Menambahkan properti
DialogProperties.decorFitsSystemWindows
untuk memungkinkan Dialog mendukungWindowInsets
. (I57742, b/229378542) - Memindahkan konstruktor font kembali ke file Kotlin asli untuk mempertahankan kompatibilitas biner. Tidak ada perubahan dari rilis stabil terakhir. (Ieb2f3)
- Menghapus operator yang tidak diperlukan dari beberapa definisi yang sama - ini tidak berpengaruh. (I6c309)
FontVariation.Setting
adalah antarmuka tertutup, untuk mengizinkan API pembatasan di masa mendatang. (I11021, b/143703328)- Menambahkan
CompositionGroup.findParameters
keSlotTree.kt
. Hal ini memungkinkan alat mengambil parameter untukCompositionGroup
tanpa harus mengurai seluruh tabel slot. (I124fe)
Versi 1.3.0-alpha03
10 Agustus 2022
androidx.compose.ui:ui-*:1.3.0-alpha03
dirilis. Versi 1.3.0-alpha03 berisi commit ini.
Perubahan API
LayoutCoordinates.findRootCoordinates()
kini bersifat publik (I7fa37, b/204723384)- Menambahkan API eksperimental untuk mendapatkan
LayoutCoordinates
diPlacementScope
. Ini memungkinkan developer mengetahui tempat tata letak saat ini untuk menempatkan turunan relatif terhadap posisinya. (I5482b, b/238632578) - Ditambahkan
LayoutCoordinates.transformFrom
untuk mendapatkan transformasi Matriks dari satuLayoutCoordinates
ke sisi lain. (Ic5ab1, b/238632578) - Menghentikan penggunaan
SemanticsModifier.id
dan memindahkan ID semantik keLayoutInfo.semanticsId
. (Iac808, b/203559524) - Font Resource kini mendukung setelan variasi font (API 26+). (I900dd, b/143703328)
- Dukungan font variabel dalam
DeviceFontFamilyNameFont
(Ic1279, b/143703328) - Konstruktor font kini menerima daftar
FontVariation.Setting
untuk mengonfigurasi font variabel pada perangkat O+. (I11a9d, b/143703328) - Menambahkan
FontVariation
API untuk menentukan dan menggunakan font variabel. (I3c40c, b/143703328) - Konstruktor
LineHeightStyle.Alignment
kini bersifat publik (eksperimental) (I4bbbe, b/235876330) - Paragraf kini bersifat diharapkan|aktual dan ditentukan untuk Android dan Desktop. (Id387e, b/239962983)
- Antarmuka Paragraf kini disegel antarmuka Paragraf. Tidak ada kasus penggunaan untuk subclass paragraf, dan sebaiknya hubungi kami jika perubahan ini memengaruhi Anda. (If5247, b/239962983)
- Menghapus anotasi eksperimental dari
PlatformTextStyle
danLineHeightStyle
. (I64bef) - Menghentikan penggunaan
TextInputService.show|hideSoftwareKeyboard
. Sebagai gantinya, gunakanSoftwareKeyboardController
dalam kode aplikasi danTextInputSession
dalam kode pengelolaan IME. (I14e4c, b/183448615) - Menambahkan API baru untuk jenis animasi yang ada (I26179)
Perbaikan Bug
- Menambahkan
@RequiresPermission
ke API yang memerlukan pemberian izinPOST_NOTIFICATIONS
di SDK 33 dan yang lebih baru. (Ie542e, b/238790278)
Versi 1.3.0-alpha02
27 Juli 2022
androidx.compose.ui:ui-*:1.3.0-alpha02
dirilis. Versi 1.3.0-alpha02 berisi commit ini.
Perubahan API
- Menambahkan properti baru
PointerInputChange#pressure
untuk mengambil tekanan. (I45a5e, b/205164819) - Menambahkan
rememberTextMeasurer
untuk membuat dan mengingat instanceTextMeasurer
dengan mudah dalam komposisi. (I8d66e) Rect
,RoundRect
, danMutableRect
kini mendukung sintaksisin
Kotlin untuk memanggil fungsicontains
. (Ie42b0, b/238642990)- Menghapus fungsi yang tidak diperlukan dari
KeyInjectionScope
, karena fungsi tersebut dapat secara mudah diterapkan dengan bagian API yang lebih sederhana. Fungsi yang telah dihapus mencakuppressKeys
,keysDown
, dankeysUp
. (I81d77) - Memfaktorkan ulang nama parameter dan konstanta dalam
KeyInjectionScope
untuk menyertakan akhiran 'Millis' dengan satuan konstanta dan parameter tersebut adalah milidetik. (Iabef5) - Menambahkan metode
toStringForLog()
keEditCommand
untuk membantu memecahkan masalah pengeditan teks. (I53354, b/228862731) - Menambahkan fungsi ekstensi
drawText
padaDrawScope
untuk memberikan cara menggambar teks multigaya pada composable dan pengubah yang beroperasi diDrawScope
sepertiCanvas
dandrawBehind
. (I16a62, b/190787898) - Memperkenalkan API eksperimental baru bernama
TextMeasurer
yang memungkinkan komputasi tata letak teks arbitrer yang membuat hasil identik padaBasicText
, terlepas dari apa pun nilai runtime Compose. (I17101) - Menambahkan
mapTree
keSlotTree.kt
. Hal ini memungkinkan alat untuk memeriksaSlotTree
tanpa membuat salinan dalam memori terlebih dahulu seperti yang dilakukan AsTree. Untuk Layout Inspector, penambahan ini memberikan peningkatan performa sekitar faktor 10. (I5e113) - Mengubah Pratinjau Compose untuk disimpan dalam file output biner, agar developer dapat menulis dan menggunakan kembali anotasi
MultiPreview
dari library. (I85699, b/233511976)
Perbaikan Bug
- Saat menambahkan peristiwa
InputEventChange
ke PelacakVelocity
, 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) - Memperbaiki NPE yang disebabkan oleh
AnnotatedString.toUpperCase
saat terdapat anotasi. (I0aca2, b/210899140)
Versi 1.3.0-alpha01
29 Juni 2022
androidx.compose.ui:ui-*:1.3.0-alpha01
dirilis. Versi 1.3.0-alpha01 berisi commit ini.
Perubahan API
LookaheadLayout
baru yang mendukung penerusan lookahead sebelum pengukuran/tata letak sebenarnya. Hal ini memungkinkan pra-penghitungan tata letak saat tata letak berubah, serta mengizinkan pengukuran/tata letak pasca-lookahead menggunakan ukuran/posisi yang telah dihitung sebelumnya untuk menganimasikan ukuran dan posisi ke target.SubcomposeLayouts
belum didukung, tetapi akan ada dalam rilis mendatang. (I477f5)- Menambahkan parameter alfa opsional ke ragam Brush
TextStyle
danSpanStyle
untuk mengubah opasitas seluruhText
. (Ic2fac, b/234117635) - Memperkenalkan jenis anotasi
UrlAnnotation
dan metode terkait untuk mendukung dukungan linkTalkBack
diAnnotatedString
. (I1c754, b/231495122) - Memindahkan fungsi utilitas ke runtime (I4f729)
Perbaikan Bug
TextLayoutResult.getLineForOffset
tidak ditampilkan. (Idc5d6, b/235876324)
Kontribusi Eksternal
- Menambahkan API baru
WindowInfo.keyboardModifiers
untuk mengamati statusnya dalam fungsi composable atau melalui snapshotFlow (Icdb8a)
Versi 1.2
Versi 1.2.1
10 Agustus 2022
androidx.compose.ui:ui-*:1.2.1
dirilis. Versi 1.2.1 berisi commit ini.
Perbaikan Bug
- Memperbaiki nullpointer pada inspector (b/237987764)
- Memperbaiki pengecualian transmisi class selama remember di inspector (b/235526153)
Versi 1.2.0
27 Juli 2022
androidx.compose.ui:ui-*:1.2.0
dirilis. Versi 1.2.0 berisi commit ini.
Perubahan penting sejak 1.1.0
Peningkatan traversal fokus:
- Scrolling yang berfokus pada daftar Lazy kini berfungsi, menggunakan
BeyondBoundsLayout
core API baru - API penyesuaian perilaku baru di
FocusOrder
danFocusProperties
- Peningkatan perilaku dengan keyboard fisik atau remote TV
- Scrolling yang berfokus pada daftar Lazy kini berfungsi, menggunakan
API baru untuk:
- Inset jendela
- Primitif core untuk animasi tata letak, tak terbatas, dan berbasis gestur
- Kemampuan
GraphicsLayer
, termasukRenderEffect
Berbagai perbaikan bug dan peningkatan performa
Versi 1.2.0-rc03
29 Juni 2022
androidx.compose.ui:ui-*: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.ui:ui-*:1.2.0-rc02
dirilis. Versi 1.2.0-rc02 berisi commit ini.
Versi 1.2.0-rc01
15 Juni 2022
androidx.compose.ui:ui-*:1.2.0-rc01
dirilis. Versi 1.2.0-rc01 berisi commit ini.
Perubahan API
- Antarmuka di library Compose kini dibuat menggunakan metode antarmuka default jdk8 (I5bcf1)
- Menambahkan fungsi dengan urutan yang lebih tinggi ke
KeyInjectionScope
untuk memasukkan penekanan tombol saat tombol lain ditahan atau diaktifkan. Fungsi ini mencakupwithKeysDown
,withKeysToggled
, dll. Juga menambahkan properti untuk memeriksa apakah tombol meta tertentu tidak aktif, misalnya,isCtrlDown
untuk memeriksa apakah tombol kontrol ditekan. LihatKeyInjectionScope
untuk dokumentasi tentang setiap fungsi. (I9f6cd, b/229831515) 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)- Mengganti nama
runComposeUiTestWithoutActivity {}
menjadirunEmptyComposeUiTest {}
, yang menyesuaikannya dengancreateEmptyComposeRule()
(I6fed7)
Versi 1.2.0-beta03
1 Juni 2022
androidx.compose.ui:ui-*:1.2.0-beta03
dirilis. Versi 1.2.0-beta03 berisi commit ini.
Perubahan API
- Menambahkan
pressKeyTimes
sertaisCapsLockOn
dan semacamnya keKeyInjectionScope
. Selain itu, API ini sekarang mendukung pola injeksi gabungan mouse dan keyboard, seperti mengklik tombol mouse dengan tombol meta ditahan. (I4c8da, b/229831515) - Menambahkan dukungan eksperimental untuk memasukkan peristiwa tombol. Gunakan
performKeyInput
untuk mengirim peristiwa tombol, atau kirim melalui propertikey
dariMultiModalInjectionScope
selama gestur input multi-modal denganperformMultiModalInput
. LihatKeyInjectionScope
untuk dokumentasi API. (Ic5000, b/229831515) - Menambahkan
GoogleFont.Provider.AllFontsListUri
baru untuk mengambil sumber internet kanonis Google Fonts yang didukung oleh Android. - Memperbaiki pesan error yang ditampilkan ulang saat GoogleFont gagal dimuat di Compose. (I0416c)
Perbaikan Bug
- 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 (I51ec3, b/216582726, b/223440806, b/227709803) - Setelan
Show Layout Bounds
kini akan diterapkan untuk composable segera setelah mengalihkannya dari kartu setelan cepat, tanpa harus keluar dan masuk kembali ke aktivitas tersebut. (I843d5, b/225937688) - Pencarian string aksesibilitas tidak memicu pemuatan font. Sebelumnya, fungsi ini akan mencoba memuat font untuk
StyleSpans
, yang menyebabkan error jikaFontFamily.Resolver
telah ditimpa. (I4609d) - 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.ui:ui-*:1.2.0-beta02
dirilis. Versi 1.2.0-beta02 berisi commit ini.
Perubahan API
- Menggunakan kembali fungsi dalam jenis pratinjau lainnya (I19f39)
Perbaikan Bug
ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer
telah diganti namanya menjadiDisposeOnDetachedFromWindowOrReleasedFromPool
untuk lebih mencerminkannya saat pembuangan benar-benar terjadi, bukan hanya ketika tidak terjadi. (If15ca)
Versi 1.2.0-beta01
11 Mei 2022
androidx.compose.ui:ui-*: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) - Versi dengan kunci
Modifier.composed
kini menjadi API stabil (Ie65e4, b/229988420) - Menyederhanakan
rememberNestedScrollConnection
API untuk menggunakan lokal komposisi guna mendapatkan informasi tampilan saat ini (I67ca7) - Anotasi
@ComposableTarget
dan anotasi yang ditandai dengan@ComposableTargetMarker
kini dapat digunakan pada cakupan file menggunakan awalan@file
. Menggunakan anotasi target pada cakupan file akan menyebabkan compiler menganggap semua fungsi composable dalam file tersebut ditujukan untuk menargetkan applier terkait. Misalnya, penggunaan@file:UiComposable
akan mendeklarasikan bahwa semua fungsi@Composable
menargetkan applier Compose UI. Fungsi yang perlu menargetkan applier lain harus secara eksplisit menyediakan anotasi penanda target untuk applier yang diinginkan. (I40804) Memperkenalkan API pengujian eksperimental baru yang tidak bergantung pada platform:
interface ComposeUiTest
danfun runComposeUiTest(block: ComposeUiTest.() -> Unit)
, yang dapat digunakan untuk menjalankan pengujian Compose UI tanpa memerlukanTestRule
. Untuk menjalankan pengujian tanpaComposeTestRule
, teruskan pengujian sebagai lambda kerunComposeUiTest
, dan gunakan metode serta anggota dalam cakupan penerimaComposeUiTest
, yang sama seperti dalamComposeContentTestRule
.interface AndroidComposeUiTest
danfun runAndroidComposeUiTest(block: AndroidComposeUiTest.() -> Unit)
khusus Android ditambahkan untuk memberikan akses ke Aktivitas yang mendasarinya, mirip denganAndroidComposeTestRule
. Untuk kontrol lebih, Anda dapat membuat instanceclass AndroidComposeUiTestEnvironment
sendiri.Implementasi Desktop adalah
class DesktopComposeUiTest
, tetapi tidak ada fungsi run khusus Desktop yang ditawarkan saat ini.Memigrasikan pengujian dari
ComposeTestRule
keComposeUiTest
dapat dilakukan seperti ini (contoh Android). Dari:@RunWith(AndroidJUnit4::class) class MyTest { @get:Rule val rule = createComposeRule() @Test fun test() { rule.setContent { Text("Hello Compose!") } rule.onNodeWithText("Hello Compose!").assertExists() } }
Ke:
@RunWith(AndroidJUnit4::class) class MyTest { @Test @OptIn(ExperimentalTestApi::class) fun test() = runComposeUiTest { setContent { Text("Hello Compose!") } onNodeWithText("Hello Compose!").assertExists() } }
Untuk saat ini,
ComposeContentTestRule
danComposeTestRule
tidak diperluas dariComposeUiTest
, yang berarti fungsi ekstensi diComposeUiTest
belum dapat dipanggil di antarmukaTestRule
. SaatComposeUiTest
menstabilkan API,ComposeContentTestRule
danComposeTestRule
akan diubah untuk memperluas dariComposeUiTest
. (Ib4e90)LineHeightBehavior
diganti namanya menjadiLineHeightStyle
LineVerticalAlignment
diganti namanya menjadiLineHeightStyle.Alignment
LineHeightTrim
diganti namanya menjadiLineHeightStyle.Trim
Nilai konstruktor default dari
LineHeightStyle
dihapus (I582bf, b/181155707)Menambahkan
Brush
keTextStyle
danSpanStyle
untuk memberikan cara menggambar teks dengan pewarnaan 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 di bagian bawah baris terakhir. Ini juga menentukan perataan garis di ruang yang disediakan olehTextStyle(lineHeight)
.Misalnya, Anda dapat memperoleh perilaku yang mirip dengan CSS yang ditentukan melalui
LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false)
.Konfigurasi
trimFirstLineTop
,trimLastLineBottom
hanya berfungsi dengan benar saatincludeFontPadding
bernilai salah (false). (I97332, b/181155707)Fungsi
PlatformParagraphStyle.lerp
danPlatformSpanStyle.lerp
diubah menjadi fungsi tingkat atas (I9a268)
Perbaikan Bug
- Dokumentasi
PointerInputChange::copy
kini menyatakan dengan benar bahwa ini adalah shallow copy. (I182f5) - Mendukung elipsis jika tinggi terbatas dan tidak sesuai untuk semua baris teks (Ie528c, b/168720622)
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)
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.ui:ui-*:1.2.0-alpha08
dirilis. Versi 1.2.0-alpha08 berisi commit ini.
Perubahan API
- Fungsi
pluralStringResource
ditandai sebagai eksperimental untuk memungkinkan evolusi mendukung internasionalisasi yang lebih baik di masa mendatang. (If24e4) - 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 elips berdasarkan tinggi. (I6afee, b/168720622) SubcomposeSlotReusePolicy.getSlotsToRetain()
kini menerima class seperti MutableSet kustom yang tidak mengizinkan penambahan item baru ke dalamnya. (Icd314)- PointerIcon sekarang menjadi antarmuka
@Stable
(I9dafe) - 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)- Mengaktifkan interop Scroll Bertingkat antara Compose dan View di arah Compose > View. Ini berarti induk Compose akan dapat menerima delta scroll bertingkat dari tampilan scroll bertingkat. (If7949, b/174348612)
SemanticsProperty testTagsAsResourceId
baru, yang dapat digunakan untuk membuat Compose agar sesuai dengan pengujian UIAutomator yang dirancang untuk sistem View. (I39c20)- 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) - Instruktur paragraf dan multiparagraf menyusun ulang argumen posisi sebelum argumen opsional. (Idafaa)
AndroidFont
kini menggunakan typefaceLoader sebagai parameter konstruktor. (I2c971)
Versi 1.2.0-alpha07
6 April 2022
androidx.compose.ui:ui-*:1.2.0-alpha07
dirilis. Versi 1.2.0-alpha07 berisi commit ini.
Perubahan API
- Fungsi baru
Snapshot.withoutReadObservation { ... }
telah ditambahkan. Fungsi ini memungkinkan pengguna menjalankan lambda yang diteruskan tanpa mengikuti perubahan nilai status yang dibaca selama blok ini. Anda dapat merasakan manfaatnya dalam kasus penggunaan saat Anda ingin memanfaatkan proses tulis/baca thread berbasis snapshot, tetapi ingin dapat membaca nilainya tanpa menyebabkan rekomposisi atau pengukuran ulang yang tidak perlu. (I9f365, b/214054486) - Properti ekstensi
consumeWindowInsets
dariComposeView
memungkinkan developer menonaktifkan pemakaian AndroidWindowInsets
. Hal ini memungkinkanComposeViews
terpisah dalam hierarki untuk menerapkanWindowInsets
tanpa mengganggu satu sama lain. (I0ef08, b/220943142) - Menambahkan
KeyboardType.Decimal
sebagai alternatif untukKeyboard.Number
secara khusus termasuk pemisah desimal di IME. (Iec4c8, b/209835363) PointerEventType.Scroll
danPointerEvent.scrollDelta
sekarang adalah API stabil (I574c5, b/225669674)- Mengaktifkan interop Scroll Bertingkat antara View dan Compose untuk class View yang bekerja sama. Hal ini berarti compose sekarang dapat mengirimkan delta scroll ke induk View (yang bekerja sama). (I5d1ac, b/174348612)
- Memperbarui
FontFamily.Resolver
untuk mengintegrasikan setelan aksesibilitas teks tebal di seluruh Sistem (I6c1e7) Font(AssetManager, String, ...)
tidak digunakan lagi dan diganti denganFont(String, AssetManager, ...)
. Ini adalah API eksperimental. (I1c7a4)- Menambahkan deskripsi font baru
Font(DeviceFontFamilyName)
untuk secara opsional mencari font yang diinstal sistem selama rantai penggantian font. (I30468, b/219754572) - Menambahkan konfigurasi kompatibilitas sementara untuk
includeFontPadding
di TextStyle/ParagraphStyle.includeFontPadding
dapat diubah melaluiTextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false))
. Ini adalah opsi konfigurasi sementara untuk mengaktifkan migrasi dan akan dihapus. (If47be, b/171394808) - Menambahkan ekstensi
GoogleFont.Provider.isAvailableOnDevice
untuk bantuan proses debug. (I64e31) - Menambahkan konstruktor
GoogleFont.Provider
untuk digunakan dengan@ArrayRes
. (Ic5ee1, b/225984280) Compose GoogleFont
kini disebutFont(GoogleFont)
, dan API akan tetap stabil. (I125f2)
Perbaikan Bug
- Menambahkan pemeriksaan lint ke material/Scaffold untuk memastikan bahwa padding bagian dalam sedang digunakan. (Ifb111)
Versi 1.2.0-alpha06
23 Maret 2022
androidx.compose.ui:ui-*: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) - Memperbarui penguraian vektor drawable untuk mendukung pencerminan otomatis untuk membalik konten
VectorPainter
jika arah tata letak saat ini adalah RTL. (I79cd9, b/185760237) Mengupdate warna bayangan/suasana menjadi parameter tambahan
Modifier.graphicsLayer
untuk kompatibilitas API (I3f864, b/160665122)Menambahkan implementasi default ke warna bayangan/suasana di
GraphicsLayerScope
untuk memastikan perubahan API yang tidak akan menyebabkan gangguan.Menambahkan waktu peristiwa ke peristiwa RSB. (Ief8ae)
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)Mengupgrade
RecyclerView
danCompose
kini akan menghasilkan performa scroll yang jauh lebih baik untuk RecyclerViews dengan tampilan Compose sebagai turunan.Menambahkan
ViewCompositionStrategy.Default
sebagai cara untuk mengambil strategi default bawaan.Menambahkan
ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer
, yang merupakan strategi default baru dan menangani container penggabungan seperti RecyclerView dengan benar. (If7282)Menambahkan dukungan untuk menganotasi class anotasi dengan @Preview sebagai langkah pertama untuk menambahkan fitur Multipreview. Anotasi tersebut dapat digunakan untuk menganotasi metode Composable atau class anotasi lainnya, yang kemudian dapat dianggap sebagai anotasi tidak langsung dengan @Preview tertentu. (I12eff)
Perangkat referensi yang ditambahkan ke daftar Perangkat untuk @Preview. (I071c9)
Perbaikan Bug
- Mengupdate API Grafik vektor untuk menggunakan anotasi composable @VectorComposable yang tepat, bukan @UiComposable (I942bc)
- Menghapus crossinline dari
AnnotatedString.Builder.withStyle
. (If84d5)
Kontribusi Eksternal
- compose-ui: Menambahkan properti
ambientShadowColor
danspotShadowColor
keGraphicsLayerScope
. (I1ba1a, b/160665122) - Resource jamak sekarang didukung melalui fungsi
pluralStringResource
. (Ib2f23, b/191375123)
Versi 1.2.0-alpha05
9 Maret 2022
androidx.compose.ui:ui-*:1.2.0-alpha05
dirilis. Versi 1.2.0-alpha05 berisi commit ini.
Perubahan API
TextToolbar
kini menggunakan argumen lambda, bukanActionCallback
. (Ib2eb9, b/197950089)- Mengupdate nullability di core dan appcompat agar sesuai dengan Tiramisu DP2 (I0cbb7)
- Antarmuka terukur kini mengekspos properti parentData (I3313f)
Modifier.onPlaced
dan antarmukaOnPlacedModifier
kini stabil. (Ib5482)- Hore! Animasi Compose sekarang mendukung setelan 'Animator duration scale' dari Opsi Developer. (I5a4fc, b/161675988)
- Menambahkan pengubah
BeyondBoundsLayout
lokal (If8b51, b/184670295) - Teks: includeFontPadding kini dinonaktifkan secara default. Masalah
pemotongan akibat
includeFontPadding=false
ditangani dan tidak ada pemotongan yang harus dilakukan untuk skrip yang tinggi. (I31c84, b/171394808)
Perbaikan Bug
ComposeContentTestRule.setContent
sekarang akan menampilkanIllegalStateException
jika Anda mencoba menetapkan konten saat sudah ada konten. (I888a5, b/199631334)- Memperbaiki error yang disebabkan oleh konten papan klip saat membaca dari papan klip di Android. (I06020, b/197769306)
- Meningkatkan sampel scroll RSB. (I6a596)
Kontribusi Eksternal
- Diupdate untuk menggunakan coroutine Kotlinx 1.6.0 (I3366d)
Versi 1.2.0-alpha04
23 Februari 2022
androidx.compose.ui:ui-*:1.2.0-alpha04
dirilis. Versi 1.2.0-alpha04 berisi commit ini.
Perubahan API
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 anotasiComposableTarget
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)Font(resId, ...)
sekarang menggunakan loadingStrategy pada API yang stabil. (Ief3d2)FontLoadingStrategy
sekarang menjadi API stabil. (I1ee35, b/174162090)Mendukung pemuatan font asinkron di Text (I77057, b/214587005)
Menambahkan bridge API untuk mengonversi
Font.ResourceLoader
kustom menjadiFontFamily.Resolver
. (Ia0060)
Perbaikan Bug
FontFamily.Resolver
yang disediakan akan diteruskan ke subkomposisi seperti Popup.Font.ResourceLoader
yang disediakan akan diteruskan ke subkomposisi seperti Popup. (I48fa5)
Versi 1.2.0-alpha03
9 Februari 2022
androidx.compose.ui:ui-*: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) - Memperkenalkan metode
destroyDisplayListData
pada class stubRenderNode
(I1e659, b/216660268) - Menambahkan api baru yang memungkinkan pengukuran awal turunan
SubcomposeLayout
yang dikomposisi sebelumnya. (I857ea) Menambahkan
movableContentOf
yang mengonversi lambda composable menjadi lambda yang memindahkan statusnya, dan node yang sesuai, ke lokasi baru yang dipanggil. Saat panggilan sebelumnya meninggalkan komposisi, status dipertahankan untuk sementara. Jika panggilan baru ke lambda memasuki komposisi, status dan node terkait akan dipindahkan ke lokasi panggilan baru. Jika tidak ada panggilan baru yang ditambahkan, status akan dihapus secara permanen dan ingat bahwa observer akan diberi tahu.Jika lambda
movableContentOf
dipanggil beberapa kali dalam komposisi yang sama, status dan node baru akan dibuat untuk setiap panggilan. Saat panggilan meninggalkan komposisi dan panggilan baru masuk, status akan dipindahkan dari panggilan keluar pertama ke panggilan masuk sesuai urutan pemanggilan. Semua status yang tidak diklaim oleh panggilan baru akan dihapus secara permanen. (Ib4850)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)Dukungan untuk memuat font yang asinkron dan opsional, dengan perilaku penggantian. Jalur ini digunakan oleh Text dan TextField, dan ditampilkan melalui FontFamilyResolver
Dukungan untuk melakukan pramuat font melalui
FontFamilyResolver.preload
FontFamilyResolver.setAsyncLoadContext
memungkinkan setelan konteks coroutine global yang digunakan untuk memuat font asinkron. (I87fe8, b/174162090)Menambahkan
AndroidFont
, API level 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, lihatAndroidFont
.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)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)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)Menampilkan fungsi HSV dan HSL di
Color
sebagai API non-eksperimental. Ruang warna Oklab kini menjadi API publik. (I08fb6, b/180731008)AndroidComposeTestRule.AndroidComposeStatement
tidak digunakan lagi, yang tidak dimaksudkan untuk berada di API publik dan tidak melakukan apa pun untuk Anda. (Ibc46b)Penggantian nama class kt yang dibuat internal (Ia0b9e, b/174162090)
Menghapus
FontLoadingStrategy.values
(I42a9d, b/174162090)Loader font global kini disebut
FontFamilyResolver
. (I4f773, b/174162090)Gunakan sistem pemuatan font baru untuk desktop. (I9ce5c, b/174162090)
FontFamily.Resolver.resolve
menampilkanState<Any>
(I4406c, b/174162090)
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 lokal komposisi untuk
FontFamily.Resolver
- Desktop
FontLoader
tidak digunakan lagi - Factory
createFontFamilyResolver
baru di Desktop (I6bbbb, b/174162090) - Jenis input keyboard virtual tidak lagi berkedip saat mengubah fokus di antara kolom teks. (I1bf50, b/187746439)
Versi 1.2.0-alpha02
26 Januari 2022
androidx.compose.ui:ui-*:1.2.0-alpha02
dirilis. Versi 1.2.0-alpha02 berisi commit ini.
Perubahan API
- Menambahkan
Modifier.onRotaryScrollEvent()
danModifier.onPreRotaryScrollEvent()
untuk perangkat Wear dengan tombol samping yang berputar (I18bf5, b/210748686) - Menambahkan ekstensi
View.createLifecycleAwareRecomposer
eksperimental (I0cde6)
Kontribusi Eksternal
PointerEvent.scrollDelta.y
sekarang dibalik di Android (jika kita memiringkan roda mouse ke kanan, sekarang akan menampilkan 1, bukan -1) (Ia9811)
Versi 1.2.0-alpha01
12 Januari 2022
androidx.compose.ui:ui-*:1.2.0-alpha01
dirilis. Versi 1.2.0-alpha01 berisi commit ini.
Perubahan API
FontFamily.canLoadSynchronously
tidak digunakan lagi. Properti ini tidak memiliki arti semantik. (Ica5ef)- Menambahkan kolom identitas ke
CompositionData
untuk menghasilkan ID invarian di Layout Inspector. (Ic116e) - Menambahkan ID perangkat Wear OS ke daftar perangkat Pratinjau (I93232)
Update Dependensi
- Sekarang bergantung pada Kotlin
1.6.10
.
Versi 1.1
Versi 1.1.1
23 Februari 2022
androidx.compose.ui:ui-*: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.ui:ui-*: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 panduan aksesibilitas Material terkait ukuran target sentuh. Misalnya, target sentuh Button akan diperluas hingga ukuran minimum 48x48 dp, meskipun Anda menyetel ukuran Button menjadi lebih kecil. Tindakan ini akan menyelaraskan Compose Material ke perilaku Komponen Desain Material yang sama, sehingga memberikan perilaku yang konsisten jika Anda menggabungkan View dan Compose. Perubahan ini juga memastikan bahwa saat Anda membuat UI menggunakan komponen Compose Material, persyaratan minimum untuk aksesibilitas target sentuh akan terpenuhi.
- Dukungan Stabil untuk Navigation Rail
- Menstabilkan sejumlah API eksperimental sebelumnya
- Dukungan untuk versi Kotlin yang lebih baru
Versi 1.1.0-rc03
26 Januari 2022
androidx.compose.ui:ui-*: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.ui:ui-*:1.1.0-rc01
dirilis. Versi 1.1.0-rc01 berisi commit ini.
Perbaikan Bug
- Memperbaiki bug yang menyebabkan tindakan scroll aksesibilitas tidak ada (I7cbfb)
SemanticsNodeInteraction.captureToImage()
kini juga akan berfungsi jikaHardwareRenderer.isDrawingEnabled()
adalahfalse
, dengan mengaktifkannya selama panggilan berlangsung (Idf3d0)
Versi 1.1.0-beta04
1 Desember 2021
androidx.compose.ui:ui-*: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 yang memungkinkan pengguna menggunakan PointerInputchange secara keseluruhan atau memeriksa apakah API tersebut digunakan atau tidak. (I2e59d)
- Menambahkan dukungan untuk peristiwa roda scroll mouse di lapisan UI. (Ia14eb, b/198214718)
- Menambahkan overload
Modifier.composed
eksperimental yang menerima kunci untuk membandingkan kesetaraan dan pemenuhan syarat guna melewati pengoptimalan. (Ice799, b/205851704) ComposeNotIdleException
sekarang diperluas dariException
, bukan langsung dariThrowable
. Perlu diperhatikan bahwa perubahan ini berarti klausa tangkapan yang menangkapException
sekarang dapat menangkapComposeNotIdleException
, yang sebelumnya tidak akan dilakukan. (I9c217)
Perbaikan Bug
- Memperbaiki tuas teks yang tidak bergerak jika visibilitas IME berubah. (I25f2e)
Versi 1.1.0-beta03
17 November 2021
androidx.compose.ui:ui-*:1.1.0-beta03
dirilis. Versi 1.1.0-beta03 berisi commit ini.
Perubahan API
- Menambahkan pengubah Modifier.onPlaced baru untuk memungkinkan pengamatan terhadap perubahan penempatan. Oleh sebab itu, perubahan tambahan untuk offset pengubah turunan dapat dilakukan berdasarkan perubahan penempatan yang teramati. (I558fd)
- Menghapus
InjectionScope.flush()
danInjectionScope.dispose()
. Pembuangan semua peristiwa dan penghapusan cakupan kini terjadi pada akhir metode perform*Input() yang dipanggil seperti sebelumnya. (I2bed8) - Menghapus
MultiModalInjectionScope.Touch
danMultiModalInjectionScope.Mouse
. Guna memasukkan peristiwa sentuh dan mouse untuk gestur multi-modal, kini Anda dapat menggunakanMultiModalInjectionScope.touch()
danMultiModalInjectionScope.mouse()
, yang keduanya menerima lambda yang memiliki cakupan penerima modalitas tersebut. (Idde18)
Perbaikan Bug
- Nilai default untuk
durationMillis
diTouchInjectionScope.swipeWithVelocity
sekarang dihitung sehingga tindakan geser dapat dilakukan. (I19deb)
Versi 1.1.0-beta02
3 November 2021
androidx.compose.ui:ui-*:1.1.0-beta02
dirilis. Versi 1.1.0-beta02 berisi commit ini.
Perubahan API
- Menambahkan BringIntoView API eksperimental yang memungkinkan Anda mengirim permintaan ke induk agar men-scroll untuk menampilkan item (Ib918d, b/195353459)
- Animation API baru untuk mendukung alat. Secara khusus, fungsi ini memungkinkan alat untuk memeriksa animasi & konfigurasinya dalam Transisi. (I4116e)
Kontribusi Eksternal
- Menambahkan Modifier.pointerHoverIcon (I95f01)
Versi 1.1.0-beta01
27 Oktober 2021
androidx.compose.ui:ui-*:1.1.0-beta01
dirilis. Versi 1.1.0-beta01 berisi commit ini.
Perubahan API
- Menambahkan
BringIntoView
API eksperimental yang memungkinkan Anda mengirim permintaan ke induk sehingga akan men-scroll untuk menampilkan item (Ib918d, b/195353459) - Animation API baru untuk mendukung alat. Secara khusus, fungsi ini memungkinkan alat untuk memeriksa animasi & konfigurasinya dalam Transisi. (I4116e)
Versi 1.1.0-alpha06
13 Oktober 2021
androidx.compose.ui:ui-*:1.1.0-alpha06
dirilis. Versi 1.1.0-alpha06 berisi commit ini.
Perubahan API
- Menghapus
ExperimentalComposeUiApi
dariViewRootForInspector
danLayoutInfo.ownerViewId
(I5c2e3) - Overload tanpa turunan untuk Tata Letak telah ditambahkan, dengan peningkatan efisiensi (Ib0d9a)
- Menghapus
InternalCompilerApi
dari metode Composer yang harus dipanggil lintas modul (I1aa0b) SemanticsNodeInteraction.performSemanticsAction
sekarang menampilkanSemanticsNodeInteraction
tempat fungsi dipanggil. (I9e5db)- Menambahkan LocalInputModeManager CompositionLocal untuk mendeteksi TouchMode/NonTouchMode. (I6a83c, b/175899786)
- Menambahkan
viewConfiguration: ViewConfiguration
keLayoutInfo
agar konsumen mendapatkan nilai yang tepat untuk hal-hal seperti waktu tunggu gestur tekan lama. (I76ca6)- Menambahkan
viewConfiguration: ViewConfiguration
keInjectionScope
guna memungkinkan pengujian untuk menyesuaikan injeksi input berdasarkan hal-hal seperti waktu tunggu gestur tekan lama atau touch slop. - Mengubah durasi default gestur tekan lama dan ketuk dua kali untuk
input sentuh dan mouse agar didasarkan pada nilai dalam
InjectionScope.viewConfiguration
.
- Menambahkan
- Implementasi ExposedDropdownMenu berdasarkan ExposedDropdownMenuBox dengan TextField dan DropdownMenu di dalamnya (If60b2)
- dismissOnOutsideClick telah ditambahkan ke PopupProperties, menggantikan dismissOnClickOutside yang tidak digunakan lagi. Properti baru menerima posisi klik dan batas anchor, memberikan kontrol yang lebih baik atas penentuan keharusan memanggil onDismissRequest. Misalnya, hal ini dapat berguna untuk mencegah penutupan anchor untuk sentuhan pada anchor.
- updateAndroidWindowManagerFlags telah ditambahkan ke PopupProperties, yang menawarkan kontrol tingkat rendah atas flag yang diteruskan oleh pop-up ke Android WindowManager. Parameter lambda akan menjadi flag yang dihitung dari nilai PopupProperties yang menghasilkan flag WindowManager: misalnya dapat difokuskan. Hasil lambda akan menjadi flag akhir yang akan diteruskan ke Android WindowManager. Secara default, updateAndroidWindowManagerFlags tidak akan mengubah flag yang dihitung dari parameter. API ini harus digunakan dengan hati-hati, hanya jika pop-up memiliki persyaratan perilaku yang sangat spesifik. (I6e9f9)
Recomposer.state
tidak digunakan lagi dan diganti denganRecomposer.currentState
untuk mengubah jenisnya menjadi StateFlow (Ic2ab3, b/197773820)flush()
dandispose()
telah ditambahkan keInjectionScope
. Gunakan keduanya jika Anda ingin segera membersihkan semua peristiwa yang diantrekan dan kapan Anda ingin membuang cakupan. (Ifb73a)- Menambahkan
performScrollToNode(matcher: SemanticsMatcher)
yang men-scroll container yang dapat di-scroll ke konten yang cocok dengan matcher yang diberikan. (Ic1cb8) InjectionScope
kini mengimplementasikanDensity
sehingga Anda dapat mengonversi px dan dp dengan mudah diperformTouchInput
dan sejenisnya. (I8fe1f)
Perbaikan Bug
- AndroidView sekarang menyebarkan LocalLifecycleOwner dan LocalSavedStateRegistryOwner ke tampilannya melalui ViewTreeLifecycleOwner dan ViewTreeSavedStateRegistryOwner. (I38f96, b/179708470)
- Memperbaiki SwipeToDismissBox WearOS yang terkadang tidak menangani gestur geser. (I9387e)
- Waktu default antara peristiwa input yang dimasukkan telah diubah dari 10 md menjadi 16 md. Perubahan ini berpotensi mengubah hasil pengujian yang menjalankan gestur input, seperti gestur geser tertentu. (I829fd)
Versi 1.1.0-alpha05
29 September 2021
androidx.compose.ui:ui-*:1.1.0-alpha05
dirilis. Versi 1.1.0-alpha05 berisi commit ini.
Perubahan API
- Menambahkan dukungan untuk komunikasi antar-pengubah (Id5467, b/198826874)
- Menambahkan pointer historis eksperimental ke PointerEventChange. (Ic1fd8, b/197553056, b/199921305)
density: Density
danlayoutDirection: LayoutDirection
telah ditambahkan keLayoutInfo
. Ini memungkinkan konsumenLayoutInfo
menafsirkan dimensi dan posisi yang diekspos diLayoutInfo
dengan benar. (I002f1)- Menambahkan dukungan eksperimental untuk memasukkan peristiwa mouse. Gunakan
performMouseInput
untuk mulai mengirim peristiwa mouse, atau kirim peristiwa mouse melalui propertiMouse
dariMultiModalInjectionScope
selama gestur input multi-modal denganperformMultiModalInput
. LihatMouseInjectionScope
untuk dokumentasi API yang tersedia. (Iaa4a8, b/190493367)
Perbaikan Bug
- Memperbaiki dukungan aksesibilitas untuk scrollable (lambat dan tidak lambat) terkait scroll (I6cdb0)
- Meningkatkan
TouchInjectionScope.swipeWithVelocity
. Sekarang menerima rentang variabel input yang lebih luas dan akan menyarankan perubahan pada input jika gestur geser tidak dapat dibuat (I40fbe, b/182477143)
Versi 1.1.0-alpha04
15 September 2021
androidx.compose.ui:ui-*:1.1.0-alpha04
dirilis. Versi 1.1.0-alpha04 berisi commit ini.
Perubahan API
PointerEvent
sekarang memilikiPointerEventType
untuk mendukung peristiwa pengarahan kursor. (I091fa)- Mengizinkan turunan menerima input pointer di luar batas input pointer induk. Induk dapat menangkap panggilan tersebut dengan properti PointerInputScope.alwaysInterceptChildEvents (I9eae3, b/192479655)
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) - Mengulangi implementasi yang dapat diperiksa (I927bc, b/191017532)
- Mengubah nama parameter yang dapat diperiksa agar sesuai (I3a482, b/191017532)
Memperkenalkan
performTouchInput
danTouchInjectionScope
sebagai penggantiperformTouchInput
danTouchInjectionScope
, sehingga mempermudah modalitas lain (seperti mouse).TouchInjectionScope
memiliki metode yang sama denganGestureScope
, dengan pengecualianmovePointerTo
danmovePointerBy
, yang telah diganti namanya menjadiupdatePointerTo
danupdatePointerBy
. Semua metode lainnya sama.Perilaku
TouchInjectionScope
hampir identik denganGestureScope
, dengan dua detail kecil:- Saat mengirimkan peristiwa ke bawah sementara pointer dipindahkan tanpa
mengirim peristiwa pindah (dengan kata lain,
updatePointerTo()
telah digunakan, tetapi bukanmove()
, laludown()
dipanggil), implementasi sebelumnya akan memajukan waktu peristiwa dan mengirimkan peristiwa pindah sebelum mengirimkan peristiwa ke bawah. Implementasi baru ini masih mengirimkan peristiwa pindah, tetapi tidak memajukan waktu peristiwa dalam skenario khusus ini. - Saat mengirimkan peristiwa ke atas sementara pointer dipindahkan tanpa mengirimkan peristiwa pindah (mirip seperti di atas), implementasi sebelumnya akan memajukan waktu peristiwa dan mengirimkan peristiwa pindah sebelum mengirimkan peristiwa ke atas. Implementasi baru tersebut tidak melakukan keduanya: posisi baru pointer hanya akan ditampilkan melalui peristiwa ke atas.
Terakhir,
TouchInjectionScope
memperkenalkan metode barucurrentPosition(pointerId: Int)
untuk mendapatkan posisi saat ini dari pointer tertentu. (If1191, b/190493367)- Saat mengirimkan peristiwa ke bawah sementara pointer dipindahkan tanpa
mengirim peristiwa pindah (dengan kata lain,
Perbaikan Bug
- Mengizinkan klip untuk memperluas batas target sentuh di luar area klip untuk tujuan target sentuh minimum. (I43e10, b/171509422)
- Dukungan untuk overscroll regangan telah ditambahkan di perangkat Android 12. (Iccf3c, b/171682480)
Versi 1.1.0-alpha03
1 September 2021
androidx.compose.ui:ui-*:1.1.0-alpha03
dirilis. Versi 1.1.0-alpha03 berisi commit ini.
Fitur Baru
- Mengupdate Compose
1.1.0-alpha03
agar bergantung pada Kotlin1.5.30
. (I74545)
Perubahan API
- Menambahkan
Modifier.inspectable
untuk menggabungkan pengubah lainnya. (I1909b, b/191017532) - Menambahkan
BlurredEdgeTreatment
API untuk menyederhanakan kasus penggunaan blur menjadi kombinasi flag potongan yang lebih umum digunakan dan TileMode. Sebagian besar kasus penggunaan melibatkan konten blur yang dirender di luar batas konten asli dan memburamkan wilayah di luar batas ini dengan warna hitam transparan, atau memotong konten ke batas konten yang mengambil sampel tepi terdekat untuk kernel blur yang melampaui batas konten. (I6b4b7, b/166927547) - Menambahkan dukungan untuk RenderEffect di desktop compose. Memperkenalkan OffsetEffect serta pengubah blur ini sebagai cara sederhana untuk memperkenalkan efek visual blur ke sebagian hierarki komposisi. (I0f6aa, b/166927547)
- Memperkenalkan RenderEffect API
yang dapat dikonfigurasi secara opsional pada
Modifier.graphicsLayer
untuk mengubah konten lapisan itu sendiri. Ini dapat digunakan untuk memburamkan konten composable dan composable turunan dalam hierarki komposisi. (I47c4d, b/166927547) - AwaitPointerEventScope sekarang memiliki withTimeout() dan denganTimeoutOrNull() (I507f0, b/179239764, b/182397793)
- Ukuran target sentuh minimum ditambahkan ke ViewConfiguration agar digunakan dalam semantik dan input pointer untuk memastikan aksesibilitas. (Ie861c)
- Menambahkan dukungan TileMode.Decal yang berguna dalam menentukan perilaku edge untuk RenderEffects berbasis blur. (I7e8ed, b/166927547)
performScrollToIndex
,performScrollToKey
,hasScrollToIndexAction
, danhasScrollToKeyAction
sekarang menjadi API stabil (I142ae, b/178483889)- Metode pengujian telah ditambahkan agar mendapatkan batas yang terpotong. (I6b28e)
Perbaikan Bug
- Menghapus metode isBounded dari BlurredEdgeTreatment untuk memeriksa secara eksplisit apakah parameter bentuk bernilai null. (I85d68)
Versi 1.1.0-alpha02
18 Agustus 2021
androidx.compose.ui:ui-*:1.1.0-alpha02
dirilis. Versi 1.1.0-alpha02 berisi commit berikut ini.
Perubahan API
- PointerEvent sekarang memiliki dukungan untuk membaca status tombol mouse dan status pengubah keyboard. (I6310c, b/180075467)
- Gestur yang dimasukkan sekarang menggunakan waktu MainTestClock sebagai
sumber kebenaran untuk waktu. Waktu saat ini untuk peristiwa yang dimasukkan dalam
performGesture
akan diinisialisasi ke waktu saat ini MainTestClock. (Ifb364, b/192064452) - Menambahkan konstruktor
DpRect(DpOffset, DpSize)
(I2cf16, b/194219828) - Menambahkan class DpSize (I7abb1, b/194219828)
Perbaikan Bug
- Update xml Grafik vektor yang mengurai untuk mendukung ColorStateLists sebagai properti tint warna root di VectorDrawable. (I86915, b/195668138)
Versi 1.1.0-alpha01
4 Agustus 2021
androidx.compose.ui:ui-*:1.1.0-alpha01
dirilis. Versi 1.1.0-alpha01 berisi commit ini.
Perubahan API
RelocationRequester.bringIntoView
sekarang menerima persegi panjang sebagai parameter yang memungkinkan kita menampilkan bagian composable (Ice2c5, b/194330245)AnimatedImageVector
dan API terkait kini berada dalam modulandroidx.compose.animation:animation-graphics
baru. (I60873)- Menambahkan pengubah eksperimental untuk menangani permintaan relokasi. (I65a97, b/178211874)
Memperkenalkan BrushPainter API untuk mendukung gambar Brush arbitrer di dalam Painter, yang mirip dengan ColorPainter
Mengupdate Brush API agar memiliki parameter ukuran intrinsik yang dikueri dalam BrushPainter (Ia2752, b/189466433)
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)
Menambahkan metode
GestureScope.advanceEventTime
untuk memberikan lebih banyak kontrol terhadap waktu peristiwa dalam gestur (Ibf3e2)
Perbaikan Bug
- Untuk mendukung perantaian pengubah gambar dengan lebih baik, pastikan implementasi Modifier.paint
memanggil drawsContent.
Sebelumnya, Modifier.paint diharapkan menjadi node daun dalam
rantai Pengubah. Namun, dengan melakukan hal tersebut, Modifier.paint tidak
akan terkonfigurasi pada container composable (misalnya, box)
atau Modifier.paint akan menambahkan dekorasi tambahan di bagian atas seperti
Modifier.paint().border()
. Dengan meminta Modifier.paint memanggil drawContent setelah menggambar konten painter tertentu, kita akan memiliki konsistensi perilaku yang lebih baik dengan pola pengubah. (Ibb2a7, b/178201337, b/186213275) - Dialog sekarang mengikuti perilaku pengubahan ukuran platform. Setel
usePlatformDefaultWidth
ke salah (false) untuk mengganti perilaku ini. (Iffaed, b/192682388) - Memindahkan
InfiniteAnimationPolicy
ke :compose:ui (I5eb09, b/160602714) - Scrolling melalui tindakan semantik untuk lazy list dan komponen scroll reguler kini dianimasikan (Id9066, b/190742024)
Versi 1.0
Versi 1.0.5
3 November 2021
androidx.compose.ui:ui-*: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.ui:ui-*: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.ui:ui-*: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.ui:ui-*:1.0.2
dirilis. Versi 1.0.2 berisi commit ini.
Diupdate untuk mendukung rilis Compose 1.0.2
. Compose 1.0.2
masih kompatibel dengan Kotlin 1.5.21
.
Versi 1.0.1
4 Agustus 2021
androidx.compose.ui:ui-*:1.0.1
dirilis. Versi 1.0.1 berisi commit ini.
Update Dependensi
- Diupdate agar bergantung pada Kotlin
1.5.21
.
Versi 1.0.0
28 Juli 2021
androidx.compose.ui:ui-*: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.ui:ui-*:1.0.0-rc02
dirilis. Versi 1.0.0-rc02 berisi commit ini.
Perbaikan Bug
- Dialog sekarang mengikuti perilaku pengubahan ukuran platform. Setel
usePlatformDefaultWidth
ke salah (false) untuk mengganti perilaku ini. (Iffaed, b/192682388)
Versi 1.0.0-rc01
1 Juli 2021
androidx.compose.ui:ui-*:1.0.0-rc01
dirilis. Versi 1.0.0-rc01 berisi commit berikut ini.
Fitur Baru
- Membagi modul ui-tooling menjadi
ui-tooling
danui-tooling-preview
(Iefa28, b/190649014)
Perubahan API
- Menghapus
FocusManager#moveFocusIn
danFocusManager#moveFocusOut
eksperimental yang tidak digunakan lagi (I227d7, b/170154986, b/186567354, b/168510304) - Canvas sekarang mendukung parameter contentDescription untuk aksesibilitas. (Ib547c)
useDefaultMaxWidth
diPopupProperties
diganti namanya menjadiusePlatformDefaultWidth
. (I05710)- Dialog kini dapat menggunakan seluruh lebar layar. (I83929, b/190810877)
- Menambahkan dukungan eksperimental untuk representasi warna HSV dan HSL. (Id7cf8, b/180731008)
Perubahan Perilaku
- Compose
@Preview
kini menyediakanLocalActivityResultRegistryOwner
yang memungkinkan Anda melihat pratinjau Composable yang menggunakan API sepertirememberLauncherForActivityResult()
yang bergantung pada pemilik yang ada. (Ib13d1, b/185693006) - Compose
@Preview
kini menyediakanLocalOnBackPressedDispatcherOwner
yang memungkinkan Anda melihat pratinjau Composable yang menggunakan API sepertiBackHandler
yang bergantung pada pemilik yang ada. (Ia1c05, b/185693006)
Perbaikan Bug
- Memindahkan
InfiniteAnimationPolicy
keandroidx.compose.ui:ui
(I5eb09, b/160602714) - AnimatedImageVector dihapus sementara untuk mengubah struktur modul. (I41906, b/160602714)
Versi 1.0.0-beta09
16 Juni 2021
androidx.compose.ui:ui-*:1.0.0-beta09
dirilis. Versi 1.0.0-beta09 berisi commit ini.
Perubahan API
- Mengubah Peran enum dan LiveRegionMode ke class inline dengan konstruktor pribadi (Id1890)
- KeyboardCapitalization dikonversi menjadi class inline. (Id5a1c)
- Mengubah HapticFeedbackType ke class inline. (I255ec)
- Modifier.pointerInteropFilter adalah @ExperimentalComposeUiApi. (Iede6c)
- TextAlign, FontSynthesis, dan TextDirection sekarang menjadi class inline. (I212fe)
- TextOverflow diubah menjadi class inline. (I433af)
- FontStyle sekarang menjadi class inline. (I9e48b)
Perbaikan Bug
- Untuk sekarang, konstanta kunci adalah @ExperimentalComposeUiApi. Memakai kode dapat mendeklarasikan konstanta pribadi sebelum stabilisasi. (Ia5d48)
- Pengujian Compose kini dapat dijalankan di Robolectric. Pembatasan
berikut sejauh ini telah diidentifikasi:
- Tidak ada bitmap native, sehingga
ImageBitmap()
mengarah ke NullPointerException. - Tidak ada gambar, jadi
captureToImage()
akan menunggu undian berikutnya (yaitu, deadlock). - Tidak ada font yang dimuat, sehingga teks tidak akan diukur dengan benar. Semua karakter memiliki tinggi tetap sekitar 20 piksel dan lebar 1 piksel.
ComposeTestRule.waitUntil {}
tidak menjalankan thread utama saat menunggu, menjadikannya efektif sama sepertiComposeTestRule.mainClock.advanceTimeUntil {}
Batasan lainnya diharapkan dapat diidentifikasi di masa mendatang. (I284fa)
- Tidak ada bitmap native, sehingga
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.ui:ui-*:1.0.0-beta08
dirilis. Versi 1.0.0-beta08 berisi commit ini.
Perubahan API
- Enum
NestedScrollSource
digantikan oleh class inline. (Ie321b, b/187055290) FocusManager.clearFocus(forcedClear = true)
diganti namanya menjadiFocusManager.clearFocus(force = true)
(Ia0c41)- Memfaktorkan ulang penggunaan enum ke class inline untuk menghindari masalah dengan pernyataan when lengkap saat nilai enum baru ditambahkan. (I2b5eb)
- Menghapus
@ExperimentalComposeUiApi
dariPopupProperties
. (I01fa6) PointerType
diubah dari enum menjadi class inline (If5058)- 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)Modifier.onSizeChanged()
danModifier.onGloballyPositioned()
bukan lagi menjadi fungsi inline (I727f6, b/186109675)- 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)
PlaceholderVerticalAlign
dikonversi menjadi class inline. (If6290)- TextUnitType sekarang menjadi class inline. (I4cba9)
- Fungsi
AnnotatedString.withAnnotation
sekarang menjadi ExperimentalTextApi, bukan ExperimentalComposeApi. (I0cd0a)- Konstruktor TextUnit dengan TextUnitType sekarang menjadi ExperimentalTextApi, bukan ExperimentalComposeApi.
Perbaikan Bug
- Memperbaiki bug yang diperkenalkan pada versi beta07 saat item LazyColumn/Row ditampilkan sebagian setelah scroll (I8c9ac, b/188566058)
detectDragGesures
,detectVerticalGestures
, dandetectHorizontalGestures
sekarang akan menggunakan perubahan posisi secara otomatis, tanpa perlu memanggil change.consumePositionChange dalam callback onDrag (I42fc4, b/185096350, b/187320697)- LayoutModifier yang menyediakan garis perataan telah diperbaiki. Bug yang menyebabkan induk tidak diukur ulang saat garis perataan turunan berubah telah diperbaiki. (I4401f, b/174315652)
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.ui:ui-*:1.0.0-beta07
dirilis. Versi 1.0.0-beta07 berisi commit ini.
Perubahan API
- Menambahkan antarmuka
ViewRootForInspector
yang akan digunakan dalam pemeriksa (Ib70df ) SubcomposeLayoutState
sekarang mendukung jumlah setelan slot yang dapat digunakan kembali. Tata letak akan mempertahankan slot jumlah aktif ini, bukan membuangnya agar dapat menggunakan kembali slot tersebut saat kita membutuhkan yang baru (Ieb981)- Enum KeyEventType digantikan oleh class inline. (Id670a, b/187055290)
- Enum
FocusDirection
digantikan oleh class inline. (Ib6d03, b/187055290, b/184086802) - Memperkenalkan kemampuan untuk meningkatkan status SubcomposeLayout yang memungkinkan Anda mengomposisikan konten ke dalam slotId yang diperlukan, agar langkah pengukuran berikutnya dapat lulus lebih cepat karena tidak akan ada komposisi yang diperlukan pada saat berikutnya kami mencoba mensubkomposisikan dengan slotId tertentu. (I42580, b/184940225)
- Menambahkan Tuas Pemilihan Klip (Iff80d, b/183408447)
- Menghapus API yang tidak digunakan terkait dengan dukungan LayoutInspector. (I2ac78)
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)
TextGeomerticTransform
danTextDecoration
padaAnnotatedString
akan diterapkan seperti yang ditentukan. (I61900, b/184760917)
Versi 1.0.0-beta06
5 Mei 2021
androidx.compose.ui:ui-*:1.0.0-beta06
dirilis. Versi 1.0.0-beta06 berisi commit ini.
Perubahan API
- Mengatasi Konflik dengan Gestur Navigasi (I1145e)
@ComposeCompilerApi
tidak lagi@RequiresOptIn
(Iab690)- Menambahkan API aksesibilitas CollectionInfo dan CollectionItemInfo yang memungkinkan penandaan 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
- Menambahkan ownerViewId ke GraphicLayerInfo (I19f62)
- Menambahkan overload Font() untuk memuat font dari aset, File, dan FileDescriptor (I5d382)
- Menambahkan API aksesibilitas
error
yang memungkinkan untuk menandai node berisi input yang tidak valid (I12997, b/180584804, b/182142737) - Menambahkan overload
Font()
untuk memuat font dari aset, File, dan FileDescriptor (I43007) - AnnotatedString menyimpan dukungan ke
TextFieldValue.Saver
. Menambahkan fungsi utilitasaddTtsAnnotation
dan withAnnotation keAnnotatedString.Builder
(I8cbdc, b/178446304) - Menambahkan fungsi konstruktor TextUnit
TextUnit(value: Float, type: TextUnitType)
(I7ecce, b/178446304)
Versi 1.0.0-beta05
21 April 2021
androidx.compose.ui:ui-*:1.0.0-beta05
dirilis. Versi 1.0.0-beta05 berisi commit ini.
Perubahan API
- Menambahkan
FocusManager.moveFocus(In)
danFocusManager.moveFocus(Out)
eksperimental (Ic5534, b/183746743) - Menambahkan
performTextInputSelection
API eksperimental (I2dcbb, b/178510628) - Antarmuka
InputEventCallback
tidak digunakan lagi. Anda tidak dapat menggunakan antarmuka dalam API publik; dan tidak ada penggunaannya dalam kode. (I34a02, b/184003208) - Fungsi
TextLayoutResult/createTextLayoutResult
tidak digunakan lagi. Ini adalah fungsi publik yang tidak digunakan yang ditambahkan untuk pengujian. Fungsi ini tidak bermanfaat untuk API teks Compose. Fungsi ini sekarang tidak digunakan lagi dan akan dihapus nanti. (I80413)
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.ui:ui-*:1.0.0-beta04
dirilis. Versi 1.0.0-beta04 berisi commit berikut ini.
Perubahan API
- Mengganti nama
hideSoftwareKeyboard
danshowSoftwareKeyboard
diSoftwareKeyboardController
menjadihide()
danshow()
.- Memberikan antarmuka CompositionLocal lengkap untuk LocalSoftwareKeyboardController, sehingga dapat ditetapkan (sangat berguna dalam pengujian) (I579a6)
- API aksesibilitas LiveRegion ditambahkan. Jika node ditandai sebagai live region, layanan aksesibilitas akan otomatis memberi tahu pengguna tentang perubahannya (Idcf6f, b/172590946)
- TextOverflow.Visible diperkenalkan. (Ic8f89)
Perbaikan Bug
- Memperbaiki masalah saat item
LazyColumn
/LazyRow
yang terletak di tepi salah diposisikan setelah ayunan jari cepat (Ie4d13, b/183877420) AndroidViewBinding
kini menghapus fragmen yang di-inflate melaluiFragmentContainerView
dengan benar saatAndroidViewBinding
dihapus dari hierarki Compose. (Ib0248, b/179915946)AndroidViewBinding
kini menyarangkan fragmen yang di-inflate melaluiFragmentContainerView
dengan benar saatComposeView
berada dalamFragment
, sehingga mengatasi masalah terkait menyimpan dan memulihkan status fragmen tersebut. (I70eb0, b/179915946)- Compose ViewBinding kini bergantung pada
Fragment
1.3.2
dan secara konsisten menampilkan fragmen yang di-inflate melaluiFragmentContainerView
setelah perubahan konfigurasi. (I0743d, b/179915946)
Versi 1.0.0-beta03
24 Maret 2021
androidx.compose.ui:ui-*:1.0.0-beta03
dirilis. Versi 1.0.0-beta03 berisi commit ini.
Perubahan API
- Menangguhkan pemeriksaan untuk dependensi ViewTree ComposeView (I8dbbf, b/182466548)
- Menambahkan parameter
startX
/endX
danstartY
/endY
opsional ke fungsiswipeUp
/swipeDown
/swipeLeft
/swipeRight
diGestureScope
. (I49e2d, b/182063305)
Versi 1.0.0-beta02
10 Maret 2021
androidx.compose.ui:ui-*:1.0.0-beta02
dirilis. Versi 1.0.0-beta02 berisi commit berikut ini.
Perubahan API
- Menambahkan API lokal komposisi
LocalSoftwareKeyboardController
baru untuk menggantikan antarmuka SoftwareKeyboardController sebelumnya di TextField. (I5951e, b/168778053) - Menambahkan API lokal komposisi
LocalSoftwareKeyboardController
baru untuk menggantikan antarmuka SoftwareKeyboardController sebelumnya di TextField. (I84472, b/168778053) - Menghapus
SemanticsMatcher
berikut:hasWidth(width, tolerance)
hasHeight(height, tolerance)
hasLeftPosition(left, tolerance)
hasTopPosition(top, tolerance)
hasRightPosition(right, tolerance)
hasBottomPosition(bottom, tolerance)
(If16bd)
- Menandai
SemanticsMatchers
berikut sebagai @ExperimentalTestApi:hasWidth(width, tolerance)
hasHeight(height, tolerance)
hasLeftPosition(left, tolerance)
hasTopPosition(top, tolerance)
hasRightPosition(right, tolerance)
hasBottomPosition(bottom, tolerance)
(Ia600c)
- Menambahkan
SemanticsMatcher
berikut:hasWidth(width, tolerance)
hasHeight(height, tolerance)
hasLeftPosition(left, tolerance)
hasTopPosition(top, tolerance)
hasRightPosition(right, tolerance)
hasBottomPosition(bottom, tolerance)
(I2f502)
Perbaikan Bug
- Menerapkan batasan di penggunaan publik API eksperimental (I6aa29, b/174531520)
androidx.compose.ui:ui
tidak lagi bergantung pada AppCompat atau Fragment. Jika Anda menggunakan ComposeView di aplikasi, dan Anda menggunakan Fragment dan/atau AppCompat, pastikan bahwa Anda menggunakan AppCompat 1.3+/Fragment 1.3+ - versi ini diperlukan untuk menyetel siklus proses dengan benar dan pemilik status tersimpan yang diperlukan untuk ComposeView. (I1d6fa, b/161814404)- Memperbaiki
rememberSaveable { mutableStateOf(0) }
yang rusak saat digunakan di dalam tujuan navigation-compose. (I1312b, b/180042685, b/180701630) - Menambahkan API lokal komposisi
LocalSoftwareKeyboardController
baru untuk menggantikan antarmuka SoftwareKeyboardController sebelumnya di TextField. (I658b6, b/168778053) - Memperbaiki NoSuchElementException yang langka di
tearDownRegistry()
ComposeRootRegistry
(Iddce1)
Versi 1.0.0-beta01
24 Februari 2021
androidx.compose.ui:ui-*:1.0.0-beta01
dirilis. Versi 1.0.0-beta01 berisi commit 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)
- MeasureBlocks diganti namanya menjadi MeasurePolicy yang menjadi antarmuka menyenangkan. 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)
- Menambahkan antarmuka AccessibilityManager dan LocalAccessibilityManager di CompositionLocals (I53520)
- Menghapus metode LayoutCoordinates yang tidak digunakan lagi, menggunakan fungsi, bukan properti untuk positionInParent dan boundsInParent (I580ed, b/169874631, b/175142755)
- Typealiases diganti dengan jenis yang mendasari:
ColorStop
sekarang menjadiPair<Float, Color>
SpanStyleRange
sekarang menjadi `AnnotatedString.RangeParagraphStyleRange
sekarang menjadiAnnotatedString.Range<ParagraphStyle>
StringAnnotation
sekarang menjadiAnnotatedString.Range<String>
- (I8dd1a)
- 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)
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)Metode yang tidak digunakan lagi dari modul UI telah dihapus (I646f6)
Pengubah ukuran telah berganti nama. Modifier.width/height/size diganti namanya menjadi requiredWidth/requiredHeight/requiredSize. Modifier.preferredWidth/preferredHeight/preferredSize diganti namanya menjadi width/height/size. (I5b414)
Modifier.tapGestureFilter
telah dihapus GunakanModifier.pointerInput { detectTapGestures(...) }
saja. (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)
imageResource dan vectorResource sekarang merupakan fungsi ekstensi pada pendamping ImageBitmap dan ImageVector. Fungsi
load{Image,Vector,Font}Resource
telah dihapus. (I89130)AnimationClockObservable dan subclass telah dihapus. AnimatedFloat telah dihapus. (Icde52, b/177457083)
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)
ComponentActivity.setContent()
telah dihapus dari compose:ui. Gunakan kode dariandroidx.activity:activity-compose:1.3.0-alpha01
.viewModel()
danLocalViewModelStoreOwner
telah dihapus dari compose:ui. Gunakan kode dariandroidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01
(I6f36b)Modifier.scrollable telah dikerjakan ulang. Kini menggunakan antarmuka Scrollable, bukan class ScrollableController (I4f5a5, b/174485541, b/175294473)
Dukungan CustomEvens dari PointerInputModifier telah dihapus (I02707, b/175294473)
SnapshotStateObserver tidak lagi bersifat Eksperimental (Id2e6a)
Menghapus beberapa API yang sebelumnya tidak digunakan lagi (Ice5da, b/178633932)
longPressGestureFilter dan DoubleClickGestureFilter telah dihapus. Gunakan Modifier.pointerInput dengan fungsi bantuan, mis. detectTapGestures (I2fedf, b/175294473)
Menghapus penggunaan String.format API yang difaktorkan ulang dalam berbagai metode toString untuk tidak memanfaatkan String.format secara internal. (Id1290)
Menghapus pernyataan dp (I798d2)
Menghapus androidx.compose.runtime:runtime-dispatch (I55feb)
Tindakan teks sekarang memeriksa fokus secara otomatis (I13777, b/179648629)
Menghapus
runBlockingWithManualClock
(I15cdc, b/179664814)Posisi scroll di Modifier.verticalScroll()/horizontalScroll() kini ditampilkan dengan Ints (I81298)
FlingConfig telah diganti namanya menjadi FlingBehavior dan kini memungkinkan penyesuaian animasi yang ditangguhkan, bukan Decay yang telah ditentukan. (I02b86, b/175294473)
Menambahkan fungsi bantuan yang berguna untuk menetapkan tindakan yang sama untuk semua callback ImeAction (I63447, b/179226323)
Menghapus callback SoftwareKeyboardController dari semua kolom teks, untuk segera diganti dengan API baru. (Iae869, b/168778053)
FontSpan dan FontWeigthStyleSpan tidak lagi digunakan dan akan dihapus. (Ie5b56, b/177423444)
Membuat perubahan Material API berikut:
- Menambahkan parameter contentPadding ke Top/BottomAppBar untuk memungkinkan penyesuaian padding default.
- Mengurutkan ulang parameter dalam BackdropScaffold untuk mengikuti panduan API bagi parameter wajib sebelum parameter opsional.
- Memindahkan parameter
icon
di BottomNavigationItem ke setelahselected
danonClick
. - Mengganti nama parameter
alwaysShowLabels
di BottomNavigationItem menjadialwaysShowLabel
. - Mengganti nama parameter
bodyContent
di beberapa komponen menjadi hanyacontent
. - Mengurutkan ulang parameter di
ButtonDefaults.buttonColors()
. Harap perhatikan bahwa karena jenis parameter tidak berubah, hal ini tidak akan menyebabkan error di kode Anda. Pastikan Anda menggunakan parameter bernama atau memperbarui urutannya secara manual. Jika tidak, kode Anda tidak akan berfungsi sama seperti sebelumnya. - Menambahkan parameter
secondaryVariant
kedarkColors()
. Warna ini biasanya sama dengansecondary
dalam tema gelap, tetapi menambahkan konsistensi dan penyesuaian lebih lanjut. - Menghapus ElevationDefaults dan animateElevation() dari tampilan API publik karena tidak umum digunakan/berguna.
- Mengganti nama
onValueChangeEnd
diSlider
menjadionValueChangeFinished
dan membuatnya nullable. - Mengganti nama parameter
text
diSnackbar
menjadicontent
untuk konsistensi. - Menambahkan parameter
contentPadding
keDropdownMenuItem
untuk memungkinkan penyesuaian padding default dan menjadikancontent
sebagai ekstensi diRowScope
. - Mengganti nama
ModalDrawerLayout
menjadiModalDrawer
. - Mengganti nama
BottomDrawerLayout
menjadiBottomDrawer
. - (I1cc66)
Perbaikan Bug
- Menambahkan API untuk menggunakan resource AnimatedVectorDrawable di Compose. Gunakan
animatedVectorResource untuk memuat XML
<animated-vector>
sebagai AnimatedImageVector dan menganimasikannya dengan painterFor (I8ea91) - 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.ui:ui-*:1.0.0-alpha12
dirilis. Versi 1.0.0-alpha12 berisi commit berikut ini.
Perubahan API
- Dukungan untuk ViewGroups telah dihapus dari UiApplier. Composable emitView yang tidak digunakan lagi telah dihapus. (Ifb214)
- Modifier.pointerInput sekarang mengharuskan kunci remember untuk menunjukkan kapan coroutine deteksi input pointer harus dimulai ulang untuk dependensi baru. (I849cd)
- CompositionReference berganti nama menjadi CompositionContext (I53fcb)
- Bounds telah diganti namanya menjadi DpRect (I4b32a)
- Pembaruan pengujian: hasText() akan memeriksa teks input dan label/petunjuk/placeholder di kolom teks (Iab803)
- Composable viewModel() dan LocalViewModelStoreOwner dipindahkan ke androidx.lifecycle.viewmodel.compose. Anda sekarang perlu menambahkan dependensi androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 terpisah untuk menggunakannya. (I7a374)
- Izinkan tindakan nullable di AccessibilityAction, ubah label tindakan di AccessibilityAction dan CustomAccessibilityAction dari CharSequence ke String (I0dc82)
- 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)
- Menambahkan
Modifier.focusOrder()
yang menerima FocusRequester tanpa menentukan urutan fokus khusus, lambda. Hal ini berguna jika kita hanya perlu menentukan referensi tetapi bukan urutan fokus khusus untuk sebuah composable (I4f52a, b/179180978) - 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)
- Memindahkan Pop-up ke platform tertentu. AndroidPopupProperties telah diganti namanya menjadi PopupProperties, dan
isFocusable
telah dipindahkan ke parameterfocusable
diPopupProperties
(Ieeea5) - Memindahkan Dialog ke platform tertentu. Mengganti nama AndroidDialogProperties menjadi DialogProperties. (I4ef69, b/179138130)
- Membuat LayoutNode internal (I8a7b1, b/175103944)
- Constraints.enforce telah diganti dengan Constraints.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)
- Membuat OwnerLayer/OwnerScope/OwnerSnapshotObserver internal (I4ffaf, b/175103944)
- toIntPx() diganti namanya menjadi roundToPx(). (I9b7e4, b/173502290)
- IntBounds diganti namanya menjadi IntRect dan API-nya telah diperbaiki. (I1f6ff)
- API cuplikan diupdate agar lebih konsisten dengan pedoman API serta menyembunyikan class implementasi internal dari API publik. (Id9e32)
- Menambahkan tindakan semantik expand dan collapse. Menambahkan expand dan halfExpand di ModalBottomSheetState (Ib5064)
- Modifier.dragGestureFilter sudah tidak digunakan lagi. Sebagai gantinya, gunakan
Modifier.pointerInput { detectDragGestures (...)}
. Atau, gunakan Modifier.draggable untuk menarik satu sumbu (I0ba93, b/175294473) - Mengganti nama Ambients agar cocok dengan penggantian nama Ambient -> CompositionLocal. Ambients sebelumnya bernama AmbientFoo, dan sekarang CompositionLocals diberi nama LocalFoo. (I2d55d)
- BaseTextField yang sudah tidak digunakan lagi sekarang dihapus. BasicTextField digunakan sebagai gantinya. (I71368)
- 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 Bundle. 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)
- Utilitas
emptyContent()
dan(@Composable () -> Unit).orEmpty()
tidak digunakan lagi karena tidak lagi memiliki dampak atau nilai performa yang bagus (I0484d) snapshotFlow
danwithMutableSnapshot
tidak lagi bersifat eksperimental (I6a45f)- 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)
- UiSavedStateRegistry diganti namanya menjadi SaveableStateRegistry, AmbientUiSavedStateRegistry diganti namanya menjadi AmbientSaveableStateRegistry dan keduanya dipindahkan ke paket androidx.compose.runtime.saveable. (I30224)
- 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)
- Class Outline.* bukan lagi class data (I4879e, b/178001427)
- Menghapus
view.captureToImage()
tanpa penggantian apa pun. (I7fcd2) - Memperkenalkan ColorMatrix API yang digunakan untuk mengubah nilai rgb di konten sumber Memfaktorkan ulang ColorFilter API menjadi antarmuka dan sesuai dengan implementasi PathEffect. (Ica1e8)
- Tambahkan parameter layoutDirection ke createOutline Shape. Ini memungkinkan untuk membuat bentuk sadar arah tata letak. (I57c20, b/152756983)
- onImeActionPerformed tidak digunakan lagi. Sebagai gantinya, gunakan KeyboardActions (If0bbd, b/179071523)
- 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) - canDrag telah dihapus dari Modifier.scrollable. (Id66e7, b/175294473)
- Mengganti nama LayoutCoordinates.parentCoordinates menjadi LayoutCoordinates.parentLayoutCoordinates untuk memungkinkan properti parentCoordinates yang baru. Properti parentCoordinates sekarang menawarkan LayoutCoordintes pengubah induk. Ini akan menghasilkan kasus penggunaan yang lebih lengkap untuk onSizeChanged() dan onGloballyPositioned() (Idfbfd, b/177926591)
- tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter, dan pressIndicaitonGestureFilter tidak digunakan lagi. Sebagai gantinya, gunakan Modifier.clickable atau Modifier.pointerInput dengan fungsi detectTapGestures. (I6baf9, b/175294473)
- SaveableStateRegistry's unregisterProvider telah dihapus. Sebagai gantinya, registerProvider() sekarang menampilkan objek SaveableStateRegistry.Entry yang dapat Anda gunakan untuk membatalkan pendaftaran (Ic4274, b/178583739)
- rememberSavedInstanceState() telah diganti namanya menjadi rememberSaveable() dan dipindahkan ke paket androidx.compose.runtime.saveable. (I1366e, b/177338004)
- Menghapus CoreText dan CoreTextField dari API publik
- Menghapus overload SelectionContainer yang tidak digunakan lagi
- (I99c19)
- Pengujian tempat Compose digunakan dalam hierarki yang ditambahkan/dihapus langsung ke WindowManager kini lebih stabil. (Ie81ed, b/175765614)
- Menghapus Recomposer.current(). [Abstract]ComposeView kini ditetapkan secara default ke Recomposers dengan cakupan jendela yang dibuat secara lambat dan didorong 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)
- Saver, listSaver(), mapSaver(), dan autoSaver telah dipindahkan dari androidx.compose.runtime.savedinstancestate ke androidx.compose.runtime.saveable (I77fe6)
- EditCommands menerima RenotatedString. Namun, ini hanya perubahan API dan pengeditan teks multi-gaya belum diterapkan. (I4c3ea)
- Uptime dan Duration telah dihapus. (Ib9bf4, b/177420019)
- CompositionData.asTree() dan API terkait dipindahkan ke modul ui-tooling-data terpisah dan ditandai sebagai eksperimental (Ic95b8)
- 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)
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)
Menghapus fungsi StringBuilder.deleteAt publik secara tidak sengaja (Id6ed9)
Perbaikan Bug
- ComposeView yang ditempatkan dalam hierarki tampilan yang merupakan turunan dari komposisi lain kini menjadi host komposisi turunan dari ancestornya (I92883)
- Mengupdate imageFromResource API compose agar dapat menggunakan kembali cache drawable resource saat memuat objek ImageBitmap. (If3627, b/178751994)
Versi 1.0.0-alpha11
28 Januari 2021
androidx.compose.ui:ui-*:1.0.0-alpha11
dirilis. Versi 1.0.0-alpha11 berisi commit ini.
Perubahan API
- WithConstraints didesain ulang sebagai BoxWithConstraints dan dipindahkan ke foundation.layout. (I9420b, b/173387208)
- Key.DPadUp tidak digunakan lagi. Sebagai gantinya, gunakan Key.DirectionUp. (Iab335, b/177954892)
- Antarmuka Owner mulai sekarang berada di internal. (If8e35)
- Menambahkan FocusManager.moveFocus() API untuk memindahkan fokus secara terprogram. (I045cb, b/177681839)
- Mengubah PopupPositionProvider untuk menggunakan koordinat relatif jendela, bukan koordinat global. Mengganti nama parentGlobalBounds menjadi anchorBounds, dan mengubah windowGlobalBounds menjadi windowSize: IntSize (I2994a)
- Duration dan Uptime akan diganti dengan milidetik Long, dan langkah ini akan menghapus dependensi input pointer di class tersebut. (Ia33b2, b/175142755, b/177420019)
- AmbientSavedStateRegistryOwner ditambahkan serupa dengan AmbientLifecycleOwner dan AmbientViewModelStoreOwner yang sudah ada (I9a3e8, b/176756365)
- Mengupdate API grafik vektor untuk mendukung penguraian penambahan tint yang diterapkan ke root grafik vektor. (Id9d53, b/177210509)
- Menambahkan toolType ke PointerInputChange untuk membedakan perangkat (Iac787, b/175142755)
- AmbientWindowManager diganti namanya menjadi AmbientWindowInfo (I2686a, b/177084714, b/177084983)
- Menghentikan penggunaan metode koordinat global dan membuat metode koordinat berbasis jendela yang baru. (Iee284)
- Menambahkan Modifier.toolingGraphicsLayer yang menambah pengubah lapisan grafis saat pemeriksaan diaktifkan. (I315df)
- FocusRequester.createRefs kini ditandai sebagai eksperimental karena mungkin berubah. (I2d898, b/177000821)
- SemanticsPropertyReceiver.hidden diganti namanya menjadi invisibleToUser dan ditandai @ExperimentalComposeUiApi. AccessibilityRangeInfo diganti namanya menjadi ProgressBarRangeInfo. stateDescriptionRange diganti namanya menjadi progressBarRangeInfo. AccessibilityScrollState diganti namanya menjadi ScrollAxisRange. horizontalAccessibilityScrollState diganti namanya menjadi horizontalScrollAxisRange. verticalAccessibilityScrollState diganti namanya menjadi verticalScrollAxisRange. (Id3148)
- Menghapus PointerInputData dan memodifikasi PointerInputChange untuk memberikan semua kolom PointerInputData. Membuat PointerInputEvent dan PointerInputEventData internal karena tidak digunakan di API publik mana pun. (Ifff97, b/175142755)
- Memperbarui kepadatan implementasi GraphicsLayerScope untuk mendukung konversi dp menjadi piksel mentah. (Ied528, b/176819695)
- Mengupdate API matriks agar dapat mengikuti pengurutan baris utama dan memberikan konstanta indeks untuk membantu konversi antara representasi matriks yang berbeda agar cocok dengan logika konversi framework antara SkMatrix dan Matrix4 secara internal. (I432e6)
- Menghapus metode monotonicFrameAnimationClockOf eksperimental (Ib753f, b/170708374)
- Memindahkan String.fintPrecedingBreak dan String.fingFollowingBreak ke InternalTextApi. (I657c4)
- androidx.compose.ui.util.isSurrogatePair telah dihapus dari API publik. (Ia9494)
- Mengganti nama TransformedText.transformedText menjadi TransformedText.text
- TransformedText bukan lagi class data (Ie672a)
- Menghapus
data class
dari class berikut:- InlineTextContent
- LocaleList (I605c7)
- Class berikut bukan lagi class data:
- AnnotatedString
- ParagraphStyle
- SpanStyle
- TextStyle
- FontWeight
- TextDecoration
- TextGeometricTransform
- TextIndex
- TextLayoutResult
- TextLayoutInput (Iaff99)
- Mengubah VisualTransformation menjadi antarmuka fungsional (I3bba4)
- Menambahkan jenis parameter referensi fungsi (I5e1bd)
- Menambahkan batas yang ditransformasikan ke InspectorNode (Ice42f)
Perbaikan Bug
- onCommit, onDispose, dan onActive sudah tidak digunakan lagi dan digantikan dengan API SideEffect dan DisposableEffect (If760e)
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)
Parameter deskripsi konten telah ditambahkan ke Image dan Icon. Digunakan untuk memberikan deskripsi ke layanan aksesibilitas (I2ac4c)
Menghapus displaySize karena harus dihindari. Biasanya, lebih baik gunakan ukuran onRoot() atau minimal ukuran jendela. (I62db4)
OnSizeChanged melaporkan ukuran konten tata letak. Class ini sekarang melaporkan ukuran sesuai posisinya dalam rantai pengubah. (I36b78, b/177562900)
API emit() dan semua overload tidak digunakan lagi dan diganti namanya menjadi ComposeNode. API identik, hanya nama yang berbeda untuk mengikuti konvensi penamaan Compose (I4137b)
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)
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)Operasi aritmetika yang tidak digunakan lagi di antara 2 atau beberapa TextUnits. Fungsi TextUnit.Sp dan TextUnit.Em yang sudah tidak digunakan lagi lebih diutamakan dibandingkan dengan fungsi ekstensi seperti Int.sp dan Int.em. (I48369)
Resource di library tanpa resource publik yang dideklarasikan secara eksplisit (misalnya melalui public.xml) sekarang bersifat pribadi secara default. (Ia1dcc, b/170882230)
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 melakukan hal yang tidak efisien, kami memutuskan untuk menghentikan ScrollableColumn dan ScrollableRow serta mempromosikan penggunaan LazyColumn dan LazyRow. Pengguna tetap dapat memutuskan bahwa mereka tidak memerlukan perilaku malas 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:items(items: Array)
danitemsIndexed(Array)
(I803fc, b/175562574).Gunakan ImeAction.None, bukan ImeAction.NoAction
- Gunakan ImeAction.Default, bukan ImeAction.Unspecified (Ie1bcc)
Memanfaatkan TestCoroutineDispatcher dalam pengujian (I532b6)
Mengganti nama TextInputService.onStateUpdated sebagai updateState (Id4853)
Transisi berbasis TransitionDefinition tidak digunakan lagi (I0ac57)
TextUnitType.Inherit dihapus. Sebagai gantinya, gunakan TextUnitType.Unspecified. (I9ff64)
Versi 1.0.0-alpha10
13 Januari 2021
androidx.compose.ui:ui-*:1.0.0-alpha10
dirilis. Versi 1.0.0-alpha10 berisi commit ini.
Perubahan yang Dapat Menyebabkan Gangguan
Restrukturisasi API compiler internal memungkinkan perubahan batch pada node yang dihasilkan sebagai hasil komposisi ke dalam fase "terapkan perubahan" komposisi, setelah semua fungsi
@Composable
selesai.Ini adalah perubahan perilaku yang dapat menyebabkan gangguan yang memengaruhi kode aplikasi karena node tidak lagi tersedia dari API internal dan eksperimental hingga perubahan diterapkan. Hal ini biasanya dapat diatasi dengan mengelilingi kode dengan dependensi tersebut dalam composable
SideEffect
untuk menunda eksekusi kode hingga node dibuat dan diinisialisasi. (I018da)
Perubahan API
- Menambahkan Modifier.focusOrder() yang dapat digunakan untuk menentukan urutan traversal fokus kustom (I90cf5, b/175899543, b/170155556, b/170155429)
- Menghapus focusObserver yang tidak digunakan lagi. Sebagai gantinya, gunakan onFocusChanged atau onFocusEvent (I3ecb9, b/175156387)
- 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)
- Menghapus PxSquared, PxCubed, dan PxInverse yang tidak digunakan. Mengubah Size.center() menjadi properti. (I973f7)
- Modul ui-test sekarang dapat mengonfigurasi pembuatan Recomposers untuk UI yang sedang diuji (Ibebd8)
- 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) - Mengganti nama Color.useOrElse() menjadi Color.takeOrElse() (Ifdcf5)
- Menghapus class DpInverse, DpSquared, dan DpCubed yang tidak digunakan. (I4d62b)
- Constraints#satisfiedBy diganti namanya menjadi isSatisfiedBy. (I9cf5c)
- Menambahkan callback untuk memberi tahu Pemilik saat batas layoutnode berubah. (I72fd1)
- Menambahkan isSpecified, isUnspecified, dan useOrElse untuk class inline dengan konstanta Unspecified. (I93f7b, b/174310811)
Luaskan API [Abstraksi]ComposeView untuk memungkinkan pendaurulangan tampilan berbasis Compose, membuang komposisinya untuk dibuat kembali nanti. Tambahkan API untuk menginstal dan menemukan Recomposers dan CompositionReferences dengan cakupan jendela untuk membuat komposisi turunan.
Tambahkan ViewCompositionStrategy untuk mengonfigurasi strategi penghapusan komposisi dari [Abstract]ComposeViews; perilaku default adalah membuang pada jendela yang dilepas. (I860ab)
Menghapus API publik Any.identityHashCode() (I025d7)
Menghapus toStringAsFixed API dan digantikan dengan menggunakan String.format secara langsung. (Iaba6b)
Menambahkan Toggle ke Strings.kt foundation (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)
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)
Memperkenalkan properti Outline.bounds untuk memperoleh rect pembatas untuk berbagai implementasi garis batas. (I16e74, b/175093504)
TestUiDispatcher tidak digunakan lagi. Gunakan Dispatchers.Main sebagai gantinya (Ic171f, b/175385255)
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)
Mengganti nama Position menjadi DpOffset dan menghapus getDistance() (Ib2dfd)
Mengubah fun Dp.isFinite() menjadi val Dp.isFinite (I50e00)
Perbaikan Bug
- Recomposer kini menampilkan Alur dari statusnya saat ini, memungkinkan pemantauan aktivitasnya dan aktivitas efek terkait. (Ifb2b9)
- keyEvent native sekarang dapat diakses melalui keyEvent.nativeKeyEvent (I87c57, b/173086397)
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)
Animatable
API baru berbasis coroutine yang memastikan pengalaman eksklusif di antara animasinya.- DecayAnimationSpec baru untuk mendukung animasi peluruhan multi-dimensi
- (I820f2, b/168014930)
Versi 1.0.0-alpha09
16 Desember 2020
androidx.compose.ui:ui-*:1.0.0-alpha09
dirilis. Versi 1.0.0-alpha09 berisi commit ini.
Perubahan API
- KeyEvent.Alt yang tidak digunakan lagi kini dihapus. KeyEvent.isAltPressed digunakan sebagai gantinya. (Idd695)
- Modifier.keyInputFilter dan Modifier.previewKeyInputFilter tidak digunakan lagi, gunakan Modifier.onKeyEvent dan Modifier.onPreviewKeyEvent sebagai gantinya (Idbf1b, b/175156384)
- Modifier.focusObserver tidak digunakan lagi. Gunakan Modifier.onFocusChanged atau Modifier.onFocusEvent sebagai gantinya (I30f17, b/168511863, b/168511484)
- Untuk API input pointer yang menangguhkan, HandlePointerInputScope diganti namanya menjadi AwaitPointerEventScope dan handlePointerInput() diganti namanya menjadi awaitPointerEventScope(). (Idf0a1, b/175142755)
- 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)
- Peristiwa kustom dihapus dari API input pointer yang menangguhkan (Ia54d5, b/175142755)
- Memperkenalkan beberapa fungsi baru dalam SelectionRegistrar serta mengganti nama onPositionChange menjadi notifyPositionChange. (Ifbaf7)
- Lebih banyak anggota LayoutNode yang kami tandai sebagai internal (I443c6)
- LayoutInfo diperkenalkan untuk digunakan dengan alat dan pengujian (I9b190)
- AndroidOwner dibuat internal (Ibcad0, b/170296980)
- Menghapus anotasi ExperimentalPointerInput (Ia7a24)
- Sistem scroll bertingkat ditambahkan. Lihat Modifier.nestedScroll untuk detail selengkapnya (I36e15, b/162408885)
- subcomposeInto(LayoutNode) dibuat internal (Id724a)
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 properti dismissOnBackPress dan dismissOnClickOutside ke AndroidDialogProperties. Hal ini memungkinkan konfigurasi saat lambda onDismissRequest dialog akan dipanggil. (If5e17)
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 Modifier.clearAndSetSemantics untuk menghapus semantik turunan dan menetapkan yang baru. (I277ca)
Memindahkan ContentDrawScope ke modul ui-graphics agar bersama dengan DrawScope. (Iee043, b/173832789)
Memperkenalkan API grafis PathEffect untuk memberikan pola yang berbeda pada bentuk yang digores. NativePathEffect tidak digunakan lagi dan diganti dengan implementasi perkiraan/aktual PathEffect. (I5e976, b/171072166)
Menambahkan antarmuka IdlingResource ke Compose, sebagai varian Compose yang didukung dari resource tanpa aktivitas Espresso. Antarmuka ini dapat didaftarkan dan dibatalkan pendaftarannya melalui ComposeTestRule (I433f3)
Menghapus (un)registration global ComposeIdlingResource dan (un)registration global jam menjadi ComposeIdlingResource (I32660)
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)
Menghentikan penggunaan LazyColumnFor, LazyRowFor, LazyColumnForIndexed, dan LazyRowForIndexed. Gunakan LazyColumn dan LazyRow sebagai gantinya (I5b48c)
Menghentikan penggunaan BuildCompat.isAtLeastR (Idb37e)
Menambahkan fungsi factory buildAnnotatedString untuk membuat AnnotatedString. Menghentikan penggunaan fungsi builder annotatedString. (Idfe0b)
Menghapus metode ekstensi di Float dan Double untuk mengonversi nilai ke radian. Dipindahkan menjadi fungsi pribadi dalam implementasi PathParser yang merupakan satu-satunya tempat penggunaannya (I25f52)
Versi 1.0.0-alpha08
2 Desember 2020
androidx.compose.ui:ui-*:1.0.0-alpha08
dirilis. Versi 1.0.0-alpha08 berisi commit ini.
Perubahan API
- Menambahkan tindakan semantik Dismiss (I2b706)
- Memindahkan DrawModifier API dari paket androidx.compose.ui ke paket androidx.compose.ui.draw. Membuat file DrawModifierDeprecated.kt untuk menyertakan metode typealiases/helper guna membantu migrasi dari API yang tidak digunakan lagi ke API saat ini. (Id6044, b/173834241)
- Mengganti nama Modifier.drawLayer menjadi Modifier.graphicsLayer Juga memperbarui class terkait ke GraphicsLayer sesuai masukan API. (I0bd29, b/173834241)
- Metode baru placeable.placeWithLayer() dan placeable.placeRelativeWithLayer() telah ditambahkan, yang memungkinkan tata letak kustom dan pengubah tata letak menempatkan turunan dengan memperkenalkan layer grafis untuk gambarnya. Setelah itu, pertama-tama kita dapat mengoptimalkan gambar ulang, sehingga perlu memindahkan turunan, kita tidak perlu menggambar ulang kontennya, kedua kita dapat menerapkan transformasi gambar untuk turunan (Ibd8f6, b/170296989, b/171493718, b/173030831)
<T>
telah dihapus dari deklarasi SubcomposeLayout. Kini Anda dapat menggunakannya tanpa menentukan jenis. (Ib60c8)- Menambahkan Modifier.scale/rotate
API agar memudahkan untuk drawLayer.
- Mengganti nama
Modifier.drawOpacity
menjadiModifier.alpha
- Mengganti nama
Modifier.drawShadow
menjadiModifier.shadow
(I264ca, b/173208140)
- Mengganti nama
- 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)
- Menambahkan WindowManager.isWindowFocused untuk memeriksa apakah jendela host dalam fokus, dan WindowFocusObserver yang menyediakan callback onWindowFocusChanged. (I53b2a, b/170932874)
- Memperbarui TransformOrigin API
agar memiliki sintaksis yang mendestrukturisasi untuk menampilkan
pivotFractionX
danpivotFractionY
sebagaicomponent1
dancomponent2
(If43c4, b/173586560) - 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) - Menambahkan API untuk memeriksa apakah kunci pengubah Alt, Ctrl, Meta, atau Shift ditekan saat peristiwa tombol dikirim. (I50ed9)
- Menambahkan overload
Modifier.drawLayer()
baru. Dibutuhkan blok lambda pada GraphicsLayerScope baru tempat Anda menentukan parameter lapisan dengan cara yang memungkinkan untuk melewatkan rekomposisi dan penataan letak ulang saat perubahan status terjadi. DrawLayerModifier kini internal dalam persiapan untuk memigrasikan logikanya ke metode placeable.placeWithLayer() LayoutModifier (I15e9f, b/173030831) - Ambient yang tidak digunakan lagi dinamai dengan
Ambient
sebagai akhirannya, dan menggantinya dengan properti baru yang diawali dengan Ambient, mengikuti pedoman Ambients dan Compose API lainnya. (I33440) - Memindahkan
androidx.compose.ui.text.Typeface
keandroidx.compose.ui.text.font.Typeface
(Ic2b81) - Argumen semantik mergeAllDescendants diganti namanya menjadi mergeDescendants. (Ib6250)
- 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 API. Menambahkan typealias VectorAssetBuilder ke link ke ImageVector.Builder untuk compat. (Icfdc8)
- Mengganti nama ImageAsset dan metode terkait menjadi ImageBitmap. (Ia2d99)
- Menambahkan parameter zIndex untuk place() PlacementScope sehingga Modifier.zIndex() kini berfungsi sebagai LayoutModifier dan setiap tata letak kustom dapat menetapkan zIndex untuk turunannya langsung di blok penempatan (I711f7, b/171493718)
- Memindahkan properti semantik dasar ke ui (I6f05c)
- Menghentikan penggunaan place(Offset) dan placeRelative(Offset). Menggunakan kelebihan beban dengan offset int (I4c5e7)
- API yang sebelumnya Tidak Digunakan Lagi telah dihapus: Modifier.onPositioned telah dihapus, gunakan Modifier.onGloballyPositioned. Modifier.onDraw telah dihapus, gunakan Modifier.onDrawBehind. Modifier.plus telah dihapus, gunakan Modifier.then. Color.Unset telah dihapus, gunakan Color.Unspecified. Class PxBounds telah dihapus, gunakan Rect sebagai gantinya. (Ie9d02, b/172562222)
- Antarmuka Alignment telah diperbarui dan berfungsi. (I46a07, b/172311734)
- 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)
id
diganti namanya menjadilayoutId
untukLayoutIdParentData
.Measurable.id
diganti namanya menjadiMeasurable.layoutId
. (Iadbcb, b/172449643)- Pendeteksi gestur multisentuh baru, termasuk helper untuk mendeteksi rotasi, zoom, dan penggeseran. (Ic459d)
- Memperkenalkan SweepGradientShader API dan SweepGradientBrush API. (Ia22c1)
- Kontrol waktu dalam pengujian (TestAnimationClock dan penggunaannya) kini bersifat eksperimental (I6ef86, b/171378521)
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)
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)
Menyediakan implementasi default metode dan properti dalam AnimationClockTestRule yang dapat didelegasikan ke
clock
(I7ea3d, b/173399709)AndroidComposeTestRule kini dapat menerima peluncur aktivitas kustom (Ib8288, b/153623653, b/154135019)
TextLayoutResult.getLineVisibleEnd tidak digunakan lagi. Sebagai pengganti kini TextLayoutResult.getLineEnd memiliki parameter baru visibleEnd. (I73282)
Memperbarui TextFieldValue API
- menjadikan TextFieldValue.composition hanya baca
- menghapus pengecualian yang dimunculkan untuk rentang pilihan yang tidak valid (I4a675, b/172239032)
Mendukung TtsAnnotation untuk mesin text to speech. (I54cc6)
API baru untuk menjalankan animasi dalam coroutine (Ied662)
Perbaikan Bug
- 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 parameter resetInput ke TextInputService#onStateUpdated (I3e8f5, b/172239032, b/171860947)
- Menambahkan pemeriksaan lint untuk parameter Modifier dalam fungsi Composable. Pemeriksaan lint ini memeriksa penamaan, jenis nilai yang ditampilkan, nilai default, dan urutan parameter agar konsisten dengan pedoman Compose. (If493b)
- Menambahkan opsi untuk sementara agar TestAnimationClock dapat didorong oleh MonotonicFrameClock (I1403b, b/173402197)
- 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 bahwa fungsi factory Modifier didefinisikan sebagai ekstensi di Modifier, sehingga dapat ditautkan secara efisien. (I07981)
- Menghapus modul ui-test lama dan stub-nya (I3a7cb)
- Recomposer tidak lagi menerima EmbeddingContext; dependensi penjadwalan yang diperlukan diperoleh dari effectCoroutineContext. FrameManager tidak digunakan lagi; integrasi platform harus melakukan inisialisasi penanganan snapshot globalnya sendiri. (I02369)
- Meneruskan informasi gaya ke node aksesibilitas. (If5e8d)
- TextUnit.Inherit diganti namanya menjadi TextUnit.Unspecified agar konsisten dengan unit lain. (Ifce19)
Compose UI Versi 1.0.0-alpha07
11 November 2020
androidx.compose.ui:ui-*:1.0.0-alpha07
dirilis. Versi 1.0.0-alpha07 berisi commit ini.
Perubahan API
- 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)
- Factory BiasAlignment dan BiasAbsoluteAlignment untuk membuat Alignment ditambahkan. (Iac836, b/169406772)
- Memungkinkan developer menghapus fokus secara paksa. (I90372)
- Bug yang menyebabkan ketinggian tidak digambar untuk Tampilan di dalam Compose telah diperbaiki. (If7782)
- Membuat onDrawBehind API dalam ContentDrawScope untuk mencocokkan konvensi penamaan dengan Modifier.drawBehind. (I4fc3a, b/171955269)
- Menambahkan dukungan untuk jarak kamera guna melengkapi transformasi 3D rotasiX/rotasiY pada API lapisan. (I40213, b/171492100)
- Menambahkan SelectionContainer tanpa callback (Ibfadb)
- Anotasi ExperimentalSubcomposeLayoutApi dihapus. SubcomposeLayout kini dapat digunakan tanpa menambahkan @OptIn (I708ad)
- FirstBaseline dan LastBaseline dipindahkan ke paket androidx.compose.ui.layout (Ied2e7)
- Opasitas dihapus dari pengubah drawShadow() karena membingungkan. (I82c62, b/171624638)
- 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)
- Menghapus FocusState2 yang tidak digunakan lagi (I686cb, b/168686446)
- ZIndexModifier kini internal (I1808b, b/171493718)
- Memperbarui jenis nilai yang ditampilkan metode lerp pada parameter Ukuran untuk menampilkan Ukuran non-null guna menghindari box yang tidak perlu. (Ib0044)
- Menambahkan TestMonotonicFrameClock untuk kode pengujian yang mengandalkan MonotonicFrameClock Compose untuk menunggu peristiwa bingkai komposisi menggunakan runBlockingTest kotlinx-coroutines-test (I4402f)
- Menghapus GestureScope.localToGlobal (I15299, b/171462785)
- Menambahkan pencari
onAllNodesWithSubstring
(I81dd7, b/171462889) - Modul androidx.ui.test tidak digunakan lagi. Lakukan migrasi ke androidx.compose.ui.test dan androidx.compose.ui.test.junit4 (I452e8)
Perbaikan Bug
- captureToBitmap dipindahkan ke captureToImage. (I86385)
- 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)
- Mengupdate TextFields untuk menerima KeyboardOptions (Ida7f3)
- Mengganti nama KeyboardOptions sebagai ImeOptions (I82f36)
- Memindahkan KeyboardType dan ImeAction ke KeyboardOptions (I910ce)
- provideDefault ditambahkan sebagai alternatif untuk menyediakan ambient, dan dapat digunakan untuk menentukan nilai ambient yang hanya akan ditetapkan jika tidak ada nilai ambient yang telah disediakan. (Id6635, b/171024925)
- BaseTextField sudah tidak digunakan lagi. BasicTextField digunakan sebagai gantinya. (I896eb)
- Memperkenalkan modul ui-test-junit4 (Ib91f8)
relativePaddingFrom
diganti namanya menjadipaddingFrom
. PengubahpaddingFromBaseline
ditambahkan, untuk memudahkan penentuan jarak dari batas tata letak ke dasar pengukuran teks. (I0440a, b/170633813)- LaunchedTask diganti namanya menjadi LaunchedEffect agar konsisten dengan SideEffect dan DisposableEffect API. LaunchedEffect tanpa parameter subjek tidak diizinkan agar mendorong praktik terbaik. (Ifd3d4)
- Memperkenalkan komponen resource yang merekomposisi saat konfigurasi diperbarui. (I6387c, b/167352819)
- Recomposer kini memerlukan CoroutineContext saat pembuatan (Ic4610)
- Menjumlahkan nilai
zIndex
saat beberapaModifier.zIndex()
diterapkan. Sebelumnya yang pertama menang. (Ic514c, b/170623936) - Perubahan pada implementasi SlotTable internal yang tidak akan memengaruhi API publik. (If9828)
- Menambahkan Opsi IME koreksi otomatis Keyboard (I57b8d)
- androidx.ui.test dipindahkan ke androidx.compose.ui.test (I9ffdb)
- Menghapus KeyboardOptions.toImeOptions dari API publik. (Ic2e45)
Kontribusi Eksternal
- Menonaktifkan publikasi artefak internal androidx.compose.ui:ui-text-android (Ib93fa)
Versi 1.0.0-alpha06
28 Oktober 2020
androidx.compose.ui:ui-*:1.0.0-alpha06
dirilis. Versi 1.0.0-alpha06 berisi commit ini.
Perubahan API
- Recomposer kini menjadi CompositionReference dan merupakan induk komposisi yang valid. Recomposer eksplisit kini diperlukan di lebih sedikit tempat. (I4036f)
- Tidak lagi menggunakan VectorPainter untuk kepentingan rememberVectorPainter agar lebih menunjukkan bahwa API komponen secara internal memanfaatkan 'remember' untuk mempertahankan data di seluruh komposisi. (Ifda43)
- Memperbarui Modifier.drawWithCache API untuk menunjukkan ContentDrawScope sebagai cakupan penerima, bukan DrawScope, untuk mengimplementasikan kemampuan mengurutkan ulang perintah gambar. Hal ini berguna untuk kasus penggunaan pencampuran/ penambahan tint, yang mengharuskan piksel konten dirender terlebih dahulu agar algoritme mode campuran terkait dapat diterapkan dengan benar. (Ie7ec8)
- Memindahkan SimpleContainer ke PopupTestUtils.kt (I78c57)
- ConsumedData bukan lagi class data. Lihat https://android-review.googlesource.com/c/platform/frameworks/support/+/1455219 untuk mengetahui detailnya (I1737f)
- Memperbaiki Posisi Handle Rtl. (I6e1e0)
- DrawScope dan ContentDrawScope
yang difaktorkan ulang menjadi antarmuka,
bukan class abstrak
- Membuat implementasi CanvasDrawScope dari DrawScope
- Implementasi DrawScope yang difaktorkan ulang untuk menggunakan CanvasScope sebagai gantinya
- Membuat DrawContext guna menggabungkan dependensi untuk DrawScope
- Menghapus metode yang tidak digunakan lagi di DrawScope (I56f5e)
- Perubahan yang dapat menyebabkan gangguan: menghapus nilai pengembalian dari
PointerInputFilter.onPointerEvent(...)
mengingat bahwa satu-satunya nilai yang seharusnya dapat diubah dalam peristiwa kursor adalah data pemakaian. Kini Anda hanya dapat mengubah data pemakaian PointerEvents yang diteruskan, bukan menampilkan data dariPointerInputFilter.onPointerEvent(...)
. (I6acd0) - MeasureScope dan IntrinsicMeasureScope dijadikan antarmuka. (I1a087, b/170461665)
- Fungsi penggabungan untuk AlignmentLine disembunyikan. (I9da1a, b/170612900, b/170611568)
- Menambahkan kemampuan untuk menentukan info pemeriksa dalam pengubah terkomposisi (Idee08, b/163494569)
- Menambahkan opsi SelectAll ke menu pemilihan (Ief02b)
- Memperbarui DrawTransform.rotate untuk mengambil
parameter pivot default pusat agar sesuai
dengan dokumentasi.
- Memperbarui DrawScope.rotateRad untuk menggunakan Offset untuk titik pivot agar sesuai dengan metode transformasi lainnya.
- Tidak lagi menggunakan overload DrawScope.rotateRad yang memakai float untuk koordinat x dan y pivot.
- (Iffcbb, b/170434992)
Perbaikan Bug
- Pemeriksaan lint API untuk MissingGetterMatchingBuilder diaktifkan untuk androidx (I4bbea, b/138602561)
- Menambahkan pengujian. (I6b8ae)
- Mengaktifkan transisi di ComposeTestRule; menghapus opsi untuk mengaktifkan kursor yang berkedip dari ComposeTestRule. (If0de3)
- Menambahkan Opsi IME KeyboardCapitalization (I8ac38)
- Menambahkan opsi keyboard satu baris ke CoreTextField (I72e6d)
- Memindahkan SimpleContainer ke PopupTestUtils.kt (I65c3e)
- 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)
- Menyempurnakan interop Android dengan terus mengirimkan MotionEvents ke Tampilan Android turunan yang menampilkan salah untuk onTouchEvent untuk semua tindakan kecuali
ACTION_DOWN
(I94c5a, b/170320973) - Box dibuat menjadi fungsi inline. (Ibce0c, b/155056091)
Kontribusi Eksternal
- Mendukung lokal yang berbeda untuk
AnnotatedString.capitalize
danAnnotatedString.decapitalize
(I4aA7f)
Versi 1.0.0-alpha05
14 Oktober 2020
androidx.compose.ui:ui-*:1.0.0-alpha05
dirilis. Versi 1.0.0-alpha05 berisi commit ini.
Perubahan API
- Menambahkan DSL untuk menentukan informasi pemeriksa (Ic9a22)
- Memindahkan LongPress ke Text. (Iff2bc)
- Pengubah input penangguhan Modifier.pointerInput eksperimental (Ia77d2)
- Menambahkan tindakan aksesibilitas Salin/Tempel/Potong (I6db4f)
- Konstruktor publik untuk AndroidOwner telah dihapus (Iacaef)
- Pop-up dan dialog sekarang mewarisi FLAG_SECURE dari Jendela induk. Juga menambahkan opsi untuk mengonfigurasi ini secara eksplisit (I64966, b/143778148, b/143778149)
Data pemakaian kini dapat berubah. Selain itu, fungsi panggilan ke ekstensi yang menggunakan data pemakaian kini tidak lagi menampilkan PointerInputChange baru, melainkan memutasikan PointerInputChange yang tersedia.
Ini adalah langkah pertama dalam proses 2 langkah untuk membuat data PointerEvent dapat berubah, sehingga data pointer lainnya tidak dapat diedit oleh kode pengguna. Langkah kedua adalah menghapus jenis nilai yang ditampilkan
List<PointerInputChange>
dariPointerInputFilter.onPointerEvent(...)
. (Id067e)Nonaktifkan Pilihan dalam Teks, dan Demo. (Ie7e97)
Membuat onGloballyPositioned menjadi fungsi inline (I15830)
OnPositionedModifier diganti nama menjadi OnGloballyPositionedModifier dan onPositioned() diganti nama menjadi onGloballyPositioned(). (I587e8, b/169083903)
Properti hasPendingMeasureOrLayout ditambahkan ke Pemilik, yang memberi tahu apakah Pemilik memiliki pekerjaan tata letak yang tertunda. (I3d9f8, b/169038599)
Menambahkan API untuk secara terprogram menghapus fokus (Ie1dc2, b/161487952)
PointerInputFilter.onPointerInput(...)
dihapus.PointerInputFilter.onPointerEvent(...)
harus digunakan di tempatnya. (I6f04a)Perubahan Ukuran
- Menghapus Size.getFlipped
- Menghapus Size.rem
- Menghapus Size.truncDiv (Ief44d, b/169790720)
Sebagai bagian dari standardisasi nilai sentinel untuk class inline, ganti nama Color.Unset ke Color.Unspecified agar konsisten dengan class inline lainnya (I97611, b/169797763)
TextOverflow.None diperkenalkan. Bila tambahan adalah Tidak Ada, Teks tidak akan lagi menangani tambahan, dan akan melaporkan ukuran sebenarnya ke LayoutNode. (I175c9, b/158830170)
Parameter cakupan dalam AnnotatedString.Builder.addStringAnnotation diganti nama untuk memberi tag konsistensi API. (I7c8cb)
Perbaikan Bug
- Performa scroll LazyColumn/Row ditingkatkan dengan melakukan lebih sedikit pekerjaan dalam subkomposisi pada setiap scroll. Metode hasInvalidations() baru ditambahkan untuk class Composition. Metode hasPendingChanges() dari Recomposer diganti nama menjadi hasInvalidations() (Ib2f32, b/168293643, b/167972292, b/165028371)
- 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)
- Urutan panggilan telepon yang dilakukan dalam Layouts kustom kini menentukan urutan gambar untuk turunan (Ibc9f6)
- Dukung konversi AnnotatedString ke SpannableString untuk aksesibilitas. (Ief907)
- Menambahkan stub untuk class Android yang ada di platform lama untuk mencegah penggunaan refleksi jika memungkinkan. (Ia1790)
- Memperbaiki bug: Jika keyboard virtual yang ditampilkan menyebabkan aplikasi diterjemahkan, koordinat input pointer akan menjadi salah. (Ic4cec, b/163077821)
Versi 1.0.0-alpha04
1 Oktober 2020
androidx.compose.ui:ui-*:1.0.0-alpha04
dirilis. Versi 1.0.0-alpha04 berisi commit ini.
Perubahan API
- Menambahkan OwnerScope untuk mengizinkan pengumpulan cakupan tata letak dan observasi gambar setelah tidak valid lagi. (Ic4cf8)
- Menambahkan OnRemeasuredModifier dan onSizeChanged() untuk menerima callback ketika tata letak konten telah diukur ulang dan ukurannya telah berubah. (I657cf, b/154108792)
- Menambahkan tindakan semantik klik panjang (I6281b, b/156468846)
- Membuat FocusManager menjadi pribadi. (I7872f)
Mengupdate implementasi untuk membuat implementasi DrawCacheModifier khusus, bukan menambahkan properti opsional ke DrawModifier.
Memperbarui dokumentasi untuk berbagai metode (Ibd166)
Menyejajarkan TextRange untuk menghindari pembuatan objek. (Id034b)
PlacementScope#parentWidth dan PlacementScope#parentLayoutDirection tidak dapat dibaca lagi dari blok penempatan tata letak khusus. (Icc1ae, b/168295623)
menambahkan AccessibilityScrollState ke properti semantik. (Ifeda9)
Memperkenalkan Modifier.drawWithCache untuk mendukung pembuatan objek gambar yang membuat ulang dependensi secara bersyarat yang bergantung pada informasi ukuran/status (I376dc)
ParagraphConstraints dihapus. Lebar kini diteruskan secara langsung ke Paragraf. (Ica712)
Perbaikan Bug
- Mengupdate banyak Graphics API
- Mengupdate API transformasi skala dan rotasi untuk menggunakan parameter Offset tunggal guna mewakili koordinat pivot, bukan parameter float terpisah untuk koordinat x/y di DrawScope dan DrawTransform
- Menghapus metode Rect.expandToInclude dan Rect.join
- Memperbarui dokumentasi Radius untuk menetapkan oval, selain eliptis
- Menambahkan dokumentasi yang menunjukkan bahwa konstruktor publik untuk class Radius inline tidak akan dipanggil secara langsung, tetapi objek Radius harus dibuat instance-nya melalui konstruktor fungsinya
- Menghapus RoundRect API untuk mengkueri topRight, bottomRight, bottomCenter, dll.
- Rect.shift tidak digunakan lagi dan digantikan dengan Rect.translate
- Menghapus API RoundRect.grow dan Rect.shrink
- Mengganti nama RoundRect.outerRect menjadi Rect.boundingRect
- Menghapus metode RoundRect.middleRect/tallMiddleRect/wideMiddleRect dan Rect.isStadium
- Mengganti nama RoundRect.longestSide menjadi RoundRect.maxDimension
- Mengganti nama RoundRect.shortestSide menjadi RoundRect.minDimension
- Mengubah RoundRect.center menjadi properti, bukan fungsi
- Mengupdate konstruktor RoundRect untuk menggunakan properti Radius, bukan parameter individual untuk nilai radius x/y
- Menghapus Size API yang mengasumsikan sebagai Rectangle dengan asal pada 0,0
- Menambahkan API penghancuran ke Radius
- Memigrasikan berbagai fungsi ekstensi RoundRect sebagai properti
- (I8f5c7, b/168762961)
- foundation.Box sudah tidak digunakan lagi. Sebagai gantinya, gunakan foundation.layout.Box. (Ie5950, b/167680279)
- Stack diganti namanya menjadi Box. Box yang sudah ada sebelumnya tidak akan digunakan lagi sebagai ganti Box baru di compose.foundation.layout. Perilaku Box baru adalah untuk menumpuk turunan satu per satu jika ada beberapa turunan - ini berbeda dari Box sebelumnya, yang berperilaku mirip dengan Column. (I94893, b/167680279)
- Parameter dekorasi box tidak digunakan lagi. Jika Anda ingin memiliki dekorasi/padding di box, gunakan Modifier (Modifier.background, Modifier.border, Modifier.padding) (Ibae92, b/167680279)
- Mengupdate banyak Graphics API
- Mengupdate DrawScope API ke metode transformasi tercakup untuk menunjukkan bahwa transformasi hanya diterapkan dalam callback dan dihapus setelah callback dipanggil
- Memperbarui dokumentasi clipPath untuk merujuk ke Path, bukan persegi panjang bulat
- Memperbaiki spasi dalam dokumentasi untuk parameter yang tepat di clipPath
- Mengganti nama DrawScope.drawCanvas menjadi drawIntoCanvas dan menghapus parameter ukuran
- Mengganti nama parameter dx/dy dalam metode inset menjadi horizontal dan vertikal
- Menambahkan kelebihan inset yang memberikan nilai inset yang sama ke 4 batas
- Menghapus dokumentasi tentang metode inset yang menunjukkan bahwa inset tersebut akan diterapkan ke 4 sisi
- Memperbarui dokumentasi untuk class Rect
- Memperbarui komentar tentang parameter Rect agar cocok dengan gaya kdoc
- Menghapus Rect.join dan Rect.expandToInclude
- Membuat overload untuk Rect.translate(offset) dan Rect.shift yang tidak digunakan lagi
- (If086a, b/167737376)
- Menganotasi rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled dan textInputServiceFactory dengan @VisibleForTesting, menjadikannya API internal dan menyembunyikan kdoc (I554eb, b/168308412)
- Menghapus SelectionContainer dari Atas untuk menonaktifkan pilihan default dan menghindari perilaku yang tidak diharapkan. Developer dapat secara khusus menggunakan SelectionContainer untuk menggabungkan konten yang harus dapat dipilih. (I8dfe0, b/158459594)
Versi 1.0.0-alpha03
16 September 2020
androidx.compose.ui:ui-*:1.0.0-alpha03
dirilis. Versi 1.0.0-alpha03 berisi commit ini.
Perubahan API
- Menghapus tindakan semantik scroll maju/mundur. Menambahkan langkah di AccessibilityRangeInfo. (Ia47b0)
- Menghapus
onInvalidate()
dariOwner
--OwnedLayer
menangani invalidasi. (Ica72b, b/162061312) Menghapus metode operator pada Size API yang menggunakan parameter Offset. Hasil dari operasi ini tidak jelas dan jenis hasilnya tidak terduga. Misal. haruskah ukuran - offset menampilkan offset atau hasil ukuran dengan perbedaan?
Juga menghapus metode yang tidak digunakan lagi di class Size. (Iec902, b/166514214)
Perbaikan Bug
- Perbaikan untuk item LazyColumn yang terkadang salah digambar. Hal ini juga menyebabkan error dalam kondisi tertentu. (Ibcf17, b/163066980, b/165921895)
- DpConstraint dan API yang menggunakannya tidak digunakan lagi. (I90cdb, b/167389835)
- Memindahkan
createAndroidComposeRule
danAndroidInputDispatcher
dariandroidx.ui.test.android
keandroidx.ui.test
(Idef08, b/164060572) - Penggunaan gravitasi secara konsisten diganti namanya menjadi untuk meratakan atau perataan dalam API tata letak. (I2421a, b/164077038)
- Menambahkan onNode dan metode global lainnya di ComposeTestRule karena metode global yang ada saat ini akan segera dihentikan. (Ieae36)
Versi 1.0.0-alpha02
2 September 2020
androidx.compose.ui:ui-*:1.0.0-alpha02
dirilis. Versi 1.0.0-alpha02 berisi commit ini.
Perubahan API
- menghapus callback untuk memberi tahu Pemilik saat batas layoutnode berubah. (If654e, b/166106882)
- Menambahkan dukungan untuk parameter filltype pada jalur grafik vektor untuk mendukung potongan bentuk sesuai dengan aturan pengisian jalur evenOdd atau NonZero. (I43dd2)
- Waktu beroperasi dan Velocity kini menjadi class inline (I48f4a)
- Durasi kini menjadi class inline (I565eb)
- Menambahkan callback untuk memberi tahu Pemilik saat batas layoutnode berubah. (Ic40b3)
Memperbaiki masalah ketika konstruktor fungsi Rect dengan Offset dan radius membuat Rect dalam urutan kiri, kanan, atas, bawah, bukan kiri, atas, kanan, bawah.
Menghapus metode pendamping yang sudah tidak digunakan lagi di Rect dan diganti dengan konstruktor fungsi.
Menambahkan pengujian untuk memverifikasi metode di Rect.kt (I08460, b/165822356)
Perbaikan Bug
- Menambahkan MutableRect, yakni persegi panjang yang dapat dimodifikasi. (I71bd2, b/160140398)
- Matrix4 diganti dengan Matrix. Semua bagian lain dari paket vectormath telah dihapus. (Ibd665, b/160140398)
Konvensi pemanggilan untuk fungsi yang dapat dikomposisi telah berubah. Ini adalah perubahan yang dapat menyebabkan gangguan biner. Semua library harus dikompilasi ulang agar berfungsi dengan versi plugin compiler compose saat ini.
Perubahan ini tidak membuat perubahan yang dapat menyebabkan gangguan tingkat sumber karena satu-satunya API yang telah berubah adalah API compiler yang memiliki keikutsertaan eksplisit. (I7afd2, b/158123185)
Memperbaiki error yang dapat terjadi saat pengiriman ke PointerInputFilter menyebabkan PointerInputFilter dihapus secara sinkron. (I58f25)
Versi 1.0.0-alpha01
26 Agustus 2020
androidx.compose.ui:ui-*:1.0.0-alpha01
dirilis. Versi 1.0.0-alpha01 berisi commit ini.
Versi 0.1.0-dev
Versi 0.1.0-dev17
19 Agustus 2020
androidx.compose.ui:ui-*:0.1.0-dev17
dirilis. Versi 0.1.0-dev17 berisi commit berikut ini.
Perubahan API
emitView
tidak digunakan lagi. Sebagai gantinya, gunakanAndroidView
ketika memungkinkan untuk memunculkan Views di dalam Compose. Perlu diperhatikan bahwa pengomposisian langsung Views dan ViewGroups tidak akan dapat dilakukan di masa mendatang, kecuali keduanya merupakan daun dalam struktur pohon komposisi terkait dan tindakan itu dapat dilakukan menggunakan AndroidView. (I29b1e, b/163871221)FocusState2
tidak digunakan lagi dan digantikan olehFocusState
(Ia8b79, b/160822876, b/160923332)- Overload AndroidView yang tidak digunakan lagi telah dihapus. (I946b9, b/163802393)
- Emit khusus kini dapat mendeklarasikan bahwa satu atau beberapa penyetelnya dapat dilewati dan dikomposisi ulang secara terpisah dari emit. (Ibbd13)
Mengubah class Vector agar tidak lagi menjadi class data karena instance objek yang sama digunakan untuk komposisi.
Menambahkan flag mutableStateOf untuk VectorPainter agar menggambar ulang secara bersyarat jika konten vektor berubah.
Memfaktorkan ulang instance VectorComponent menjadi bagian dari VectorPainter karena digunakan kembali di seluruh komposisi.
Memperbarui GroupComponent dan PathComponent agar kolom namanya dapat berubah (Ieae45, b/151378808)
Menghapus
onChildPositioned
danOnChildPositionedModifier
. Sebagai gantinya, developer sebaiknya menggunakanonPositioned
danOnPositionedModifier
pada tata letak turunan. (I4522e, b/162109766)Offset telah menjadi class inline (Iaec70)
Menambahkan parameter pengubah ke SelectionContainer (I4aada, b/161487952)
Menghapus FocusModifier yang tidak digunakan lagi (I0b4ba, b/160922116, b/160821157, b/162441435, b/160822875, b/160921940)
Menambahkan lambda
mergePolicy
keSemanticsPropertyKey
. 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)Batasannya kini menjadi class inline (I88736)
Menambahkan FocusManager yang memindahkan logika fokus umum dari AndroidComposeView (I528ef, b/161487952, b/162206799)
Memperbarui nama PointerEventPass untuk rilis Alfa. (Ifda6f)
IntOffset kini menjadi class inline (Iac0bf)
IntSize kini menjadi class inline (I2bf42)
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)AlertDialog kini menggunakan FlowRow untuk tombol (I00ec1, b/161809319, b/143682374)
Menjadikan beberapa utilitas pengujian tidak untuk publik karena tidak berada di tempat yang semestinya. Akan dijadikan untuk publik di masa mendatang. (I32ab1)
Memfaktorkan ulang susunan kode input pointer. (Ie3f45)
Menghentikan penggunaan PxBounds untuk digantikan Rect. Memperbarui semua penggunaan PxBounds dengan Rect dan menambahkan penghentian/penggantian yang benar dengan anotasi untuk membantu migrasi. (I37038, b/162627058)
Menghapus KeyEvent2 yang tidak digunakan lagi. Sebagai gantinya, gunakan KeyEvent. (Ied2d0, b/162097587)
KeyEvent memiliki properti unicode yang dapat digunakan untuk mendapatkan karakter unicode yang dihasilkan oleh kombinasi tombol dan status tombol meta yang ditentukan (If3afc)
Membuat peristiwa kustom DelayUp dan class terkait sebagai API keikutsertaan karena kemungkinan besar akan diubah. (I56d6f)
Menghapus 2 PointerEventPasses yang tidak diperlukan lagi. (I3dd9d)
Menambahkan warna parameter, bayangan, dan TextDecoration ke Paragraph.paint. Fungsi ini berguna untuk menghindari pembuatan ulang Paragraph yang tidak perlu. (I81689)
Perbaikan Bug
- 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)
Menghapus panggilan FrameManager yang tidak digunakan lagi.
API compose internal telah diubah guna mengurangi jumlah overhead untuk melacak objek status seperti
mutableStateof()
(I80ba6)VerticalScroller dan HorizontalScroller telah dihapus. Sebagai gantinya, gunakan ScrollableColumn/Row. Modifier.drawBackground telah dihapus. Gunakan Modifier.background (I73b0d, b/163019183)
Memperbaiki error saat sesuatu yang menyimpan status sebelumnya digunakan di dalam for loop. Kini, memiliki kunci yang sama di savedInstanceState() diizinkan, dan api UiSavedStateRegistry disesuaikan dengan persyaratan baru ini (I4ab76, b/160042650, b/156853976, b/159026663, b/154920561)
state { ... }
yang dapat dikomposisi 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 yang serupa dengan RRect, dan menghentikan penggunaan konstruktor fungsi RRect (I5d325)
Versi 0.1.0-dev16
5 Agustus 2020
androidx.compose.ui:ui-*:0.1.0-dev16
dirilis. Versi 0.1.0-dev16 berisi commit berikut ini.
Perubahan API
- OnChildPositioned tidak digunakan lagi. Sebagai gantinya, gunakan OnPositioned pada turunan. (I87f95, b/162109766)
- setViewContent tidak digunakan lagi. Sebagai gantinya, setContent harus digunakan. (I7e497, b/160335130)
- Menambahkan AndroidViewBinding API untuk meng-inflate dan menulis resource tata letak, berdasarkan ViewBinding. (I081c6)
- KeyEvent2 digantikan oleh KeyEvent (I2d770, b/162097585)
- Menambahkan dukungan untuk tombol hardware Alt (I9036b)
- FocusManager Tidak Digunakan Lagi. Sebagai gantinya, gunakan Modifier.focus(), Modifier.focusObserver(), dan Modifier.focusRequester(). (I74ae4, b/162211322)
- loadVectorResource mendukung atribut trimPath (I808fe)
- Memindahkan dialog ke ui (I47fa6)
- Menghapus 2 PointerEventPasses yang tidak diperlukan lagi. (I33ca7)
- Mengimplementasikan PointerInteropModifier yang memberikan kemampuan menerima MotionEvents dan berinteraksi dengan Compose seolah-olah Anda sedang menjalankan implementasi Tampilan Android. (Ieb08c)
- Menghapus pengubah tag yang tidak digunakan lagi. Sebagai gantinya, harap gunakan LayoutId. (Idaa05, b/162023919)
- 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)
- Mendukung pemangkasan jalur dalam grafik vektor (Ie16c9, b/158188351)
- Menambahkan Modifier.layout() yang memungkinkan untuk membuat pengubah tata letak khusus dengan mudah (I73b69, b/161355194)
- Menambahkan AndroidView API baru dan tidak lagi menggunakan yang ada. (I5bcfd)
- 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) - Tambahkan subclass Tampilan [Abstract]ComposeView untuk menghosting konten Compose dalam hierarki Tampilan. (I46357)
Row
danColumn
kini berfungsi inline yang secara signifikan mengurangi overhead penggunaannya. (I75c10)- SubcomposeLayout ditambahkan. Ini adalah primitif tingkat rendah yang memungkinkan komposisi pada turunan selama pengukuran. Hal itu terjadi jika kita ingin menggunakan beberapa nilai yang hanya tersedia selama pengukuran untuk komposisi sub-pohon. Misalnya, WithConstraints tidak diimplementasikan menggunakan SubcomposeLayout. (I25cc8)
- Menambahkan
SemanticsNode.positionInRoot
untuk mendapatkan posisi SemanticsNode relatif terhadap root hierarki Compose (Icdf26, b/161336532) - MotionEvents melewati seluruh Android, ke dalam Compose, dan kembali ke Android. (I14be8, b/158034713)
- DropdownPopup dihapus. (I00430)
- Memperbaiki posisi pop-up pada tampilan terpotong. (Idd7dd)
- Menambahkan tindakan aksesibilitas untuk mendapatkan TextLayoutResult (I9d6e6)
- RemeasurementModifier ditambahkan dan memungkinkan untuk mengukur 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)
- Menghapus getLineEllipsisOffset/getLineEllipsisCount. Sebagai gantinya, gunakan getLineVisibleEnd/getLineEnd/isLineEllipsized. (I85aa2)
- Menambahkan beberapa Tanda/Anotasi untuk alasan praktik terbaik. (I66b20)
- memperlihatkan API baris lainnya di TextLayoutResult. (I79bd2)
- Pengonversi vektor bawaan untuk mengonversi unit bawaan kini dapat diakses melalui Foo.VectorConverter. Misalnya, Dp.VectorConverter, Color.VectorConverter, Float.VectorConverter, dll. (I3e273)
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
- Memperbarui pemakaian BlendMode API compose untuk memetakan dengan benar antara mode BlendMode dan PorterDuff framework Android bergantung pada API level. Memperkenalkan BlendMode#isSupported API untuk bertindak sebagai kueri kemampuan untuk menentukan apakah BlendMode didukung di perangkat sebelum digunakan. (I0ef42)
- 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)
SemanticsNodeInteraction.performPartialGesture
dihapus. Sebagai gantinya, gunakanSemanticsNodeInteraction.performGesture
. (Id9b62)LazyColumnItems
diganti namanya menjadiLazyColumnFor
.LazyRowItems
diganti namanya menjadiLazyRowFor
(I84f84)- Paket
foundation.shape.corner
diratakan menjadifoundation.share
(I46491, b/161887429) - Mengganti nama
AndroidComposeTestRule
menjadicreateAndroidComposeRule
. (I70aaf) - Menambahkan API lainnya ke
TextLayoutResult
. (Id7e04) - Material
FilledTextField
diganti namanya menjadiTextField
danTextField
dasar diganti namanya menjadiBaseTextField
agar API yang paling sederhana yang diinginkan mudah ditemukan dan digunakan (Ia6242, b/155482676) - Nama Modifier.drawBackground telah diganti menjadi Modifier.background (I13677)
Versi 0.1.0-dev15
22 Juli 2020
androidx.compose.ui:ui-*:0.1.0-dev15
dirilis. Versi 0.1.0-dev15 berisi commit berikut.
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
- 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)
- Menambahkan pengubah untuk mengamati perubahan status fokus. (I05866, b/160924455, b/160923326)
- Menambahkan pengubah untuk meminta perubahan fokus (I8dd73, b/161182057, b/160924778)
- Sesuaikan Toolbar Menu untuk menampilkan fungsi menyalin, memotong, dan menempel dengan benar. (Id3955)
- Properti semantik satu nilai sekarang menggunakan gaya pemanggilan.
Misalnya, 'semantics {hidden = true}' sekarang ditulis sebagai:
semantics { hidden() }
. (Ic1afd, b/145951226, b/145955412) - Menambahkan Modifier.focus yang menggantikan FocusModifier. (Ib852a, b/160924778)
- Tambahkan FloatingToolbar untuk TextField Selection. (Ie8b07)
- Menambahkan anotasi API eksperimental untuk API terkait input kunci (I53c0a)
- Menambahkan anotasi API eksperimental untuk semua API terkait Focus (I53b24, b/160903352)
- Menambahkan FocusState2 yang akan menggantikan FocusDetailedState (I0a3ba, b/160822595)
- Menambahkan ExperimentalFocus yang merupakan anotasi @OptIn untuk Focus API. (I1544b, b/160820961)
- Class unit IntBounds telah ditambahkan dan mewakili batas piksel bilangan bulat dari tata letak. API PopupPositionProvider telah diupdate untuk menggunakannya. (I0d8d0, b/159596546)
- Appier kini memerlukan metode clear() untuk memisahkan posisi (Ibe697)
- KeyEvent tidak digunakan lagi dan digantikan oleh KeyEvent2 (I68730)
- Sebuah flag opsional baru useUnmergedTree telah ditambahkan ke pencari pengujian. (I2ce48)
- Membuat API eksperimental LayoutNode (I4f2e9)
Menambahkan metode penyalinan ke berbagai jenis class inline, termasuk:
- Offset
- Size
- Radius
- Motion
TransformOrigin
Metode objek pendamping Size.copy tidak digunakan lagi untuk mendukung metode penyalinan instance (Ife290, b/159905651)
Pop-ups, Dialogs, dan Menus sekarang mewarisi MaterialTheme kontekstual (Ia3665, b/156527485)
Nama TextDirection diganti menjadi ResolvedTextDirection (I3ff38)
Menghapus parameter arah tata letak dari blok ukuran fungsi Layout(). Namun, arah tata letak tersedia di dalam callback melalui objek cakupan pengukuran (Ic7d9d)
SelectionHandles difaktorkan ulang untuk digunakan kembali. (I420e0)
Clickable telah dihapus. Gunakan Modifier.clickable (I84bdf)
TestTag dan Semantics telah dihapus. Sebagai gantinya, gunakan Modifier.testTag dan Modifier.semantics (I15ff0, b/158841414)
Sebelum perubahan ini, plugin compiler tulis akan melakukan intersepsi panggilan terhadap konstruktor di dalam fungsi @Composable jika terdapat (I5205a, b/158123804)
Nama Modifier.tag diganti menjadi Modifiers.layoutId untuk menghindari kebingungan dengan Modifier.testTag. (I995f0)
Posisi Int baris perataan yang ditampilkan dari Placeable#get(AlignmentLine) sekarang tidak null. Jika baris perataan kueri tidak ada, AlignmentLine.Unspecified akan ditampilkan. (I896c5, b/158134875)
Parameter pengubah telah ditambahkan pada AndroidView yang dapat dikomposisi. (I48a88, b/158746303)
Semantics() tidak digunakan lagi. Gunakan Modifier.semantics() sebagai gantinya. (I72407, b/158841414)
Tambahkan fungsi yang dapat dikomposisi viewModel() yang memungkinkan untuk membuat atau mendapatkan ViewModel yang sudah dibuat dan serupa dengan cara kerjanya di Activity atau Fragment (I5fdd1)
Mengganti penggunaan IntPx dengan Int. Mengganti IntPxPosition dengan IntOffset. Mengganti IntPxSize dengan IntSize. (Ib7b44)
Untuk menggabungkan jumlah class yang digunakan untuk menyatakan informasi pengubahan ukuran, standarkan penggunaan class Size, bukan PxSize. Tindakan ini memberikan manfaat dari class inline untuk menggunakan 2 nilai float yang panjang untuk dipaketkan untuk menyatakan lebar dan tinggi yang dinyatakan sebagai float. (Ic0191)
Untuk menggabungkan jumlah class yang digunakan untuk menyatakan informasi positioning, standarkan penggunaan class Offset, bukan PxPosition. Tindakan ini memberikan manfaat dari class inline untuk menggunakan 2 nilai float yang panjang untuk dipaketkan untuk menyatakan offset x dan y yang dinyatakan sebagai float. (I3ad98)
Mengganti penggunaan class Px di berbagai class compose sebagai bagian dari upaya pemfaktoran ulang besar-besaran agar hanya mengandalkan jenis primitif dan Dp untuk parameter piksel. Menghapus class Px secara keseluruhan (I3ff33)
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)
TestTag sekarang tidak digunakan lagi. Sebagai gantinya, gunakan Modifier.testTag. (If5110, b/157173105)
Penerapan ParentDataModifier#modifyParentData default tanpa pengoperasian telah dihapus - hal ini sama dengan tidak menerapkan antarmuka sejak awal. (I0deaa)
ScaleFit yang sebelumnya tidak digunakan telah dihapus. Gunakan ContentScale sebagai gantinya. (Ifbc5b)
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)
Menambahkan komponen DropdownMenu di ui-material, sebagai implementasi menu Desain Material. (I9bb3d)
Menghapus LayoutTag() yang tidak digunakan lagi, sebagai gantinya gunakan Modifier.tag(). Menghapus Modifier.matchParent() yang tidak digunakan lagi, sebagai gantinya gunakan Modifier.matchParentSize(). (If8044)
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)
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)
DoubleTapGestureFilter sekarang akan membedakan SingleTapGestureFilter di seluruh hierarki. (If92b1).
Memperbarui Alignment API dan menambahkan dukungan untuk perataan mutlak (yang tidak otomatis mencerminkan konteks Rtl) (I38cd3)
API pengubah DrawLayer telah diubah: nama outlineShape diganti ke shape dan memiliki nilai default RectangleShape, serta kini tidak dapat dinolkan; nama clipToOutline diganti menjadi clip; clipToBounds dihapus karena sama dengan clip == true dengan RectangleShape (I7ef11, b/155075735)
Mengupdate API compose dengan level yang lebih tinggi yang mengekspos Canvas untuk mengekspos CanvasScope. Tindakan ini akan menghapus keperluan konsumen untuk mengelola objek Paint-nya. Bagi konsumen yang masih memerlukan akses ke Canvas, mereka dapat menggunakan metode ekstensi drawCanvas yang menyediakan callback untuk mengeluarkan perintah menggambar menggunakan Canvas yang mendasarinya. (I80afd)
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)
Menghapus antarmuka LayoutModifier yang sudah tidak digunakan lagi. (I2a9d6)
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)
Turunan Layout dan LayoutModifier dapat diukur dengan arah layout yang berbeda. (Ibd731)
Modifier.zIndex() baru ditambahkan untuk mengontrol urutan gambar turunan dalam tata letak induk yang sama. Properti elevasi pada DrawLayerModifier diganti namanya menjadi shadowElevation dan tidak lagi mengontrol urutan gambar. Urutan parameter DrawShadow diubah: elevasi kini menjadi yang pertama dan bentuknya adalah yang kedua dengan default RectangleShape. (I20150, b/152417501)
OnSizeChange dan onPositionChange di Owner dihapus. (I5c718)
Menambahkan Constraints2, salinan Constraints yang hanya mendukung nilai batasan Int, bukan IntPx. IntPx akan dihapus dan semua batasan bilangan bulat akan diasumsikan sebagai piksel seperti Android.
- Juga menambahkan IntSize, yang nantinya akan menggantikan IntPxSize. (I4b43a)
Membuat Alignment instantiable dengan nilai arbitrer. Menambahkan Alignment 1D. (Ia0c05)
Sekarang alignToSiblings menerima Measured, bukan Placeable. (I5788d)
-
- Nama ScaleFit berganti menjadi ContentScale
- ContentScale telah dipindahkan dari modul ui-graphics ke ui-core untuk ditempatkan di modul yang sama dengan Alignment API.
- Nama FillMaxDimension diganti menjadi Crop
- Nama FillMinDimension diganti menjadi Fit
- Nama Fit diganti menjadi Inside agar lebih cocok
- ImageView.ScaleType setara
- 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 mendapatkan hasil yang sama seperti ImageView.ScaleType.CENTER_INSIDE
Dukungan Rtl untuk pengubah gambar. (I0aaf9)
Merilis API untuk meng-inflate Tampilan Android dari XML. Lihat demo ViewInCompose untuk mengetahui detail selengkapnya. (I42916)
Menyempurnakan 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)
Menambahkan positionInParent dan boundsInParent untuk LayoutCoordinates. (Icacdd, b/152735784)
Sekarang DrawLayerModifier dan drawLayer() menjadi clipToBounds dan clipToOutline secara default ke false. (I0eb8b, b/152810850)
Nama LayoutResult diganti menjadi MeasureResult. (Id8c68)
Menambahkan LayoutModifier2, API baru untuk menentukan pengubah tata letak; LayoutModifier yang tidak digunakan lagi (If32ac)
Penggantian operator Modifier plus dengan fungsi ekstensi pabrik (I225e4)
Menambahkan properti translationX/Y untuk mendukung pengimbangan daftar tampilan perintah gambar untuk Layer tertentu. Hal ini berguna untuk memindahkan konten sebagai respons terhadap animasi atau peristiwa sentuh. (I8641c)
Menambahkan parameter pivotX, pivotY ke Layer API untuk mendukung rotasi dan penskalaan titik tertentu pada layer (Icf7c3)
Menambahkan OnPositionedModifier dan OnChildPositionedModifier untuk menggantikan fungsi yang dapat dikomposisi OnPositioned dan OnChildPositioned. (I2ec8f)
Menambahkan LayerModifier, pengubah yang mengizinkan penambahan RenderNode untuk Layout. Pengubah tersebut memungkinkan pengaturan clipping, opasitas, rotasi, penskalaan, dan bayangan. Ini akan menggantikan RepaintBoundary. (I7100d, b/150774014)
Membuat arah tata letak disebarkan dari node tata letak induk ke turunan. Menambahkan pengubah arah tata letak. (I3d955)
Komponen stack mendukung arah kanan-ke-kiri (Ic9e00)
Dukungan awal untuk Rtl dalam tata letak Compose (Ia5519)
Density dan DensityScope telah digabungkan dalam satu antarmuka. Sebagai ganti ambientDensity(), sekarang Anda dapat menggunakan DensityAmbient.current. Sebagai ganti withDensity(density), gunakan with(density) (I11cb1)
Mengubah LayoutCoordinates untuk membuat providedAlignmentLines menjadi Set, bukan Map; dan membuat LayoutCoordinates mengimplementasikan operator get(), bukan mengambil nilai. Hal ini mempermudah pengubah untuk mengubah satu atau beberapa nilai kumpulan tanpa membuat koleksi baru untuk setiap pengubah. (I0245a)
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)
Penyempurnaan pada antarmuka API Constraints (I0fd15)
Membuat CanvasScope API yang menggabungkan objek Canvas untuk mengekspos antarmuka API gambar yang deklaratif dan stateless. Transformasi disertakan dalam cakupan penerimanya sendiri dan informasi pengubahan ukuran juga mencakup batas inset yang sesuai. Ini tidak mengharuskan konsumen untuk mempertahankan state object Paint-nya sendiri dalam mengonfigurasi operasi gambar.
- Menambahkan CanvasScopeSample serta mengupdate aplikasi demo guna menyertakan Demo grafis deklaratif (Ifd86d)
Menghapus MaskFilter API yang tidak digunakan karena penggunaannya terbatas dan tidak dioptimalkan untuk akselerasi hardware pada sebagian besar kasus penggunaan (I54f76)
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)
Memperkenalkan parameter perbaikan opsional tambahan ke ImagePainter untuk mendukung penggambaran subset ImageAsset dasar (I0ea9e)
Menambahkan Unset Color untuk mewakili nilai yang tidak ditetapkan tanpa boxing Colors. (If901a)
Menambahkan metode ekstensi Canvas.rotate dan Canvas.scale untuk menggunakan koordinat pivot opsional bagi transformasi. Tindakan ini mengubah default ke sudut kiri atas dari terjemahan kanvas saat ini.
Juga memindahkan Canvas.rotateRad agar menjadi metode ekstensi untuk konsistensi (Ibaca6)
Membuat PixelMap API untuk mendukung kueri informasi piksel dari ImageAsset. (I69ad6)
Mengganti nama toFrameworkRect/toFrameworkRectF menjadi toAndroidRect/toAndroidRectF agar cocok dengan konvensi penamaan untuk konversi objek antara compose dan Android Framework API yang di-build untuk membuatnya. Selain itu, dokumen tentang API ini juga diperbarui (I86337)
Menambahkan VectorPainter API untuk menggantikan API subkomposisi yang ada untuk grafik vektor. Hasil subkomposisi adalah objek VectorPainter, bukan DrawModifier. Penggunaan composable DrawVector sebelumnya tidak digunakan lagi dan diganti dengan VectorPainter.
Nama Image(Painter) API menjadi PaintBox(Painter) Membuat fungsi yang dapat dikomposisi Vector yang berfungsi seperti fungsi yang dapat dikomposisi Image kecuali dengan VectorAsset bukan ImageAsset (I9af9a, b/149030271)
Mengganti nama Image menjadi ImageAsset agar dapat membedakan dengan jelas data Image dan Image yang dapat disusun mendatang yang digunakan untuk menyusun tata letak dan konten gambar. Metode ekstensi dibuat di android.graphics.Bitmap, Bitmap.asImageAsset(), untuk membuat instance ImageAsset yang berguna untuk menggabungkan pengembangan aplikasi Android tradisional dengan framework compose (Id5bbd)
Menambahkan TextDirection.Content (I48f36)
Menambahkan operator TextDecoration.plus (I0ad1a)
Force
dihapus dari nilai enum TextDirectionAlgorithm (Icc944)Nama TextDirectionAlgorithm diubah menjadi TextDirection (I75ce8)
Mengimplementasikan LongPressAndDrag untuk TextField Selection. (I17919)
Menambahkan AnnotatedString.getStringAnnotations yang menampilkan semua anotasi dalam rentang. (I1fa00)
Mengubah nama paket untuk Locale dan LocaleList dari androidx.ui.text ke androidx.ui.intl (I8132c)
Kursor TextField memiliki animasi berkedip (Id10a7)
Perubahan API: nama AnnotatedString(builder: Builder) diganti menjadi annotatedString(builder: Builder). (Ia6377)
Perubahan API: nama AnnotatedString.Item diganti menjadi AnnotatedString.Range. (I2d44d)
Nama AnnotatedString.Builder.addAnnotationString menjadi addStringAnnotation. (I5059e)
Sekarang Anda dapat menyembunyikan/menampilkan keyboard software dengan menggunakan SoftwareKeyboardController yang dikirimkan oleh callback onTextInputStarted (I8dc44, b/151860051)
Menambahkan operator plus untuk (Text/Paragraph/Span)Style yang didelegasikan ke fungsi merge(). (Ia1add)
FontWeight.lerp tidak lagi terpisah. Class tersebut masih merupakan class data. (I521c2)
Konstruktor FontWeight kini bersifat publik, bukan lagi class data. (Id6b1f)
Menambahkan getLineStart, getLineEnd, getEllipsisOffset, dan getEllipsisCount ke TextLayoutResult (Ibc801)
Nama modul ui-text diganti menjadi ui-text-core (I57dec)
Menghapus class Size yang tidak digunakan karena terdapat class Size duplikat pada modul ui-geometry yang sedang digunakan. (I1b602)
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)
Menambahkan padding, batas, bentuk, dan parameter background ke Box (I05027, b/148147281)
Perbaikan Bug
- 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)
- 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)
- Compose UI sekarang dapat dikomposisi di dalam ViewGroups tanpa memerlukan komposisi baru. Lihat ViewInteropDEM untuk melihat contohnya. (I9ab0b, b/160455080)
- Menambahkan sortWith dan removeRange ke MutableVector (Icccf7)
- Menerapkan Drag Selection Handles untuk mengubah pilihan TextField. (I27032)
- Menghapus class inline Shader yang menggabungkan class expect NativeShader. Mengganti nama NativeShader menjadi Shader. Class inline Shader yang digabungkan tidak menambahkan apa pun yang berharga ke permukaan API dan merupakan class inline, jadi gunakan class NativeShader secara langsung. (I25e4d)
PainterModifier difaktorkan ulang agar tidak lagi menyediakan penskalaan berdasarkan batasan yang diberikan dan parameter ContentScale. Implementasi Painter adalah untuk menskalakan konten gambarnya sendiri berdasarkan ukuran DrawScope yang ditentukan.
Memperbaiki masalah bitmap cache yang ada di VectorPainter ke ukuran default, bukan ukuran yang ditetapkan.
ImagePainter telah diupdate untuk menskalakan kontennya, bukan mengandalkan PainterModifier untuk melakukan hal tersebut atas namanya. (I6ba90)
menambahkan fungsi top-level withFrameNanos untuk pengaturan waktu animasi (Ie34c5)
Anotasi @Untracked sudah tidak digunakan lagi. Ganti dengan @ComposableContract(tracked=false) (Id211e)
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)
Memperbaiki masalah ketika pengiriman input pointer akan menyebabkan error jika PointerInputFilters dihapus melalui subkomposisi selama pengiriman. Hal ini sekarang telah diperbaiki. (I1f48b, b/157998762)
Memperbaiki masalah ketika pengiriman input pointer akan menyebabkan error jika PointerInputFilters dihapus melalui subkomposisi selama pengiriman. Hal ini sekarang telah diperbaiki. (Iab398, b/157998762)
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)
Fungsi yang dapat dikomposisi Recompose tidak lagi menjadi abstraksi yang berguna. Sebagian besar rekomposisi harus terjadi sebagai hasil penugasan MutableState. Untuk hal-hal selain itu, sebaiknya Anda menggunakan fungsi
invalidate
untuk memicu rekomposisi cakupan saat ini. (Ifc992)Mengganti penggunaan class Px dalam berbagai class compose sebagai bagian dari upaya pemfaktoran ulang yang besar-besaran guna hanya mengandalkan jenis primitif dan Dp untuk parameter piksel (Ieda0b)
Mengubah strategi pembuatan kode compiler Compose. Sebelum perubahan, compiler compose akan mengubah panggilan ke fungsi yang dapat dikomposisi. Dengan perubahan ini, sekarang kami mengubah isi fungsi yang dapat dikomposisi dan membiarkan callsite tidak berubah (sebagian besarnya).
Artinya, sebagian besar logika yang digunakan untuk berkomunikasi dengan runtime compose terjadi di awal isi fungsi, bukan di callsite.
Ini seharusnya menjadi perubahan yang kompatibel dengan sumber untuk semua penggunaan compose. Sebagian besar pengguna compose tidak perlu mengupdate kode apa pun karena perubahan ini.
Untuk mendukung tugas ini, tanda tangan JVM dari semua fungsi yang dapat dikomposisi telah berubah. Fungsi yang dapat dikomposisi yang menerima satu parameter diubah menjadi fungsi yang menerima 3 parameter. Parameter tambahannya adalah Composer, bilangan bulat 'kunci', dan bilangan bulat bitmask yang digunakan untuk menyebarkan metadata melalui panggilan.
Compose kini juga mengubah argumen default ke fungsi yang dapat dikomposisi. Hal ini dilakukan tanpa menimbulkan kelebihan beban default pada fungsi itu sendiri, sehingga perubahan ini akan menyebabkan lebih sedikit fungsi yang ditentukan.
Perubahan perilaku disengaja dan diketahui yang dihasilkan dari tindakan berikut:
- Beberapa panggilan akan melewati bagian, di mana tidak pernah dilakukan sebelumnya
- Ekspresi composable dalam ekspresi argumen default kini berlangganan dan ditangani dengan benar
Tugas ini mencakup beberapa pengoptimalan: 1. Hasil perbandingan parameter disebarkan melalui grafik panggilan ke fungsi yang dapat dikomposisi lainnya. Ini akan menyebabkan lebih sedikit perbandingan pada saat runtime, mengurangi ukuran tabel slot, serta lebih banyak melewatkan fungsi yang dapat dikomposisi yang sebelumnya tidak dilewati 2. Parameter yang ditetapkan sebagai "statis" pada waktu kompilasi tidak lagi dibandingkan atau disimpan di runtime. Hal ini mengurangi jumlah perbandingan dan mengurangi ukuran tabel slot. 3. Struktur alur kontrol pada bagian isi fungsi digunakan untuk meminimalkan jumlah kelompok yang dihasilkan. Tindakan ini mengurangi ukuran tabel slot dan menyebabkan lebih sedikit tugas untuk runtime 4. Parameter pengirim dan penerima ke fungsi yang tidak terpakai tidak akan disertakan dalam menentukan kemampuan melewati fungsi jika tidak digunakan di dalam bagian isi fungsi.
Sebagian besar perubahan yang dapat menyebabkan gangguan terjadi pada API yang ditargetkan oleh compiler secara langsung, dan penggunaan compose biasanya tidak akan terpengaruh: 1. Composer::startExpr telah dihapus 2. Composer::endExpr telah dihapus 3. Composer::call tidak digunakan lagi 4. Kelebihan beban non-vararg pada
key
telah dihapus. Gunakan versivararg
ke depannya. 5. Anotasi Pivotal tidak digunakan lagi. Gunakankey
sebagai pengganti. 6. ScopeUpdateScope::updateScope diubah untuk mengharapkan Function3, bukan Function1 7. restartableFunction dan restartableFunctionN diupdate untuk menyertakan parameter waktu kompilasi tambahan (I60756, b/143464846)Pengubah LayoutAlign yang tidak digunakan lagi telah dihapus. (I10877)
RepaintBoundary dihapus dan digantikan dengan DrawLayerModifier (I00aa4)
Button, FloatingActionButton, dan Clickable kini memiliki param
enabled
tersendiri. Beberapa param pada Button telah diganti namanya atau disusun ulang. (I54b5a)Mengganti ButtonStyle dengan fungsi yang berbeda dan penghapusan overload pada teks (string). Lihat contoh terbaru untuk informasi penggunaan. (If63ab, b/146478620, b/146482131)
Perubahan yang dapat menyebabkan gangguan pada API ambien. Lihat log dan dokumentasi
Ambient<T>
untuk detail selengkapnya (I4c7ee, b/143769776)Mengubah perilaku TextDirection default untuk ditentukan oleh LayoutDirection, yaitu jika LayoutDirection adalah RTL, maka TextDirection default adalah RTL. Sebelumnya hanya TextDirection.ContentOrLtr/Rtl (I4e803)
Perbaikan bug: Teks tidak dirender dengan benar saat ketebalan dan jenis font disarangkan pada AnnotatedString. (I77a9d)
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)
Nama modul ui-android-text diganti menjadi ui-text-android (I68cbe)