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 |
|---|---|---|---|---|
| 22 Oktober 2025 | 1.9.4 | - | 1.10.0-beta01 | - |
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.9.4" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.ui:ui:1.9.4") } 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.10
Versi 1.10.0-beta01
22 Oktober 2025
androidx.compose.ui:ui-*:1.10.0-beta01 dirilis. Versi 1.10.0-beta01 berisi commit ini.
Perubahan API
- Menambahkan pengoptimalan untuk pengiriman perubahan fokus. Hal ini dapat dinonaktifkan dengan
isOptimizedFocusEventDispatchEnabled = false(I919fb, b/449228515) - Memperbarui semua API sentuhan tidak langsung untuk menggunakan API penunjuk tidak langsung bernama agar sesuai dengan API input penunjuk. (I238ce, b/451607214)
- Fungsi
TextDirection,TextAlign,Hyphens,FontSynthesis,valueOfkini menampilkanIllegalArgumentExceptionsaat menerima nilai yang tidak diketahui. (I07c67) - Perbarui
CompositionDataTree.makeTreeuntuk meneruskan nilai default, bukan fungsi wrapper. (Id64a6, b/445229688) - API aturan pengujian
createComposeRule,createAndroidComposeRule, dancreateEmptyComposeRuleyang menerima parametereffectContextkini stabil dan parameter tersebut secara default ditetapkan keEmptyCoroutineContext. (If400c, b/450540702) UnplacedStateAwareModifierNodediganti namanya menjadiUnplacedAwareModifierNode(I6a551, b/449719932)- Membatalkan Pengoptimalan Perekaman Konten (Ic000b, b/442364065)
- Menambahkan tombol fitur
ComposeUiFlags.isRectManagerOffsetUsageFromLayoutCoordinatesEnabled. Hal ini memungkinkan pengoptimalan performa saat permintaan koordinat sepertiLayoutCoordinates.positionInRoot()menggunakan offset yang di-cache yang sudah ada diRectManager, bukan menjelajahi seluruh hierarki pada setiap panggilan. (Ieaadc)
Perbaikan Bug
PlaceholderSpankini menggunakan penskalaan font non-linear dengan benar untuk penentuan ukuran (Id2ead, b/324462728)- Gunakan
ViewCompatuntuk melakukan konstanta umpan balik haptik yang didukung di tingkat platform, dengan mengandalkan dukungan penggantiannya untuk konstanta yang lebih baru. (Ib5a00)
Versi 1.10.0-alpha05
8 Oktober 2025
androidx.compose.ui:ui-*:1.10.0-alpha05 dirilis. Versi 1.10.0-alpha05 berisi commit ini.
Perbaikan Bug
- Memperbaiki bug saat Pop-up bertingkat diposisikan secara salah di bagian atas layar; kini Pop-up bertingkat ditambatkan dengan benar ke Pop-up induknya. (Id4603, b/191279752)
- Memperbaiki masalah terkait pengalihan fokus dengan View lain dalam hierarki. (I95223, b/446028624)
- Memperbaiki kolom dengan parameter inline yang tidak ada di inspector dalam lambda yang dihasilkan oleh Kotlin 2.2.20 (I9855d, b/447110005)
- Memperbaiki name shadowing resource isi otomatis antara modul UI dan foundation (I5da5a)
Kontribusi Eksternal
- Objek
UiModesdiganti namanya menjadi AndroidUiModes untuk mencerminkan bahwa konstanta objek tersebut diambil dari Android API. (Ia0a77)
Versi 1.10.0-alpha04
24 September 2025
androidx.compose.ui:ui-*:1.10.0-alpha04 dirilis. Versi 1.10.0-alpha04 berisi commit ini.
Perubahan API
- Varian aturan pengujian Compose yang menerima parameter
CoroutineContexttelah dipromosikan menjadi stabil. Anotasi eksperimental telah dihapus, dan developer tidak perlu lagi memilih untuk menggunakan API ini. (I74e6e) ComposeUiFlags.isRectTrackingEnabledtelah dihapus. Logika ini tidak selalu diaktifkan. (Id78df)- Menghentikan penggunaan overload inline
Updater#setkarena terlalu sering melakukan boxing nilai yang diberikan (Id679e) - Menandai properti semantik
onAutofillTextsebagai tidak digunakan lagi. (I6f81c) UnplacedStateAwareModifierNodediperkenalkan. Callback ini menyediakan callback yang dipanggil saat tata letak yang ditempatkan sebelumnya tidak ditempatkan lagi. (I8fdd8, b/309776096)- Memperbaiki dokumentasi
RetainObserver.onRetaineddan menambahkanRetainObserver.onUnused, yang mencerminkanRememberObserver.onAbandoned. (Ia6fc5) - Menambahkan
onVisibilityChangedNode(), yang menghasilkanModifier.Node, yang digunakan olehModifier.onVisibilityChanged()melalui delegasi, yang memungkinkan perluasan fungsionalitas ini diModifier.Nodekustom Anda. (I70d84, b/443001320)
Perbaikan Bug
- Memperbaiki masalah saat konten inline gagal dirender saat diposisikan di baris terakhir teks yang di-elipsis multibaris, meskipun placeholder mendahului area yang di-elipsis. (I76aaf, b/441829208)
Versi 1.10.0-alpha03
10 September 2025
androidx.compose.ui:ui-*:1.10.0-alpha03 dirilis. Versi 1.10.0-alpha03 berisi commit ini.
Perubahan API
- Mengganti nama
DelegatableNode.invalidateLayoutForSubtreemenjadiDelegatableNode.invalidateMeasurementForSubtree. (I94257, b/430106107) - Menghapus pencocok
isInHiddenAccessibilitySubtreeyang berlebihan. (I4476c, b/443792965) - Memperkenalkan stack trace Compose berbasis kunci grup yang diaktifkan secara default untuk semua aplikasi yang di-minify. Pemetaan ProGuard untuk rekaman aktivitas ini akan dibuat oleh plugin Gradle compiler Compose mulai dari Kotlin 2.3.0. (Ifbcb5)
Modifier.skipToLookaheadSizekini menggunakan lambda yang diaktifkan secara default yang hanya mengaktifkan penghapusan ukuran saat transisi bersama aktif, sama sepertiModifier.skipToLookaheadPosition. (Ibe0f5, b/432485585)ComposeUiFlags.isOutOfFrameDeactivationEnableddihapus dan fungsi ini kini selalu diaktifkan. (I421ed)- Pindahkan fungsi factory untuk membuat instance
FillableDatake objek pendamping. Daripada memanggilFillableData(value), gunakan metode factory baru:FillableData.createFrom(value). (I2e200, b/441719650) - Memperkenalkan
BeyondBoundsLayoutModifierNodenode Pengubah baru untuk melakukan tata letak di luar batas untuk penelusuran fokus. (I39be1, b/416133658) FocusTargetModifierNode.requestFocus()mengirim fokus ke salah satu turunannya jika elemen itu sendiri tidak dapat difokuskan. Sekarang ini konsisten denganFocusRequester.requestFocus()danFocusRequesterModifierNode.requestFocus(). Jika Anda tidak memerlukan perilaku ini, tetapkan tandaComposeUiFlags.isRequestFocusOnNonFocusableFocusTargetEnabledke false di aplikasi Anda. (Icca5c, b/436863604)- Menyediakan ukuran jendela berbasis DP di
WindowInfo(I9322b, b/424442112) - Menghapus flag
isNestedScrollDispatcherNodeFixEnabled. (If451a) - Menambahkan dukungan untuk nilai tanggal dalam isi otomatis di
FillableDataAPI.val dateMillisValue: Longditambahkan untuk mengambil informasi tanggal, dan konstruktorFillableData(dateMillisValue: Long)yang sesuai ditambahkan untuk membuat instanceFillableDataberbasis tanggal. (Id072a)
Kontribusi Eksternal
- Objek
UiModesdiperkenalkan untuk mendeklarasikan konstanta yang digunakan untuk anotasiUiMode(I03cb8)
Versi 1.10.0-alpha02
27 Agustus 2025
androidx.compose.ui:ui-*:1.10.0-alpha02 dirilis. Versi 1.10.0-alpha02 berisi commit ini.
Perubahan API
- Perbarui
FillableDatauntuk mendukung komponen non-teks seperti tombol dan daftar, termasuk nilai boolean dan bilangan bulat di dalamFillableDatadan konstruktor factory untuk membuat instance boolean dan daftarFillableDatayang diterjemahkan keAutofillValueplatform. Properti dan tindakan semantik yang relevan juga ditambahkan. (Ia8105, Icc5cf) - Dalam mode non-sentuh, sistem tampilan menetapkan fokus awal/default ke salah satu item yang dapat difokuskan di layar. Fitur ini ditambahkan ke Compose dan dapat diaktifkan dengan mengaktifkan
ComposeUiFlags.isInitialFocusOnFocusableAvailable. (Ib9178) - Menghapus flag
isPointerInteropFilterDispatchingFixEnabled. (Iaa589) - Menghapus flag
isNestedScrollInteropPostFlingFixEnabled. (I2a756) - Tambahkan pencocokan semantik
isHiddenFromAccessibility()danisInHiddenAccessibilitySubtree(). (I9f5a1) - Menambahkan
runCurrent()keMainTestClockuntuk menjalankan semua tugas yang sudah jatuh tempo pada penjadwal yang mendasarinya. Hal ini untuk mendukung menjalankan pengujian diStandardTestDispatcher, tempat tugas ditambahkan ke penjadwal, bukan dieksekusi segera saat memiliki penundaan 0 md. Pengujian dapat disiapkan untuk menggunakanStandardTestDispatcherdengan membuatComposeTestRuledan meneruskanStandardTestDispatcherkeComposeTestRuletersebut. Secara default, pengujian dijalankan diUnconfinedTestDispatcher, sehinggarunCurrent()tidak perlu dipanggil. - Menambahkan dukungan untuk menjalankan pengujian di
StandardTestDispatcher. Sebelumnya, framework pengujian disiapkan (dan masih disiapkan) menggunakanUnconfinedTestDispatcher, yang berbeda dari lingkungan produksi dalam beberapa hal. Anda kini dapat mengubah penyiapan ini dengan membuatStandardTestDispatcherAnda sendiri dan menambahkannya keeffectContextsaat membuatComposeTestRule(atau saat memanggil runComposeUiTest). (I334d0, b/254115946) - Perbarui kode untuk membuat hierarki node dari
SlotTree. (I997d3)
Perbaikan Bug
- Compose UI kini menginstal
RetainScopesyang mendukung siklus proses di Android. Perilaku default kini akan mempertahankan nilai yang di-retaindi seluruh perubahan konfigurasi. (Id4a09, b/177562901)
Kontribusi Eksternal
- Menambahkan kemampuan
VelocityTrackeruntuk menghitung kecepatan pointer berdasarkan peristiwa pointer yang dilacak menggunakan perilaku khusus platform. (I621e8)
Versi 1.10.0-alpha01
13 Agustus 2025
androidx.compose.ui:ui-*:1.10.0-alpha01 dirilis. Versi 1.10.0-alpha01 berisi commit ini.
Perubahan API
- Penekanan kursor dengan mouse atau touchpad dalam
ComposeViewkini akan menghapus fokus secara otomatis jika penekanan kursor tidak terjadi dalam batas node yang difokuskan. Hal ini menghasilkan UX "ketuk untuk menghapus fokus" yang lebih diharapkan daripada perilaku saat ini saat menggunakan perangkat input pointer. Perilaku ini dapat dinonaktifkan dengan APIAbstractComposeView.isClearFocusOnPointerDownEnabledbaru. (I6322b, b/282963174) - Memperkenalkan antarmuka
FillableDatauntuk mendukung berbagai jenis komponen isi otomatis, selain Teks. (If9bd2) - API baru untuk memungkinkan elemen bersama diaktifkan dan dinonaktifkan secara dinamis yang juga memungkinkan memperhitungkan apakah sudah ada transisi elemen bersama yang sedang berlangsung. API baru untuk menyiapkan batas target alternatif saat elemen bersama target dibuang selama transisi. API baru untuk mendapatkan
LayoutCoordinatesdariLookaheadScope. (I18dd4, b/409819304, b/395670637) - Memperkenalkan tanda
isNestedScrollInteropIntegerPropagationEnableduntuk mengontrol eksperimen pengiriman bilangan bulat yang benar ke interop scroll bertingkat. (If8316) - Menambahkan
requestFocusForChildInRootBounds()keDelegatableNodeuntuk memindahkan fokus ke turunan yang tumpang-tindih dengan rect tertentu. (I001ef) - Menghapus tanda
isOnScrollChangedCallbackEnabled,isAdjustPointerInputChangeOffsetForVelocityTrackerEnabled,isFlingContinuationAtBoundsEnabled,isAutomaticNestedPrefetchEnabled,DragGesturePickUpEnabled,isPointerInteropFilterDispatchingFixEnabled,isNestedScrollInteropPostFlingFixEnabled,isNestedScrollDispatcherNodeFixEnabled(I36c18) - Anotasi
@CheckResulttelah ditambahkan pada fungsi pencari dan pemilihSemanticsNodeuntuk menerapkan penggunaan nilai yang ditampilkan. (I6f86e, b/201652748) - Meningkatkan performa proses pengambilan konten (I3c7c0)
- Memperkenalkan
CompositionLocalyang dapat digunakan untuk mengubah kuas sorotan pengisian berhasil Isi Otomatis. (I52329) - Memperkenalkan antarmuka Interpolatable baru yang memungkinkan interpolasi otomatis antara berbagai jenis, dengan asumsi satu jenis mengetahui cara mengonversi dari jenis lainnya. Antarmuka ini dimanfaatkan dalam beberapa jenis komposisi seperti Kuas dan Bentuk, tetapi juga dapat digunakan secara eksternal. (I58eab)
- Sekarang Scrollable mendukung peristiwa scroll roda mouse 2 dimensi dengan lebih baik. API pengujian baru telah tersedia untuk membantu menguji kasus penggunaan di
MouseInjectionScope. Kami juga memperkenalkan overload baru untuk metode scroll diMouseInjectionScopedan tanda untuk mengontrol perilaku baru yang disebutisMouseWheel1DAxisLockingEnabled(I136df) - Menambahkan
DeviceConfigurationOverridesuntuk jenis & status keyboard, jenis dan status navigasi, status layar sentuh, dan jenis mode UI (I282f0) - Menambahkan
LineHeightStyle.Modebaru bernamaTight. Mode ini membantu menerapkan tinggi garis yang lebih kecil meskipun dapat memotong glif yang lebih tinggi. (Id3849) BaselineShiftkini memiliki nilai Unspecified untuk mencegah boxingBaselineShift,Hyphens,LineBreak,TextAlign, danTextDirectionkini memiliki fungsi helperisSpecifiedHyphens,TextAlign,TextDecoration, danTextDirectionkini memiliki metodevalueOf()dan nilai yang memungkinkan serialisasi/deserialisasi yang efisien. (I8d44c)- Menambahkan antarmuka metode
getDisplayNamebaru untuk mengizinkan nama tampilan kustom untuk instance parameter pratinjau. (I19bdf, b/241699422) - Saat nilai Dp dibandingkan dengan Unspecified menggunakan kurang dari atau lebih dari, nilai tersebut kini selalu menampilkan nilai salah (false). Menggunakan
Dp.compareTo(Unspecified)selalu menampilkan 0. Menetapkan tandaComposeUiUnitFlags.isDpCompareToChangedke salah (false) akan mengembalikanDp.compareTo()ke perilaku sebelumnya, dengan membandingkan Unspecified dengan kurang dari dan lebih dari tidak selalu mengembalikan salah (false), dancompareTo()dengan Unspecified cocok dengan perilakuFloat.compareTo(). (Ifa88b, b/429221319)
Perbaikan Bug
- Memindahkan minSdk default dari API 21 ke API 23 (Ibdfca, b/380448311, b/435705964, b/435705223)
- Memperbaiki masalah yang mencegah pembuatan
AndroidComposeViewsbaru saat transisi sedang berlangsung. (I2e23e, b/340894487, b/287484338) - Memperbaiki bug warna saat menggunakan vektor drawable yang menggunakan satu warna dan
fillColortidak sepenuhnya buram atau sepenuhnya transparan. (I3b041, b/328677973) - Memperbaiki masalah saat ikon yang dimuat melalui
painterResourcedengan warna khusus tema tidak diperbarui saat tema berubah. (I85ea0, b/424416571) - Memperkenalkan semantik
onFillDatadanfillableData(I45d9e) - Encoding status khusus platform kini selalu diaktifkan di
StateRestorationTester. Hal ini menyelaraskan perilaku pengujian dengan pemulihan status aplikasi yang sebenarnya, seperti Parcelisasi di Android. (I38211, b/408154192, b/382294247) - Memperbaiki error sesekali saat meminta fokus. (57b31a11, b/431111149)
Versi 1.9
Versi 1.9.4
22 Oktober 2025
androidx.compose.ui:ui-*:1.9.4 dirilis. Versi 1.9.4 berisi commit ini.
Perbaikan Bug
- Memperbaiki masalah saat konten teks inline menghilang jika berada di baris terakhir teks multi-baris yang di-elipsis meskipun konten inline tidak berada di area yang di-elipsis. (I76aaf, b/441829208)
- Memperbaiki masalah saat callback pengubah
onLayoutRectChangedtidak selalu dipanggil saatdebounceMillisbukan nol. (72aba47, b/445324854)
Versi 1.9.3
8 Oktober 2025
androidx.compose.ui:ui-*:1.9.3 dirilis. Versi 1.9.3 berisi commit ini.
Perbaikan Bug
- Memperbaiki bug yang menyebabkan pengubah
onVisibilityChanged/onFirstVisible/onLayoutRectChangedtidak menerima callback jika tata letak yang dipindahkan memiliki lebih dari 170 turunan. (4f2fdd, b/445356774)
Versi 1.9.2
24 September 2025
androidx.compose.ui:ui-*:1.9.2 dirilis. Versi 1.9.2 berisi commit ini.
Perbaikan Bug
Modifier.onVisibilityChanged()kini dipicu dengan benar saat node dilepas atau digunakan kembali. (Ic5ce20)Modifier.onVisibilityChanged()danonLayoutRectChanged()kini menangani tata letak induk dengan benar menggunakanplaceWithLayer()untuk menempatkan turunan. (Ia05ac9)- Untuk
Modifier.onVisibilityChanged()danonLayoutRectChanged(), beri tahu dengan benar dalam kasus ekstrem seperti menghapus pengubah lapisan/lapisan atau memperbarui properti lapisan. (Ia05ac)
Versi 1.9.1
10 September 2025
androidx.compose.ui:ui-*:1.9.1 dirilis. Versi 1.9.1 berisi commit ini.
Perbaikan Bug
- Memperbaiki bug warna saat menggunakan vektor drawable yang menggunakan satu warna dan
fillColortidak sepenuhnya buram atau sepenuhnya transparan. (I3b041, b/328677973)
Versi 1.9.0
13 Agustus 2025
androidx.compose.ui:ui-*:1.9.0 dirilis. Versi 1.9.0 berisi commit ini.
Perubahan penting sejak versi 1.8.0
- Perubahan penting dalam versi 1.9.0 dibahas dalam postingan blog ini
- Pemeriksaan Lint yang disertakan dengan Compose kini memerlukan versi AGP minimum 8.8.2. Jika tidak dapat mengupgrade AGP, Anda dapat mengupgrade Lint sendiri dengan menggunakan
android.experimental.lint.version=8.8.2(atau versi yang lebih baru) digradle.properties. Untuk menjalankan pemeriksaan lint Compose di dalam IDE, diperlukan Android Studio Ladybug atau yang lebih baru. - Perubahan yang dapat menyebabkan gangguan: node pengubah
graphicsLayerkini mengimplementasikanSemanticsModifierNode. Hal ini dapat menyebabkanSemanticsNodesbaru ditambahkan ke hierarki semantik dan, oleh karena itu, menyebabkan kegagalan pengujian dalam pengujian yang membuat asumsi tentang struktur hierarki semantik. Misalnya, pengujian yang menggunakanonChild,onParent,onSibling, dan metode serupa lainnya untuk membuat pernyataan dapat gagal jika node baru ditambahkan di antara node saat ini dan target. Cara yang lebih disarankan untuk memperbaiki kegagalan ini adalah dengan menambahkantestTaglangsung ke target node. Pendekatan lainnya adalah menggunakan pencocok yang lebih longgar, sepertionNode(hasAnyAncestor(hasText("ancestor")) and hasText("target")). (I638b5)
Versi 1.9.0-rc01
30 Juli 2025
androidx.compose.ui:ui-*:1.9.0-rc01 dirilis. Versi 1.9.0-rc01 berisi commit ini.
Perbaikan Bug
- Memperbaiki masalah saat ikon yang dimuat melalui
painterResourcedengan warna khusus tema tidak diperbarui saat perubahan tema sistem. (I85ea0, b/424416571) - Memperbaiki error pada API 21(Lollipop) dan 28(Pie) saat metode grafis penting diganti namanya selama dioptimalkan. (Iebf99, b/425120571, b/420462749)
- Pastikan pengubah
onLayoutRectChangedyang baru disisipkan dipanggil kembali pada awalnya. (l9aa91), (lb348a) - Perbaikan untuk cache offset yang tidak divalidasi dengan benar, sehingga menyebabkan pemodifikasi
onLayoutRectChangeddipanggil dengan koordinat yang salah (ibd4cd), (lddc57) - Perbaikan untuk tata letak yang diputar/dimiringkan yang menerima koordinat yang salah oleh pengubah
onLayoutRectChanged(lddc57, b/426750475)
Kontribusi Eksternal
- Memperbaiki masalah saat item
dragAndDropSourcediLazyListmenghilang saat di-scroll. Terima kasih, Victor Rendina! (dc3bcd3, b/425894792)
Versi 1.9.0-beta03
16 Juli 2025
androidx.compose.ui:ui-*:1.9.0-beta03 dirilis. Versi 1.9.0-beta03 berisi commit ini.
Perbaikan Bug
- Memperbaiki masalah saat bayangan dalam yang diblur secara seragam tidak bergerak dengan benar saat diberi offset.
Versi 1.9.0-beta02
2 Juli 2025
androidx.compose.ui:ui-*:1.9.0-beta02 dirilis. Versi 1.9.0-beta02 berisi commit ini.
Perubahan API
- Mengubah objek pendamping menjadi eksperimental agar cocok dengan class. (I8452a)
- Menghapus tanda eksperimental
isTrackFocusEnabled(I003fd)
Perbaikan Bug
- Jika tidak ada
WindowInsetsyang mengganggu kontenComposeView, nilaiWindowInsetsRulerstidak diberikan. (I71221)
Versi 1.9.0-beta01
18 Juni 2025
androidx.compose.ui:ui-*:1.9.0-beta01 dirilis. Versi 1.9.0-beta01 berisi commit ini.
Perubahan yang Dapat Menyebabkan Gangguan
- Node pengubah
graphicsLayerkini menerapkanSemanticsModifierNode. Hal ini dapat menyebabkanSemanticsNodesbaru ditambahkan ke hierarki semantik dan, oleh karena itu, menyebabkan kegagalan pengujian dalam pengujian yang membuat asumsi tentang struktur hierarki semantik. Misalnya, pengujian yang menggunakanonChild,onParent,onSibling, dan metode serupa lainnya untuk membuat pernyataan dapat gagal jika node baru ditambahkan di antara node saat ini dan target. Cara yang lebih disarankan untuk memperbaiki kegagalan ini adalah dengan menambahkantestTaglangsung ke target node. Pendekatan lainnya adalah menggunakan pencocok yang lebih longgar, sepertionNode(hasAnyAncestor(hasText("ancestor")) and hasText("target")). (I638b5)
Perubahan API
- Mengubah
ShadowContextmenjadi antarmuka tertutup (I3ce40) - Menambahkan cara lintas modul untuk membuat Peristiwa Sentuhan Tidak Langsung (untuk pengujian) (I22e4c)
- Membuat
IndirectTouchEvent.nativeEventeksperimental. (I6fda5) - Merevisi platform API berdasarkan masukan dewan API. (Ibf378)
- Menghapus konstanta
FrameRateCategory.NoPreference. Ganti namaModifier.requestedFrameRatemenjadiModifier.preferredFrameRate. (I2f976) WindowInsetsRulers: mengubahrulersIgnoringVisibilitymenjadi maksimum. MengubahgetDisplayCutoutBounds()menjadi fungsi ekstensi dariPlacementScope.WindowInsetsAnimationPropertiestelah diubah menjadiWindowInsetsAnimationdangetAnimationProperties()telah diubah menjadigetAnimation(). (I3816f)- Mengubah class
ShadowParamsmenjadiShadow(I11cca) - Mengubah paket untuk Frame Rate API dari
androidx.compose.ui.uimenjadiandroidx.compose.ui(I8994e) - Mengubah
InsetsRulersagar berada dalam kode umum dengan namaWindowInsetsRulers. Menyederhanakan API sehingga semua inset adalahWindowInsetsRulers. Mengekstrak properti animasi non-penggaris ke classAnimationProperties.WindowInsetsRulers.innermostOf()dapat digunakan untuk menggabungkan beberapaWindowInsetsRulers. (I2f0c6, b/415012444) - Menambahkan API alat untuk mengurai informasi sumber yang ditambahkan oleh compiler Compose. (Iceaf9, b/408492167)
Perbaikan Bug
- Tombol untuk
isGetFocusedRectReturnEmptyEnabledtelah dihapus karena fitur ini telah diverifikasi sepenuhnya. (Ife722) - Memperbaiki bug di
performScrollToNode, yang dalam beberapa kasus tidak mencapai target node. Dengan perbaikan ini, node target akan selalu tercapai dalam kasus tersebut. Efek samping dari perubahan ini adalah posisi scroll yang tepat di akhir tindakan mungkin berbeda, yang memengaruhi pengujian screenshot dan pengujian yang membuat asumsi tentang posisi scroll yang tepat. (I2c8a1)
Versi 1.9.0-alpha04
4 Juni 2025
androidx.compose.ui:ui-*:1.9.0-alpha04 dirilis. Versi 1.9.0-alpha04 berisi commit ini.
Perubahan API
- Menambahkan API pengubah untuk bayangan yang dapat disesuaikan. (I2058d, b/160665122)
- Tambahkan properti
SemanticsModifierNode.isImportantForBoundsyang menentukan apakah node harus diperhitungkan saat menghitung batas. Properti ini benar (true) secara default dan dapat disetel ke salah (false) untuk menunjukkan bahwa node tidak boleh diperhitungkan untuk batas. (I7ebec) - Tambahkan fungsi factory
SemanticsPropertyKeyuntuk mendeklarasikan properti semantik khusus Android yang tersedia sebagai ekstra aksesibilitas yang diekspos melaluiAccessibilityNodeInfo.getExtras. (I2ed51) - Menghapus penggunaan
ComposeUiFlags.isRemoveFocusedViewFixEnableddan menghentikan penggunaan flag. (I50328) - Memperkenalkan framework bayangan baru yang dapat disesuaikan. Ini mencakup
DropShadowPainterdanInnerShadowPainterserta dependensiDropShadow/InnerShadow. Infrastruktur bayangan dibagi sehingga bayangan yang sama yang dihasilkan dapat dibagikan di beberapa lokasi panggilan tanpa harus membuat ulang bayangan sebanyak n kali. (I24f7a, b/160665122) - Memperkenalkan
CompositeShaderdanCompositeShaderBrushyang membuat hasil gabungan antara dua shader. Tambahkan jugaShaderBrush#transformuntuk menetapkan matriks transformasi untuk shader. (I2621a, b/160665122)
Perbaikan Bug
- Memperbaiki bug di
NestedScrollInteropConnectionsaat metode pelemparan berada dalam urutan yang salah sehubungan dengan tampilan. (I56ad4) - Sebelumnya, dialog yang digambar dalam layar penuh tidak digambar dalam area potongan layar. Bug ini diperbaiki sehingga dialog dengan
decorFitsSystemWindows = falsedanusePlatformDefaultWidth = falsedapat mengambil area potongan layar. (I9e975) - Memperbaiki bug saat indikator fokus hijau
TalkBacktidak digambar setelah diaktifkan saat aplikasi Compose berada di latar belakang. (Ifd12a)
Versi 1.9.0-alpha03
20 Mei 2025
androidx.compose.ui:ui-*:1.9.0-alpha03 dirilis. Versi 1.9.0-alpha03 berisi commit ini.
Perubahan API
- Flag
ComposeUiFlags.isGetFocusedRectReturnEmptyEnabledmemastikan bahwa jika tidak ada yang dapat difokuskan dalamComposeView, setel persegi ke nilai Kosong. Hal ini mencegah penelusuran fokus memilih Tampilan yang akan difokuskan. Hal ini sangat penting jika IME memiliki opsi BERIKUTNYA yang mungkin mencoba memfokuskan padaComposeViewdanrequestFocus()gagal. (Ibd0e2, b/369256395) - Memperkenalkan flag
isNestedScrollDispatcherNodeFixEnabled. (I0d24a) - Mengganti nama
DialogProperties'dialogContentTitlemenjadiwindowTitle(Ibd27b) - Pengubah
Modifier.onFirstVisibledanModifier.onVisibilityChangeddiperkenalkan, yang merupakan pengubah tingkat tinggi yang dibangun di atasModifier.onLayoutRectChanged. Pengubah ini dibuat secara khusus untuk menangani banyak persyaratan aplikasi umum seperti mencatat tayangan, memutar video secara otomatis, dll. Pengubah ini dibuat dengan mempertimbangkan performa sehingga dapat digunakan dalam skenario berbasis daftar penting tanpa risiko mengorbankan performa scroll. Selain API pengubah ini, API tambahan untukRelativeLayoutBoundstelah ditambahkan untuk mendukung kasus penggunaan ini, serta mempermudah developer membuat pengubah kustom serupa yang sesuai dengan kasus penggunaan mereka. (I759b8) - Ubah
setDiagnosticStackTraceEnabledmenjadi eksperimental untuk memperhitungkan pengembangan fitur ini di masa mendatang. (I11db3) - Memperkenalkan
Modifier.scrollable2D,Scrollable2DState, dan API pendamping untuk pembuatan status. Juga memperkenalkan fungsi ekstensi scroll umum. (Ic61c8, b/214410040) - Nilai warna 64-bit Compose tidak dapat dibandingkan secara langsung dengan
ColorLongsAndroid karena ID ruang warna tidak berurutan untuk beberapa ruang warna. Untuk mengonversi ke dan dari ruang warna Android, dua API baru ditambahkan:toColorLong()danfromColorLong(). (I36899) - Memperkenalkan
ViewConfiguration.minimumFlingVelocityuntuk memungkinkan kontrol kecepatan pelemparan batas bawah. (I11aab)
Versi 1.9.0-alpha02
7 Mei 2025
androidx.compose.ui:ui-*:1.9.0-alpha02 dirilis. Versi 1.9.0-alpha02 berisi commit ini.
Perubahan API
- Tambahkan
dialogContentTitlekeDialogProperties, yang menetapkan judul jendela konten. bf9d670
Perbaikan Bug
- Penggaris Penyisipan Jendela telah dinonaktifkan untuk sementara saat pengujian internal diperbaiki. 8d1402
- Memperbaiki cara perubahan input penunjuk ditambahkan ke
VelocityTrackerdiDragGestureNode, yang dapat dikontrol dengan flag baruisAdjustPointerInputChangeOffsetForVelocityTrackerEnabled.254ddb
Versi 1.9.0-alpha01
23 April 2025
androidx.compose.ui:ui-*:1.9.0-alpha01 dirilis. Versi 1.9.0-alpha01 berisi commit ini.
Perubahan Perilaku
- Pemeriksaan Lint yang disertakan dengan Compose kini memerlukan versi AGP minimum 8.8.2. Jika tidak dapat mengupgrade AGP, Anda dapat mengupgrade Lint sendiri dengan menggunakan
android.experimental.lint.version=8.8.2(atau versi yang lebih baru) digradle.properties. Untuk menjalankan pemeriksaan lint Compose di dalam IDE, diperlukan Android Studio Ladybug atau yang lebih baru.
Perubahan API
- Menghapus Flag untuk mengaktifkan pernyataan pelacakan untuk pelacak jalur hit (debug). (I1b2a1)
- Mengubah
InnerRectRulersdanOuterRectRulesmenjadi metode. Menghapus parameter nama dari API publikRectRulers.DerivedRulerskini menjadi opsi konstruktor untuk Penggaris Vertikal dan Horizontal.MergedHorizontalRulersdanMergedVerticalRulerstelah diganti dengan metodeminOfdanmaxOfuntuk membuat instance. (Iee89f, b/408192133) - Menghentikan penggunaan
androidx.compose.ui.LocalSavedStateRegistryOwnerdan menggantinya denganandroidx.savedstate.compose.LocalSavedStateRegistryOwner. (I5439f, b/377946781) - Menambahkan
Modifier.keepScreenOnuntuk menyetel agar layar tidak tidur saat ada (Ib5af4, b/408284174) - Menambahkan properti semantik baru
Shape, yang dapat ditetapkan saat bentuk elemen UI berbeda dari persegi panjang pembatasnya, misalnya, persegi panjang sudut bulat. (I1376f) - Memperbaiki masalah pengiriman peristiwa pointer di
AndroidViewsdan menambahkan tandaisPointerInteropFilterDispatchingFixEnableduntuk melindungi perubahan. (I0e272, b/372055500, b/408002332) FocusRestorertidak lagi menyematkan item yang sebelumnya difokuskan. Pengguna harus menggunakan kunci untuk memastikan bahwa item yang sebelumnya difokuskan memiliki hash komposisi yang sama, sehingga fokus berhasil dipulihkan. (I4203b, b/330696779)- Izinkan Penulisan untuk memicu
ViewTreeObserver.OnScrollChanged. Perilaku ini diperkenalkan dengan tandaisOnScrollChangedCallbackEnabled. Kami juga memperkenalkan fungsi ekstensiDelegatableNode dispatchOnScrollChanged. (I34b9d, b/238109286) currentCompositeKeyHashtidak digunakan lagi. Sebagai gantinya, gunakancurrentCompositeKeyHashCode. API pengganti mengenkode hash yang sama dengan lebih banyak bit, yang secara eksponensial mengurangi kemungkinan dua grup acak yang tidak terkait dalam hierarki komposisi memiliki kunci hash yang sama. (I4cb6a, b/177562901)- Project yang dirilis dengan Kotlin 2.0 memerlukan KGP 2.0.0 atau yang lebih baru untuk digunakan (Idb6b5)
- Menambahkan dukungan pemeriksaan lint untuk
FocusRequesterguna memastikan bahwa komponen tersebut diingat di dalam komposisi (I6bf91) - Menambahkan kemampuan untuk menyetel kecepatan frame pilihan atau kategori kecepatan frame pada Composable yang harus dirender (Ie5201)
- Mengekspos
MotionEventnative di Android. (I17286) - Menambahkan
getChecked() + setChecked(int), menghentikan penggunaanisChecked + setChecked(boolean)(Iaac9d) - Pengubah
graphicsLayerkini menerimablendModedancolorFilter(Iab0e6) - Menambahkan komposisi lokal
LocalResourcesuntuk mengkueri Resource. MemanggilLocalResources.currentakan merekomposisi saat konfigurasi berubah, sehingga panggilan ke API sepertistringResource()akan menampilkan nilai yang diperbarui. (I50c13, b/274786917) - Mengekspos API eksperimental untuk Composables guna menangani peristiwa sentuhan tidak langsung (Icff57)
- Rilis ini meningkatkan pelaporan pengecualian yang tidak tertangani yang terjadi selama fase tata letak dan gambar konten composable Anda. Sebelumnya, pengecualian yang tidak tertangkap di sini akan membuat pelaksana pengujian error dan mengakhiri rangkaian pengujian sebelum waktunya. Pengecualian ini kini dapat dilaporkan dengan lebih baik tanpa mengakhiri rangkaian pengujian. (I9928b, b/314128080)
- Menghentikan penggunaan API
GlobalAssertionseksperimental. Penggunaan yang dimaksudkan adalah untuk menjalankan pemeriksaan aksesibilitas, lihatenableAccessibilityChecks()untuk tujuan tersebut. (I50aa5) SemanticsNodeInteraction.performTextInputSelectiontidak lagi bersifat eksperimental dan kini mendukung parameterrelativeToOriginaltambahan yang memungkinkan Anda menerapkan pilihan ke teks asli yang tidak diubah atau teks yang diubah. (I3a905, b/261561038, b/277018945)- Memperkenalkan API untuk membuat daftar berbutir kustom melalui
AnnotatedString(I1d066, b/383269496, b/139326648) - Menghentikan penggunaan
runWithTimingDisableddan menggantinya denganrunWithMeasurementDisabled, yang lebih jelas menggambarkan perilaku - semua metrik dijeda. Selain itu, ekspos superclassMicrobenchmarkScopekarena mendeklarasikan ulang fungsirunWithMeasurementDisableduntuk membuka akses tidak mungkin dilakukan, karena fungsi tersebut inline. (I9e23b, b/389149423, b/149979716) - Memperbarui ui-tooling Devices API untuk menyertakan perangkat yang lebih baru. (Ia2ac1)
- Tambahkan Potret Tablet dalam koleksi Ukuran Layar Pratinjau untuk membantu developer mempertimbangkan jendela yang lebih besar (Ia1976)
- Memperkenalkan API nilai rekaman aktivitas untuk menandai/mencatat rekaman aktivitas dengan nilai pada waktu tertentu. Nilai rekaman aktivitas ditampilkan di Prefetto sebagai jalur baru yang dapat dilihat melalui linimasa rekaman aktivitas. Di Android, fitur ini diimplementasikan menggunakan
Trace.setCounter. (Idcf48)
Perbaikan Bug
- Memperbaiki pengiriman pengamat remember dalam komposisi yang dapat dijeda untuk menghindari pengiriman yang diingat/dilupakan dalam penerapan yang sama (I570b2, b/404645679, b/407931790)
android:dialogThemekini dapat disetel untuk mengontrol properti dialog saatdecorFitsSystemWindowsbernilai salah (I7922f, b/246909281)- Memperbaiki bug saat peristiwa gerakan apa pun yang tertangkap di luar dialog dapat menutup dialog. (Ia78fd)
- Pemeriksaan lint Compose kini memerlukan versi AGP minimum 8.8.2 dari command line, dan minimal Android Studio Ladybug untuk dukungan IDE. Jika Anda menggunakan versi AGP yang lebih lama, Anda dapat menetapkan
android.experimental.lint.version=8.8.2di gradle.properties untuk mengupgrade versi Lint, tanpa memengaruhi AGP. (I6f2a8) - Menambahkan properti semantik baru
InputTextyang merekam nilaitextfieldsebelum transformasi output diterapkan. (Iae46a, b/395911609, b/176949051) - Memindahkan API
enableAccessibilityChecks()yang mengaktifkan Pemeriksaan Aksesibilitas untuk Android ke paket terpisah, yaitucompose:ui:ui-test-accessibilityjika Anda tidak menggunakanTestRuledancompose:ui:ui-test-junit4-accessibilitysaat memanggilTestRule(I3c318, b/391560768) - Menambahkan dukungan untuk stack trace compose di
LaunchedEffectdanrememberCoroutineScope(I705c0, b/354163858)
Kontribusi Eksternal
- Mengubah fungsi eksperimental
runComposeUiTestuntuk menerima blok penangguhan. Juga menambahkan funrunComposeUiTestyang tidak digunakan lagi untuk kompatibilitas biner (I3b88c, b/361577328)
Versi 1.8
Versi 1.8.3
18 Juni 2025
androidx.compose.ui:ui-*:1.8.3 dirilis. Versi 1.8.3 berisi commit ini.
Perbaikan Bug
- Tombol untuk
isGetFocusedRectReturnEmptyEnabledtelah dihapus karena fitur ini telah diverifikasi sepenuhnya. (Ife722) - Flag
ComposeUiFlags.isGetFocusedRectReturnEmptyEnabledmemastikan bahwa jika tidak ada yang dapat difokuskan dalamComposeView, setel persegi ke nilai Kosong. Hal ini mencegah penelusuran fokus memilih Tampilan yang akan difokuskan. Hal ini sangat penting jika IME memiliki opsi BERIKUTNYA yang mungkin mencoba memfokuskan padaComposeViewdanrequestFocus()gagal. (Ibd0e2, b/369256395)
Versi 1.8.2
20 Mei 2025
androidx.compose.ui:ui-*:1.8.2 dirilis. Versi 1.8.2 berisi commit ini.
Perbaikan Bug
- Memperbaiki NPE saat dialog dihapus selama aliran peristiwa aktif pada dialog (6a7e7f)
- Memperbaiki
onLayoutRectChangeyang tidak diupdate per linimasa yang di-throttle saat update hanya menggambar terjadi. (03b82d)
Versi 1.8.1
7 Mei 2025
androidx.compose.ui:ui-*:1.8.1 dirilis. Versi 1.8.1 berisi commit ini.
Perbaikan Bug
- Memperbaiki beberapa masalah terkait
onLayoutRectChangeddanLazyLayoutd791b11 - Lewati permintaan pengukuran ulang untuk item yang telah disusun sebelumnya. Bug ini memengaruhi performa scrolling tata letak lambat karena pengambilan data tidak berfungsi secara efisien dalam beberapa kasus, pengukuran terjadi dalam frame. 742087a
Versi 1.8.0
23 April 2025
androidx.compose.ui:ui-*:1.8.0 dirilis. Versi 1.8.0 berisi commit ini.
Perubahan penting sejak versi 1.7.0
- Compose 1.8 berisi dukungan yang baru ditambahkan untuk isi otomatis semantik. Pastikan versi UI dan Foundation yang Anda gunakan adalah versi 1.8 atau yang lebih tinggi, karena pengisian otomatis untuk komponen teks memerlukan versi terbaru dari kedua modul tersebut. Untuk penggunaan dan contoh API, lihat dokumentasi isi otomatis untuk mengetahui detail selengkapnya, di sini.
- Compose 1.8 mendukung jenis respons haptik tambahan:
Confirm,ContextClick,GestureEnd,GestureThresholdActivate,Reject,SegmentFrequentTick,SegmentTick,ToggleOn,ToggleOff,VirtualKey. Hal ini dapat diakses melaluiLocalHapticFeedbackdan di Android, hal ini tersedia secara default saat Vibrator API menunjukkan bahwa haptik didukung. - Beberapa Focus API kini stabil, termasuk
Modifier.focusRestorer()danonEntersertaonExitFocusProperties(I6e667). Anda kini dapat menentukanFocusDirectionsaat memanggilrequestFocus. Kami telah menambahkan APIrequestFocus(FocusDirection)kefocusRequesterdanFocusTargetModifierNodeuntuk memungkinkan pemfokusan dengan arah tertentu. (I5d9ec][https://android-review.googlesource.com/#/q/I5d9eca3a2cd283c1b84ad6b77d929ef9a49ce4cc], b/245755256)
Versi 1.8.0-rc03
9 April 2025
androidx.compose.ui:ui-*:1.8.0-rc03 dirilis. Versi 1.8.0-rc03 berisi commit ini.
Perbaikan Bug
- Menonaktifkan beberapa perbaikan interop fokus yang menyebabkan regresi. (b9d998, b/369256395, b/378570682, b/376142752, b388590015/, b/389994198, b/391378895)
Versi 1.8.0-rc02
26 Maret 2025
androidx.compose.ui:ui-*:1.8.0-rc02 dirilis. Versi 1.8.0-rc02 berisi commit ini.
Perbaikan Bug
- Memperbaiki masalah saat tampilan yang difokuskan yang disematkan dalam hierarki Compose akan menyebabkan komposisi re-entrant saat tampilan yang difokuskan dihapus dari lazylist. (765562)
Versi 1.8.0-rc01
12 Maret 2025
androidx.compose.ui:ui-*:1.8.0-rc01 dirilis. Versi 1.8.0-rc01 berisi commit ini.
Perbaikan Bug
- Memperbaiki error saat
AndroidViewyang difokuskan dihapus dengan keyboard virtual yang aktif. (Ic725a) - Memperbaiki beberapa masalah dalam penerapan penanganan status fokus baru. (b/395895685)
- Memperbaiki masalah yang memblokir Isi Otomatis saat menggunakan
LaunchedEffectuntuk meminta fokus pada kolom teks. (b/392539099)
Versi 1.8.0-beta03
26 Februari 2025
androidx.compose.ui:ui-*:1.8.0-beta03 dirilis. Versi 1.8.0-beta03 berisi commit ini.
Perubahan API
- Memindahkan
enableAccessibilityChecks()API yang mengaktifkan Pemeriksaan Aksesibilitas untuk Android ke paket terpisah, yaitucompose:ui:ui-test-accessibilityjika Anda tidak menggunakan TestRule dancompose:ui:ui-test-junit4-accessibilitysaat memanggilTestRule(I547ef, b/391560768) - Menambahkan properti semantik baru
InputTextyang merekam nilai kolom teks sebelum transformasi output diterapkan. (Iae46a)
Perbaikan Bug
- Memperbaiki masalah yang menyebabkan layanan isi otomatis menyimpan teks output yang telah diubah, bukan teks input. (Iae46a, b/395911609, b/176949051)
Versi 1.8.0-beta02
12 Februari 2025
androidx.compose.ui:ui-*:1.8.0-beta02 dirilis. Versi 1.8.0-beta02 berisi commit ini.
Fitur Baru
- Menambahkan pemeriksaan lint untuk memperingatkan panggilan ke
Configuration#screenWidth/heightDp-LocalWindowInfo.current.containerSizedapat digunakan sebagai gantinya untuk mengambil ukuran jendela saat ini.
Versi 1.8.0-beta01
29 Januari 2025
androidx.compose.ui:ui-*:1.8.0-beta01 dirilis. Versi 1.8.0-beta01 berisi commit ini.
Perubahan API
ContextualFlowRowdanContextualFlowColumntelah ditandai sebagai tidak digunakan lagi. Komponen eksperimental ini diperkenalkan di 1.7 dan belum distabilkan, serta implementasinya dianggap tidak diinginkan. Pada masa mendatang, komponen yang menyelesaikan kasus penggunaan yang seharusnya diselesaikan oleh komponen ini dapat disediakan.FlowRowdanFlowColumnmemiliki overload eksperimental yang diperkenalkan di 1.7 yang menyertakan parameteroverflow. Penggunaan parameter ini sudah tidak digunakan lagi, dan overload tanpa parameter ini dapat digunakan sebagai gantinya. Perilaku "overflow" default untuk kelebihan beban ini adalah "Clip", seperti yang terjadi sejak diperkenalkan.- Banyak kasus penggunaan untuk
ContextualFlowRowdapat dilakukan menggunakan FlowRow, tetapi kami mengakui bahwa hal itu tidak sepenuhnya benar.ContextualFlowRowdapat diimplementasikan sepenuhnya di ruang pengguna, dan seseorang dapat mencoba menyalin implementasinya dan menyesuaikannya jika diinginkan. Pada masa mendatang, kami berharap dapat menyelesaikan kasus penggunaan ini dengan cara yang berbeda. (Ibafec)
SemanticsNodeInteraction.semanticsId()telah dihapus Sebagai gantinya, gunakanSemanticsNodeInteraction.fetchSemanticsNode().id. (Ie397a)- API isi otomatis lama tidak digunakan lagi. Gunakan API berbasis semantik baru sebagai gantinya. (I943ff)
- Menulis ulang
requestAutofillAPI agar ada di luar pengelola isi otomatis. (Id1929)
Perbaikan Bug
- Memperbaiki masalah fokus saat
requestFocus()dengan parameterpreviouslyFocusedRectyang tidak masuk akal (terkait dengan arah fokus) akan melewatiComposeView. (Ifdc2f, b/388590015) - Memperbaiki NPE sesekali saat menggunakan
GraphicsLayer.record { this@ContentDrawScope.drawContent() }. Jika Anda merekamdrawContent()dengan cara ini, pastikan untuk menggunakan fungsi ekstensiGraphicsLayer#recorddi dalamDrawScope, dan bukan fungsi anggota diGraphicsLayer. (I75fc0, b/389046242) - Memperbaiki tata letak teks dengan elipsis yang terkadang diterjemahkan secara tidak benar selama animasi. Lihat b/389707025 untuk mengetahui info selengkapnya (Ie55b1, b/389707025)
Versi 1.8.0-alpha08
15 Januari 2025
androidx.compose.ui:ui-*:1.8.0-alpha08 dirilis. Versi 1.8.0-alpha08 berisi commit ini.
Perubahan API
- Menjadikan
AutofillManagersebagai class abstrak. (I0a3b0) - Memperbaiki beberapa masalah terkait fokus, termasuk error saat IME mencoba memfokuskan
ComposeViewtanpa item yang dapat difokuskan, perubahan fokus dalamAndroidViewsturunan, dan permintaan fokus yang meninggalkanAndroidView. (Ia03c3, b/369256395, b/378570682, b/376142752) - Mengubah
FocusEnterExitScope.cancelFocus()menjadicancelFocusChange()(I89959) - Anda kini dapat menghitung oklusi Composable dengan
RectInfo.calculateOcclusions(). - Menambahkan fungsi ekstensi di
DelegatableNodeuntuk mendaftarkan pemroses perubahan tata letak global. (I68b59)
Perbaikan Bug
- Aktivitas yang digunakan sebagai host untuk composable yang sedang diuji saat menggunakan
ComposeContentTestRule.setContentkini menggunakan temaTheme.Material.Light.NoActionBar, untuk menghindariActionBartumpang-tindih dengan konten pengujian saat menargetkan SDK 35. Untuk menonaktifkan perilaku ini, Anda dapat menghapus dependensi padaui-test-manifestdan menambahkan entri aktivitas di AndroidManifest.xml aplikasi pengujian untukComponentActivitydengan tema pilihan Anda. (I7ae1b, b/383368165) - Font resource dengan setelan variasi yang sama kini akan menghindari caching berlebih yang menyebabkan setelan variasi yang salah diterapkan. (If3dff, b/372044241)
AnnotatedString.fromHtmlkini mendukung tag<ul>/<li>. (I7c2fe, b/299662276, b/139326648)
Kontribusi Eksternal
- Menambahkan antarmuka Clipboard baru dan komposisi lokal untuknya. (I80809)
Versi 1.8.0-alpha07
11 Desember 2024
androidx.compose.ui:ui-*:1.8.0-alpha07 dirilis. Versi 1.8.0-alpha07 berisi commit ini.
Perubahan API
- Mengekspos pemilik dari
LayoutNodeuntuk alat. (I26f7f) - Memiliki penggunaan lokal komposisi
LocalAutofillHighlightColorjenis Warna. (I0e05b) - Mempertahankan
UrlAnnotationyang tidak digunakan lagi dan metodenya ditandai sebagai eksperimental. (Ic0021)
Perbaikan Bug
- Memperbaiki error
IndexOutOfBoundsExceptionsaat menggunakanLinkAnnotationdi dalam composableBasicTextatau Text (be7605, b/374115892) - Memperbaiki masalah saat kolom teks yang diisi dengan bentuk kustom tidak memangkas garis indikator. (I4f87f, b/380704151)
- Memperbaiki latar belakang yang tidak ada pada screenshot panjang. (I4d57a)
- Library ini kini menggunakan anotasi nullabilitas JSpecify, yang merupakan penggunaan jenis. Developer Kotlin harus menggunakan argumen compiler berikut untuk menerapkan penggunaan yang benar:
-Xjspecify-annotations=strict(ini adalah nilai default yang dimulai dengan compiler Kotlin versi 2.1.0). (Idfef8, b/326456246) - Memperbarui dukungan Compose untuk warna gamut lebar dan HDR saat berjalan di Android Q+. (Icd8be, b/379135036)
- Font resource yang gagal dimuat kini akan kembali ke font default secara diam-diam, bukan perilaku sebelumnya yang menampilkan pengecualian dalam pengukuran. (Ib6a49)
- Memperbaiki hilangnya fokus saat
AndroidViewdilepas dan dipasang. (I53446) - Menerima
requestFocus()dari tindakan tata letak di luar batas. (Ia8461)
Kontribusi Eksternal
- Tambahkan
BringIntoViewResponderModifierNodeke UI, yang menyediakan cara baru untuk menerapkan fungsi Bring Into View serta memungkinkan penerapan di tingkat platform. (Ia6dd8)
Versi 1.8.0-alpha06
13 November 2024
androidx.compose.ui:ui-*:1.8.0-alpha06 dirilis. Versi 1.8.0-alpha06 berisi commit ini.
Perubahan API
- Menambahkan pengubah
stylusHoverIcon. (Iff20a, b/331289114) - Mengubah pengelola Isi Otomatis menjadi antarmuka. (I84914, b/376080755)
- Menambahkan
requestFocus(FocusDirection)kefocusRequesterdanFocusTargetModifierNodeuntuk memungkinkan fokus dengan arah tertentu. (I5d9ec, b/245755256) FocusProperties.enterdanFocusProperties.exittelah diganti denganonEnterdanonExit, menggunakan cakupan penerima, bukan parameterFocusDirection. (I6e667)- Menambahkan dukungan isi otomatis di toolbar teks. (Ie6a4c)
- Perubahan API untuk
Modifier.focusRestorer()(I99c03):- nama parameter diubah menjadi 'fallback'
- parameter kini berupa
FocusRequester, bukan lambda - parameter kini non-NULL dengan Default sebagai nilai default
- Menghapus anotasi
@Experimentaldari antarmuka pengelola isi otomatis. Fitur ini masih dalam proses pengembangan yang menargetkan rilis ini, tetapi kami tidak ingin memperkenalkan @Experimental API (Id8398) LocalHapticFeedbackkini menyediakan implementasiHapticFeedbackdefault saat Vibrator API menunjukkan bahwa haptik didukung. Berikut telah ditambahkan keHapticFeedbackType-Confirm,ContextClick,GestureEnd,GestureThresholdActivate,Reject,SegmentFrequentTick,SegmentTick,ToggleOn,ToggleOff,VirtualKey. Komponen yang dapat diklik lama Wear Compose sepertiButton,IconButton,TextButton, danCardkini melakukan haptikLONG_PRESSsaat handler klik lama telah disediakan. (I5083d)- Menghapus
OverscrollConfigurationdanLocalOverscrollConfiguration, serta menambahkanrememberPlatformOverscrollFactoryuntuk membuat instance / menyesuaikan parameter penerapan overscroll default. Untuk menonaktifkan overscroll, gunakanLocalOverscrollFactory provides null, bukanLocalOverscrollConfiguration provides null. Untuk mengubah warna / padding cahaya, gunakanLocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding), bukanLocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding). (Ie71f9, b/255554340, b/234451516) - Menghapus
GlobalAssertionsAPI eksperimental. Penggunaan yang dimaksudkan adalah untuk menjalankan pemeriksaan aksesibilitas, lihatenableAccessibilityChecks()untuk tujuan tersebut. (I59322)
Versi 1.8.0-alpha05
30 Oktober 2024
androidx.compose.ui:ui-*:1.8.0-alpha05 dirilis. Versi 1.8.0-alpha05 berisi commit ini.
Fitur Baru
Pengisian otomatis ditampilkan di balik tanda fitur dalam rilis ini. Kami sedang berupaya meningkatkan performa, dan mencari masukan awal tentang API. API ini diharapkan berkembang sebelum menjadi stabil berdasarkan masukan.
- Untuk mengaktifkan Isi Otomatis, setel
ComposeUiFlags.isSemanticAutofillEnabledke benar (true) dionCreatedan gunakan Snapshot Compose terbaru. - Versi Isi Otomatis ini mendukung penyimpanan kredensial secara manual, melalui Sarankan Sandi Kuat, dan melalui navigasi. Fitur ini juga mendukung pengisian saat kolom yang dapat diisi otomatis menerima fokus atau saat Isi Otomatis dipicu melalui toolbar teks pada komponen teks. Komponen akan ditandai untuk menunjukkan kapan pengisian otomatis telah selesai.
Perubahan API
- Ubah antarmuka Isi Otomatis untuk mengikuti struktur
expect/actual. (I22dce) - Memperkenalkan
CompositionLocalyang dapat digunakan untuk mengubah warna pengisian otomatis yang berhasil diisi. (I32092) - Menambahkan
Modifier.onRectChangedAPI yang merupakan API yang memungkinkan seseorang berlangganan ke posisi dan ukuranLayoutNoderelatif terhadap root/jendela/layar. API ini menyelesaikan banyak kasus penggunaan yang dilakukan oleh pengubahonGloballyPositionedyang ada, tetapi dengan overhead yang jauh lebih kecil dan API ini dilengkapi dengan fasilitas untuk menghilangkan derau dan membatasi callback sesuai dengan kebutuhan kasus penggunaan. (Id28c7, b/372765423, b/372757007, b/372994338) - Memperluas pengelola Isi Otomatis untuk menyertakan API
commit()dancancel()yang membantu pengguna menyimpan kredensial yang baru dimasukkan. (I2da00) - Memperkenalkan antarmuka
AutofillManagerbaru yang dapat digunakan untuk menyempurnakan perjalanan Isi otomatis pengguna dan tandaisSemanticAutofillEnableduntuk mengaktifkan versi baru Isi otomatis ini. (I9d484) - Menambahkan
Modifier.onRectChangedAPI yang merupakan API yang memungkinkan seseorang berlangganan posisi dan ukuran relatif root/jendela/layar dariLayoutNode. API ini menyelesaikan banyak kasus penggunaan yang dilakukan oleh pengubahonGloballyPositionedyang ada, tetapi dengan overhead yang jauh lebih kecil dan API ini dilengkapi dengan fasilitas untuk menghilangkan derau dan membatasi callback sesuai dengan kebutuhan kasus penggunaan. (I3c8fa) - Menambahkan properti semantik dan jenis data untuk dukungan Isi Otomatis yang diperluas. (I52c7d)
- Semua metode di builder
AnnotatedStringkini tidak lagi bersifat eksperimental (Ia89c8, b/261561823)
Perbaikan Bug
- Tampilan yang disematkan dalam Compose kini dapat menerima peristiwa rotasi jika difokuskan (I4d53a, b/320510084)
- Memperbaiki masalah yang menyebabkan berbagai jenis resource tidak dapat diupdate pada perubahan konfigurasi (Ia9b99, b/352336694)
- Mengatasi masalah yang menyebabkan
TextFieldtidak berfungsi dengan benar saat menggunakan Keyboard Jepang POBox di perangkat Sony lama tertentu. (Ia9b99, b/373743376) - Memperbaiki masalah dialog yang ditampilkan di bagian bawah layar, bukan di tengah (Ia2ec, b/373093006)
- Menargetkan API 35+ tidak lagi memaksa dialog agar
decorFitsSystemWindowsdisetel ke false. (Ibc94, b/364492593) - Memperbaiki error saat lapisan dipindahkan antar-jendela (misalnya, dialog dan konten utama) (I675ba, b/330955281)
Versi 1.8.0-alpha04
16 Oktober 2024
androidx.compose.ui:ui-*:1.8.0-alpha04 dirilis. Versi 1.8.0-alpha04 berisi commit ini.
Perubahan API
- Menambahkan callback
DelegatableNode#onDensityChangedanDelegatableNode#onLayoutDirectionChangeuntuk mengizinkan pembaruan status node saat status ini berubah (I04f3e, b/340662451) - Menambahkan
WindowInfo#containerSizeuntuk memberikan ukuran penampung konten jendela saat ini. Hal ini dapat diambil menggunakanLocalWindowInfo. (Idc38c, b/369334429, b/360343819) - Memperkenalkan perbaikan untuk scrollable bertingkat yang dihapus dari hierarki node selama pelemparan yang sedang berlangsung. Sekarang, node ini akan membatalkan gerakan mengayun dan mengirimkan peristiwa
onPostFlingdengan benar dengan kecepatan yang tersisa. Kami juga memperkenalkan tandaNewNestedScrollFlingDispatchingEnableduntuk mengontrol perilaku jika terjadi regresi. Bendera akan dihapus sebelum versi beta. (I05c37, b/371168883) - Memperkenalkan
PointerInputModifierNode#touchBoundsExpansion, yang dapat digunakan untuk memperbesar batas sentuh pengubah input penunjuk tunggal. (Iccf02, b/335339283) - Menambahkan
WindowInfo#containerSizeuntuk memberikan ukuran penampung konten jendela saat ini. Hal ini dapat diambil menggunakanLocalWindowInfo. (I27767, b/369334429, b/360343819) - Hapus
readOnlydariTextFields' untuk menyematkan ke versi dasar yang stabil. (I3aaba) ParagraphdanParagraphIntrinsicskini mengambil daftar semua anotasi yang diterapkan keAnnotatedString, sebelumnya hanya memiliki daftarSpanStyles(I12f80)
Perbaikan Bug
- Memperbarui cara paragraf ditangani di
AnnotatedString. Sebelumnya, Anda hanya dapat membuat paragraf yang tidak tumpang-tindih. Sekarang,AnnotatedStringmemungkinkan paragraf yang tumpang-tindih sepenuhnya yang akan digabungkan, dan paragraf bertingkat yang dalam hal ini paragraf luar akan dibagi berdasarkan batas paragraf dalam, dan gaya paragraf dalam akan digabungkan dengan gaya paragraf luar (Ic9554) - Memperbaiki error di
AnnotatedStringdenganLinkAnnotationpanjang nol. (89aac6)
Versi 1.8.0-alpha03
2 Oktober 2024
androidx.compose.ui:ui-*:1.8.0-alpha03 dirilis. Versi 1.8.0-alpha03 berisi commit ini.
Perubahan API
- Update versi Kotlin ke 1.9 (I1a14c)
- Memperkenalkan Peran Semantik baru bernama Carousel untuk meniru perilaku daftar di Pager untuk layanan a11y. (Id354b, b/354109776, b/239672673)
- Mengganti nama
invisibleToUser()menjadihideFromAccessibility. Fungsinya tetap sama. Lihat dokumentasi untuk mengetahui detail selengkapnya. (Ib43a3)
Perbaikan Bug
- Memperbarui dokumen untuk pengubah
SensitiveContent(Ib0442) - Memperbaiki masalah saat klip garis luar generik tertentu akan diabaikan jika dikombinasikan dengan bayangan elevasi di beberapa versi Android
- Memperbaiki masalah saat klip kosong diterapkan ketika klip garis batas umum ditentukan pada versi Android tertentu.
- Memperbaiki pengecualian yang terjadi saat IME aktif di View eksternal dan tindakan Berikutnya digunakan untuk memasukkan fokus pada
ComposeView. PerilakuclearFocus()selaras dengan perilaku Tampilan di API < 28, di manaclearFocus()dapat menyebabkan Tampilan default difokuskan. - Memperbaiki masalah penempatan pada node yang terlepas di
LazyListdengan memisahkan pengelolaan subkomposisi untuk berbagai penerusan tata letak. - Memperbaiki masalah saat Keyboard Software berkedip saat fokus beralih dari
TextFieldkeEditTextatau editor berbasis View lainnya. - Node Scroll Bertingkat kini akan mengirimkan peristiwa
onPostFlingdengan benar setelah dilepas. - Peningkatan performa umum
Versi 1.8.0-alpha02
18 September 2024
androidx.compose.ui:ui-*:1.8.0-alpha02 dirilis. Versi 1.8.0-alpha02 berisi commit ini.
Perubahan API
TextOverflow.StartEllipsisdanTextOverflow.MiddleEllipsiskini tersedia yang memungkinkan penempatan elipsis di awal atau tengah baris teks satu baris. (I38913, b/185418980)
Perbaikan Bug
- Memperbaiki Dalog
dismissOnClickoutside(39a3d, b/364508685) - Jangan memangkas bayangan konten dialog (e8e2f, b/363027803)
- Memperbaiki perilaku keliru saat penelusuran fokus berpindah antara Compose dan View (58377, b/350534714)
Kontribusi Eksternal
AlignmentLinesMapkini menerima jenis konkretVerticalAlignmentLineatauHorizontalAlignmentLine. (I02912)- Metode
ByteArray.decodeToImageBitmap(): ImageBitmapumum baru. (I83c21)
Versi 1.8.0-alpha01
4 September 2024
androidx.compose.ui:ui-*:1.8.0-alpha01 dirilis. Versi 1.8.0-alpha01 berisi commit ini.
Versi 1.7
Versi 1.7.8
12 Februari 2025
androidx.compose.ui:ui-*:1.7.8 dirilis. Versi 1.7.8 berisi commit ini.
Versi 1.7.7
29 Januari 2025
androidx.compose.ui:ui-*:1.7.7 dirilis. Versi 1.7.7 berisi commit ini.
Perbaikan Bug
- Memperbaiki
IndexOutOfBoundsExceptionsaat meneruskanAnnotatedStringdenganLinkAnnotationke composable Teks. (Ic96d2) - Memperbaiki masalah waktu tunggu di pengujian dalam beberapa kasus yang jarang terjadi saat
LinkAnnotationdigunakan diAnnotatedString. (I04a03)
Versi 1.7.6
11 Desember 2024
androidx.compose.ui:ui-*:1.7.6 dirilis. Versi 1.7.6 berisi commit ini.
Perbaikan Bug
- Sebelumnya, kami akan menampilkan error setiap kali kami menemukan peristiwa utama saat sistem fokus memiliki pembatalan yang tertunda. Sekarang kami mencatat error (I7ea0, b/346370327).
- Menghapus anotasi eksperimental dari
SemanticsPropertyReceiver.invisibleToUser(). Metode ini akan dihentikan penggunaannya di 1.8 dan diganti denganSemanticsPropertyReceiver.hideFromAccessibility(). (I448f0, b/376479686) - Memperbaiki masalah yang menyebabkan
TextFieldtidak berfungsi dengan benar saat menggunakan Keyboard Jepang POBox di perangkat Sony lama tertentu. (I94e0e, b/373743376) - Memperbaiki masalah aksesibilitas saat inlineContent
BasicTexttidak diumumkan olehTalkBack. (I67bcb, b/376479686)
Versi 1.7.5
30 Oktober 2024
androidx.compose.ui:ui-*:1.7.5 dirilis. Versi 1.7.5 berisi commit ini.
Perbaikan Bug
- Memperbaiki masalah saat elevasi dan pemangkasan dengan garis batas kustom tidak dirender dengan benar.
- Memperbaiki error teks yang terjadi dengan
LinkAnnotationlebar nol. (Ic1e2e) - Memperbaiki pengumuman di
Talkbacktombol saat tombol dibangun sebagai composable Text yang dapat diklik. (I1f588)
Versi 1.7.4
16 Oktober 2024
androidx.compose.ui:ui-*:1.7.4 dirilis. Versi 1.7.4 berisi commit ini.
Versi 1.7.3
2 Oktober 2024
androidx.compose.ui:ui-*:1.7.3 dirilis. Versi 1.7.3 berisi commit ini.
Perbaikan Bug
- Memperbaiki masalah saat menentukan klip garis batas generik akan menyebabkan batas klip kosong pada versi Android tertentu.
- Memperbaiki pengecualian yang terjadi saat IME aktif di View eksternal dan tindakan Berikutnya digunakan untuk memasukkan fokus pada
ComposeView. PerilakuclearFocus()selaras dengan perilaku Tampilan di API < 28, di manaclearFocus()dapat menyebabkan Tampilan default difokuskan. - Memperbaiki masalah saat
placeOrderyang salah digunakan untuk pembatalan validasi lookahead, sehingga memperbaiki kasus ekstrem saat penempatan lookahead dilewati.
Versi 1.7.2
18 September 2024
androidx.compose.ui:ui-*:1.7.2 dirilis. Versi 1.7.2 berisi commit ini.
Perbaikan Bug
- Peningkatan performa info node aksesibilitas dan peristiwa semantik dengan menghapus pelacakan panjang. (I89156, b/362530618)
ComposeViewtidak akan lagi mengalami error saat ukuran pengukuran yang sangat besar diteruskan (da5db, b/347036173)- Memperbaiki masalah pembaca layar aksesibilitas saat pengumuman
LiveRegionpada tombol tidak dibuat. (f66fa7, b/348590026)
Versi 1.7.1
10 September 2024
- Tidak ada perubahan pada artefak Android. Artefak
-desktopdihapus, dan artefak-jvmStubsserta-linuxx64Stubsditambahkan. Tidak ada target ini yang dimaksudkan untuk digunakan, target ini adalah placeholder untuk membantu upaya Jetbrains Compose.
Versi 1.7.0
4 September 2024
androidx.compose.ui:ui-*:1.7.0 dirilis.
Perubahan penting sejak versi 1.6.0
Perubahan penting dalam versi 1.7.0 dibahas dalam postingan blog ini.
Versi 1.7.0-rc01
21 Agustus 2024
androidx.compose.ui:ui-*:1.7.0-rc01 dirilis. Versi 1.7.0-rc01 berisi commit ini.
Perubahan penting
- Modul ui:ui kini mewajibkan versi minimum foundation:foundation adalah setidaknya 1.7.0-rc01 atau yang lebih baru. Hal ini diterapkan untuk mengatasi ketidakcocokan perilaku antara ui dan foundation terkait perubahan
NestedScrollSourceyang terjadi di awal selama 1.7.0-alpha01.
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
SemanticsNodeInteractionterkait input teksperformTextReplacement,performTextInput, danperformTextClearancekini akan memunculkan error pernyataan saat dipanggil padaTextFieldshanya 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
TextFieldtidak menerima input dari keyboard baru hingga fokus hilang dan didapatkan kembali. - Memperbaiki masalah saat upaya untuk 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 panjang (mis. 10 ribu karakter) (8157ab)
- Nonaktifkan dukungan rendering software untuk API
GraphicsLayer. (35ddd8) - Perbaikan untuk error dalam logika persistensi lapisan. (70b13e)
- Pengoptimalan penggunaan ulang objek lapisan dibatalkan 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.EditablemenjadiIsEditabledan mengubahSemanticsPropertyReceiver.editablemenjadi valisEditable. Properti ini sekarang berupa boolean dan selalu ditentukan oleh kolom teks. (I8acd8) - Mengganti nama parameter tolok ukur aksesibilitas. (I3d440)
- API yang diperbarui untuk menata link:
TextLinkStyleskini menjadi bagian dari konstruktorLinkAnnotationdan metodeAnnotatedString.fromHtml(I90b2b). Juga menghapusTextDefaultsdari materi (I5477b)
Perbaikan Bug
- Mengganti nama
LayoutCoordinates.introducesFrameOfReferencemenjadiLayoutCoordinates.introducesMotionFrameOfReferenceagar 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
performCustomAccessibilityActionLabelledmenjadiperformCustomAccessibilityActionWithLabel, danperformCustomAccessibilityActionWheremenjadiperformCustomAccessibilityActionWithLabelMatching. (I5387f) AnnotatedString.hasEqualsAnnotationskini menjadihasEqualAnnotations(I685c0)- Memperbarui API untuk mendapatkan link bertema Material dalam teks. Secara khusus, metode dihapus dari
TextDefaultsuntuk membuatLinkAnnotationsbertema dan mengurai HTML dengan link bertema. Sebagai gantinya, tambahkan classTextLinkStylesyang memungkinkan penataan link sebagai parameter ke composable Text. (I31b93)
Perbaikan Bug
- Memperbaiki kasus penggunaan tambahan 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 diubah.
Shape#createOutlinekini diamati di dalam lapisan grafis, sehingga membaca nilai status di dalamnya akan menyebabkan pembatalan validasi saat status berubah, sehingga memungkinkan animasi bentuk yang lebih berperforma. (Id1629, b/326070216) - Mengganti nama
isPositionedByParentWithDirectManipulationmenjadiintroducesFrameOfReference. Perhatikan bahwa sekarang efeknya terbalik, yang berarti bahwa secara default, sebagian besarLayoutCoordinatesmemperkenalkan frame referensi, dan, hanya saat ditempatkan di bawah manipulasi langsung, properti akan salah (false). Untuk mengkueri posisi hanya dengan posisi yang memperkenalkan frame referensi, gunakanpositionInLocalFrameOfReference(...). AtaupositionInLocalLookaheadFrameOfReferencedariLookaheadScope. (Ifc5f7) - API
LookaheadScopetelah dibuat stabil (I21507) - Mengubah lambda tindakan untuk
getScrollViewportLengthsesuai masukan dewan API. (Ibc74a) - Memperbarui API garis batas
GraphicsLayeruntuk menggunakan parameter float, bukan int. Menghapus nilai sentinelUnsetOffset/UnsetSize IntSizeuntuk mendukung konstanta Unspecified yang sudah ada di class inline Offset dan Size berbasis float (I2fb03, b/333863462) - Saat menyuntikkan input mouse selama pengujian,
MouseInjectionScope.click(),MouseInjectionScope.doubleClick(),MouseInjectionScope.tripleClick(),MouseInjectionScope.longClick()kini menerima parameterbutton: MouseButtonuntuk membuatnya lebih dapat diterapkan secara universal. Nilai defaultnya adalahMouseButton.Primaryuntuk semua metode. (I31a23, b/190493367, b/261439695) - Mengganti nama
onClickedmenjadionClickdi dalamLinkInteractionListener. (Iaa35c) - Mengganti nama
TextInclusionStrategy.isInsidemenjadiisIncluded. Jadikan jenis nilai yang ditampilkanParagraph/MultiParagraph#getRangeForRect()tidak nullable. (I51f26)
Perbaikan Bug
- Memperbaiki pengambilan screenshot panjang untuk penampung yang dapat di-scroll dengan
reverseScrolling=true. (I7c59c)
Kontribusi Eksternal
- Menambahkan dukungan untuk melakukan pengambilan data item di
LazyListsbertingkat (misalnya,LazyColumnyang merenderLazyRowsbertingkat). Perubahan ini diharapkan dapat mengurangi frame drop selama men-scroll untukLazyListsini. Implementasi defaultnya adalah melakukan pengambilan data terlebih dahulu untuk 2 item bertingkat pertama, tetapi perilaku ini dapat dikontrol oleh APILazyLayoutPrefetchStrategy(nestedPrefetchItemCount)danLazyListPrefetchStrategy#onNestedPrefetchbaru. (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
ClickableTextditandai sebagai tidak digunakan lagi. Untuk menambahkan link ke teks, buatAnnotatedStringdenganLinkAnnotationyang sesuai dengan link Anda dan teruskanAnnotatedStringini ke composable Teks. (I34d4b, b/323346994)- Memperkenalkan
ViewConfiguration.HandwritingGestureLineMarginuntuk gestur tulisan tangan. Mendukung gesturJoinOrSplituntukBasicTextField(Ie6e13, b/325660505) FocusProperties.enterdanFocusProperties.exittidak lagi bersifat eksperimental.FocusDirection.EnterdanFocusDirection.Exittidak lagi bersifat eksperimental.FocusRequester.Canceltidak lagi bersifat eksperimental (I461a1, b/261564106)- Saat membuat kueri koordinat Tata Letak, Anda kini dapat menggunakan argumen
excludeDirectManipulationOffsetuntuk mengecualikan set 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 diterapkan secara default). Hal ini membantu animasi berbasisapproachLayoutmenjadi lebih intuitif, yang kini memiliki peluang untuk membedakan offset yang akan dianimasikan, dan offset yang akan diterapkan secara langsung saat memutuskan untuk menganimasikan pendekatan mereka. (I60ec7) - Flag fitur untuk screenshot panjang telah dihapus. (I28648, b/329128246)
LazyColumnkini akan merender header tetap dengan benar dalam screenshot panjang. (I8d239, b/329296635)- Sumber
NestedScrollTarik dan Ayun digantikan olehUserInputdanSideEffectuntuk mengakomodasi definisi yang diperluas dari sumber ini yang kini mencakup animasi (Efek Samping) serta Roda Mouse dan Keyboard (UserInput). (I40579) ApproachLayoutModifierNodedanModifier.approachLayoutkini stabil, denganisMeasurementApproachInProgress()danisPlacementApproachInProgress()baru untuk menggantikanisMeasurementApproachComplete()danisPlacementApproachComplete()lama.- Menghapus penggubah
intermediateLayoutyang tidak digunakan lagi. (I3e91c) - Mengganti nama
GraphicsLayer#buildLayermenjadi record untuk mencerminkan metode begin/endRecording dari API yang didukung DisplayList sepertiRenderNodedan Picture. - Memperbarui
rememberGraphicsLayeruntuk memanfaatkanrememberObserver. (I312c1, b/288494724, b/330758155) UrlAnnotationtidak digunakan lagi, sebagai gantinya gunakanLinkAnnotation.Url. Jika Anda menggunakan tema Material, gunakan objekTextDefaultsuntuk membuat anotasi dengan tema Material yang diterapkan padanya (I8d180, b/323346545)- Link teks mendapatkan opsi gaya status ditekan selain gaya normal, saat dihover, dan saat difokuskan (I5f864, b/139312671)
- Mengganti nama
String.parseAsHtmlmenjadiAnnotatedString.Companion.fromHtml. (I43dcd) - Menambahkan argumen gaya (
linkStyle,focusedLinkStyle,hoveredLinkStyle) dan pemroses interaksi link ke metodeparseAsHtml. Saat mengurai string yang diberi tag HTML dengan tag<a>, metode ini akan membuatLinkAnnotation.Urluntuk setiap tag tersebut dan meneruskan objek gaya serta pemroses interaksi link ke setiap anotasi. (I7c977) LinkAnnotationkini menggunakan argumen gaya berbasis status danLinkInteractionListener. Tambahkan anotasi ini keAnnotatedStringuntuk mendapatkan hyperlink. Dengan meneruskanfocusedStatedan/atauhoveredState, Anda dapat menentukanconfigurationvisual untuk link saat difokuskan dan/atau diarahkan kursor. (I81ce4, b/139312671)ImeOptions.hintLocalestidak lagi dapat bernilai null. Jika Anda ingin meneruskan daftar Locale kosong, gunakanLocaleList.Empty. (Ic5bc4)
Perbaikan Bug
- Menangani data peristiwa input historis yang buruk/rusak dengan baik (mengabaikan data offset yang buruk).
- Memperbaiki peristiwa pointer yang tidak terduga saat pengubah input pointer ditambahkan secara dinamis sebelum pengubah input pointer lain selama aliran peristiwa input pointer aktif (misalnya, antara masuk ke hover dan keluar dari hover [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
parseAsHtmluntuk string yang diberi gaya: memungkinkan untuk mengonversi 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 dinonaktifkan secara default. Untuk memilih ikut serta, setel tandaComposeFeatureFlag_LongScreenshotsEnabledke benar (true). (I2b055, b/329296471)
Perubahan API
fun ClipEntry.getMetadata()diubah menjadival ClipEntry.clipMetadata. (I50155)- Menghapus fungsi
ClipboardManager.getClipMetadatadanClipboardManager.hasClip. GunakanclipEntry.getMetadata()untuk membaca metadata entri klip saat ini. Periksa juga hasilClipboardManager.getClipuntuk mengetahui apakah hasilnya bernilai null atau tidak, guna memahami apakah Papan Klip memiliki klip saat ini. (I50498) - Sekarang Anda dapat meneruskan objek
GraphicsLayerke fungsiplaceable.placeWithLayer()(I1b22f) ClipboardManager.setClipkini menerima null agar dapat menghapus Papan Klip. (I7d2e9)- Menambahkan ID resource untuk membantu menyembunyikan View yang digunakan sebagai detail penerapan dalam alat build (I99531)
- Menambahkan metode penangguhan
GraphicsLayer#toImageBitmapuntuk mendukung rendering konten bitmap ke dalamGraphicsLayer. Ini adalah operasi rendering yang diakselerasi hardware pada level API 22+ (inklusif) yang mendukung lebih dari 99% semua perangkat Android. Di level API Android 21, ini akan kembali ke rendering software. (I9e114) - Metode helper untuk mengonversi
RectFAndroid menjadiComposeRect(I39925, b/325660505) - Semua parameter
KeyboardOptionskini memiliki nilai yang tidak ditentukan secara default. Menambahkan metodeKeyboardOptions.merge. - Mengganti nama
KeyboardOptions.autoCorrectmenjadiautoCorrectEnableddan membuatnya nullable, dengan nilai null menunjukkan bahwa tidak ada nilai yang ditentukan. (Ia8ba0, b/295951492) - Varian
BasicTextField(state)danBasicSecureTextFieldkini menggunakanKeyboardActionHandler, bukanKeyboardActions, untuk memproses tindakan yang dilakukan oleh keyboard software. (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 API
GraphicsLayerbaru untuk merekam perintah gambar dalam daftar tampilan serta properti tambahan yang memengaruhi rendering daftar tampilan. Hal ini memberikan batas isolasi untuk membagi adegan yang kompleks menjadi bagian-bagian yang lebih kecil yang dapat diperbarui satu per satu tanpa membuat ulang seluruh adegan. Transformasi yang dilakukan padaGraphicsLayerdapat dilakukan tanpa merekam ulang daftar tampilan. Tidak sepertiModifier.graphicsLayer,GraphicsLayermemungkinkan rendering konten Composable di tempat lain dan berguna dalam kasus penggunaan animasi saat konten diharapkan dirender dalam adegan yang berbeda.
Perubahan API
GraphicsLayer.draw(Canvas)bukan lagi API publik. Sebagai gantinya, gunakan fungsi ekstensiDrawScope.drawLayer(GraphicsLayer)untuk menggambar lapisan. (I7a7c0)- Membagi
restrictedConstraints()menjadi dua metode:fitPrioritizingWidth()danfitPrioritizingHeight()(I6d7fd) - Memperkenalkan stub
HardwareCanvasuntuk penggunaan Android L (I1c3b5, b/288494724) - Perbarui framework Compose untuk mengekspos komposisi lokal
GraphicsContextbersama dengan memperbarui implementasi Pemilik,DelegateableNode, dan PengubahdrawWithCacheuntuk mengekspos akses keGraphicsContextuntuk akses yang tercakup yang akan otomatis membersihkan instanceGraphicsLayersaat Pengubah dihentikan. (I64a2f, b/288494724) - Memperkenalkan
InterceptPlatformTextInputuntuk membantu menulis pengujian terkait IME tingkat rendah dan kasus penggunaan IME tingkat rendah lainnya.PlatformTextInputTestOverridetidak digunakan lagi. (I862ed, b/322680547) - Fungsi ekstensi
GraphicsLayer.setOutline(Outline)telah ditambahkan. (Ib81f4) - Memperkenalkan konstruktor fungsi
GraphicsContextuntuk membuat factory guna membuat instanceGraphicsLayer(Ib98d6, b/288494724) - Mengekspos API
GraphicsLayeruntuk memberikan fleksibilitas yang ditentukan developer dalam merekam perintah gambar yang dapat digunakan untuk menggambar di tempat lain dan juga menerapkan efek visual yang berbeda pada hasil akhir. (I80245, b/288494724) - Memperkenalkan
Paragraph#getRangeForRectyang menampilkan rentang teks yang tercakup oleh area persegi panjang tertentu. (Iee516, b/325660505) - Menghapus penggantian eksperimental
BasicTextdengan argumenonLinkClicked. API pengganti untuk dukungan hyperlink akan tersedia pada masa mendatang. (I107d5)
Perbaikan Bug
- Menambahkan definisi API
GraphicsLayerexpect/actual untuk mendukung pengambilan dan pemutaran ulang perintah gambar dengan efek visual dan transformasi komposisi opsional. Memperkenalkan antarmukaGraphicsContextuntuk memuat dependensi grafis, termasuk pembuatan dan pengelolaan instanceGraphicsLayer. (I4a8d6, b/288494724) - Memperbaiki masalah interop dengan penelusuran fokus 1D saat fokus akan macet di dalam
ComposeViewyang disematkan di antara tampilan lain. (I08fd4)
Kontribusi Eksternal
LocalLifecycleOwnerdipindahkan dari Compose UI kelifecycle-runtime-composesehingga API helper berbasis Compose dapat digunakan di luar Compose UI. Terima kasih kepada 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 tulisan tangan stylus untuk BasicTextField2 di perangkat setelah Android U. (I002e4)
- Dalam CL ini, kita menambahkan tindakan semantik
GetScrollViewportLengthsehingga kita dapat menyalurkan informasi tentang komponen yang di-scroll di compose ke sistem A11Y. CL ini juga menerapkan penggunaan properti tersebut dalam Daftar Scrollable Foundation. (Ic5fa2) FocusRequester.createRefskini stabil (I4d92c, b/261436820)- Memperkenalkan
DelegatableNode.requireView()untuk memungkinkan node pengubah mendapatkanViewAndroid saat ini tanpa membaca komposisi lokal. (I40768) - API
Path.reverse()baru untuk membalikkan arah jalur (I36348) - Menambahkan
hintLocaleskeKeyboardOptionsuntuk memberiTextFieldskemampuan untuk memberi petunjuk IME dengan lokalitas tertentu untuk menyetel bahasa pilihan. - Ekspos properti
platformLocaledariLocaleyang menampilkan objek platform pokok, misalnyajava.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
ContextualFlowRowdanFlowRow/Columnyang ditingkatkan dengan MaxLines dan Overflow. Dengan senang hati kami mengumumkan peningkatan padaFlowRowdanFlowColumneksperimental, yang kini menampilkan dukungan maxLines dan overflow, bersama dengan debutContextualFlowRowdanContextualFlowColumn. Pembaruan ini dirancang untuk menyediakan komponen yang optimal untuk performa, denganContextualFlow*sangat cocok untuk sejumlah besar item yang menggunakan konfigurasimaxLineskecil dan tombol lihat selengkapnya dinamis +N, sertaFlowRowdanFlowColumnsangat cocok untuk sejumlah kecil item, kurang dari 100 item. Penting: Untuk mempertahankan perilaku yang ada diFlowRowatauFlowColumntempat semua item disusun terlepas dari apakah item tersebut sesuai dengan maksimum sumbu silang, tetapkanoverflowkeFlowRowOverflow.VisibleatauFlowColumnOverflow.Visibleselama inisialisasi. JelajahiContextualFlowRowSampledanFlowRowSampleuntuk melihat contoh cara kerja fitur baru ini. (Ib9135, b/293577082) - Menambahkan properti semantik
maxTextLengthyang harus ditetapkan pada kolom teks yang memfilter jumlah karakter maksimum yang diizinkan. (I24d9f, b/170648072) - Wrapper
Modifier.inspectabletidak digunakan lagi. API ini akan membuat lebih banyak pembatalan validasi pengubah daripada yang diperlukan, sehingga penggunaannya kini tidak disarankan. Developer dianjurkan untuk menerapkan metodeinspectableProperties()padaModifierNodeElementjika mereka ingin mengekspos properti pengubah ke alat. (Ib3236) - Konstruktor baru untuk
PopupPropertiesyang memungkinkan kontrol penuh atas tandaWindowManager.LayoutParams. (Ibb33e, b/312485503) - Memperkenalkan
DelegatableNode.requireLayoutCoordinates()sebagai cara untuk mendapatkanLayoutCoordinatesModifier.Nodesaat ini tanpa perlu menggantionPlaceddan menyimpan koordinat dalam properti sendiri. (Ia8657) - Memperkenalkan
DelegatableNode.currentLayoutCoordinatessebagai cara untuk mendapatkanLayoutCoordinatesModifier.Nodesaat ini tanpa perlu menggantionPlaceddan menyimpan koordinat dalam properti sendiri. (Iaebaa) BasicTextField2dan API terkait di bagian paketandroidx.compose.foundation.text2dipindahkan keandroidx.compose.foundation.text. (I9f635)- Menambahkan API
ApproachLayoutModifierNodebaru untuk mendukung pembuatan logika pendekatan kustom di Node Pengubah eksplisit. Menambahkan jugaDeferredTargetAnimationAPI eksperimental baru untuk animasi yang targetnya tidak diketahui saat instansiasi. (I60745) - API
Pathbaru untuk membuat kueri arah Jalur dan mengekstrak kontur dariPath. (I63d04) - Menambahkan
PathHitTestdanPath.contains(Offset)untuk memeriksa apakahPathberisi titik tertentu. (I3b218) TextLayoutResultkini mengekspos metodegetLineBaseline(lineIndex). Hal ini memungkinkan untuk membaca garis dasar dari baris teks arbitrer selain properti kemudahan yang ada, yaitufirstBaselinedanlastBaseline. (Ide4e8, b/237428541)- Menambahkan metode untuk membandingkan hanya anotasi dua
AnnotatedStrings. (I32659)
Perbaikan Bug
- Memperbaiki masalah kompatibilitas mundur dengan
SemanticsPropertyReceiver.performImeActiondanSemanticsActions.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
- Memperbaiki masalah kompatibilitas biner dengan
SemanticsPropertyReceiver.performImeAction. (I65865, b/322269946) - Konstruktor
PopupPropertiesyang menggunakan parameterusePlatformDefaultWidthtidak lagi bersifat eksperimental. (I8f8d2) - Menambahkan kelebihan beban
ComposeTestRule.waitUntilyang 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
originalEventPositiondari metode salin di API publikPointerInputChange. (I7bead)
Perbaikan Bug
- Memperbaiki bug aksesibilitas yang memungkinkan elemen non-tab dan non-tombol pilihan dapat diklik saat dipilih. (I2181c)
VelocityTrackerkini akan memiliki perbaikan untuk menambahkan poin secara default. Perbaikan masih dapat dinonaktifkan dengan menyetelVelocityTrackerAddPointsFixke salah (false) jika ada masalah. (Ib3877, b/269487059)- Memperbaiki inkompatibilitas biner mundur di
TextStyledanParagraphStyle. (I179f0, b/320819734)
Kontribusi Eksternal
- Menambahkan konstruktor
DialogPropertiesbaru tanpa parameter khusus platform. (I45829) - Menambahkan konstruktor
PopupPropertiesbaru 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
ClipboardManagerdengan menambahkanClipEntrydanClipMetadatauntuk mendukung konten arbitrer seperti gambar. - Menambahkan API
DeviceConfigurationOverridekeui-testuntuk memungkinkan penggantian perilaku konten yang sedang diuji secara lokal, seperti untuk menentukan ukuran, lokalitas, arah tata letak, skala font, atau tema yang tersedia.
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 kurang dari tabel terendah yang ditentukan. Dalam hal ini, kita sekarang menginterpolasi antara skala 1x linear dan tabel terendah yang ditentukan, sehingga ukuran font meningkat secara monoton seiring peningkatan 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
BasicTextFieldyang 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.performImeActiondanSemanticsActions.PerformImeAction. (Ie0bb2, b/322269946) - Tata letak kini mengeluarkan error saat mengukur jika salah satunya menampilkan ukuran yang sangat besar. Jenis error ini biasanya terjadi saat pengukuran menggunakan batasan maksimum secara langsung tanpa memeriksa
Constraints.Infinity. Pemeriksaan ini akan membantu developer menemukan masalah pada 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 penerapan grafis 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
LayoutCoordinateskini dapat dilepas tanpa node dilepas. Lindungi dari hal tersebut di Layout Inspector Compose (If693)
Perbaikan Bug
PlatformImeOptionskini merupakan class konkret, bukan antarmuka. (If40a4)- Memperbaiki rekomposisi hilir tambahan yang disebabkan oleh
LocalSoftwareKeyboardControllerdanLocalTextInputServiceyang diberi nilai baru setiap kali rekomposisi root. (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
DragAndDropTargetkini menggunakanDragAndDropTargetpenerima secara eksplisit dan memiliki lambda untuk ikut serta dalam sesi tarik lalu lepas. Sekarang ada dua fungsi factory untukDragAndDropModifierNode. Satu untuk menerima transfer dan satu untuk mentransfer data (I69481) - Memperbarui
maximumFlingVelocityagar direpresentasikan sebagai Float. Memperbarui dokumentasi agar lebih jelas tentang kesatuanmaximumFlingVelocity. (I8adc7) onDragAndDropStartdi factoryDragAndDropModifierNodetelah diganti namanya menjadiacceptDragAndDropTransfer.acceptsDragAndDropTransfertelah ditambahkan ke PengubahdragAndDropTargetuntuk menerima dari sesi tarik lalu lepas. Lambda ini menampilkanDragAndDropTargetyang layak jika tertarik dengan sesi tarik lalu lepas. Lambda lain untuk memproses peristiwa penarikan telah digantikan oleh lambda ini. Fungsi factoryDragAndDropTargettelah ditambahkan untuk menerima dari sesi tarik lalu lepas (Iebf3a)Menghapus
DragAndDropInfosebagai jenisDragAndDropModifierNode.dragkini menggunakan parameter untuktransferData, ukuran dekorasi, dan lambdaDrawScopedekorasi penarikanDragAndDropTargetmemiliki metode untuk peristiwa tarik lalu lepas tertentu, bukan satu metode abstrakonDragAndDropEventdalam fungsi factory untukDragAndDropModifierNodetelah diganti namanya menjadionDragAndDropStartuntuk mengomunikasikan dengan lebih baik bahwaDragAndDropTargetyang diberikan hanya valid untuk sesi tarik lalu lepas tertentuDragAndDropEventTypetelah dihapus (I645b1)Mengganti nama
PlatformTextInputModifierNode.runTextInputSessionmenjadiestablishTextInputSession. (I03cd0)Meningkatkan nama API node yang dapat dilalui agar lebih mudah dipahami. (Ia4474)
Ganti
OriginalTextdenganTextSubstitution. (Ifa5a8)Mengganti nama
PlatformTextInputModifierNode.textInputSessionmenjadirunTextInputSession. (Ie9c6b)Turunan
SubcomposeLayout(dan tata letak sepertiLazyColumnberdasarkan tata letak tersebut) yang dipertahankan untuk digunakan kembali pada masa mendatang dianggap tidak aktif. API pengujianassertIsDeactivated()baru diperkenalkan untuk menguji node tersebut. API pengujian lainnya akan memfilter node yang dinonaktifkan secara default. (I2ef84, b/187188981)Menghapus
FocusDirection.IndanFocusDirection.Out, gunakanFocusDirection.EnterdanFocusDirection.Exitsebagai gantinya (I2f660)API
SwipeToRevealMaterial (untuk Kartu dan Chip) kini mengandalkan API berbasis slot (seperti yang direkomendasikan oleh Compose) dan bukan instance berbasis class data untuk membuat slot tersebut. Ini adalah perubahan yang dapat menyebabkan gangguan. Lihat demo dan contoh kode untuk mengetahui contoh cara menggunakan API baru. (Ia8943)Konstruktor
FontStyle(int)tidak digunakan lagi. Sebagai gantinya, gunakanFontStyle.NormalatauFontStyle.Italic. (I66610)Mengganti nama antarmuka
FontScalablemenjadiFontScaling(Ie804a)
Perbaikan Bug
SoftwareKeyboardController.show()tidak akan lagi menampilkan keyboard virtual jika tidak ada editor teks yang difokuskan. (I2165a, b/301477279)- Peristiwa tombol hardware Up untuk tombol yang belum menerima peristiwa Down di Compose View yang sama kini akan diabaikan. (Ib37b4, b/305518328)
- Menambahkan dukungan perender untuk Gradien Sapu di
ArcLine. (I4d5bb) - Terapkan equals dan hashcode untuk
PageSize.Fixed. (Ie3ede, b/300134276) - Memperbaiki masalah kompatibilitas biner dengan perubahan Inset Jendela (Iee695)
- Menghapus lapisan inti materi untuk Chip/Tombol Material3 karena tolok ukur mikro menunjukkan performa yang lebih baik tanpa lapisan tersebut. (I55555)
TestDispatcheryang diteruskan sebagaieffectContextke pengujian Compose kini akan digunakan untuk membuat pengujian dan clock 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
- Lambda
Modifier.dragAndDrawSourceyang bernamaonDrawDragShadowtelah diganti namanya menjadidrawDragDecorationdan parameter ukuranDragAndDropInfotelah diganti namanya menjadidragDecorationSize. (Id0e30, b/303904810) - Memperkenalkan
SemanticsNodeInteraction.isDisplayed()danSemanticsNodeInteraction.isNotDisplayed()untuk memeriksa apakah node yang cocok terlihat atau tidak tanpa juga menegaskannya. (I2c196, b/302100809) - Memperkenalkan nilai
Unspecifiedkhusus untuk kolomTextAlign,TextDirection,Hyphens, danLineBreakdariParagraphTextStyleuntuk menggantikannull. Karena class ini adalah class inline, dengan mengganti nullable dengan Unspecified, kita menghindari boxing jenis primitif. Konstruktor, pengambil, dan metode lainnya dalam gayaTextStyledan Paragraf diperbarui untuk menerima parameter yang disebutkan sebagai jenis non-null. (I4197e, b/299490814) - Menambahkan penggantian
GoogleFontuntuk membacaGoogleFontdari XML. (If8f59) - Mengubah
LoremIpsumPreviewParameterProvidermenjadi kelas terbuka. (I41bf5, b/266918816, b/300116360)
Perbaikan Bug
FontFamilyResolversekarang menggunakanDispatchers.Mainuntuk coroutine pengelolaan cache. (Ie8dd9)AndroidViewBindingkini menghapus instanceFragmentyang di-inflate secara serentak dengan menyertakanFragmentContainerViewdalam tata letak sebagai bagian darionReleasemenggunakancommitNow(bukancommityang digunakan sebelumnya), sehingga memperbaiki masalah metode Live Edit dengan mengganti komposisi saat terjadi 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
PlatformTextInputMethodTestOverrideuntuk menulis pengujian bagi editor teks kustom. (Id159b) - Menambahkan Pengubah
dragAndDropSourceuntuk memulai sesi tarik lalu lepas, dan PengubahdragAndDropTargetuntuk menerima dari sesi tarik lalu lepas. (Ib7828, b/286038936) - Menambahkan koleksi
ColorListdanColorSetyang menghindari alokasi. (I744bd) - Menambahkan tanda sementara
DisableNonLinearFontScalingInComposeuntuk menonaktifkan penskalaan font non-linear. SetelDisableNonLinearFontScalingInCompose = truedalam pengujian Anda jika Anda memerlukan waktu untuk membersihkannya. Flag ini akan dihapus di Compose 1.6.0-beta01. (Ic9486)
Perbaikan Bug
- Penguraian vector 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 pohon pengubah atas/bawah guna menemukan node 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=trueke definisiPreviewScreenSizes(Ib61d3)
Perubahan Perilaku
- Compose kini menggunakan penskalaan font non-linear untuk meningkatkan keterbacaan dan aksesibilitas. Jika skala font > 100% di setelan sistem, ukuran teks kecil akan bertambah secara normal, tetapi ukuran teks yang sudah besar hanya akan bertambah sedikit. Selain itu, tinggi baris yang ditentukan di SP akan otomatis disesuaikan agar tetap proporsional dengan tinggi yang dimaksudkan pada skala 100%. Lihat Praktik Terbaik Penskalaan Font untuk mengetahui 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 gerakan menggeser pada komponen View seperti
ScrollViewdanRecyclerViewdibatasi padaViewConfiguration.ScaledMaximumFlingVelocity. Compose kini berisi versimaximumFlingVelocitysendiri yang kini berlaku untukDraggable. (Ibf974) - Menambahkan struktur awal untuk mendukung API tarik lalu lepas platform. (If84ce)
- Menambahkan
deviceIdkeRotaryScrollEvent(Iba3bf) - Mengupdate
ui-toolingDevices 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 tetap mempertahankan posisi node. Komposisi yang dinonaktifkan dapat diaktifkan kembali dengan memanggilsetContent. (Ib7f31) - Menambahkan antarmuka
ReusableCompositionuntuk mengelola siklus proses dan penggunaan ulang subkomposisi. (I812d1, b/252846775) Modifier.focusGrouptelah dipromosikan menjadi API stabil. (I7ffa3)- Menambahkan anotasi androidx ke berbagai API grafis untuk menentukan
ColorInt,FloatRange,IntRange,Size, dan lainnya. (I70487, b/290950582) - Memperbarui
ColorFilterAPI agar memiliki jenis subclass konkret untuk meningkatkan kemampuan inspeksi parameter. (I5fe29) - Memperkenalkan library wear-tooling-preview untuk mencantumkan perangkat Wear yang valid yang dapat digunakan untuk pratinjau UI (Ib036e)
- Membuat antarmuka
FontScalableuntuk menangani bagian penskalaan font dari antarmuka Kepadatan. (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 yang menganimasikan selama animasi masuk & keluar. Fungsi dan antarmuka Composable
LookaheadScopekini stabil. (Ifb2ce) - Menambahkan dukungan untuk mengonfigurasi
privateImeOptions(Idb772)
Perbaikan Bug
PopupPositionProvider.calculatePositionkini akan otomatis memperbarui posisi pop-up saat status yang dibaca dalam perhitungan diubah. (I676a1, b/292257547)- Memperbaiki kolom teks yang menampilkan keyboard dan dapat diedit saat
readOnlybernilai benar (true). Juga memperbaiki keyboard yang tidak ditampilkan saatreadOnlydiubah dari benar (true) menjadi salah (false) 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 layanan yang dapat diterapkan oleh penerap Komposisi yang memungkinkan penerapan Komposisi yang mendelegasikan pencarian layanan delegasi komposisi lain ke Komposisi asli. Fungsi ini tidak boleh dipanggil secara langsung dan digunakan untuk memungkinkan pembuatan API eksperimental di runtime yang dapat ditemukan dari versi composer yang di-wrap seperti yang dilakukan modul UI. (I296b9)
- Mendesain ulang API
PlatformTextInput*sepenuhnya. (I6c93a, b/274661182, b/267235947, b/277380808) SoftwareKeyboardControllerdanLocalSoftwareKeyboardControllertidak lagi bersifat eksperimental.LocalSoftwareKeyboardControllersekarang juga merupakanCompositionLocalyang tepat. (I4c364)LookaheadLayoutdanLookaheadLayoutScopetelah tidak digunakan lagi selama beberapa rilis dan kini dihapus. API pengganti adalahLookaheadScopeyang dapat berfungsi dengan Tata Letak apa pun. (I12ac3)- Menambahkan
SemanticsNodeInteraction.requestFocussebagai cara yang lebih mudah dan dapat ditemukan untuk meminta fokus dalam pengujian. (Ie8722) - Menambahkan API eksperimental untuk mendaftarkan pernyataan global, untuk digunakan oleh framework pengujian pada masa mendatang. (I12d77)
Perbaikan Bug
- Pemanggilan pertama callback
updateAndroidViewkini akan ditangguhkan hingga tampilan dilampirkan, bukan berjalan saat komposisi yang memperkenalkanAndroidViewditerapkan. Perbaikan ini mengatasi bug yang menyebabkan callbackupdatetidak dibatalkan jika status yang dibacanya segera diubah oleh 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
- Mendukung lihat ke depan di
LazyList. Hal ini memungkinkanLazyListdalam tahap lookahead untuk melewati animasi apa pun (misalnya, animasi penempatan item,AnimatedVisibility, dll.) dan menghitung ukuran dan posisi lookahead untuk semua turunan. Setelah meneruskan lookahead, turunanLazyListdapat dianimasikan secara independen ke realitas seperti yang terlihat dalam penerusan lookahead.
Perubahan Perilaku: includeFontPadding kini 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 atas baris pertama dan baris terakhir teks atau tidak untuk mengakomodasi karakter apa pun yang mungkin melampaui atau berada di bawah garis dasar teks.
Memperbarui versi Compose ini akan mengubah cara semua teks dirender di UI Anda dengan menghapus padding tambahan di atas baris pertama dan baris terakhir setiap teks yang Anda tampilkan.
Bergantung pada persyaratan UI dan metrik font yang Anda gunakan, perubahan yang diperlukan akan minimal. Namun, Anda mungkin mengalami penghambat seperti: - Pengujian screenshot yang rusak. Perbaiki UI jika diperlukan, dan buat ulang golden image. - Teks sedikit tidak sejajar. Hapus padding negatif kustom atau tambahkan padding jika diperlukan.
Anda dapat memilih untuk mengaktifkan includeFontPadding dengan menggunakan PlatformTextStyle untuk setiap teks:
Text(
text = myText,
style = TextStyle(
lineHeight = 2.5.em,
platformStyle = PlatformTextStyle(
includeFontPadding = true/false
)
/* … */
)
)
Anda dapat memilih untuk menggunakan includeFontPadding untuk semua teks dengan mengonfigurasi gaya Material Anda. 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 informasi selengkapnya tentang Compose includeFontPadding di dokumentasi developer dan postingan blog ini.
Jika Anda mengalami masalah/bug terkait perubahan ini, laporkan bug menggunakan pelacak masalah.
Perubahan API
- Mendukung
InputConnection#requestCursorUpdates(I0c69b) - Menambahkan
FocusRequester.saveFocusedChilddanFocusRequester.restoreFocusedChild(Ic557e, b/272302679, b/275157318) - Tambahkan jenis
ResourceResolutionExceptionuntuk membungkus throwable yang dilempar saat mencoba memuat aset bitmap dengan deskripsi jalur aset yang gagal dimuat. (I19f44, b/230166331, b/278424788) - Aksesibilitas yang dioptimalkan untuk performa dan alokasi memori. (Iede48)
- Menambahkan properti dan tindakan semantik untuk mendukung terjemahan teks. (I4a6bc)
- Properti baru di
IntrinsincMeasureScopedan implementasinya (misalnyaMeasureScope) untuk menunjukkan apakah proses pengukuran saat ini adalah proses pratinjau. (I7a812) - Memperbarui API
DrawScopeuntuk memperkenalkan kemampuan menargetkan ulang rendering ke kanvas lain dengan kepadatan/arah tata letak dan ukuran alternatif. - Memperbarui
DrawContextuntuk mendukung konfigurasi kepadatan dan arah tata letak serta membuat kanvas dapat dikonfigurasi. (Ie1f9b, b/225408150) - Menambahkan
Paragraph#fillBoundingBoxesuntuk menghitung kotak pembatas karakter. (If30ee) - Menambahkan sekumpulan
MultiPreviewsumum (Ia5a27)
Perbaikan Bug
- Menambahkan antarmuka
FocusTargetModifierNodeyang dapat digunakan untuk membuatFocusTargetkustom. (I9790e) - Mengganti nama parameter
fallback*pada konstruktorTextMeasurermenjadidefault*. (I940a5) - Mengganti nama
SemanticsPropertyReceiver.performImeActionmenjadionImeAction, danSemanticsActions.PerformImeActionmenjadiOnImeAction. (I8e841) - Menambahkan Roda untuk membedakan scroll mouse dari penarikan dalam scrolling bertingkat (khususnya, di
NestedScrollConnection). (Ie57e4) - Menambahkan
asComposePaintAPI untuk menggantikantoComposePaintkarena objek yang ditampilkan membungkusandroid.graphics.Paintasli (I22b4c) - Menghentikan penggunaan
SemanticsProperties.imeActiondan menggantinya dengan parameter baru keSemanticsActions.performImeAction. (I4a587) - Menambahkan dukungan untuk pemilihan dengan mouse. Pilihan berbasis sentuhan akan diperluas menurut kata, dan diperkecil menurut karakter. (Ic0c6c, b/180639271)
- Metode
Paragraphyang dulu menampilkanAssertionErroruntuk offset di luar batas kini menampilkanIllegalArgumentExceptionseperti 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)
TextFieldterkadang salah menerapkan perintah sebelumnya saat memfokuskan dan memasukkan input Korea, sehingga 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 mengatasi error saat API scroll aksesibilitas diakses dari thread latar belakang.
- Memperbaiki node yang tidak terlampir 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
readOnlybernilai benar (true). Juga memperbaiki keyboard yang tidak ditampilkan saatreadOnlydiubah dari benar (true) menjadi salah (false) 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
SubcomposeLayoutdigunakan 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 Popup yang dapat menyebabkan jendela turunan tidak diubah ukurannya 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
asComposePaintAPI untuk memungkinkan penggunaan instanceandroid.graphics.Paintyang akan digunakan di Compose
Perbaikan Bug
- Menambahkan
asComposePaintAPI untuk menggantikantoComposePaintkarena objek yang ditampilkan membungkusandroid.graphics.Paintasli (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 fun
CacheDrawModifierNode()bantuan untuk mengizinkan delegasi (Icf8f9) - Memperkenalkan properti
isLookingAhead, yang dapat diakses dariMeasureScope, untuk mengamati hasil lihat ke depan dan memengaruhi lintasan utama jika diinginkan. (Ibf4c3) - Properti semantik baru
traversalIndex, float yang digunakan untuk mengurutkan ulang node dalam traversalTalkBack(nilai yang lebih rendah didahulukan). (I9a81b, b/186443263) - Mengganti nama properti Semantik
isContainermenjadiisTraversalGroup(I121f6) ColorProducerkini memilikioperator fun invoke, bukanproduce(I4a9a2)- Menambahkan API transformasi
Pathuntuk menerapkan transformasi terjemahan/skala/rotasi ke objek jalur. (I23434, b/233772232) - Metode
ColorProducerdisebutproduce. (I78bde) - Mengganti nama
toFrameworkColorSpacemenjaditoAndroidColorSpace(I4f547) - Mengganti nama
ColorLambdamenjadiColorProducer. (I73b1a) - Memperkenalkan API untuk mengonversi antara jenis ruang warna Android dan Compose. (Ie7db4, b/279979665)
- Menambahkan parameter warna ke
BasicTextuntuk memungkinkan animasi atau setelan warna teks yang efisien. (Iffd88, b/246961787) - Mengganti nama
TextRange.constrainmenjadiTextRange.coerceIn. (I31be2) - Menambahkan
TextStyle.merge(...)yang dioptimalkan dengan daftar parameter lengkap. (Iad234, b/246961787) - Menstabilkan banyak Text API yang mencakup
Brush,DrawStyle,TextMotion,DrawScope.drawText,Paragraph.paint(Brush),MultiParagraph.paint(Brush). (I2f740, b/261581564, b/261581931, b/261561245) PlatformTextStyle.includeFontPaddingtidak lagi tidak digunakan. Awalnya kami ingin menghapus kolom tersebut, tetapi masukan menunjukkan bahwa developer memerlukan opsi konfigurasi ini. Oleh karena itu, menghapus penghentian penggunaan dari kolom (I98e96, b/277703184)- Menambahkan metode
TextRange.constrainpublik. (I97912) UrlAnnotationdalamAnnotatedStringkini dapat dibuka melalui layanan aksesibilitas sepertiTalkBack. (If4d82, b/253292081)- Menambahkan tindakan semantik
InsertTextAtCursoruntuk kolom teks. (I11ed5) - Konstruktor
LineHeightStyle.Alignment(topRatio)dipromosikan menjadi API stabil. (I79c32, b/261565383) TextMeasurerdan API terkait tidak lagi bersifat eksperimental. (I74647, b/261581753)- Menambahkan tindakan semantik
PerformImeActionuntuk memanggil tindakan IME pada node editor teks. (Ic606f, b/269633506) PlatformTextInputAPI tidak lagi bersifat eksperimental untuk Android. (I668eb)- Nama parameter nilai untuk
Enum.valueOfberubah (Ia9b89) - lebih banyak pengecualian yang ditampilkan dari enum valueOf (I818fe)
- Memperkenalkan API
PlatformTextInputAdaptertingkat rendah baru untuk membuat implementasi input teks kustom yang berinteraksi langsung dengan API platform. (I58df4) - Menambahkan parameter
BlendModeke metodeDrawScope.drawText,Paragraph.paint, danMultiParagraph.paintuntuk mendukung berbagai algoritma pencampuran saat menggambar teks di Canvas. (I57508) - Mengganti nama
Font.MaximumAsyncTimeoutmenjadiFont.MaximumAsyncTimeoutMillis. Hanya mengganti nama. (I07af5) - Memperbarui nilai DPI perangkat referensi
@Preview(Id6151, b/254528382) - Menambahkan parameter
brush,alphakeBasicTextuntuk memungkinkan animasi atau setelan kuas teks yang efisien. - Menentukan jenis lambda bebas kotak untuk Float, Double, Long, Int, Short di :ui:ui-unit (I6f18d, b/246961787)
Perbaikan Bug
- Menghapus beberapa alokasi dalam pelacakan kecepatan penunjuk (I26bae)
- Mengurangi alokasi dalam pengelolaan tata letak dan input pointer (I5333a)
- Mengoptimalkan penggunaan memori Vector dan rendering frame pertama (I2f3c6)
- Menghapus alokasi saat menggambar garis dan titik dengan Canvas (I9f535)
- Menambahkan dokumen untuk
AndroidFont.fontVariationSettings(I7d9e2)
Kontribusi Eksternal
- Peningkatan performa dan pengurangan 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
Modifier.NodePeningkatan Delegasi Menambahkan kemampuan yang ditingkatkan untuk mendelegasikan ke instanceModifier.Nodelain dariDelegatingNode. Hal ini dapat dilakukan dengan APIdelegatedanundelegate. 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 kecuali jikaDelegatingNodesecara eksplisit menggantikannya. (67352bc)
Perubahan API
- Memperkenalkan
NestedScrollModifierNode,NestedScroll Modifier.Nodeyang dapat didelegasikan. (I69513) - Menambahkan parameter
onResetdanonReleaseke composableAndroidViewBinding, yang mencerminkan composableAndroidViewdan memungkinkan dukungan untuk penggunaan ulang View denganViewBinding. (I00b1e, b/276802519) - Mengupdate Compose Path API untuk mendukung operasi mundur guna mendukung kasus penggunaan manipulasi Path yang sering dengan penggunaan ulang yang lebih cepat. (I7b797)
- Menambahkan
TextStyle.merge(...)yang dioptimalkan dengan daftar parameter lengkap. (Iad234, b/246961787) - Menstabilkan banyak Text API yang mencakup
Brush,DrawStyle,TextMotion,DrawScope.drawText,Paragraph.paint(Brush),MultiParagraph.paint(Brush). (I2f740, b/261581564, b/261581931, b/261561245) PlatformTextStyle.includeFontPaddingtidak lagi tidak digunakan. Awalnya kami ingin menghapus kolom tersebut, 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 ditampilkan untuk kolom teks di 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
SubcomposeLayoutdiLookaheadScope:SubcomposeLayoutsyang tidak memiliki slot bersyarat (misalnyaTabRow,Scaffold,BoxWithConstraints, dll.) kini berfungsi dengan baik dengan animasi lihat ke depan.
Perubahan API
intermediateMeasurePolicydefault baru yang menggunakan kembali kebijakan pengukuran dari penerusan lookahead memungkinkan subjenisSubcomposeLayouttanpa slot bersyarat sepertiScaffold,TabRow, danBoxWithConstraintsberfungsi 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. Artinya, jendela yang terkait dengan aktivitas yang dihentikan akan terus merekomposisi untuk perubahan data, tetapi animasi, atau pemanggilwithFrameNanoslainnya, akan diblokir. (Id9e7f, b/240975572) - Mengubah
motionEventSpymenjadi stabil. (Ic5ec4, b/261560988) - Menambahkan metode
TextRange.constrainpublik. (I97912) PlatformTextStyle.includeFontPaddingtidak lagi dihentikan untuk mendorong developer menggunakan API kompatibilitas ini untuk mengalihkan dan menguji setelanincludeFontPaddingsalah (false). (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
- API
SubcomposeLayoutbaru yang mengambil kebijakan pengukuran menengah tambahan untuk menangani logika pengukuran/tata letak selama animasi berbasis lihat ke depan. (I017d3) - PointerInput kini bersifat lazy 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 untuk membuat instance
SuspendingPointerInputModifierNodeuntuk penerapanModifier.Nodeyang lebih kompleks. (Ic4933) UrlAnnotationdalamAnnotatedStringkini dapat dibuka melalui layanan aksesibilitas sepertiTalkBack. (If4d82, b/253292081)- Menambahkan API untuk mencegat tombol hardware sebelum dikirim ke keyboard software (I4f4c6, b/186800395)
- Menambahkan tindakan semantik
InsertTextAtCursoruntuk kolom teks. (I11ed5) - Tindakan pengujian terkait teks (misalnya,
performTextInput) kini akan meminta fokus secara langsung, menggunakan tindakan semantik, bukan mengklik kolom. (I6ed05)
Perbaikan Bug
- Tindakan pengujian teks kini memerlukan kolom teks untuk 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 kini tidak memerlukan LookaheadScope eksplisit. Blok pengukuran di intermediateLayout memiliki IntermediateMeasureScope sebagai penerima, yang menyediakan CoroutineScope, LookaheadScope, dan MeasureScope yang mudah.(Ibe2e5)
- LookaheadLayout telah diganti dengan LookaheadScope, yang bukan lagi Layout. Hal ini memungkinkan konten anak dalam LookaheadScope dikontrol langsung oleh MeasurePolicy induk. (Ibe2e5)
- Menambahkan
Modifier.Node#coroutineScopeuntuk mengizinkan Modifier.Nodes meluncurkan coroutine. (I76ef9) - Izinkan Modifier.Nodes membaca CompositionLocal dengan menerapkan antarmuka CompositionLocalConsumerModifierNode. (Ib44df)
- Penerapan 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 saat
AndroidViewmungkin 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 di properti masuk/keluar fokus kustom yang hanya menjalankan blok masuk/keluar saat lambda dipanggil pertama kali (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
AndroidViewtidak menggunakan kembali pengubahnya dengan benar, yang berpotensi menyebabkan perilaku dan error yang tidak terduga. (Ib67ee, b/275919849) - Memperbaiki regresi saat keyboard tidak ditampilkan untuk kolom teks di 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
ParentDataModifieryang 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
PinnableContainerAPI 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.NodeAPI eksperimental baru. (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589) - Menambahkan properti semantik
IsContainerdi 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 perilakuTalkBacksaat 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
TextMotioneksperimental keTextStyleuntuk menentukan Teks menjadiStatic(default)atau Animasi. GunakanTextMotion.Animatedjika 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. Hal ini memungkinkan instance View digunakan kembali saat nodenya dalam komposisi dibuang dan digunakan kembali dengan cara yang kompatibel. Hal ini sangat berguna untukLazyRowsdanLazyColumnsTampilan. (I3f10d, b/230099236) - Memperkenalkan API
PlatformTextInputAdaptertingkat rendah baru untuk membuat implementasi input teks kustom yang berinteraksi langsung dengan API platform. (I58df4)
Perbaikan Bug
- Tindakan semantik
SetTextBasicTextFieldkini akan memperbarui buffer teks menggunakan jalur kode yang sama dengan pembaruan IME dan fungsi pengujian (misalnya,performTextReplacement). - Fungsi pengujian teks
performTextClearance,performTextReplacement, danperformTextSelectionkini 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 dariModifierNodeElementsecara langsung. (I2256b) - Menambahkan callback
Modifier.Node.onReset()baru yang memungkinkan Anda mereset beberapa status lokal untuk menangani kasus dengan benar saatLayoutakan digunakan kembali (misalnya sebagai itemLazyColumn). MemperbaikiFocusTargetModifierNodesehingga mereset status yang difokuskan dengan benar. (I65495, b/265201972) - Menambahkan parameter
BlendModeke metodeDrawScope.drawText,Paragraph.paint, danMultiParagraph.paintuntuk mendukung berbagai algoritma pencampuran saat menggambar teks di Canvas. (I57508)
Perbaikan Bug
- Algoritma urutan fokus aksesibilitas ditingkatkan, misalnya, kolom atas/bawah lebih sering dibaca terlebih dahulu/terakhir (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, danwaitUntilDoesNotExistsebagai API eksperimental keComposeTestRule, memperluaswaitUntilAPI untuk menerima pencocok dan jumlah node apa pun. LihatComposeTestRuleuntuk dokumentasi lebih lanjut. (Ifa1b9, b/226934294) - Mengganti nama
Font.MaximumAsyncTimeoutmenjadiFont.MaximumAsyncTimeoutMillis. (I07af5) - Menghapus
GoogleFont.Provider.AllFontsListUridan 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
runComposeUiTestdan fungsicreate*ComposeRuleyang menerima parameterCoroutineContext. Konteks akan digunakan untuk komposisi pengujian serta panggilanLaunchedEffectdanrememberCoroutineScope()dalam komposisi. (I10614, b/265177763) - Menambahkan API baru untuk melacak kecepatan 1 dimensi (If5a82)
FocusRequestersekarang ditandai sebagai@Stable. (I580ee)- Menghapus anotasi eksperimental dari konstruktor
DialogPropertiesyang 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.hasStringAnnotationsuntuk meng-kueri anotasi dengan alokasi nol. (I94dfe, b/246960758) - Menambahkan overload baru untuk fungsi
TextMeasurer.measureyang menggunakanStringsebagai teks. (I47b2d, b/242705342) LineBreakdanHyphensAPI di TextStyle kini menjadi stabil. (Ic1e1d)
Kontribusi Eksternal
- Metode
notifyFocusedRectdiTextInputSessiondanTextInputServicetidak 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
PinnableContainerAPI 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.NodeAPI eksperimental baru. (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589) - Menambahkan properti semantik
IsContainerdi 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'ssaat 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
TextMotioneksperimental keTextStyleuntuk menentukan Teks menjadiStatic(default)atau Animasi. GunakanTextMotion.Animatedjika Text akan diskalakan, diterjemahkan, atau diputar melalui animasi. (I24dd7)
Perubahan API
- Mengganti argumen
maxSize: IntSizedidrawTextdengansize: Sizeagar selaras dengan fungsiDrawScopelainnya.sizedisetel keSize.Unspecifiedsecara default yang tidak akan mengubah perilaku default sebelumnya. (Icd27d) - Menghapus konstruktor font eksperimental yang tidak digunakan lagi. (I8a724, b/261435386)
- Class data alat UI
Groupkini memiliki kolom,isInline, yang menunjukkan apakah grup tersebut untuk panggilan ke fungsi composable inline. JikaisInlineadalahtrue, 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)
FontVariationAPI sekarang stabil (I8779f, b/241016309)- Semua konstruktor
Font()kini menjadi API stabil (I5948b, b/261435386) DeviceFontFamilyNamekini stabil (I8b640, b/261435386)- Konstruktor
AndroidFontdenganvariationSettingskini merupakan API stabil, dan dapat digunakan untuk membuat jenis deskripsi font baru. (I5adcc, b/261565807) createFontFamilyResolverAPI kini stabil. Ini dapat digunakan untuk menangkap pengecualian yang tidak tertangkap selama pemuatan font asinkron. (Ibb481, b/261435386)Font.loadingStrategyAPI kini stabil. (I5937c, b/261435386)GoogleFontAPI kini stabil. (Ic90b0, b/261435386)TextUnit(float, TextUnitType)sekarang menjadi API stabil. (I90c84, b/261561612)pluralStringResourcesekarang 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
ExperimentalComposeUiApidariPointerIcon(I23af8) - Memperkenalkan tindakan aksesibilitas Halaman:
PageUp,PageDown,PageLeft,PageRight. Perhatikan bahwa ini hanya tersedia dari API 29. (Ida4ab) - Memperbarui tampilan parameter
rememberNestedScrollConnectiondari tampilan root ke tampilan host. (Ia5200) - Menambahkan Modifier API untuk melakukan kueri info scroll ancestor. (I2ba9d, b/203141462)
- Digunakan di
Clickableuntuk menunda interaksi tekan dengan benar, saat gestur dapat menjadi peristiwa scroll. - Memperbaiki
Clickablesyang 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.AlwaysmenjadiOffscreenuntuk menunjukkan bahwagraphicsLayerakan selalu dirender menjadi buffering perantara (I47dc1) - Kelebihan tata letak dengan beberapa slot konten kini stabil (I10566, b/248294649)
- Menambahkan API baru eksperimental
PerfettoTrace.record {}danPerfettoTraceRuleuntuk 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
withFrameNanostidak 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 memanggilwithFrameNanosatauwithFrameMillissecara 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) -> Unitopsional ke konstruktorTestMonotonicFrameClockdan 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
@Previewuntuk dukungan warna dinamis (I9f512)
Perbaikan Bug
- Notifikasi penerapan snapshot sekarang dikirim setelah
Recomposerselesai menerapkan perubahan. (Iad6c0, b/222093277) - Memperkenalkan perubahan dalam
captureToImageuntuk 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
GraphicsLayerScopeuntuk mengekspos ukurangraphicsLayersaat ini. Hal ini berguna untuk menghitung transformasigraphicsLayersebagai fungsi ukuran Composable. (If8c43,b/181387080) - Memperkenalkan
CompositingStrategyuntuk 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, tempatModulateAlphaakan menghindari penggunaan buffering di luar layar dan sebagai gantinya akan memodulasi setiap petunjuk gambar yang direkam dalamgraphicsLayer. PenggunaanModulateAlphaakan tetap memanfaatkan buffering di luar layar untuk penggunaanRenderEffect/Overscroll(I25e82, b/256382834) invalidateSubtree()telah ditambahkan keModifier.Nodeuntuk memungkinkan pembatalan seluruh hierarki tata letak dan gambar. (I4bd90)- Mempromosikan
rememberNestedScrollInteropConnectionke 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
ObserverNodeyang dapat digunakan oleh implementasiModifier.Nodeyang perlu diberi tahu saat nilai yang sebelumnya dibaca telah berubah (I5728b, b/247716483) - Menambahkan konstruktor baru ke
Paintyang menerimaandroid.graphics.Paintnative. Juga menambahkan fungsi ekstensitoComposePaint()yang mengonversi objek Paint native yang ada menjadi Compose Paint. (Ica91b) - Menambahkan
FontFamily.Resolver.resolveAsTypefacebaru untuk digunakan di Android. (I8950b) - Menambahkan
ToolingStateuntuk mengizinkan alat mengubah status internal Composable (Ie6614) - Memfaktorkan ulang alat agar memiliki dukungan yang lebih baik untuk animasi baru yang ditambahkan (I8677b)
- Menambahkan parameter
minLineske dalam material dan material3 Text,TextField, danOutlinedTextFieldyang 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 dalamAwaitPointerEventScopesehingga 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
DrawStylesebagai atribut Eksperimental keTextStyledanSpanStyleuntuk mengaktifkan gambar teks yang digarisbatasi. (If24b8, b/155421273) AnnotatedString.Buildersekarang mengimplementasikankotlin.text.Appendable. (I1a061, b/231030444)AnnotatedString.Buildersekarang memiliki metodeappend(AnnotatedString, start: Int, end: Int)untuk menambahkan substringAnnotatedStringdan gaya yang berpotongan.- Menambahkan parameter
DrawStyleke fungsi gambarParagraphdanMultiParagraphyang memungkinkan gambar teks yang digarisbatasi. (Ic8102, b/155421273)
Kontribusi Eksternal
- Terima kasih kepada
vighneshkarena 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
DeviceFontFamilyNametidak akan mengonfigurasi setelan variasiwghtdanitalsecara default, melainkan menggunakan setelan platform untukTypefaceyang dimuat. (Ia7a6d, b/246989332) - Memperbaiki kebocoran memori
LazyColumn-onModifierLocalsUpdatedtidak 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:IntSizedenganconstraints: Constraintsdalam metodeTextMeasurer.measureuntuk mendukung batasan lebar minimum. (I37530, b/242707525)
Perbaikan Bug
BackHandlerAPI 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.IndanFocusDirection.Outtidak digunakan lagi dan diganti denganFocusDirection.EnterdanFocusDirection.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.Canceluntuk membatalkan pemindahan fokus.FocusRequester.Canceldapat 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(…): Modifierabstract class ModifierNodeElementabstract class Modifier.Nodeabstract class DelegatingNodeinterface LayoutModifierNodeinterface DrawModifierNodeinterface SemanticsNodeinterface PointerInputNodeinterface ModifierLocalNodeinterface ParentDataModifierNodeinterface LayoutAwareModifierNodeinterface GlobalPositionAwareModifierNodeinterface 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
painterResourcetidak dapat diupdate pada perubahan konfigurasi (I58e73, b/228862715) rememberTextMeasurertidak lagi menggunakan parameterFontFamily.Resolver,Density, atauLayoutDirection. Gunakan konstruktorTextMeasureruntuk memberikan nilai kustom untuk parameter ini. (Ia1da3)- Menambahkan properti
DialogProperties.decorFitsSystemWindowsuntuk 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.Settingadalah antarmuka tertutup, untuk mengizinkan API pembatasan di masa mendatang. (I11021, b/143703328)- Menambahkan
CompositionGroup.findParameterskeSlotTree.kt. Hal ini memungkinkan alat mengambil parameter untukCompositionGrouptanpa 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
LayoutCoordinatesdiPlacementScope. Ini memungkinkan developer mengetahui tempat tata letak saat ini untuk menempatkan turunan relatif terhadap posisinya. (I5482b, b/238632578) - Ditambahkan
LayoutCoordinates.transformFromuntuk mendapatkan transformasi Matriks dari satuLayoutCoordinateske sisi lain. (Ic5ab1, b/238632578) - Menghentikan penggunaan
SemanticsModifier.iddan 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.Settinguntuk mengonfigurasi font variabel pada perangkat O+. (I11a9d, b/143703328) - Menambahkan
FontVariationAPI untuk menentukan dan menggunakan font variabel. (I3c40c, b/143703328) - Konstruktor
LineHeightStyle.Alignmentkini 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
PlatformTextStyledanLineHeightStyle. (I64bef) - Menghentikan penggunaan
TextInputService.show|hideSoftwareKeyboard. Sebagai gantinya, gunakanSoftwareKeyboardControllerdalam kode aplikasi danTextInputSessiondalam kode pengelolaan IME. (I14e4c, b/183448615) - Menambahkan API baru untuk jenis animasi yang ada (I26179)
Perbaikan Bug
- Menambahkan
@RequiresPermissionke API yang memerlukan pemberian izinPOST_NOTIFICATIONSdi 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#pressureuntuk mengambil tekanan. (I45a5e, b/205164819) - Menambahkan
rememberTextMeasureruntuk membuat dan mengingat instanceTextMeasurerdengan mudah dalam komposisi. (I8d66e) Rect,RoundRect, danMutableRectkini mendukung sintaksisinKotlin 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
KeyInjectionScopeuntuk menyertakan akhiran 'Millis' dengan satuan konstanta dan parameter tersebut adalah milidetik. (Iabef5) - Menambahkan metode
toStringForLog()keEditCommanduntuk membantu memecahkan masalah pengeditan teks. (I53354, b/228862731) - Menambahkan fungsi ekstensi
drawTextpadaDrawScopeuntuk memberikan cara menggambar teks multigaya pada composable dan pengubah yang beroperasi diDrawScopesepertiCanvasdandrawBehind. (I16a62, b/190787898) - Memperkenalkan API eksperimental baru bernama
TextMeasureryang memungkinkan komputasi tata letak teks arbitrer yang membuat hasil identik padaBasicText, terlepas dari apa pun nilai runtime Compose. (I17101) - Menambahkan
mapTreekeSlotTree.kt. Hal ini memungkinkan alat untuk memeriksaSlotTreetanpa 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
MultiPreviewdari library. (I85699, b/233511976)
Perbaikan Bug
- Saat menambahkan peristiwa
InputEventChangeke 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.toUpperCasesaat 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
LookaheadLayoutbaru 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.SubcomposeLayoutsbelum didukung, tetapi akan ada dalam rilis mendatang. (I477f5)- Menambahkan parameter alfa opsional ke ragam Brush
TextStyledanSpanStyleuntuk mengubah opasitas seluruhText. (Ic2fac, b/234117635) - Memperkenalkan jenis anotasi
UrlAnnotationdan metode terkait untuk mendukung dukungan linkTalkBackdiAnnotatedString. (I1c754, b/231495122) - Memindahkan fungsi utilitas ke runtime (I4f729)
Perbaikan Bug
TextLayoutResult.getLineForOffsettidak ditampilkan. (Idc5d6, b/235876324)
Kontribusi Eksternal
- Menambahkan API baru
WindowInfo.keyboardModifiersuntuk 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
BeyondBoundsLayoutcore API baru - API penyesuaian perilaku baru di
FocusOrderdanFocusProperties - 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
KeyInjectionScopeuntuk 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,isCtrlDownuntuk memeriksa apakah tombol kontrol ditekan. LihatKeyInjectionScopeuntuk dokumentasi tentang setiap fungsi. (I9f6cd, b/229831515) OverscrollEffecteksperimental telah diperkenalkan untuk memungkinkan efek overscroll kustom, bersama overloadModifier.scrollableyang menerimanya.LocalOverScrollConfigurationeksperimental telah dipindahkan darifoundation.gestureke 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
pressKeyTimessertaisCapsLockOndan 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
performKeyInputuntuk mengirim peristiwa tombol, atau kirim melalui propertikeydariMultiModalInjectionScopeselama gestur input multi-modal denganperformMultiModalInput. LihatKeyInjectionScopeuntuk dokumentasi API. (Ic5000, b/229831515) - Menambahkan
GoogleFont.Provider.AllFontsListUribaru 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
InputEventChangeke 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 Boundskini 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.Resolvertelah ditimpa. (I4609d) - Menekan tombol hapus maju saat kursor berada di akhir kolom teks tidak akan lagi error.
DeleteSurroundingTextCommanddanDeleteSurroundingTextInCodePointsCommandsekarang 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.DisposeOnDetachedFromWindowIfNotInPoolingContainertelah diganti namanya menjadiDisposeOnDetachedFromWindowOrReleasedFromPooluntuk 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
BeyondBoundsIntervaleksperimental yang dapat digunakan oleh implementasi kustomLazyListsaat menata tata letak item di luar batas yang terlihat (Ifabfb, b/184670295) - Versi dengan kunci
Modifier.composedkini menjadi API stabil (Ie65e4, b/229988420) - Menyederhanakan
rememberNestedScrollConnectionAPI untuk menggunakan lokal komposisi guna mendapatkan informasi tampilan saat ini (I67ca7) - Anotasi
@ComposableTargetdan anotasi yang ditandai dengan@ComposableTargetMarkerkini 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:UiComposableakan mendeklarasikan bahwa semua fungsi@Composablemenargetkan 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 ComposeUiTestdanfun 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 AndroidComposeUiTestdanfun runAndroidComposeUiTest(block: AndroidComposeUiTest.() -> Unit)khusus Android ditambahkan untuk memberikan akses ke Aktivitas yang mendasarinya, mirip denganAndroidComposeTestRule. Untuk kontrol lebih, Anda dapat membuat instanceclass AndroidComposeUiTestEnvironmentsendiri.Implementasi Desktop adalah
class DesktopComposeUiTest, tetapi tidak ada fungsi run khusus Desktop yang ditawarkan saat ini.Memigrasikan pengujian dari
ComposeTestRulekeComposeUiTestdapat 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,
ComposeContentTestRuledanComposeTestRuletidak diperluas dariComposeUiTest, yang berarti fungsi ekstensi diComposeUiTestbelum dapat dipanggil di antarmukaTestRule. SaatComposeUiTestmenstabilkan API,ComposeContentTestRuledanComposeTestRuleakan diubah untuk memperluas dariComposeUiTest. (Ib4e90)LineHeightBehaviordiganti namanya menjadiLineHeightStyleLineVerticalAlignmentdiganti namanya menjadiLineHeightStyle.AlignmentLineHeightTrimdiganti namanya menjadiLineHeightStyle.TrimNilai konstruktor default dari
LineHeightStyledihapus (I582bf, b/181155707)Menambahkan
BrushkeTextStyledanSpanStyleuntuk memberikan cara menggambar teks dengan pewarnaan gradien. (I53869, b/187839528)Atribut
trimFirstLineTop,trimLastLineBottomdariLineHeightBehaviordiubah menjadi satu enum:LineHeightTrim.LineHeightTrimmemiliki nilai 4 status yang ditentukan oleh dua boolean:FirstLineTop,LastLineBottom, Both, dan None (Ifc6a5, b/181155707 )Menambahkan
LineHeightBehaviorkeTextStyledanParagraphStyle.LineHeightBehaviormengontrol 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,trimLastLineBottomhanya berfungsi dengan benar saatincludeFontPaddingbernilai salah (false). (I97332, b/181155707)Fungsi
PlatformParagraphStyle.lerpdanPlatformSpanStyle.lerpdiubah menjadi fungsi tingkat atas (I9a268)
Perbaikan Bug
- Dokumentasi
PointerInputChange::copykini menyatakan dengan benar bahwa ini adalah shallow copy. (I182f5) - Mendukung elipsis jika tinggi terbatas dan tidak sesuai untuk semua baris teks (Ie528c, b/168720622)
includeFontPaddingdefault diaktifkan. Anda dapat menonaktifkanincludeFontPaddingmenggunakan 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
pluralStringResourceditandai sebagai eksperimental untuk memungkinkan evolusi mendukung internasionalisasi yang lebih baik di masa mendatang. (If24e4) - Paragraph dan MultiParagraph kini menerima parameter Constraints. Meneruskan
Constraints.maxHeightadalah 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 menggunakanisConsumeduntuk menentukan apakah orang lain sudah pernah memakai perubahan tersebut sebelumnya. PointerInputChange::copy()kini selalu membuat shallow copy. Ini berarti bahwa salinanPointerInputChangeakan dipakai setelah salah satu salinan tersebut digunakan. Jika Anda ingin membuatPointerInputChangeyang 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 testTagsAsResourceIdbaru, 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)
AndroidFontkini 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
consumeWindowInsetsdariComposeViewmemungkinkan developer menonaktifkan pemakaian AndroidWindowInsets. Hal ini memungkinkanComposeViewsterpisah dalam hierarki untuk menerapkanWindowInsetstanpa mengganggu satu sama lain. (I0ef08, b/220943142) - Menambahkan
KeyboardType.Decimalsebagai alternatif untukKeyboard.Numbersecara khusus termasuk pemisah desimal di IME. (Iec4c8, b/209835363) PointerEventType.ScrolldanPointerEvent.scrollDeltasekarang 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.Resolveruntuk 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
includeFontPaddingdi TextStyle/ParagraphStyle.includeFontPaddingdapat 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.isAvailableOnDeviceuntuk bantuan proses debug. (I64e31) - Menambahkan konstruktor
GoogleFont.Provideruntuk digunakan dengan@ArrayRes. (Ic5ee1, b/225984280) Compose GoogleFontkini 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
RequestFocusuntuk meminta fokus pada target yang dapat difokuskan. (I17b71) - Memperbarui penguraian vektor drawable untuk mendukung pencerminan otomatis untuk membalik konten
VectorPainterjika arah tata letak saat ini adalah RTL. (I79cd9, b/185760237) Mengupdate warna bayangan/suasana menjadi parameter tambahan
Modifier.graphicsLayeruntuk kompatibilitas API (I3f864, b/160665122)Menambahkan implementasi default ke warna bayangan/suasana di
GraphicsLayerScopeuntuk memastikan perubahan API yang tidak akan menyebabkan gangguan.Menambahkan waktu peristiwa ke peristiwa RSB. (Ief8ae)
FocusOrdersekarang telah digabungkan keFocusPropertiesdanfocusProperties()sekarang memiliki semua kemampuanfocusOrder().FocusOrderdanfocusOrder()tidak digunakan lagi.focusOrder()yang menerimafocusRequesterharus diganti dengan pengubahfocusRequester()yang dikombinasikan denganfocusProperties(). Hal ini memungkinkan pengubah memiliki pemisahan fokus yang lebih kuat. (I601b7)Mengupgrade
RecyclerViewdanComposekini akan menghasilkan performa scroll yang jauh lebih baik untuk RecyclerViews dengan tampilan Compose sebagai turunan.Menambahkan
ViewCompositionStrategy.Defaultsebagai 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
ambientShadowColordanspotShadowColorkeGraphicsLayerScope. (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
TextToolbarkini 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.onPlaceddan antarmukaOnPlacedModifierkini stabil. (Ib5482)- Hore! Animasi Compose sekarang mendukung setelan 'Animator duration scale' dari Opsi Developer. (I5a4fc, b/161675988)
- Menambahkan pengubah
BeyondBoundsLayoutlokal (If8b51, b/184670295) - Teks: includeFontPadding kini dinonaktifkan secara default. Masalah
pemotongan akibat
includeFontPadding=falseditangani dan tidak ada pemotongan yang harus dilakukan untuk skrip yang tinggi. (I31c84, b/171394808)
Perbaikan Bug
ComposeContentTestRule.setContentsekarang akan menampilkanIllegalStateExceptionjika 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, danComposableOpenTargetyang 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
ComposeNodeatau fungsi composable terkait.Untuk applier kustom, fungsi composable yang memanggil
ComposeNodeatauReusableComposeNodeperlu menambahkan anotasiComposableTargetuntuk fungsi dan jenis parameter lambda composable. Namun, sebaiknya buat anotasi yang dianotasikan denganComposableTargetMarker, lalu anotasi yang ditandai akan digunakan sebagai gantiComposableTargetsecara langsung. Anotasi composable yang ditandai denganComposableTargetMarkersetara denganComposbleTargetdengan 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)FontLoadingStrategysekarang menjadi API stabil. (I1ee35, b/174162090)Mendukung pemuatan font asinkron di Text (I77057, b/214587005)
Menambahkan bridge API untuk mengonversi
Font.ResourceLoaderkustom menjadiFontFamily.Resolver. (Ia0060)
Perbaikan Bug
FontFamily.Resolveryang disediakan akan diteruskan ke subkomposisi seperti Popup.Font.ResourceLoaderyang 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
notifyFocusedRectdiTextInputSessiondanTextInputServicekini tidak digunakan lagi dan tidak akan dipanggil. Sebagai gantinya, gunakanBringIntoViewRequester. (Ia4302, b/192043120, b/216842427, b/178211874) - Memperkenalkan metode
destroyDisplayListDatapada class stubRenderNode(I1e659, b/216660268) - Menambahkan api baru yang memungkinkan pengukuran awal turunan
SubcomposeLayoutyang dikomposisi sebelumnya. (I857ea) Menambahkan
movableContentOfyang 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
movableContentOfdipanggil 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)FontFamilyResolverkini tersedia melaluiLocalFontFamilyResolver.currentMenambahkan
createFontFamilyResolver(context)dancreateFontFamilyResolver(context, coroutineScope)untuk membuat resolver FontFamily baru di luar penggunaan compose.Paragraph dan MultiParagraph sekarang menggunakan
FontFamily.ResolverTextLayoutResult.layoutInput.fontFamilyResolverkini berisi resolver yang digunakan untuk tata letak ini,TextLayoutResult.layoutInput.resourceLoadertidak 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.preloadFontFamilyResolver.setAsyncLoadContextmemungkinkan 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.ResourceLoadeduntuk mendukung pemuatan font opsional dan asinkron. Sebaiknya developer aplikasi tidak menggunakan API ini secara langsung. Untuk menambahkan jenis font baru, lihatAndroidFont.Fungsi ekstensi
Font.AndroidResourceLoadermemungkinkan konstruksiFont.ResourceLoadersaat berada di luar komposisi.Menambahkan parameter
loadingStrategyke 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): Typefacetidak 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
SubcomposeLayoutStateyang menerimamaxSlotsToRetainForReusekini 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
Colorsebagai API non-eksperimental. Ruang warna Oklab kini menjadi API publik. (I08fb6, b/180731008)AndroidComposeTestRule.AndroidComposeStatementtidak 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.resolvemenampilkanState<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
FontLoadertidak digunakan lagi - Factory
createFontFamilyResolverbaru 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.createLifecycleAwareRecomposereksperimental (I0cde6)
Kontribusi Eksternal
PointerEvent.scrollDelta.ysekarang 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.canLoadSynchronouslytidak digunakan lagi. Properti ini tidak memiliki arti semantik. (Ica5ef)- Menambahkan kolom identitas ke
CompositionDatauntuk 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
NullPointerExceptiondiandroidx.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.composedeksperimental yang menerima kunci untuk membandingkan kesetaraan dan pemenuhan syarat guna melewati pengoptimalan. (Ice799, b/205851704) ComposeNotIdleExceptionsekarang diperluas dariException, bukan langsung dariThrowable. Perlu diperhatikan bahwa perubahan ini berarti klausa tangkapan yang menangkapExceptionsekarang 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.TouchdanMultiModalInjectionScope.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
durationMillisdiTouchInjectionScope.swipeWithVelocitysekarang 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
BringIntoViewAPI 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
ExperimentalComposeUiApidariViewRootForInspectordanLayoutInfo.ownerViewId(I5c2e3) - Overload tanpa turunan untuk Tata Letak telah ditambahkan, dengan peningkatan efisiensi (Ib0d9a)
- Menghapus
InternalCompilerApidari metode Composer yang harus dipanggil lintas modul (I1aa0b) SemanticsNodeInteraction.performSemanticsActionsekarang menampilkanSemanticsNodeInteractiontempat fungsi dipanggil. (I9e5db)- Menambahkan LocalInputModeManager CompositionLocal untuk mendeteksi TouchMode/NonTouchMode. (I6a83c, b/175899786)
- Menambahkan
viewConfiguration: ViewConfigurationkeLayoutInfoagar konsumen mendapatkan nilai yang tepat untuk hal-hal seperti waktu tunggu gestur tekan lama. (I76ca6)- Menambahkan
viewConfiguration: ViewConfigurationkeInjectionScopeguna 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.statetidak digunakan lagi dan diganti denganRecomposer.currentStateuntuk 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) InjectionScopekini mengimplementasikanDensitysehingga Anda dapat mengonversi px dan dp dengan mudah diperformTouchInputdan 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: DensitydanlayoutDirection: LayoutDirectiontelah ditambahkan keLayoutInfo. Ini memungkinkan konsumenLayoutInfomenafsirkan dimensi dan posisi yang diekspos diLayoutInfodengan benar. (I002f1)- Menambahkan dukungan eksperimental untuk memasukkan peristiwa mouse. Gunakan
performMouseInputuntuk mulai mengirim peristiwa mouse, atau kirim peristiwa mouse melalui propertiMousedariMultiModalInjectionScopeselama gestur input multi-modal denganperformMultiModalInput. LihatMouseInjectionScopeuntuk 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
PointerEventsekarang memilikiPointerEventTypeuntuk 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)
performGesturedanGestureScopetidak digunakan lagi, telah diganti denganperformTouchInputdanTouchInjectionScope. (Ia5f3f, b/190493367)- Menambahkan
touchBoundsInRootkeSemanticsNodetermasuk 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
performTouchInputdanTouchInjectionScopesebagai penggantiperformTouchInputdanTouchInjectionScope, sehingga mempermudah modalitas lain (seperti mouse).TouchInjectionScopememiliki metode yang sama denganGestureScope, dengan pengecualianmovePointerTodanmovePointerBy, yang telah diganti namanya menjadiupdatePointerTodanupdatePointerBy. Semua metode lainnya sama.Perilaku
TouchInjectionScopehampir 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,
TouchInjectionScopememperkenalkan 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-alpha03agar bergantung pada Kotlin1.5.30. (I74545)
Perubahan API
- Menambahkan
Modifier.inspectableuntuk menggabungkan pengubah lainnya. (I1909b, b/191017532) - Menambahkan
BlurredEdgeTreatmentAPI 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.graphicsLayeruntuk 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, danhasScrollToKeyActionsekarang 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
performGestureakan 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.bringIntoViewsekarang menerima persegi panjang sebagai parameter yang memungkinkan kita menampilkan bagian composable (Ice2c5, b/194330245)AnimatedImageVectordan API terkait kini berada dalam modulandroidx.compose.animation:animation-graphicsbaru. (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.advanceEventTimeuntuk 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
usePlatformDefaultWidthke salah (false) untuk mengganti perilaku ini. (Iffaed, b/192682388) - Memindahkan
InfiniteAnimationPolicyke :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
usePlatformDefaultWidthke 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-toolingdanui-tooling-preview(Iefa28, b/190649014)
Perubahan API
- Menghapus
FocusManager#moveFocusIndanFocusManager#moveFocusOuteksperimental yang tidak digunakan lagi (I227d7, b/170154986, b/186567354, b/168510304) - Canvas sekarang mendukung parameter contentDescription untuk aksesibilitas. (Ib547c)
useDefaultMaxWidthdiPopupPropertiesdiganti 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
@Previewkini menyediakanLocalActivityResultRegistryOwneryang memungkinkan Anda melihat pratinjau Composable yang menggunakan API sepertirememberLauncherForActivityResult()yang bergantung pada pemilik yang ada. (Ib13d1, b/185693006) - Compose
@Previewkini menyediakanLocalOnBackPressedDispatcherOwneryang memungkinkan Anda melihat pratinjau Composable yang menggunakan API sepertiBackHandleryang bergantung pada pemilik yang ada. (Ia1c05, b/185693006)
Perbaikan Bug
- Memindahkan
InfiniteAnimationPolicykeandroidx.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.txtyang berada disrc/mainatau 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, danPuntuk 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.SlotTableakan 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(): BooleanpadaLayoutNodememiliki 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
Hmenunjukkan bahwa metode ini adalah metode "hot", dan harus dikompilasi sebelumnya.Metode yang memiliki flag
Smenunjukkan 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
Pmenunjukkan 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
NestedScrollSourcedigantikan 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
@ExperimentalComposeUiApidariPopupProperties. (I01fa6) PointerTypediubah 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
KeyboardTypedigantikan oleh class inline. (I73045, b/187055290) - Mengganti enum
FocusStatedengan antarmukaFocusState(Iccc1a, b/187055290) - Enum ImeAction digantikan oleh class inline. (I18be5, b/187055290)
PlaceholderVerticalAligndikonversi menjadi class inline. (If6290)- TextUnitType sekarang menjadi class inline. (I4cba9)
- Fungsi
AnnotatedString.withAnnotationsekarang 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, dandetectHorizontalGesturessekarang 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
ViewRootForInspectoryang akan digunakan dalam pemeriksa (Ib70df ) SubcomposeLayoutStatesekarang 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
FocusDirectiondigantikan 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)
TextGeomerticTransformdanTextDecorationpadaAnnotatedStringakan 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)
@ComposeCompilerApitidak lagi@RequiresOptIn(Iab690)- Menambahkan API aksesibilitas CollectionInfo dan CollectionItemInfo yang memungkinkan penandaan koleksi beserta itemnya untuk layanan aksesibilitas (Id54ef, b/180479017)
- Menambahkan
SemanticsActions.ScrollToIndexuntuk men-scroll daftar dengan item yang diindeks ke item dengan indeks tertentu, danSemanticsProperties.IndexForKeyguna mendapatkan indeks item dalam daftar dengan item yang terkunci. Kedua tindakan tersebut diterapkan oleh LazyList.- Menambahkan
SemanticsNodeInteraction.performScrollToIndexyang men-scroll daftar ke indeks tertentu, danSemanticsNodeInteraction.performScrollToKeyyang 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
erroryang 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 utilitasaddTtsAnnotationdan 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
performTextInputSelectionAPI eksperimental (I2dcbb, b/178510628) - Antarmuka
InputEventCallbacktidak digunakan lagi. Anda tidak dapat menggunakan antarmuka dalam API publik; dan tidak ada penggunaannya dalam kode. (I34a02, b/184003208) - Fungsi
TextLayoutResult/createTextLayoutResulttidak 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
hideSoftwareKeyboarddanshowSoftwareKeyboarddiSoftwareKeyboardControllermenjadihide()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/LazyRowyang terletak di tepi salah diposisikan setelah ayunan jari cepat (Ie4d13, b/183877420) AndroidViewBindingkini menghapus fragmen yang di-inflate melaluiFragmentContainerViewdengan benar saatAndroidViewBindingdihapus dari hierarki Compose. (Ib0248, b/179915946)AndroidViewBindingkini menyarangkan fragmen yang di-inflate melaluiFragmentContainerViewdengan benar saatComposeViewberada dalamFragment, sehingga mengatasi masalah terkait menyimpan dan memulihkan status fragmen tersebut. (I70eb0, b/179915946)- Compose ViewBinding kini bergantung pada
Fragment
1.3.2dan secara konsisten menampilkan fragmen yang di-inflate melaluiFragmentContainerViewsetelah 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/endXdanstartY/endYopsional ke fungsiswipeUp/swipeDown/swipeLeft/swipeRightdiGestureScope. (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
LocalSoftwareKeyboardControllerbaru untuk menggantikan antarmuka SoftwareKeyboardController sebelumnya di TextField. (I5951e, b/168778053) - Menambahkan API lokal komposisi
LocalSoftwareKeyboardControllerbaru untuk menggantikan antarmuka SoftwareKeyboardController sebelumnya di TextField. (I84472, b/168778053) - Menghapus
SemanticsMatcherberikut:hasWidth(width, tolerance)hasHeight(height, tolerance)hasLeftPosition(left, tolerance)hasTopPosition(top, tolerance)hasRightPosition(right, tolerance)hasBottomPosition(bottom, tolerance)(If16bd)
- Menandai
SemanticsMatchersberikut sebagai @ExperimentalTestApi:hasWidth(width, tolerance)hasHeight(height, tolerance)hasLeftPosition(left, tolerance)hasTopPosition(top, tolerance)hasRightPosition(right, tolerance)hasBottomPosition(bottom, tolerance)(Ia600c)
- Menambahkan
SemanticsMatcherberikut: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:uitidak 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
LocalSoftwareKeyboardControllerbaru 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)
InteractionStatetelah diganti dengan[Mutable]InteractionSource- Antarmuka bertanggung jawab untuk mengirimkan/mengumpulkan peristiwa Interaksi.
- Daripada meneruskan
interactionState = remember { InteractionState() }ke komponen sepertiButtondanModifier.clickable(), gunakaninteractionSource = remember { MutableInteractionSource() }. - Sebagai ganti:
Interaction.Pressed in interactionStateAnda 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:
ColorStopsekarang menjadiPair<Float, Color>SpanStyleRangesekarang menjadi `AnnotatedString.RangeParagraphStyleRangesekarang menjadiAnnotatedString.Range<ParagraphStyle>StringAnnotationsekarang 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)
defaultFactoryuntukcompositionLocalOfdanstaticCompositionLocalOfsekarang 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
defaultFactoryakan 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.tapGestureFiltertelah 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}Resourcetelah 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()danLocalViewModelStoreOwnertelah 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
icondi BottomNavigationItem ke setelahselecteddanonClick. - Mengganti nama parameter
alwaysShowLabelsdi BottomNavigationItem menjadialwaysShowLabel. - Mengganti nama parameter
bodyContentdi 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
secondaryVariantkedarkColors(). Warna ini biasanya sama dengansecondarydalam tema gelap, tetapi menambahkan konsistensi dan penyesuaian lebih lanjut. - Menghapus ElevationDefaults dan animateElevation() dari tampilan API publik karena tidak umum digunakan/berguna.
- Mengganti nama
onValueChangeEnddiSlidermenjadionValueChangeFinisheddan membuatnya nullable. - Mengganti nama parameter
textdiSnackbarmenjadicontentuntuk konsistensi. - Menambahkan parameter
contentPaddingkeDropdownMenuItemuntuk memungkinkan penyesuaian padding default dan menjadikancontentsebagai ekstensi diRowScope. - Mengganti nama
ModalDrawerLayoutmenjadiModalDrawer. - Mengganti nama
BottomDrawerLayoutmenjadiBottomDrawer. - (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
isFocusabletelah dipindahkan ke parameterfocusablediPopupProperties(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) snapshotFlowdanwithMutableSnapshottidak 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
InfiniteAnimationPolicyyang 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 classdari 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 memperluasComposeTestRuledan menentukansetContent, yang telah dihapus dariComposeTestRule. Menambahkan metode factorycreateEmptyComposeRule()yang menampilkanComposeTestRuledan 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
initialdari 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.
RememberObserveradalah pengganti untukCompositionLifecycleObserverdengan 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,onRemembereddipanggil untuk setiap referensi saatonEnterhanya dipanggil sekali.onEnterdipanggil beberapa kali jika objek digunakan dalam subkomposisi, sepertiWithConstraintsdanScaffold, yang membuat jaminan panggilanonEntertunggal tidak dapat diandalkan dan telah dihapus untukRememberObserver.RememberObservermenambahkanonAbandonedyang dipanggil jika instanceRememberObserverditampilkan dari callback yang diteruskan keremembertetapi 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 instanceRememberObserveryang mengikuti rekomendasi referensi tunggal di atas melacak resource eksternalonForgottendanonAbandoned, masing-masing menunjukkan bahwa resource tidak lagi diperlukan. Jika objek sedang melacak pekerjaan yang dimulai atau resource yang dialokasikan dionRemembered,onAbandoneddapat diabaikan karena tidak akan dipanggil jikaonRemembereddipanggil. (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
@Composableselesai.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
SideEffectuntuk 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
@ExperimentalTestingmenjadi@ExperimentalTestApiagar 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)
AnimatableAPI 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
Appliertelah 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
LayoutNodedanView, 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,Applierakan 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.drawOpacitymenjadiModifier.alpha - Mengganti nama
Modifier.drawShadowmenjadiModifier.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
pivotFractionXdanpivotFractionYsebagaicomponent1dancomponent2(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
childrensebagai 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
Ambientsebagai akhirannya, dan menggantinya dengan properti baru yang diawali dengan Ambient, mengikuti pedoman Ambients dan Compose API lainnya. (I33440) - Memindahkan
androidx.compose.ui.text.Typefacekeandroidx.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)
iddiganti namanya menjadilayoutIduntukLayoutIdParentData.Measurable.iddiganti 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)
relativePaddingFromdiganti namanya menjadipaddingFrom. PengubahpaddingFromBaselineditambahkan, 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
zIndexsaat 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.capitalizedanAnnotatedString.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--OwnedLayermenangani 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
createAndroidComposeRuledanAndroidInputDispatcherdariandroidx.ui.test.androidkeandroidx.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
emitViewtidak digunakan lagi. Sebagai gantinya, gunakanAndroidViewketika 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)FocusState2tidak 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
onChildPositioneddanOnChildPositionedModifier. Sebagai gantinya, developer sebaiknya menggunakanonPositioneddanOnPositionedModifierpada 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
mergePolicykeSemanticsPropertyKey. 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() + anotherModifieryang memutus rantai dan lebih sulit dibaca (Iedd58, b/161529964) - Tambahkan subclass Tampilan [Abstract]ComposeView untuk menghosting konten Compose dalam hierarki Tampilan. (I46357)
RowdanColumnkini 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.positionInRootuntuk 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.performPartialGesturedihapus. Sebagai gantinya, gunakanSemanticsNodeInteraction.performGesture. (Id9b62)LazyColumnItemsdiganti namanya menjadiLazyColumnFor.LazyRowItemsdiganti namanya menjadiLazyRowFor(I84f84)- Paket
foundation.shape.cornerdiratakan menjadifoundation.share(I46491, b/161887429) - Mengganti nama
AndroidComposeTestRulemenjadicreateAndroidComposeRule. (I70aaf) - Menambahkan API lainnya ke
TextLayoutResult. (Id7e04) - Material
FilledTextFielddiganti namanya menjadiTextFielddanTextFielddasar diganti namanya menjadiBaseTextFieldagar 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)
Forcedihapus 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 menjadi 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
runOnIdleComposediganti 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
invalidateuntuk 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
keytelah dihapus. Gunakan versivarargke depannya. 5. Anotasi Pivotal tidak digunakan lagi. Gunakankeysebagai 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
enabledtersendiri. 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 menggunakan 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)