Compose UI

Komponen dasar compose UI yang diperlukan untuk berinteraksi dengan perangkat, termasuk tata letak, gambar, dan input.
Update Terbaru Rilis Stabil Kandidat Rilis Rilis Beta Rilis Alfa
20 Maret 2024 1.6.4 - - 1.7.0-alpha05

Struktur

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

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

GrupDeskripsi
compose.animationMem-build animasi di aplikasi Jetpack Compose untuk memperkaya pengalaman pengguna.
compose.compilerMentransformasi fungsi @Composable dan mengaktifkan pengoptimalan dengan plugin compiler Kotlin.
compose.foundationMenulis aplikasi Jetpack Compose dengan elemen penyusun siap pakai dan memperluas dasar untuk mem-build bagian sistem desain Anda sendiri.
compose.materialMem-build UI Jetpack Compose dengan Komponen Desain Material siap pakai. Ini adalah titik entri pada tingkat yang lebih tinggi untuk Compose, yang dirancang untuk menyediakan komponen yang cocok dengan yang dijelaskan di www.material.io.
compose.material3Mem-build UI Jetpack Compose dengan Komponen Desain Material 3, evolusi berikutnya dari Desain Material. Material 3 menyertakan tema dan komponen yang diperbarui serta fitur personalisasi Material You, seperti warna dinamis. Material 3 juga didesain agar selaras dengan gaya visual dan UI sistem Android 12 yang baru.
compose.runtimeElemen penyusun yang penting untuk model pemrograman dan pengelolaan status Compose, serta runtime inti untuk ditargetkan oleh Plugin Compose Compiler.
compose.uiKomponen dasar compose UI yang diperlukan untuk berinteraksi dengan perangkat, termasuk tata letak, gambar, dan input.

Mendeklarasikan dependensi

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

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

Groovy

dependencies {
    implementation "androidx.compose.ui:ui:1.6.4"
}

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.11"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

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

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.11"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Untuk informasi dependensi selengkapnya, lihat Menambahkan dependensi build.

Masukan

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

Laporkan masalah baru

Lihat dokumentasi Issue Tracker untuk informasi selengkapnya.

Versi 1.7

Versi 1.7.0-alpha05

20 Maret 2024

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

Fitur Baru

  • Memperkenalkan GraphicsLayer API baru untuk merekam perintah gambar dalam daftar tampilan serta properti tambahan yang memengaruhi rendering daftar tampilan. Hal ini memberikan batas isolasi untuk membagi adegan kompleks menjadi potongan-potongan kecil yang dapat diperbarui satu sama lain tanpa harus membuat ulang seluruh adegan. Transformasi yang dilakukan ke GraphicsLayer dapat dilakukan tanpa merekam ulang daftar tampilan. Tidak seperti Modifier.graphicsLayer, GraphicsLayer memungkinkan rendering konten Composable di tempat lain dan berguna dalam kasus penggunaan animasi ketika konten diharapkan dirender dalam suasana yang berbeda.

Perubahan API

  • GraphicsLayer.draw(Canvas) bukan lagi API publik. Sebagai gantinya, gunakan fungsi ekstensi DrawScope.drawLayer(GraphicsLayer) untuk menggambar lapisan. (I7a7c0)
  • Memisahkan restrictedConstraints() menjadi dua metode: fitPrioritizingWidth() dan fitPrioritizingHeight() (I6d7fd)
  • Memperkenalkan stub HardwareCanvas untuk penggunaan Android L (I1c3b5, b/288494724)
  • Update framework Compose untuk mengekspos komposisi lokal GraphicsContext bersama dengan mengupdate implementasi Pemilik, DelegateableNode, dan drawWithCache Pengubah untuk mengekspos akses ke GraphicsContext untuk akses terbatas yang akan otomatis membersihkan instance GraphicsLayer saat Pengubah dihapus. (I64a2f, b/288494724)
  • Memperkenalkan InterceptPlatformTextInput untuk membantu menulis pengujian terkait IME tingkat rendah dan kasus penggunaan IME tingkat rendah lainnya. PlatformTextInputTestOverride tidak digunakan lagi. (I862ed, b/322680547)
  • Fungsi ekstensi GraphicsLayer.setOutline(Outline) telah ditambahkan. (Ib81f4)
  • Memperkenalkan konstruktor fungsi GraphicsContext untuk membuat factory guna membuat instance GraphicsLayer (Ib98d6, b/288494724)
  • Mengekspos GraphicsLayer API untuk memberikan fleksibilitas yang ditentukan developer dalam mengambil 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#getRangeForRect yang menampilkan rentang teks yang dicakup oleh area persegi panjang tertentu. (Iee516, b/325660505)
  • Menghapus penggantian eksperimental BasicText dengan argumen onLinkClicked. API pengganti untuk dukungan hyperlink akan menyusul di masa mendatang. (I107d5)

Perbaikan Bug

  • Menambahkan definisi API harapan/aktual GraphicsLayer untuk mendukung pengambilan dan pemutaran ulang perintah gambar dengan transformasi dan efek visual komposisi opsional. Memperkenalkan antarmuka GraphicsContext untuk memuat dependensi grafis, termasuk pembuatan dan pengelolaan instance GraphicsLayer. (I4a8d6, b/288494724)
  • Memperbaiki masalah interop dengan penelusuran fokus 1D saat fokus akan terhenti di dalam ComposeView yang disematkan di antara tampilan lain. (I08fd4)

Kontribusi Eksternal

  • LocalLifecycleOwner dipindahkan dari UI Compose ke lifecycle-runtime-compose sehingga API helper berbasis Compose dapat digunakan di luar UI Compose. Terima kasih Jake Wharton atas kontribusinya. (I6c41b, b/328263448)
  • Secara konsisten mengekspos properti float bias pada semua subjenis penyelarasan berbasis bias. (I69f0f, b/328088992)

Versi 1.7.0-alpha04

6 Maret 2024

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

Perubahan API

  • Mendukung fitur tulis tangan stilus untuk BasicTextField2 di perangkat setelah Android U. (I002e4)
  • Dalam CL ini, kita menambahkan tindakan semantik GetScrollViewportLength sehingga kita dapat menyalurkan informasi tentang komponen yang di-scroll dalam compose ke sistem a11y. CL ini juga menerapkan penggunaan properti tersebut dalam Daftar yang Dapat Di-scroll Foundation. (IC5fa2)
  • FocusRequester.createRefs kini stabil (I4d92c, b/261436820)
  • Memperkenalkan DelegatableNode.requireView() untuk memungkinkan node pengubah mendapatkan View Android saat ini tanpa membaca lokal komposisi. (I40768)
  • Path.reverse() API baru untuk membalik arah jalur (I36348)
  • Menambahkan hintLocales ke KeyboardOptions untuk memberi TextFields kemampuan untuk memberi petunjuk IME dengan lokalitas tertentu untuk preset bahasa pilihan.
  • Ekspos properti platformLocale dari Locale yang menampilkan objek platform pokok, misalnya, java.util.Locale. (I921c6)

Versi 1.7.0-alpha03

21 Februari 2024

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

Perubahan API

  • Memperkenalkan ContextualFlowRow dan FlowRow/Column yang Ditingkatkan dengan MaxLines dan Overflow. Dengan senang hati kami mengumumkan peningkatan pada FlowRow dan FlowColumn eksperimental, yang kini menampilkan maxLines dan dukungan tambahan, bersamaan dengan debut ContextualFlowRow dan ContextualFlowColumn. Update ini dirancang untuk memberikan komponen performa yang optimal, dengan ContextualFlow* sangat cocok untuk sejumlah besar item yang menggunakan konfigurasi maxLines kecil dan +N dinamis untuk melihat lebih banyak tombol, serta FlowRow dan FlowColumn sangat cocok untuk sejumlah kecil item, kurang dari 100 item. Penting: Untuk mempertahankan perilaku yang ada di FlowRow atau FlowColumn saat semua item disusun terlepas dari apakah item tersebut sesuai dengan nilai maksimum sumbu silang, setel overflow ke FlowRowOverflow.Visible atau FlowColumnOverflow.Visible selama inisialisasi. Pelajari ContextualFlowRowSample dan FlowRowSample untuk melihat contoh penggunaan fitur baru ini. (Ib9135, b/293577082)
  • Menambahkan properti semantik maxTextLength yang harus ditetapkan di kolom teks yang memfilter jumlah karakter maksimum yang diizinkan. (I24d9f, b/170648072)
  • Wrapper Modifier.inspectable tidak digunakan lagi. API ini akan membuat invalidasi pengubah lebih banyak dari yang diperlukan, sehingga penggunaannya sekarang tidak disarankan. Developer dianjurkan untuk menerapkan metode inspectableProperties() pada ModifierNodeElement jika ingin mengekspos properti pengubah ke alat. (Ib3236)
  • Konstruktor baru untuk PopupProperties yang memungkinkan kontrol penuh atas flag WindowManager.LayoutParams. (Ibb33e, b/312485503)
  • Memperkenalkan DelegatableNode.requireLayoutCoordinates() sebagai cara untuk mendapatkan LayoutCoordinates Modifier.Node saat ini tanpa perlu mengganti onPlaced dan menyimpan sendiri koordinat di properti. (Ia8657)
  • Memperkenalkan DelegatableNode.currentLayoutCoordinates sebagai cara untuk mendapatkan LayoutCoordinates Modifier.Node saat ini tanpa perlu mengganti onPlaced dan menyimpan sendiri koordinat di properti. (Iaebaa)
  • BasicTextField2 dan API terkait dalam paket androidx.compose.foundation.text2 dipindahkan ke androidx.compose.foundation.text. (I9f635)
  • Menambahkan ApproachLayoutModifierNode API baru untuk mendukung pembuatan logika pendekatan kustom dalam Node Pengubah eksplisit. Juga menambahkan DeferredTargetAnimation API eksperimental baru untuk animasi yang targetnya tidak diketahui saat pembuatan instance. (I60745)
  • Path API baru untuk mengkueri arah Jalur dan mengekstrak kontur dari Path. (I63d04)
  • Menambahkan PathHitTest dan Path.contains(Offset) untuk memeriksa apakah Path berisi titik tertentu. (I3b218)
  • TextLayoutResult kini mengekspos metode getLineBaseline(lineIndex). Hal ini memungkinkan untuk membaca dasar pengukuran baris teks selain properti praktis yang ada firstBaseline dan lastBaseline. (Ide4e8, b/237428541)
  • Menambahkan metode untuk hanya membandingkan anotasi dua AnnotatedStrings. (I32659)

Perbaikan Bug

  • Memperbaiki masalah kompatibilitas mundur dengan SemanticsPropertyReceiver.performImeAction dan SemanticsActions.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 PopupProperties yang menggunakan parameter usePlatformDefaultWidth tidak lagi bersifat eksperimental. (I8f8d2)
  • Menambahkan overload ComposeTestRule.waitUntil yang menggunakan deskripsi string kondisi yang akan disertakan dalam pesan waktu tunggu. (I9413e)
  • API semantik baru unset() untuk menghapus properti semantik yang ditambahkan dalam rantai pengubah yang sama. Properti semantik baru isOpaque. (I8c583, b/317966058, b/246056649)
  • Menghapus originalEventPosition dari metode penyalinan di API publik PointerInputChange. (I7bead)

Perbaikan Bug

  • Memperbaiki bug a11y yang memungkinkan non-tab dan non-tombol radio dapat diklik saat dipilih. (I2181c)
  • VelocityTracker kini akan memiliki perbaikan untuk menambahkan titik secara default. Perbaikan masih dapat dinonaktifkan dengan menyetel VelocityTrackerAddPointsFix ke salah (false) jika ada masalah. (Ib3877, b/269487059)
  • Memperbaiki inkompatibilitas biner mundur di TextStyle dan ParagraphStyle. (I179f0, b/320819734)

Kontribusi Eksternal

  • Menambahkan konstruktor DialogProperties baru tanpa parameter khusus platform. (I45829)
  • Menambahkan konstruktor PopupProperties baru tanpa parameter khusus platform. (I9a038)

Versi 1.7.0-alpha01

24 Januari 2024

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

Perubahan API

  • Memperluas ClipboardManager dengan menambahkan ClipEntry dan ClipMetadata untuk mendukung konten arbitrer seperti gambar.
  • Menambahkan DeviceConfigurationOverride API ke ui-test untuk memungkinkan penggantian secara lokal perilaku konten yang sedang diuji, seperti untuk menentukan ukuran yang tersedia, lokalitas, arah tata letak, skala font, atau tema.

Versi 1.6

Versi 1.6.4

20 Maret 2024

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

Versi 1.6.3

6 Maret 2024

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

Versi 1.6.2

21 Februari 2024

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

Versi 1.6.1

7 Februari 2024 androidx.compose.ui:ui-*:1.6.1 dirilis. Versi 1.6.1 berisi commit ini.

Perbaikan Bug

  • Memperbaiki masalah kompatibilitas mundur dengan SemanticsPropertyReceiver.performImeAction dan SemanticsActions.PerformImeAction. (Ie0bb2, b/322269946)
  • Tata letak kini mengeluarkan error saat mengukur jika tata letak menampilkan ukuran yang sangat besar. Error semacam ini biasanya terjadi saat pengukuran menggunakan batasan maksimum secara langsung tanpa memeriksa Constraints.Infinity. Pemeriksaan ini akan membantu developer menemukan masalah dengan tata letak yang memiliki ukuran yang salah, bukan dalam tata letak yang memuatnya. (I339a9)

Versi 1.6.0

24 Januari 2024

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

Versi 1.6.0-rc01

10 Januari 2024

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

Perbaikan Bug

  • Mengoptimalkan implementasi grafik vektor untuk meningkatkan performa dengan meminimalkan rekomposisi tambahan.

Versi 1.6.0-beta03

13 Desember 2023

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

Fitur Baru

  • Sekarang LayoutCoordinates dapat dilepas tanpa node dilepas. Hindari hal tersebut di Layout Inspector compose (If693)

Perbaikan Bug

  • PlatformImeOptions kini merupakan class konkret, bukan antarmuka. (If40a4)
  • Memperbaiki rekomposisi downstream tambahan yang disebabkan oleh LocalSoftwareKeyboardController dan LocalTextInputService yang diberikan nilai baru setiap kali root direkomposisi. (I42190, b/310510985)

Versi 1.6.0-beta02

29 November 2023

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

Versi 1.6.0-beta01

15 November 2023

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

Perubahan API

  • Pengubah DragAndDropTarget kini menggunakan DragAndDropTarget penerima secara eksplisit dan memiliki lambda untuk ikut serta dalam sesi tarik lalu lepas. Kini ada dua fungsi factory untuk DragAndDropModifierNode. Satu untuk menerima transfer dan satu lagi untuk mentransfer data (I69481)
  • Memperbarui maximumFlingVelocity untuk ditampilkan sebagai Float. Memperbarui dokumentasi agar lebih jelas mengenai kesatuan maximumFlingVelocity. (I8adc7)
  • onDragAndDropStart di factory DragAndDropModifierNode telah diganti namanya menjadi acceptDragAndDropTransfer.acceptsDragAndDropTransfer telah ditambahkan ke Pengubah dragAndDropTarget untuk menerima dari sesi tarik lalu lepas. Lambda ini menampilkan DragAndDropTarget yang valid jika tertarik dengan sesi tarik lalu lepas. Lambda lain untuk memproses peristiwa tarik telah diganti dengan ini. Fungsi factory DragAndDropTarget telah ditambahkan untuk menerima dari sesi tarik lalu lepas (Iebf3a)
  • Menghapus DragAndDropInfo karena jenis DragAndDropModifierNode.drag kini menggunakan parameter untuk transferData, ukuran dekorasi, dan lambda DrawScope dekorasi tarik

    DragAndDropTarget memiliki metode untuk peristiwa tarik lalu lepas tertentu, bukan menjadi metode abstrak tunggal

    onDragAndDropEvent dalam fungsi factory untuk DragAndDropModifierNode telah diganti namanya menjadi onDragAndDropStart untuk mengomunikasikan dengan lebih baik bahwa DragAndDropTarget yang disediakan hanya valid untuk sesi tarik lalu lepas tertentu saja

    DragAndDropEventType telah dihapus (I645b1)

  • Mengganti nama PlatformTextInputModifierNode.runTextInputSession menjadi establishTextInputSession. (I03cd0)

  • Meningkatkan nama API node yang dapat dilintasi agar lebih mudah dipahami. (Ia4474)

  • Ganti OriginalText dengan TextSubstitution. (Ifa5a8)

  • Mengganti nama PlatformTextInputModifierNode.textInputSession menjadi runTextInputSession. (Ie9c6b)

  • Turunan SubcomposeLayout (dan tata letak seperti LazyColumn yang didasarkan padanya) yang dipertahankan untuk digunakan kembali pada masa mendatang akan dianggap dinonaktifkan. API pengujian assertIsDeactivated() baru diperkenalkan untuk menguji node tersebut. Sisa API pengujian akan memfilter node yang dinonaktifkan secara default. (I2ef84, b/187188981)

  • Menghapus FocusDirection.In dan FocusDirection.Out menggunakan FocusDirection.Enter dan FocusDirection.Exit sebagai gantinya (I2f660)

  • Material SwipeToReveal API (untuk Kartu dan Chip) kini mengandalkan API berbasis slot (seperti yang direkomendasikan oleh Compose), bukan instance berbasis class data untuk membuat slot tersebut. Ini adalah perubahan yang dapat menyebabkan gangguan. Lihat demo dan kode contoh untuk contoh cara menggunakan API baru. (Ia8943)

  • Konstruktor FontStyle(int) tidak digunakan lagi. Sebagai gantinya, gunakan FontStyle.Normal atau FontStyle.Italic. (I66610)

  • Mengganti nama antarmuka FontScalable menjadi FontScaling (Ie804a)

Perbaikan Bug

  • SoftwareKeyboardController.show() tidak akan lagi menampilkan keyboard virtual jika tidak ada editor teks yang difokuskan. (I2165a, b/301477279)
  • Peristiwa Atas tombol hardware untuk kunci yang belum menerima peristiwa Down dalam Tampilan Compose yang sama sekarang akan diabaikan. (Ib37b4, b/305518328)
  • Menambahkan dukungan perender untuk Gradien Sapu di ArcLine. (I4d5bb)
  • Menerapkan kode sama dengan dan kode hash untuk PageSize.Fixed. (Ie3ede, b/300134276)
  • Memperbaiki masalah kompatibilitas biner dengan perubahan Inset Jendela (Iee695)
  • Hapus lapisan inti material untuk Chip/Tombol Material3 karena microbenchmark menunjukkan performa yang lebih baik tanpanya. (I55555)
  • TestDispatcher yang diteruskan sebagai effectContext ke pengujian Compose sekarang akan digunakan untuk membuat pengujian dan frame clock. (Ia7178)

Versi 1.6.0-alpha08

18 Oktober 2023

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

Perubahan API

  • Modifier.dragAndDrawSource telah mengganti nama lambda onDrawDragShadow menjadi drawDragDecoration dan DragAndDropInfo mengganti parameter ukuran menjadi dragDecorationSize. (Id0e30, b/303904810)
  • Memperkenalkan SemanticsNodeInteraction.isDisplayed() dan SemanticsNodeInteraction.isNotDisplayed() untuk memeriksa apakah node yang cocok terlihat atau tidak tanpa harus menyatakannya. (I2c196, b/302100809)
  • Memperkenalkan nilai Unspecified khusus untuk kolom TextAlign, TextDirection, Hyphens, dan LineBreak dari ParagraphTextStyle guna menggantikan null. Karena class ini merupakan class inline, dengan mengganti nullable dengan Unspecified, kita menghindari pengiriman jenis primitif. Konstruktor, pengambil, dan metode lain dalam gaya TextStyle dan Paragraph telah diperbarui untuk menerima parameter yang disebutkan sebagai jenis non-null. (I4197e, b/299490814)
  • Menambahkan overload GoogleFont untuk membaca GoogleFont dari XML. (If8f59)
  • Membuat LoremIpsum PreviewParameterProvider menjadi class terbuka. (I41bf5, b/266918816, b/300116360)

Perbaikan Bug

  • FontFamilyResolver kini menggunakan Dispatchers.Main untuk coroutine pengelolaan cache. (Ie8dd9)
  • AndroidViewBinding kini secara sinkron menghapus instance Fragment yang di-inflate dengan menyertakan FragmentContainerView di tata letak sebagai bagian dari onRelease-nya dengan menggunakan commitNow (bukan commit yang digunakan sebelumnya), sehingga memperbaiki masalah metode Edit Live terkait penggantian komposisi setelah perubahan. (I58fbf)

Versi 1.6.0-alpha07

4 Oktober 2023

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

Perubahan API

  • Memperkenalkan PlatformTextInputMethodTestOverride untuk pengujian penulisan bagi editor teks kustom. (Id159b)
  • Menambahkan Pengubah dragAndDropSource untuk memulai sesi tarik lalu lepas, dan Pengubah dragAndDropTarget untuk menerima dari sesi tarik lalu lepas. (Ib7828, b/286038936)
  • Menambahkan koleksi ColorList dan ColorSet yang menghindari alokasi. (I744bd)
  • Menambahkan flag sementara DisableNonLinearFontScalingInCompose untuk menonaktifkan penskalaan font non-linear. Tetapkan DisableNonLinearFontScalingInCompose = true dalam pengujian jika Anda perlu waktu untuk membersihkannya. Tanda ini akan dihapus di Compose 1.6.0-beta01. (IC9486)

Perbaikan Bug

  • Penguraian vektor drawable XML yang dioptimalkan. (Ibb015)

Versi 1.6.0-alpha06

20 September 2023

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

Perubahan API

  • Pengoptimalan tambahan untuk ikon Material. (I3e08d)
  • Menambahkan kemampuan untuk menjelajahi hierarki pengubah atas/bawah guna menemukan node serupa. (I2d234)
  • Menambahkan callback onRestoreFailed() ke pengubah focusRestorer() (Ie1d43)
  • Menambahkan anotasi androidx ke berbagai API grafis untuk menentukan ColorInt, FloatRange, IntRange, Size, dan lainnya. (Id65c8, b/290950582)
  • Menambahkan showSystemUi=true ke definisi PreviewScreenSizes (Ib61d3)

Perubahan Perilaku

  • Compose kini menggunakan penskalaan font non-linear agar lebih mudah dibaca dan diakses. Jika skala font > 100% dalam pengaturan sistem, ukuran teks kecil akan bertambah besar secara normal, tetapi teks yang sudah besar hanya akan sedikit bertambah besar. Selain itu, tinggi baris yang ditentukan dalam SP akan otomatis disesuaikan agar tetap proporsional dengan skala ketinggian yang diinginkan 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 melempar dalam komponen View seperti ScrollView dan RecyclerView dibatasi pada ViewConfiguration.ScaledMaximumFlingVelocity. Compose kini berisi versinya sendiri maximumFlingVelocity yang sekarang berlaku untuk Draggable. (Ibf974)
  • Menambahkan scaffolding awal untuk mendukung API tarik lalu lepas platform. (If84ce)
  • Menambahkan deviceId ke RotaryScrollEvent (Iba3bf)
  • Mengupdate ui-tooling Devices API untuk menyertakan perangkat yang lebih baru (Ib25b4)

Versi 1.6.0-alpha04

23 Agustus 2023

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

Perubahan API

  • Menambahkan metode untuk menonaktifkan ReusableComposition, menghapus pengamatan, tetapi mempertahankan node di tempatnya. Komposisi yang dinonaktifkan dapat diaktifkan lagi dengan memanggil setContent. (Ib7f31)
  • Menambahkan antarmuka ReusableComposition untuk mengelola siklus proses dan penggunaan kembali subkomposisi. (I812d1, b/252846775)
  • Modifier.focusGroup telah dipromosikan ke API stabil. (I7ffa3)
  • Menambahkan anotasi androidx ke berbagai API grafis untuk menentukan ColorInt, FloatRange, IntRange, Size, dan lainnya. (I70487, b/290950582)
  • Mengupdate ColorFilter API agar memiliki jenis subclass konkret untuk meningkatkan kemampuan pemeriksaan parameter. (I5fe29)
  • Memperkenalkan library wear-tooling-preview untuk mencantumkan perangkat Wear yang valid yang dapat digunakan untuk pratinjau UI (Ib036e)
  • Membuat antarmuka FontScalable untuk menangani bagian penskalaan font dari antarmuka Density. (I2cf3f)

Versi 1.6.0-alpha03

9 Agustus 2023

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

Perubahan API

  • Jenis transisi masuk/keluar baru yang menskalakan konten berdasarkan ukuran penampung animasi selama animasi masuk & keluar. Antarmuka dan fungsi composable LookaheadScope kini sudah stabil. (Ifb2ce)
  • Menambahkan dukungan untuk mengonfigurasi privateImeOptions (Idb772)

Perbaikan Bug

  • PopupPositionProvider.calculatePosition kini akan otomatis memperbarui posisi pop-up saat pembacaan status dalam penghitungan diubah. (I676a1, b/292257547)
  • Memperbaiki kolom teks yang menampilkan keyboard dan dapat diedit saat readOnly bernilai benar (true). Juga memperbaiki keyboard yang tidak muncul saat readOnly diubah dari benar (true) menjadi salah saat difokuskan. (I34a19, b/246909589)
  • Perluasan penerapan pernyataan global dalam pengujian UI. (I1f90d)

Versi 1.6.0-alpha02

26 Juli 2023

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

Perubahan API

  • Menambahkan antarmuka pencari lokasi layanan yang dapat diimplementasikan oleh pengimplementasi Komposisi yang memungkinkan implementasi Komposisi yang didelegasikan ke pencarian layanan delegasi komposisi lain ke Komposisi asli. Ini tidak boleh disebut directy dan digunakan untuk mengaktifkan pembuatan API eksperimental dalam runtime yang dapat ditemukan dari versi gabungan composer seperti modul UI. (I296b9)
  • PlatformTextInput* API telah didesain ulang sepenuhnya. (I6c93a, b/274661182, b/267235947, b/277380808)
  • SoftwareKeyboardController dan LocalSoftwareKeyboardController tidak lagi bersifat eksperimental. LocalSoftwareKeyboardController kini juga merupakan CompositionLocal yang sesuai. (I4c364)
  • LookaheadLayout dan LookaheadLayoutScope tidak digunakan lagi untuk beberapa rilis dan sekarang dihapus. API pengganti adalah LookaheadScope yang dapat berfungsi dengan Tata Letak apa pun. (I12ac3)
  • Menambahkan SemanticsNodeInteraction.requestFocus sebagai cara yang lebih mudah dan ditemukan untuk meminta fokus dalam pengujian. (Ie8722)
  • Menambahkan API eksperimental untuk mendaftarkan pernyataan global, untuk digunakan oleh framework pengujian di masa mendatang. (I12d77)

Perbaikan Bug

  • Pemanggilan pertama callback update AndroidView sekarang akan ditangguhkan hingga tampilan dilampirkan, bukan berjalan saat komposisi yang memperkenalkan AndroidView diterapkan. Perubahan ini memperbaiki bug saat callback update tidak akan dibatalkan jika status yang dibaca langsung diubah oleh suatu efek. (Ie9438, b/291094055)

Versi 1.6.0-alpha01

21 Juni 2023

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

Fitur Baru

  • Dukung lihat ke depan di LazyList. Hal ini memungkinkan LazyList dalam penerusan lihat ke depan untuk mengabaikan animasi apa pun (mis.animasi penempatan item, AnimatedVisibility, dll.) dan menghitung ukuran dan posisi pandangan ke depan untuk semua turunan. Setelah penerusan pandangan ke depan, turunan LazyList dapat dianimasikan secara independen ke realitas seperti yang terlihat dalam penerusan lihat di muka.

Perubahan Perilaku: includeFontPadding kini bernilai salah secara default di Compose

includeFontPadding sekarang menjadi salah (false) secara default (21d806) di Compose.

includeFontPadding adalah atribut lama yang mengontrol apakah akan menyertakan padding tambahan atau tidak di atas baris pertama dan baris terakhir teks untuk mengakomodasi karakter yang dapat meluas di atas atau di bawah dasar pengukuran teks.

Memperbarui versi Compose ini akan mengubah cara semua teks dirender di UI Anda dengan menghapus padding tambahan di bagian atas baris pertama dan baris terakhir setiap teks yang Anda tampilkan.

Bergantung pada persyaratan UI dan metrik font yang Anda gunakan, perubahan akan minimal. Namun, Anda mungkin mengalami pemblokir seperti: - Pengujian screenshot rusak. Memperbaiki UI jika diperlukan, dan membuat ulang gambar emas. - Teks sedikit tidak selaras. Hapus padding negatif kustom atau tambahkan padding jika diperlukan.

Anda dapat memilih untuk ikut serta dalam includeFontPadding 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. 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 Compose includeFontPadding selengkapnya di dokumentasi developer dan postingan blog ini.

Jika Anda mengalami masalah/bug yang terhubung dengan perubahan ini, laporkan bug menggunakan issue tracker.

Perubahan API

  • Mendukung InputConnection#requestCursorUpdates (I0c69b)
  • Menambahkan FocusRequester.saveFocusedChild dan FocusRequester.restoreFocusedChild (Ic557e, b/272302679, b/275157318)
  • Menambahkan jenis ResourceResolutionException untuk menggabungkan throwable yang ditampilkan saat mencoba memuat aset bitmap dengan deskripsi jalur aset yang gagal dimuat. (I19f44, b/230166331, b/278424788)
  • Pengoptimalan aksesibilitas untuk performa dan alokasi memori. (Iede48)
  • Menambahkan properti dan tindakan semantik untuk mendukung terjemahan teks. (I4a6bc)
  • Properti baru di IntrinsincMeasureScope dan implementasinya (misalnya, MeasureScope) untuk menunjukkan apakah tahap pengukuran saat ini merupakan penerusan lihat di awal. (I7a812)
  • Mengupdate DrawScope API untuk memperkenalkan kemampuan menargetkan ulang rendering ke dalam kanvas yang berbeda dengan arah tata letak dan kepadatan alternatif.
  • Memperbarui DrawContext untuk mendukung konfigurasi kepadatan dan arah tata letak, serta membuat kanvas dapat dikonfigurasi. (Ie1f9b, b/225408150)
  • Menambahkan Paragraph#fillBoundingBoxes untuk menghitung kotak pembatas karakter. (If30ee)
  • Menambahkan kumpulan MultiPreviews umum (Ia5a27)

Perbaikan Bug

  • Menambahkan antarmuka FocusTargetModifierNode yang dapat digunakan untuk membuat FocusTarget kustom. (I9790e)
  • Mengganti nama parameter fallback* di konstruktor TextMeasurer menjadi default*. (I940a5)
  • Mengganti nama SemanticsPropertyReceiver.performImeAction menjadi onImeAction, dan SemanticsActions.PerformImeAction menjadi OnImeAction. (I8e841)
  • Menambahkan Wheel untuk membedakan scroll mouse dari tarik dalam scroll bertingkat (khususnya, di NestedScrollConnection). (Ie57e4)
  • Menambahkan asComposePaint API untuk menggantikan toComposePaint karena objek yang ditampilkan menggabungkan android.graphics.Paint asli (I22b4c)
  • Menghentikan penggunaan SemanticsProperties.imeAction dan mengganti dengan parameter baru untuk SemanticsActions.performImeAction. (I4a587)
  • Menambahkan dukungan untuk pemilihan menggunakan mouse. Pemilihan berbasis sentuh akan diperluas menurut kata, dan menyusutkan menurut karakter. (Ic0c6c, b/180639271)
  • Metode Paragraph yang digunakan untuk menampilkan AssertionError untuk offset yang melebihi batas kini menampilkan IllegalArgumentException seperti MultiParagraph. (I549d3, b/243338896)

Versi 1.5

Versi 1.5.4

18 Oktober 2023

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

Versi 1.5.3

4 Oktober 2023

androidx.compose.ui:ui-*:1.5.3 dirilis. Versi 1.5.3 berisi commit ini.

Perbaikan Bug

  • (b/301209788) TextField terkadang salah menerapkan perintah sebelumnya saat memfokuskan dan memasukkan input bahasa Korea, yang menyebabkan hilangnya karakter.

Versi 1.5.2

27 September 2023

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

Perbaikan Bug

  • Menambahkan solusi untuk error saat aksesibilitas scroll API diakses dari thread latar belakang.
  • Memperbaiki node tidak 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 readOnly bernilai benar (true). Juga memperbaiki keyboard yang tidak muncul saat readOnly diubah dari benar (true) menjadi salah saat difokuskan. (I34a19, b/246909589)

Versi 1.5.0

9 Agustus 2023

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

Versi 1.5.0-rc01

26 Juli 2023

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

Perbaikan Bug

  • Memperbaiki error yang terjadi saat SubcomposeLayout digunakan di dalam movableContentOf().

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 composable Dialog dan Pop-up yang dapat menyebabkan ukuran jendela turunan tidak berubah seperti yang diharapkan saat usePlatformDefaultWidth=true. (I112ee)

Versi 1.5.0-beta02

7 Juni 2023

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

Perubahan API

  • Menambahkan asComposePaint API untuk memungkinkan pemakaian instance android.graphics.Paint yang akan digunakan di Compose

Perbaikan Bug

  • Menambahkan asComposePaint API untuk menggantikan toComposePaint karena objek yang ditampilkan menggabungkan android.graphics.Paint asli (I22b4c)

Versi 1.5.0-beta01

24 Mei 2023

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

Perubahan API

  • Menghapus alokasi dalam rekomposisi, animasi warna, dan AndroidComposeView (Ib2bfa)
  • Menambahkan fun helper CacheDrawModifierNode() untuk memungkinkan delegasi (Icf8f9)
  • Memperkenalkan properti isLookingAhead, dapat diakses dari MeasureScope, untuk mengamati hasil lihat ke depan dan memengaruhi kartu utama jika diinginkan. (Ibf4c3)
  • Properti semantik baru traversalIndex, float yang digunakan untuk mengurutkan ulang node dalam traversal TalkBack (nilai lebih rendah harus ditempatkan sebelumnya). (I9a81b, b/186443263)
  • Mengganti nama properti Semantik isContainer menjadi isTraversalGroup (I121f6)
  • ColorProducer sekarang memiliki operator fun invoke, bukan produce (I4a9a2)
  • Menambahkan API transformasi Path untuk menerapkan transformasi terjemahan/skala/rotasi ke objek jalur. (I23434, b/233772232)
  • Metode ColorProducer disebut produce. (I78bde)
  • Mengganti nama toFrameworkColorSpace menjadi toAndroidColorSpace (I4f547)
  • Mengganti nama ColorLambda menjadi ColorProducer. (I73b1a)
  • Memperkenalkan API untuk mengonversi antara jenis ruang warna Android dan Compose. (Ie7db4, b/279979665)
  • Menambahkan parameter warna ke BasicText untuk memungkinkan animasi atau setelan warna teks secara efisien. (Iffd88, b/246961787)
  • Mengganti nama TextRange.constrain menjadi TextRange.coerceIn. (I31be2)
  • Menambahkan TextStyle.merge(...) yang dioptimalkan dengan daftar parameter lengkap. (Iad234, b/246961787)
  • Menstabilkan banyak Text API yang menyertakan Brush, DrawStyle, TextMotion, DrawScope.drawText, Paragraph.paint(Brush), MultiParagraph.paint(Brush). (I2f740, b/261581564, b/261581931, b/261561245)
  • PlatformTextStyle.includeFontPadding tidak digunakan lagi. Tujuan awal kami adalah menghapus kolom tersebut, tetapi masukan menunjukkan bahwa developer memerlukan opsi konfigurasi ini. Oleh karena itu, menghapus penghentian penggunaan dari kolom (I98e96, b/277703184)
  • Menambahkan metode TextRange.constrain publik. (I97912)
  • UrlAnnotation di AnnotatedString kini dapat dibuka melalui layanan aksesibilitas seperti TalkBack. (If4d82, b/253292081)
  • Menambahkan tindakan semantik InsertTextAtCursor untuk kolom teks. (I11ed5)
  • Konstruktor LineHeightStyle.Alignment(topRatio) dipromosikan ke API stabil. (I79c32, b/261565383)
  • TextMeasurer dan API terkait tidak lagi bersifat eksperimental. (I74647, b/261581753)
  • Menambahkan tindakan semantik PerformImeAction untuk memanggil tindakan IME pada node editor teks. (Ic606f, b/269633506)
  • PlatformTextInput API tidak lagi bersifat eksperimental untuk Android. (I668eb)
  • nama parameter nilai untuk Enum.valueOf diubah (Ia9b89)
  • lebih banyak pengecualian yang ditampilkan dari enum valueOf (I818fe)
  • Memperkenalkan PlatformTextInputAdapter API tingkat rendah baru untuk mem-build implementasi input teks kustom yang berkomunikasi langsung dengan API platform. (I58df4)
  • Menambahkan parameter BlendMode ke metode DrawScope.drawText, Paragraph.paint, dan MultiParagraph.paint untuk mendukung berbagai algoritma pencampuran saat menggambar teks di Canvas. (I57508)
  • Mengganti nama Font.MaximumAsyncTimeout menjadi Font.MaximumAsyncTimeoutMillis. Hanya ganti nama. (I07af5)
  • Nilai DPI yang diperbarui untuk perangkat referensi @Preview (Id6151, b/254528382)
  • Menambahkan parameter brush, alpha ke BasicText untuk memungkinkan animasi atau menyetel kuas teks secara efisien.
  • Menentukan jenis lambda tanpa kotak untuk Float, Double, Long, Int, Short dalam :ui:ui-unit (I6f18d, b/246961787)

Perbaikan Bug

  • Menghapus beberapa alokasi dalam pelacakan kecepatan pointer (I26bae)
  • Mengurangi alokasi dalam pengelolaan input pointer dan tata letak (I5333a)
  • Mengoptimalkan penggunaan memori Vektor dan rendering frame pertama (I2f3c6)
  • Menghapus alokasi saat menggambar garis dan titik dengan Canvas (I9f535)
  • Menambahkan dokumen untuk AndroidFont.fontVariationSettings (I7d9e2)

Kontribusi Eksternal

  • Meningkatkan performa dan mengurangi alokasi di Vector API (I906cb)

Versi 1.5.0-alpha04

10 Mei 2023

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

Fitur Baru

  • Peningkatan Delegasi Modifier.Node Menambahkan kemampuan yang ditingkatkan untuk mendelegasikan ke instance Modifier.Node lainnya dari DelegatingNode. Hal ini dapat dilakukan dengan API delegate dan undelegate. Sebelum perubahan ini, setiap API dari node pendelegasi perlu didelegasikan secara eksplisit ke node yang didelegasikan. Setelah perubahan ini, antarmuka node akan didelegasikan secara implisit, kecuali DelegatingNode secara eksplisit menggantinya. (67352bc)

Perubahan API

  • Memperkenalkan NestedScrollModifierNode, NestedScroll Modifier.Node yang dapat didelegasikan. (I69513)
  • Menambahkan parameter onReset dan onRelease ke composable AndroidViewBinding, mencerminkan composable AndroidView, dan mengaktifkan dukungan untuk penggunaan ulang View dengan ViewBinding. (I00b1e, b/276802519)
  • Mengupdate Compose Path API untuk mendukung operasi mundur untuk mendukung kasus penggunaan manipulasi Jalur 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 menyertakan Brush, DrawStyle, TextMotion, DrawScope.drawText, Paragraph.paint(Brush), MultiParagraph.paint(Brush). (I2f740, b/261581564, b/261581931, b/261561245)
  • PlatformTextStyle.includeFontPadding tidak digunakan lagi. Tujuan awal kami adalah menghapus kolom 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 muncul untuk kolom teks dalam dialog yang tidak dibuat oleh composable Dialog. (I82551, b/262140644)

Versi 1.5.0-alpha03

19 April 2023

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

Fitur Baru

  • Perilaku default baru untuk SubcomposeLayout di LookaheadScope: SubcomposeLayouts yang tidak memiliki slot bersyarat (misalnya TabRow, Scaffold, BoxWithConstraints, dll.) sekarang berfungsi dengan baik dengan animasi lihat ke depan.

Perubahan API

  • intermediateMeasurePolicy default baru yang menggunakan kembali kebijakan pengukuran dari Lookahead Pass memungkinkan subjenis SubcomposeLayout tanpa slot bersyarat seperti Scaffold, TabRow, dan BoxWithConstraints untuk berfungsi dengan Lookahead secara default. Id84c8
  • Recomposer yang dibuat untuk jendela Android kini hanya akan memblokir panggilan ke withFrameNanos, bukan semua komposisi saat menerima notifikasi ON_STOP. Artinya, jendela yang terkait dengan aktivitas yang dihentikan akan terus merekomposisi untuk perubahan data, tetapi animasi, atau pemanggil withFrameNanos lainnya, akan diblokir. (Id9e7f, b/240975572)
  • Mengubah motionEventSpy menjadi stabil. (Ic5ec4, b/261560988)
  • Menambahkan metode TextRange.constrain publik. (I97912)
  • PlatformTextStyle.includeFontPadding tidak lagi digunakan lagi untuk mendorong developer menggunakan API kompatibilitas ini untuk beralih dan menguji setelan includeFontPadding salah. (I98e96, b/277703184)

Versi 1.5.0-alpha02

5 April 2023

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

Perubahan API

  • SubcomposeLayout API baru yang menggunakan kebijakan pengukuran menengah tambahan untuk menangani logika pengukuran/tata letak selama animasi berbasis Lookahead. (I017d3)
  • PointerInput kini lambat dan menggunakan Modifier.Node untuk performa yang lebih baik (baca tentang perubahan perilaku kecil). (15dab9)
  • Mengubah API eksperimental menjadi stabil dengan peristiwa Key. (I9c7d8, b/261566839, b/261567368)
  • Mengubah API eksperimental menjadi stabil di PointerInputChange. (I1b543, b/261560988, b/261565762, b/261565749)
  • Menambahkan cara untuk membuat instance SuspendingPointerInputModifierNode untuk implementasi Modifier.Node yang lebih kompleks. (IC4933)
  • UrlAnnotation di AnnotatedString kini dapat dibuka melalui layanan aksesibilitas seperti TalkBack. (If4d82, b/253292081)
  • Menambahkan API untuk mengintersep tombol hardware sebelum dikirim ke keyboard virtual (I4f4c6, b/186800395)
  • Menambahkan tindakan semantik InsertTextAtCursor untuk 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 mengharuskan kolom teks diaktifkan. (Iab328)

Versi 1.5.0-alpha01

22 Maret 2023

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

Perubahan API

  • Modifier.intermediateLayout sekarang tidak memerlukan LookaheadScope eksplisit. Blok pengukuran di intermediateLayout memiliki IntermediateMeasureScope sebagai penerima, yang menyediakan CoroutineScope, LookaheadScope, dan MeasureScope yang praktis.(Ibe2e5)
  • LookaheadLayout telah diganti dengan LookaheadScope, yang tidak lagi merupakan Layout. Hal ini memungkinkan konten chid di LookaheadScope dikontrol langsung oleh MeasurePolicy induk. (Ibe2e5)
  • Menambahkan Modifier.Node#coroutineScope untuk mengizinkan Modifier.Nodes meluncurkan coroutine. (I76ef9)
  • Izinkan Modifier.Nodes membaca CompositionLocals dengan menerapkan antarmuka CompositionLocalConsumerModifierNode. (Ib44df)
  • Perluasan 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 AndroidView mungkin tidak ditata dengan benar saat digunakan dengan Pengubah tertentu. (I4dc77, b/274797771)
  • Memperbaiki bug di Penelusuran Fokus 2D yang memengaruhi Menu DropDown (b/276811828)
  • Memperbaiki bug pada 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 AndroidView tidak menggunakan kembali pengubahnya dengan benar, yang berpotensi mengakibatkan error dan perilaku yang tidak terduga. (Ib67ee, b/275919849)
  • Memperbaiki regresi saat keyboard tidak muncul untuk kolom teks dalam dialog yang tidak dibuat oleh composable Dialog (I82551, b/262140644)

Versi 1.4.1

5 April 2023

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

Perbaikan Bug

  • Memperbaiki masalah dengan ParentDataModifier yang tidak memengaruhi AndroidView (b/274797771)

Versi 1.4.0

22 Maret 2023

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

Perubahan penting sejak versi 1.3.0

  • Menambahkan PinnableContainer API baru yang memungkinkan item daftar lambat disematkan, sehingga item tersebut tidak dibuang saat di-scroll keluar batas. Misalnya, Modifier.focusable() menggunakan mekanisme ini untuk menyematkan item yang saat ini difokuskan. (Ib8881, b/259274257, b/195049010)
  • Sistem fokus ditulis ulang menggunakan Modifier.Node API eksperimental baru. (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589)
  • Menambahkan properti semantik IsContainer di Platform. Properti ini akan digunakan dalam perubahan selanjutnya yang menentukan urutan traversal berdasarkan makna semantik elemen seperti platform. (I63379)
  • Menambahkan peran aksesibilitas baru DropdownList. Peran ini dapat digunakan untuk mereplikasi perilaku TalkBack saat memfokuskan android.widget.Spinner. (I177e5, b/236159001)
  • Anda kini dapat menggunakan PlatformTextStyle(emojiSupportMatch) untuk secara opsional menonaktifkan pemrosesan dukungan emoji untuk satu Paragraf. (Ia7100, b/139326806)
  • Pengujian UI Android Compose kini akan menjalankan penerusan tata letak untuk setiap frame saat menjalankan frame agar masuk ke mode tidak ada aktivitas (misalnya melalui waitForIdle). Hal ini dapat memengaruhi pengujian yang menegaskan pada frame animasi tata letak individual. (I8ea08, b/222093277)
  • Menambahkan TextMotion eksperimental ke TextStyle untuk menentukan Teks menjadi Static(default) atau Animasi. Gunakan TextMotion.Animated jika Text akan diskalakan, diterjemahkan, atau diputar melalui animasi. (I24dd7)

Versi 1.4.0-rc01

8 Maret 2023

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

Perubahan API

  • Menambahkan overload fungsi composable AndroidView, yang menerima parameter onReset. Hal ini memungkinkan instance View digunakan kembali saat node-nya dalam komposisi dibuang dan digunakan kembali dengan cara yang kompatibel. Hal ini sangat berguna untuk LazyRows dan LazyColumns View. (I3f10d, b/230099236)
  • Memperkenalkan PlatformTextInputAdapter API tingkat rendah baru untuk mem-build implementasi input teks kustom yang berkomunikasi langsung dengan API platform. (I58df4)

Perbaikan Bug

  • Tindakan semantik SetText dari BasicTextField kini akan memperbarui buffer teks menggunakan jalur kode yang sama dengan update IME dan fungsi pengujian (misalnya, performTextReplacement).
  • Fungsi pengujian teks performTextClearance, performTextReplacement, dan performTextSelection kini menggunakan SemanticsActions. (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 dari ModifierNodeElement secara langsung. (I2256b)
  • Menambahkan callback Modifier.Node.onReset() baru yang memungkinkan Anda mereset beberapa status lokal untuk menangani kasus dengan benar saat Layout akan digunakan kembali (misalnya sebagai item LazyColumn). Memperbaiki FocusTargetModifierNode sehingga mereset status yang difokuskan dengan benar. (I65495, b/265201972)
  • Menambahkan parameter BlendMode ke metode DrawScope.drawText, Paragraph.paint, dan MultiParagraph.paint untuk mendukung berbagai algoritma pencampuran saat menggambar teks di Canvas. (I57508)

Perbaikan Bug

  • Algoritma urutan fokus aksesibilitas ditingkatkan, misalnya panel atas/bawah lebih sering dibaca pertama/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 menjadi release() (I4667a)
  • Menambahkan waitUntilNodeCount, waitUntilAtLeastOneExists, waitUntilExactlyOneExists, dan waitUntilDoesNotExist sebagai API eksperimental ke ComposeTestRule, memperluas waitUntil API untuk menerima pencocok dan jumlah node apa pun. Lihat ComposeTestRule untuk dokumentasi lebih lanjut. (Ifa1b9, b/226934294)
  • Mengganti nama Font.MaximumAsyncTimeout menjadi Font.MaximumAsyncTimeoutMillis. (I07af5)
  • Menghapus GoogleFont.Provider.AllFontsListUri dan menautkannya dalam ktdoc. (I16f29)

Perbaikan Bug

  • Menambahkan dokumen untuk AndroidFont.fontVariationSettings (I7d9e2)

Versi 1.4.0-alpha05

25 Januari 2023

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

Perubahan API

  • Memperkenalkan overload eksperimental baru untuk fungsi runComposeUiTest dan fungsi create*ComposeRule yang menerima parameter CoroutineContext. Konteks akan digunakan untuk komposisi pengujian serta panggilan LaunchedEffect dan rememberCoroutineScope() dalam komposisi. (I10614, b/265177763)
  • Menambahkan API baru untuk melacak kecepatan 1 dimensi (If5a82)
  • FocusRequester sekarang ditandai sebagai @Stable. (I580ee)
  • Menghapus anotasi eksperimental dari konstruktor DialogProperties yang menggunakan parameter usePlatformDefaultWidth. (Ic4048)
  • Menambahkan fungsi ke posisi penghitungan dan tangen pada jarak di jalur - dengan PathMeasure.getPosition() dan PathMeasure.getTangent() (I3b47c)
  • Menghapus penyetel publik yang terekspos secara tidak sengaja pada PlatformParagraphStyle. (I07f47)
  • Lebih banyak jenis/nullability dari fungsi inline/tersembunyi yang tidak digunakan lagi (I24f91)
  • Menambahkan AnnotatedString.hasStringAnnotations untuk meng-kueri anotasi dengan alokasi nol. (I94dfe, b/246960758)
  • Menambahkan overload baru untuk fungsi TextMeasurer.measure yang menggunakan String sebagai teks. (I47b2d, b/242705342)
  • LineBreak dan Hyphens API di TextStyle kini menjadi stabil. (Ic1e1d)

Kontribusi Eksternal

  • Metode notifyFocusedRect di TextInputSession dan TextInputService tidak digunakan lagi. (I23a04, b/262648050)

Versi 1.4.0-alpha04

11 Januari 2023

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

Fitur Baru

  • Menambahkan PinnableContainer API baru yang memungkinkan item daftar lambat disematkan, sehingga item tersebut tidak dibuang saat di-scroll keluar batas. Misalnya, Modifier.focusable() menggunakan mekanisme ini untuk menyematkan item yang saat ini difokuskan. (Ib8881, b/259274257, b/195049010)
  • Sistem fokus ditulis ulang menggunakan Modifier.Node API eksperimental baru. (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589)
  • Menambahkan properti semantik IsContainer di Platform. Properti ini akan digunakan dalam perubahan selanjutnya yang menentukan urutan traversal berdasarkan makna semantik elemen seperti platform. (I63379)
  • Menambahkan peran aksesibilitas baru DropdownList. Peran ini dapat digunakan untuk mereplikasi perilaku TalkBack's saat memfokuskan android.widget.Spinner. (I177e5, b/236159001)
  • Anda kini dapat menggunakan PlatformTextStyle(emojiSupportMatch) untuk secara opsional menonaktifkan pemrosesan dukungan emoji untuk satu Paragraf. (Ia7100, b/139326806)
  • Pengujian UI Android Compose kini akan menjalankan penerusan tata letak untuk setiap frame saat menjalankan frame agar masuk ke mode tidak ada aktivitas (misalnya melalui waitForIdle). Hal ini dapat memengaruhi pengujian yang menegaskan pada frame animasi tata letak individual. (I8ea08, b/222093277)
  • Menambahkan TextMotion eksperimental ke TextStyle untuk menentukan Teks menjadi Static(default) atau Animasi. Gunakan TextMotion.Animated jika Text akan diskalakan, diterjemahkan, atau diputar melalui animasi. (I24dd7)

Perubahan API

  • Mengganti argumen maxSize: IntSize di drawText dengan size: Size agar selaras dengan fungsi DrawScope lainnya. size disetel ke Size.Unspecified secara default yang tidak akan mengubah perilaku default sebelumnya. (Icd27d)
  • Menghapus konstruktor font eksperimental yang tidak digunakan lagi. (I8a724, b/261435386)
  • Class data alat UI Group kini memiliki kolom, isInline, yang menunjukkan apakah grup tersebut untuk panggilan ke fungsi composable inline. Jika isInline adalah true, maka panggilan tersebut untuk fungsi composable inline. Namun, nilainya mungkin salah (false) untuk panggilan ke fungsi composable inline yang berasal dari modul yang dikompilasi dengan versi plugin compiler compose yang tidak menghasilkan informasi fungsi inline. (Idb846)
  • Menstabilkan sejumlah API yang sebelumnya masih eksperimental
  • Rotary Scroll Event API kini stabil (I42ad3, b/261561229)
  • FontVariation API sekarang stabil (I8779f, b/241016309)
  • Semua konstruktor Font() kini menjadi API stabil (I5948b, b/261435386)
  • DeviceFontFamilyName kini stabil (I8b640, b/261435386)
  • Konstruktor AndroidFont dengan variationSettings kini merupakan API stabil, dan dapat digunakan untuk membuat jenis deskripsi font baru. (I5adcc, b/261565807)
  • createFontFamilyResolver API kini stabil. Ini dapat digunakan untuk menangkap pengecualian yang tidak tertangkap selama pemuatan font asinkron. (Ibb481, b/261435386)
  • Font.loadingStrategy API kini stabil. (I5937c, b/261435386)
  • GoogleFont API kini stabil. (Ic90b0, b/261435386)
  • TextUnit(float, TextUnitType) sekarang menjadi API stabil. (I90c84, b/261561612)
  • pluralStringResource sekarang menjadi API stabil. (I09849, b/261439703)

Versi 1.4.0-alpha03

7 Desember 2022

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

Perubahan API

  • Menghapus ExperimentalComposeUiApi dari PointerIcon (I23af8)
  • Memperkenalkan tindakan aksesibilitas Halaman: PageUp, PageDown, PageLeft, PageRight. Perhatikan bahwa ini hanya tersedia dari API 29. (Ida4ab)
  • Memperbarui tampilan parameter rememberNestedScrollConnection dari tampilan root ke tampilan host. (Ia5200)
  • Menambahkan Modifier API untuk melakukan kueri info scroll ancestor. (I2ba9d, b/203141462)
  • Digunakan di Clickable untuk menunda interaksi tekan dengan benar, saat gestur dapat menjadi peristiwa scroll.
  • Memperbaiki Clickables yang tidak menunda ripple dengan benar, saat digunakan di dalam Scrollable ViewGroup.
  • Mengupdate Panel Samping dan Sheet untuk menunda penekanan dengan benar jika gestur dapat menjadi peristiwa scroll.
  • Mengganti nama CompositingStrategy.Always menjadi Offscreen untuk menunjukkan bahwa graphicsLayer akan selalu dirender menjadi buffering perantara (I47dc1)
  • Kelebihan tata letak dengan beberapa slot konten kini stabil (I10566, b/248294649)
  • Menambahkan API baru eksperimental PerfettoTrace.record {} dan PerfettoTraceRule untuk merekam aktivitas Perfetto (juga dikenal sebagai Pelacakan Sistem) sebagai bagian dari pengujian, untuk memeriksa perilaku dan performa pengujian. (I3ba16)
  • Dalam pengujian UI menggunakan aturan Compose, kontinuasi yang dilanjutkan selama callback withFrameNanos tidak akan dikirim hingga semua callback frame selesai berjalan. Hal ini cocok dengan perilaku Compose saat berjalan secara normal. Namun, pengujian yang mengandalkan perilaku lama mungkin gagal. Hal ini hanya akan memengaruhi kode yang memanggil withFrameNanos atau withFrameMillis secara langsung, dan memiliki logika di luar callback yang diteruskan ke fungsi tersebut yang mungkin perlu dipindahkan di dalam callback. Lihat perubahan pengujian animasi di CL ini untuk mengetahui contohnya.
  • Menambahkan parameter onPerformTraversals: (Long) -> Unit opsional ke konstruktor TestMonotonicFrameClock dan fungsi factory untuk menjalankan kode setelah callback withFrameNanos, tetapi sebelum melanjutkan coroutine pemanggil. (Idb413, b/254115946, b/222093277, b/255802670)
  • Menambahkan EmojiCompat ke Compose (Ibf6f9, b/139326806)
  • Menambahkan parameter wallpaper baru ke @Preview untuk dukungan warna dinamis (I9f512)

Perbaikan Bug

  • Notifikasi penerapan snapshot sekarang dikirim setelah Recomposer selesai menerapkan perubahan. (Iad6c0, b/222093277)
  • Memperkenalkan perubahan dalam captureToImage untuk memungkinkan pengambilan screenshot multi-aplikasi. Hal ini berguna untuk pengujian screenshot yang menggunakan Compose PopUps. (I169c5)

Update Dependensi

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

Versi 1.4.0-alpha02

9 November 2022

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

Perubahan API

  • Memperbarui GraphicsLayerScope untuk mengekspos ukuran graphicsLayer saat ini. Hal ini berguna untuk menghitung transformasi graphicsLayer sebagai fungsi ukuran Composable. (If8c43,b/181387080)
  • Memperkenalkan CompositingStrategy untuk menentukan kapan harus memanfaatkan lapisan komposisi di luar layar untuk merender konten graphicsLayer. Otomatis mempertahankan perilaku default yang memanfaatkan lapisan secara internal jika versi alfa diterapkan atau RenderEffect/Overscroll. Akan selalu menampilkan buffering di luar layar, tempat ModulateAlpha akan menghindari penggunaan buffering di luar layar dan sebagai gantinya akan memodulasi setiap petunjuk gambar yang direkam dalam graphicsLayer. Penggunaan ModulateAlpha akan tetap memanfaatkan buffering di luar layar untuk penggunaan RenderEffect/Overscroll (I25e82, b/256382834)
  • invalidateSubtree() telah ditambahkan ke Modifier.Node untuk memungkinkan pembatalan seluruh hierarki tata letak dan gambar. (I4bd90)
  • Mempromosikan rememberNestedScrollInteropConnection ke stabil. Memperkenalkan kemampuan untuk meneruskan tampilan root ke rememberNestedScrollInteropConnection. Hal ini dapat membantu tampilan kustom bereaksi lebih baik terhadap batasan scroll, terutama dalam tampilan non-standar (misalnya ModalBottomSheetDialog). (I9e107)
  • Menambahkan antarmuka ObserverNode yang dapat digunakan oleh implementasi Modifier.Node yang perlu diberi tahu saat nilai yang sebelumnya dibaca telah berubah (I5728b, b/247716483)
  • Menambahkan konstruktor baru ke Paint yang menerima android.graphics.Paint native. Juga menambahkan fungsi ekstensi toComposePaint() yang mengonversi objek Paint native yang ada menjadi Compose Paint. (Ica91b)
  • Menambahkan FontFamily.Resolver.resolveAsTypeface baru untuk digunakan di Android. (I8950b)
  • Menambahkan ToolingState untuk mengizinkan alat mengubah status internal Composable (Ie6614)
  • Memfaktorkan ulang alat agar memiliki dukungan yang lebih baik untuk animasi baru yang ditambahkan (I8677b)
  • Menambahkan parameter minLines ke dalam material dan material3 Text, TextField, dan OutlinedTextField yang memungkinkan penetapan tinggi minimum komponen dalam jumlah baris (I4af1d)

Versi 1.4.0-alpha01

24 Oktober 2022

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

Perubahan API

  • Metode baru, awaitEachGesture(), untuk mendeteksi gestur telah ditambahkan. Metode ini beroperasi mirip dengan forEachGesture(), tetapi gestur loop over beroperasi sepenuhnya dalam AwaitPointerEventScope sehingga peristiwa di antara iterasi tidak dapat hilang.
  • forEachGesture() tidak digunakan lagi dan digantikan dengan awaitEachGesture() karena memungkinkan peristiwa di antara gestur hilang. (Iffc3f, b/251260206)
  • Penghentian daur ulang objek aksesibilitas di androidx. Kami mendapati bahwa perubahan performa dapat diabaikan bahkan pada versi lama yang didukung. (I0a961)
  • Menambahkan DrawStyle sebagai atribut Eksperimental ke TextStyle dan SpanStyle untuk mengaktifkan gambar teks yang digarisbatasi. (If24b8, b/155421273)
  • AnnotatedString.Builder sekarang mengimplementasikan kotlin.text.Appendable. (I1a061, b/231030444)
  • AnnotatedString.Builder sekarang memiliki metode append(AnnotatedString, start: Int, end: Int) untuk menambahkan substring AnnotatedString dan gaya yang berpotongan.
  • Menambahkan parameter DrawStyle ke fungsi gambar Paragraph dan MultiParagraph yang memungkinkan gambar teks yang digarisbatasi. (Ic8102, b/155421273)

Kontribusi Eksternal

  • Terima kasih kepada vighnesh karena telah menambahkan Perangkat TV ke Pratinjau (Ie15cd)

Versi 1.3

Versi 1.3.3

11 Januari 2023

androidx.compose.ui:ui-*:1.3.3 dirilis. Versi 1.3.3 berisi commit ini.

Perbaikan Bug

  • Memperbaiki error yang terkadang terjadi di Android 9 saat Activity menyimpan status View Compose. (I0b755, b/260322832)

Versi 1.3.2

7 Desember 2022

androidx.compose.ui:ui-*:1.3.2 dirilis. Versi 1.3.2 berisi commit berikut ini.

Perbaikan Bug

  • Diupdate untuk menggunakan Profobuf 3.21.8, yang menghindari notifikasi keamanan di protobuf-javalite:3.19.4 (CVE-2022-3171) (b/255545055)

Versi 1.3.1

9 November 2022

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

Versi 1.3.0

24 Oktober 2022

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

Perubahan penting sejak versi 1.2.0

  • Suite API eksperimental baru LookaheadLayout (memungkinkan perilaku animasi yang sebelumnya mustahil)
  • Suite API eksperimental baru Modifier.Node (alternatif berperforma lebih tinggi untuk Modifier.composed)
  • Peningkatan dukungan inset jendela.
  • Memfokuskan dukungan untuk D-Pad dan keyboard hardware di LazyLists.
  • Elevasi maksimum yang didukung dalam dialog dan pop-up telah dikurangi menjadi 8 dp (perubahan yang dapat menyebabkan gangguan perilaku pada beberapa sistem desain yang disesuaikan – alasan dalam catatan rilis beta01)
  • Berbagai peningkatan API minor yang tidak menyebabkan gangguan
  • Berbagai perbaikan bug dan peningkatan performa

Versi 1.3.0-rc01

5 Oktober 2022

androidx.compose.ui:ui-*:1.3.0-rc01 dirilis. Version 1.3.0-rc01 berisi commit berikut ini.

Perubahan API

  • Menambahkan Tanda Hubung API eksperimental baru untuk mendukung tanda hubung otomatis dalam Teks (Iaa869)

Perbaikan Bug

  • Font DeviceFontFamilyName tidak akan mengonfigurasi setelan variasi wght dan ital secara default, melainkan menggunakan setelan platform untuk Typeface yang dimuat. (Ia7a6d, b/246989332)
  • Memperbaiki kebocoran memori LazyColumn - onModifierLocalsUpdated tidak dipanggil dengan nilai default saat pengubah digunakan kembali (b/230168389)

Versi 1.3.0-beta03

21 September 2022

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

Perubahan API

  • Menambahkan opsi untuk menyesuaikan jeda baris di Text. (I86907)
  • Mengubah argumen size:IntSize dengan constraints: Constraints dalam metode TextMeasurer.measure untuk mendukung batasan lebar minimum. (I37530, b/242707525)

Perbaikan Bug

  • BackHandler API Aktivitas AndroidX kini berfungsi dalam composable Dialog. (I35342)

Versi 1.3.0-beta02

7 September 2022

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

Perubahan API

  • Menambahkan overload eksperimental untuk Tata Letak yang menerima daftar beberapa lambda konten composable, yang memungkinkan ancaman yang dapat diukur untuk dimasukkan ke dalam berbagai lambda konten secara berbeda (Ic1b4e)

Perubahan pada Focus API eksperimental:

  • FocusDirection.In dan FocusDirection.Out tidak digunakan lagi dan diganti dengan FocusDirection.Enter dan FocusDirection.Exit. (Ia4262, b/183746982)
  • Menambahkan dua properti fokus baru, yaitu masuk dan keluar, untuk menentukan perilaku kustom FocusManager.moveFocus(Enter) dan FocusManager.moveFocus(Exit). (I5f3f9, b/183746982)
  • Anda kini dapat menggunakan FocusRequester.Cancel untuk membatalkan pemindahan fokus. FocusRequester.Cancel dapat digunakan di salah satu properti fokus berikut: atas, bawah, kiri, kanan, berikutnya, sebelumnya, mulai, akhir, masuk, dan keluar. (Ib300f)

Versi 1.3.0-beta01

24 Agustus 2022

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

Pemfaktoran Ulang Node Pengubah

Lapisan yang menangani instance Modifier/Modifier.Element dan mengoordinasikan perilakunya di LayoutNodes sebagian besar telah difaktorkan ulang. Karena ini adalah pemfaktoran ulang yang tidak memengaruhi API publik dari banyak pengubah di Compose, dan dapat dilihat sebagai perubahan khusus implementasi. Meskipun demikian, ini adalah perubahan penting karena berbagai alasan. (Ie4313)

Ringkasan Perubahan

Modifier.Node API eksperimental yang ditambahkan menyediakan abstraksi yang memungkinkan status dipertahankan pada instance yang akan dipertahankan dengan siklus proses node tata letak, dan akan dialokasikan per node tata letak dan per penggunaan yang sesuai dengan Modifier.Element yang menghasilkannya.

Secara garis besar, abstraksi ini menyediakan mekanisme alternatif untuk menghasilkan pengubah stateful tanpa mengandalkan mekanisme Modifier.composed API.

Risiko

Perubahan ini binernya sangat kompatibel dengan rilis sebelumnya, dan dimaksudkan agar kompatibel dengan perilaku sebelumnya yang dapat diamati, baik secara praktis maupun wajar. Dengan demikian, ada beberapa subsistem compose yang tidak difaktorkan ulang, dan kemungkinan perilaku tersebut telah berubah dengan cara yang tidak dicakup oleh pengujian kami serta belum ditemukan dan diperbaiki.

Upgrade ke rilis ini dengan hati-hati. Jika Anda yakin hal ini telah merusak sesuatu, beri tahu kami.

API Eksperimental

Berbagai API eksperimental telah ditambahkan, semuanya terkait dengan konsep baru "Node Pengubah". Modifier.Node dibuat sebagai hasil dari

  • fun modifierElementOf(…): Modifier
  • abstract class ModifierNodeElement
  • abstract class Modifier.Node
  • abstract class DelegatingNode
  • interface LayoutModifierNode
  • interface DrawModifierNode
  • interface SemanticsNode
  • interface PointerInputNode
  • interface ModifierLocalNode
  • interface ParentDataModifierNode
  • interface LayoutAwareModifierNode
  • interface GlobalPositionAwareModifierNode
  • interface IntermediateLayoutModifierNode

Perubahan yang dapat menyebabkan gangguan perilaku

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

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

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

Perubahan API

  • Memperbaiki masalah yang menyebabkan painterResource tidak dapat diupdate pada perubahan konfigurasi (I58e73, b/228862715)
  • rememberTextMeasurer tidak lagi menggunakan parameter FontFamily.Resolver, Density, atau LayoutDirection. Gunakan konstruktor TextMeasurer untuk memberikan nilai kustom untuk parameter ini. (Ia1da3)
  • Menambahkan properti DialogProperties.decorFitsSystemWindows untuk memungkinkan Dialog mendukung WindowInsets. (I57742, b/229378542)
  • Memindahkan konstruktor font kembali ke file Kotlin asli untuk mempertahankan kompatibilitas biner. Tidak ada perubahan dari rilis stabil terakhir. (Ieb2f3)
  • Menghapus operator yang tidak diperlukan dari beberapa definisi yang sama - ini tidak berpengaruh. (I6c309)
  • FontVariation.Setting adalah antarmuka tertutup, untuk mengizinkan API pembatasan di masa mendatang. (I11021, b/143703328)
  • Menambahkan CompositionGroup.findParameters ke SlotTree.kt. Hal ini memungkinkan alat mengambil parameter untuk CompositionGroup tanpa harus mengurai seluruh tabel slot. (I124fe)

Versi 1.3.0-alpha03

10 Agustus 2022

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

Perubahan API

  • LayoutCoordinates.findRootCoordinates() kini bersifat publik (I7fa37, b/204723384)
  • Menambahkan API eksperimental untuk mendapatkan LayoutCoordinates di PlacementScope. Ini memungkinkan developer mengetahui tempat tata letak saat ini untuk menempatkan turunan relatif terhadap posisinya. (I5482b, b/238632578)
  • DitambahkanLayoutCoordinates.transformFrom untuk mendapatkan transformasi Matriks dari satu LayoutCoordinates ke sisi lain. (Ic5ab1, b/238632578)
  • Menghentikan penggunaan SemanticsModifier.id dan memindahkan ID semantik ke LayoutInfo.semanticsId. (Iac808, b/203559524)
  • Font Resource kini mendukung setelan variasi font (API 26+). (I900dd, b/143703328)
  • Dukungan font variabel dalam DeviceFontFamilyNameFont (Ic1279, b/143703328)
  • Konstruktor font kini menerima daftar FontVariation.Setting untuk mengonfigurasi font variabel pada perangkat O+. (I11a9d, b/143703328)
  • Menambahkan FontVariation API untuk menentukan dan menggunakan font variabel. (I3c40c, b/143703328)
  • Konstruktor LineHeightStyle.Alignment kini bersifat publik (eksperimental) (I4bbbe, b/235876330)
  • Paragraf kini bersifat diharapkan|aktual dan ditentukan untuk Android dan Desktop. (Id387e, b/239962983)
  • Antarmuka Paragraf kini disegel antarmuka Paragraf. Tidak ada kasus penggunaan untuk subclass paragraf, dan sebaiknya hubungi kami jika perubahan ini memengaruhi Anda. (If5247, b/239962983)
  • Menghapus anotasi eksperimental dari PlatformTextStyle dan LineHeightStyle. (I64bef)
  • Menghentikan penggunaan TextInputService.show|hideSoftwareKeyboard. Sebagai gantinya, gunakan SoftwareKeyboardController dalam kode aplikasi dan TextInputSession dalam kode pengelolaan IME. (I14e4c, b/183448615)
  • Menambahkan API baru untuk jenis animasi yang ada (I26179)

Perbaikan Bug

  • Menambahkan @RequiresPermission ke API yang memerlukan pemberian izin POST_NOTIFICATIONS di SDK 33 dan yang lebih baru. (Ie542e, b/238790278)

Versi 1.3.0-alpha02

27 Juli 2022

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

Perubahan API

  • Menambahkan properti baru PointerInputChange#pressure untuk mengambil tekanan. (I45a5e, b/205164819)
  • Menambahkan rememberTextMeasurer untuk membuat dan mengingat instance TextMeasurer dengan mudah dalam komposisi. (I8d66e)
  • Rect, RoundRect, dan MutableRect kini mendukung sintaksis in Kotlin untuk memanggil fungsi contains. (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 mencakup pressKeys, keysDown, dan keysUp. (I81d77)
  • Memfaktorkan ulang nama parameter dan konstanta dalam KeyInjectionScope untuk menyertakan akhiran 'Millis' dengan satuan konstanta dan parameter tersebut adalah milidetik. (Iabef5)
  • Menambahkan metode toStringForLog() ke EditCommand untuk membantu memecahkan masalah pengeditan teks. (I53354, b/228862731)
  • Menambahkan fungsi ekstensi drawText pada DrawScope untuk memberikan cara menggambar teks multigaya pada composable dan pengubah yang beroperasi di DrawScope seperti Canvas dan drawBehind. (I16a62, b/190787898)
  • Memperkenalkan API eksperimental baru bernama TextMeasurer yang memungkinkan komputasi tata letak teks arbitrer yang membuat hasil identik pada BasicText, terlepas dari apa pun nilai runtime Compose. (I17101)
  • Menambahkan mapTree ke SlotTree.kt. Hal ini memungkinkan alat untuk memeriksa SlotTree tanpa membuat salinan dalam memori terlebih dahulu seperti yang dilakukan AsTree. Untuk Layout Inspector, penambahan ini memberikan peningkatan performa sekitar faktor 10. (I5e113)
  • Mengubah Pratinjau Compose untuk disimpan dalam file output biner, agar developer dapat menulis dan menggunakan kembali anotasi MultiPreview dari library. (I85699, b/233511976)

Perbaikan Bug

  • Saat menambahkan peristiwa InputEventChange ke Pelacak Velocity, kita akan mempertimbangkan delta, bukan posisi. Hal ini akan menjamin kecepatan dihitung dengan benar untuk semua kasus meskipun elemen target bergerak (Icea9d, b/216582726, b/223440806, b/227709803)
  • Memperbaiki NPE yang disebabkan oleh AnnotatedString.toUpperCase saat terdapat anotasi. (I0aca2, b/210899140)

Versi 1.3.0-alpha01

29 Juni 2022

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

Perubahan API

  • LookaheadLayout baru yang mendukung penerusan lookahead sebelum pengukuran/tata letak sebenarnya. Hal ini memungkinkan pra-penghitungan tata letak saat tata letak berubah, serta mengizinkan pengukuran/tata letak pasca-lookahead menggunakan ukuran/posisi yang telah dihitung sebelumnya untuk menganimasikan ukuran dan posisi ke target. SubcomposeLayouts belum didukung, tetapi akan ada dalam rilis mendatang. (I477f5)
  • Menambahkan parameter alfa opsional ke ragam Brush TextStyle dan SpanStyle untuk mengubah opasitas seluruh Text. (Ic2fac, b/234117635)
  • Memperkenalkan jenis anotasi UrlAnnotation dan metode terkait untuk mendukung dukungan link TalkBack di AnnotatedString. (I1c754, b/231495122)
  • Memindahkan fungsi utilitas ke runtime (I4f729)

Perbaikan Bug

Kontribusi Eksternal

  • Menambahkan API baru WindowInfo.keyboardModifiers untuk mengamati statusnya dalam fungsi composable atau melalui snapshotFlow (Icdb8a)

Versi 1.2

Versi 1.2.1

10 Agustus 2022

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

Perbaikan Bug

  • Memperbaiki nullpointer pada inspector (b/237987764)
  • Memperbaiki pengecualian transmisi class selama remember di inspector (b/235526153)

Versi 1.2.0

27 Juli 2022

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

Perubahan penting sejak 1.1.0

  • Peningkatan traversal fokus:

    • Scrolling yang berfokus pada daftar Lazy kini berfungsi, menggunakan BeyondBoundsLayout core API baru
    • API penyesuaian perilaku baru di FocusOrder dan FocusProperties
    • Peningkatan perilaku dengan keyboard fisik atau remote TV
  • API baru untuk:

    • Inset jendela
    • Primitif core untuk animasi tata letak, tak terbatas, dan berbasis gestur
    • Kemampuan GraphicsLayer, termasuk RenderEffect
  • Berbagai perbaikan bug dan peningkatan performa

Versi 1.2.0-rc03

29 Juni 2022

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

  • Tidak ada perubahan sejak versi 1.2.0-rc02.

Versi 1.2.0-rc02

22 Juni 2022

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

Versi 1.2.0-rc01

15 Juni 2022

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

Perubahan API

  • Antarmuka di library Compose kini dibuat menggunakan metode antarmuka default jdk8 (I5bcf1)
  • Menambahkan fungsi dengan urutan yang lebih tinggi ke KeyInjectionScope untuk memasukkan penekanan tombol saat tombol lain ditahan atau diaktifkan. Fungsi ini mencakup withKeysDown, withKeysToggled, dll. Juga menambahkan properti untuk memeriksa apakah tombol meta tertentu tidak aktif, misalnya, isCtrlDown untuk memeriksa apakah tombol kontrol ditekan. Lihat KeyInjectionScope untuk dokumentasi tentang setiap fungsi. (I9f6cd, b/229831515)
  • OverscrollEffect eksperimental telah diperkenalkan untuk memungkinkan efek overscroll kustom, bersama overload Modifier.scrollable yang menerimanya.
  • LocalOverScrollConfiguration eksperimental telah dipindahkan dari foundation.gesture ke paket dasar dan diganti namanya menjadi LocalOverscrollConfiguration (If19fb, b/204650733)
  • Mengganti nama runComposeUiTestWithoutActivity {} menjadi runEmptyComposeUiTest {}, yang menyesuaikannya dengan createEmptyComposeRule() (I6fed7)

Versi 1.2.0-beta03

1 Juni 2022

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

Perubahan API

  • Menambahkan pressKeyTimes serta isCapsLockOn dan semacamnya ke KeyInjectionScope. Selain itu, API ini sekarang mendukung pola injeksi gabungan mouse dan keyboard, seperti mengklik tombol mouse dengan tombol meta ditahan. (I4c8da, b/229831515)
  • Menambahkan dukungan eksperimental untuk memasukkan peristiwa tombol. Gunakan performKeyInput untuk mengirim peristiwa tombol, atau kirim melalui properti key dari MultiModalInjectionScope selama gestur input multi-modal dengan performMultiModalInput. Lihat KeyInjectionScope untuk dokumentasi API. (Ic5000, b/229831515)
  • Menambahkan GoogleFont.Provider.AllFontsListUri baru untuk mengambil sumber internet kanonis Google Fonts yang didukung oleh Android.
  • Memperbaiki pesan error yang ditampilkan ulang saat GoogleFont gagal dimuat di Compose. (I0416c)

Perbaikan Bug

  • Saat menambahkan peristiwa InputEventChange ke Pelacak Kecepatan, kita akan mempertimbangkan delta, bukan posisi. Hal ini akan menjamin kecepatan dihitung dengan benar untuk semua kasus meskipun elemen target bergerak (I51ec3, b/216582726, b/223440806, b/227709803)
  • Setelan Show Layout Bounds kini akan diterapkan untuk composable segera setelah mengalihkannya dari kartu setelan cepat, tanpa harus keluar dan masuk kembali ke aktivitas tersebut. (I843d5, b/225937688)
  • Pencarian string aksesibilitas tidak memicu pemuatan font. Sebelumnya, fungsi ini akan mencoba memuat font untuk StyleSpans, yang menyebabkan error jika FontFamily.Resolver telah ditimpa. (I4609d)
  • Menekan tombol hapus maju saat kursor berada di akhir kolom teks tidak akan lagi error.
  • DeleteSurroundingTextCommand dan DeleteSurroundingTextInCodePointsCommand sekarang mengharuskan argumen konstruktornya tidak negatif. (Ica8e6, b/199919707)

Versi 1.2.0-beta02

18 Mei 2022

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

Perubahan API

  • Menggunakan kembali fungsi dalam jenis pratinjau lainnya (I19f39)

Perbaikan Bug

  • ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer telah diganti namanya menjadi DisposeOnDetachedFromWindowOrReleasedFromPool untuk lebih mencerminkannya saat pembuangan benar-benar terjadi, bukan hanya ketika tidak terjadi. (If15ca)

Versi 1.2.0-beta01

11 Mei 2022

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

Fitur Baru

  • Ini adalah rilis beta pertama 1.2.

Perubahan API

  • Menambahkan BeyondBoundsInterval eksperimental yang dapat digunakan oleh implementasi kustom LazyList saat menata tata letak item di luar batas yang terlihat (Ifabfb, b/184670295)
  • Versi dengan kunci Modifier.composed kini menjadi API stabil (Ie65e4, b/229988420)
  • Menyederhanakan rememberNestedScrollConnection API untuk menggunakan lokal komposisi guna mendapatkan informasi tampilan saat ini (I67ca7)
  • Anotasi @ComposableTarget dan anotasi yang ditandai dengan @ComposableTargetMarker kini dapat digunakan pada cakupan file menggunakan awalan @file. Menggunakan anotasi target pada cakupan file akan menyebabkan compiler menganggap semua fungsi composable dalam file tersebut ditujukan untuk menargetkan applier terkait. Misalnya, penggunaan @file:UiComposable akan mendeklarasikan bahwa semua fungsi @Composable menargetkan applier Compose UI. Fungsi yang perlu menargetkan applier lain harus secara eksplisit menyediakan anotasi penanda target untuk applier yang diinginkan. (I40804)
  • Memperkenalkan API pengujian eksperimental baru yang tidak bergantung pada platform: interface ComposeUiTest dan fun runComposeUiTest(block: ComposeUiTest.() -> Unit), yang dapat digunakan untuk menjalankan pengujian Compose UI tanpa memerlukan TestRule. Untuk menjalankan pengujian tanpa ComposeTestRule, teruskan pengujian sebagai lambda ke runComposeUiTest, dan gunakan metode serta anggota dalam cakupan penerima ComposeUiTest, yang sama seperti dalam ComposeContentTestRule.

    interface AndroidComposeUiTest dan fun runAndroidComposeUiTest(block: AndroidComposeUiTest.() -> Unit) khusus Android ditambahkan untuk memberikan akses ke Aktivitas yang mendasarinya, mirip dengan AndroidComposeTestRule. Untuk kontrol lebih, Anda dapat membuat instance class AndroidComposeUiTestEnvironment sendiri.

    Implementasi Desktop adalah class DesktopComposeUiTest, tetapi tidak ada fungsi run khusus Desktop yang ditawarkan saat ini.

    Memigrasikan pengujian dari ComposeTestRule ke ComposeUiTest dapat dilakukan seperti ini (contoh Android). Dari:

    @RunWith(AndroidJUnit4::class)
    class MyTest {
        @get:Rule val rule = createComposeRule()
        @Test
        fun test() {
            rule.setContent {
                Text("Hello Compose!")
            }
            rule.onNodeWithText("Hello Compose!").assertExists()
        }
    }
    

    Ke:

    @RunWith(AndroidJUnit4::class)
    class MyTest {
        @Test
        @OptIn(ExperimentalTestApi::class)
        fun test() = runComposeUiTest {
            setContent {
                Text("Hello Compose!")
            }
            onNodeWithText("Hello Compose!").assertExists()
        }
    }
    
  • Untuk saat ini, ComposeContentTestRule dan ComposeTestRule tidak diperluas dari ComposeUiTest, yang berarti fungsi ekstensi di ComposeUiTest belum dapat dipanggil di antarmuka TestRule. Saat ComposeUiTest menstabilkan API, ComposeContentTestRule dan ComposeTestRule akan diubah untuk memperluas dari ComposeUiTest. (Ib4e90)

  • LineHeightBehavior diganti namanya menjadi LineHeightStyle

  • LineVerticalAlignment diganti namanya menjadi LineHeightStyle.Alignment

  • LineHeightTrim diganti namanya menjadi LineHeightStyle.Trim

  • Nilai konstruktor default dari LineHeightStyle dihapus (I582bf, b/181155707)

  • Menambahkan Brush ke TextStyle dan SpanStyle untuk memberikan cara menggambar teks dengan pewarnaan gradien. (I53869, b/187839528)

  • Atribut trimFirstLineTop, trimLastLineBottom dari LineHeightBehavior diubah menjadi satu enum: LineHeightTrim. LineHeightTrim memiliki nilai 4 status yang ditentukan oleh dua boolean: FirstLineTop, LastLineBottom, Both, dan None (Ifc6a5, b/181155707 )

  • Menambahkan LineHeightBehavior ke TextStyle dan ParagraphStyle. LineHeightBehavior mengontrol apakah tinggi baris diterapkan di bagian atas baris pertama dan di bagian bawah baris terakhir. Ini juga menentukan perataan garis di ruang yang disediakan oleh TextStyle(lineHeight).

    Misalnya, Anda dapat memperoleh perilaku yang mirip dengan CSS yang ditentukan melalui LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false).

  • Konfigurasi trimFirstLineTop, trimLastLineBottom hanya berfungsi dengan benar saat includeFontPadding bernilai salah (false). (I97332, b/181155707)

  • Fungsi PlatformParagraphStyle.lerp dan PlatformSpanStyle.lerp diubah menjadi fungsi tingkat atas (I9a268)

Perbaikan Bug

  • Dokumentasi PointerInputChange::copy kini menyatakan dengan benar bahwa ini adalah shallow copy. (I182f5)
  • Mendukung elipsis jika tinggi terbatas dan tidak sesuai untuk semua baris teks (Ie528c, b/168720622)
  • includeFontPadding default diaktifkan. Anda dapat menonaktifkan includeFontPadding menggunakan atribut TextStyle.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 nilai TextField. (I01423, b/171394808)

Kontribusi Eksternal

  • MouseInjectionScope.scroll(delta = someDelta) kini dibalik di Android jika kita men-scroll secara vertikal (jika someDelta positif, akan ter-scroll ke bawah) (Ifb697, b/224992993)

Versi 1.2.0-alpha08

20 April 2022

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

Perubahan API

  • Fungsi pluralStringResource ditandai sebagai eksperimental untuk memungkinkan evolusi mendukung internasionalisasi yang lebih baik di masa mendatang. (If24e4)
  • Paragraph dan MultiParagraph kini menerima parameter Constraints. Meneruskan Constraints.maxHeight adalah tanpa pengoperasian untuk saat ini, tetapi akan memungkinkan penghitungan di masa mendatang, seperti membuat elips berdasarkan tinggi. (I6afee, b/168720622)
  • SubcomposeSlotReusePolicy.getSlotsToRetain() kini menerima class seperti MutableSet kustom yang tidak mengizinkan penambahan item baru ke dalamnya. (Icd314)
  • PointerIcon sekarang menjadi antarmuka @Stable (I9dafe)
  • Konsumsi parsial (posisi OR turun) tidak digunakan lagi di PointerInputChange. Anda dapat menggunakan consume() untuk sepenuhnya memakai perubahan. Anda dapat menggunakan isConsumed untuk menentukan apakah orang lain sudah pernah memakai perubahan tersebut sebelumnya.
  • PointerInputChange::copy() kini selalu membuat shallow copy. Ini berarti bahwa salinan PointerInputChange akan dipakai setelah salah satu salinan tersebut digunakan. Jika Anda ingin membuat PointerInputChange yang tidak terikat, gunakan konstruktor. (Ie6be4, b/225669674)
  • Mengaktifkan interop Scroll Bertingkat antara Compose dan View di arah Compose > View. Ini berarti induk Compose akan dapat menerima delta scroll bertingkat dari tampilan scroll bertingkat. (If7949, b/174348612)
  • SemanticsProperty testTagsAsResourceId baru, yang dapat digunakan untuk membuat Compose agar sesuai dengan pengujian UIAutomator yang dirancang untuk sistem View. (I39c20)
  • Menampilkan semua ketebalan yang tersedia untuk font sistem di Android saat menggunakan FontFamily.SansSerif. Ini akan menggunakan nama font pengganti seperti sans-serif-medium secara internal di API 21-28. Ini adalah perubahan perilaku karena sebelumnya hanya ketebalan 400 dan 700 yang didukung pada API 21-28. (I380fe, b/156048036, b/226441992)
  • Instruktur paragraf dan multiparagraf menyusun ulang argumen posisi sebelum argumen opsional. (Idafaa)
  • AndroidFont kini menggunakan typefaceLoader sebagai parameter konstruktor. (I2c971)

Versi 1.2.0-alpha07

6 April 2022

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

Perubahan API

  • Fungsi baru Snapshot.withoutReadObservation { ... } telah ditambahkan. Fungsi ini memungkinkan pengguna menjalankan lambda yang diteruskan tanpa mengikuti perubahan nilai status yang dibaca selama blok ini. Anda dapat merasakan manfaatnya dalam kasus penggunaan saat Anda ingin memanfaatkan proses tulis/baca thread berbasis snapshot, tetapi ingin dapat membaca nilainya tanpa menyebabkan rekomposisi atau pengukuran ulang yang tidak perlu. (I9f365, b/214054486)
  • Properti ekstensi consumeWindowInsets dari ComposeView memungkinkan developer menonaktifkan pemakaian Android WindowInsets. Hal ini memungkinkan ComposeViews terpisah dalam hierarki untuk menerapkan WindowInsets tanpa mengganggu satu sama lain. (I0ef08, b/220943142)
  • Menambahkan KeyboardType.Decimal sebagai alternatif untuk Keyboard.Number secara khusus termasuk pemisah desimal di IME. (Iec4c8, b/209835363)
  • PointerEventType.Scroll dan PointerEvent.scrollDelta sekarang adalah API stabil (I574c5, b/225669674)
  • Mengaktifkan interop Scroll Bertingkat antara View dan Compose untuk class View yang bekerja sama. Hal ini berarti compose sekarang dapat mengirimkan delta scroll ke induk View (yang bekerja sama). (I5d1ac, b/174348612)
  • Memperbarui FontFamily.Resolver untuk mengintegrasikan setelan aksesibilitas teks tebal di seluruh Sistem (I6c1e7)
  • Font(AssetManager, String, ...) tidak digunakan lagi dan diganti dengan Font(String, AssetManager, ...). Ini adalah API eksperimental. (I1c7a4)
  • Menambahkan deskripsi font baru Font(DeviceFontFamilyName) untuk secara opsional mencari font yang diinstal sistem selama rantai penggantian font. (I30468, b/219754572)
  • Menambahkan konfigurasi kompatibilitas sementara untuk includeFontPadding di TextStyle/ParagraphStyle. includeFontPadding dapat diubah melalui TextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false)). Ini adalah opsi konfigurasi sementara untuk mengaktifkan migrasi dan akan dihapus. (If47be, b/171394808)
  • Menambahkan ekstensi GoogleFont.Provider.isAvailableOnDevice untuk bantuan proses debug. (I64e31)
  • Menambahkan konstruktor GoogleFont.Provider untuk digunakan dengan @ArrayRes. (Ic5ee1, b/225984280)
  • Compose GoogleFont kini disebut Font(GoogleFont), dan API akan tetap stabil. (I125f2)

Perbaikan Bug

  • Menambahkan pemeriksaan lint ke material/Scaffold untuk memastikan bahwa padding bagian dalam sedang digunakan. (Ifb111)

Versi 1.2.0-alpha06

23 Maret 2022

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

Perubahan API

  • Menambahkan tindakan semantik RequestFocus untuk meminta fokus pada target yang dapat difokuskan. (I17b71)
  • Memperbarui penguraian vektor drawable untuk mendukung pencerminan otomatis untuk membalik konten VectorPainter jika arah tata letak saat ini adalah RTL. (I79cd9, b/185760237)
  • Mengupdate warna bayangan/suasana menjadi parameter tambahan Modifier.graphicsLayer untuk kompatibilitas API (I3f864, b/160665122)

  • Menambahkan implementasi default ke warna bayangan/suasana di GraphicsLayerScope untuk memastikan perubahan API yang tidak akan menyebabkan gangguan.

  • Menambahkan waktu peristiwa ke peristiwa RSB. (Ief8ae)

  • FocusOrder sekarang telah digabungkan ke FocusProperties dan focusProperties() sekarang memiliki semua kemampuan focusOrder(). FocusOrder dan focusOrder() tidak digunakan lagi. focusOrder() yang menerima focusRequester harus diganti dengan pengubah focusRequester() yang dikombinasikan dengan focusProperties(). Hal ini memungkinkan pengubah memiliki pemisahan fokus yang lebih kuat. (I601b7)

  • Mengupgrade RecyclerView dan Compose kini akan menghasilkan performa scroll yang jauh lebih baik untuk RecyclerViews dengan tampilan Compose sebagai turunan.

  • Menambahkan ViewCompositionStrategy.Default sebagai cara untuk mengambil strategi default bawaan.

  • Menambahkan ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer, yang merupakan strategi default baru dan menangani container penggabungan seperti RecyclerView dengan benar. (If7282)

  • Menambahkan dukungan untuk menganotasi class anotasi dengan @Preview sebagai langkah pertama untuk menambahkan fitur Multipreview. Anotasi tersebut dapat digunakan untuk menganotasi metode Composable atau class anotasi lainnya, yang kemudian dapat dianggap sebagai anotasi tidak langsung dengan @Preview tertentu. (I12eff)

  • Perangkat referensi yang ditambahkan ke daftar Perangkat untuk @Preview. (I071c9)

Perbaikan Bug

  • Mengupdate API Grafik vektor untuk menggunakan anotasi composable @VectorComposable yang tepat, bukan @UiComposable (I942bc)
  • Menghapus crossinline dari AnnotatedString.Builder.withStyle. (If84d5)

Kontribusi Eksternal

  • compose-ui: Menambahkan properti ambientShadowColor dan spotShadowColor ke GraphicsLayerScope. (I1ba1a, b/160665122)
  • Resource jamak sekarang didukung melalui fungsi pluralStringResource. (Ib2f23, b/191375123)

Versi 1.2.0-alpha05

9 Maret 2022

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

Perubahan API

  • TextToolbar kini menggunakan argumen lambda, bukan ActionCallback. (Ib2eb9, b/197950089)
  • Mengupdate nullability di core dan appcompat agar sesuai dengan Tiramisu DP2 (I0cbb7)
  • Antarmuka terukur kini mengekspos properti parentData (I3313f)
  • Modifier.onPlaced dan antarmuka OnPlacedModifier kini stabil. (Ib5482)
  • Hore! Animasi Compose sekarang mendukung setelan 'Animator duration scale' dari Opsi Developer. (I5a4fc, b/161675988)
  • Menambahkan pengubah BeyondBoundsLayout lokal (If8b51, b/184670295)
  • Teks: includeFontPadding kini dinonaktifkan secara default. Masalah pemotongan akibat includeFontPadding=false ditangani dan tidak ada pemotongan yang harus dilakukan untuk skrip yang tinggi. (I31c84, b/171394808)

Perbaikan Bug

  • ComposeContentTestRule.setContent sekarang akan menampilkan IllegalStateException jika Anda mencoba menetapkan konten saat sudah ada konten. (I888a5, b/199631334)
  • Memperbaiki error yang disebabkan oleh konten papan klip saat membaca dari papan klip di Android. (I06020, b/197769306)
  • Meningkatkan sampel scroll RSB. (I6a596)

Kontribusi Eksternal

  • Diupdate untuk menggunakan coroutine Kotlinx 1.6.0 (I3366d)

Versi 1.2.0-alpha04

23 Februari 2022

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

Perubahan API

  • Menambahkan ComposableTarget, ComposableTargetMarker, dan ComposableOpenTarget yang memungkinkan pelaporan waktu kompilasi saat fungsi composable dipanggil, menargetkan applier yang tidak dirancang untuk digunakan.

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

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

  • Font(resId, ...) sekarang menggunakan loadingStrategy pada API yang stabil. (Ief3d2)

  • FontLoadingStrategy sekarang menjadi API stabil. (I1ee35, b/174162090)

  • Mendukung pemuatan font asinkron di Text (I77057, b/214587005)

  • Menambahkan bridge API untuk mengonversi Font.ResourceLoader kustom menjadi FontFamily.Resolver. (Ia0060)

Perbaikan Bug

  • FontFamily.Resolver yang disediakan akan diteruskan ke subkomposisi seperti Popup.
  • Font.ResourceLoader yang disediakan akan diteruskan ke subkomposisi seperti Popup. (I48fa5)

Versi 1.2.0-alpha03

9 Februari 2022

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

Perubahan API

  • Metode notifyFocusedRect di TextInputSession dan TextInputService kini tidak digunakan lagi dan tidak akan dipanggil. Sebagai gantinya, gunakan BringIntoViewRequester. (Ia4302, b/192043120, b/216842427, b/178211874)
  • Memperkenalkan metode destroyDisplayListData pada class stub RenderNode (I1e659, b/216660268)
  • Menambahkan api baru yang memungkinkan pengukuran awal turunan SubcomposeLayout yang dikomposisi sebelumnya. (I857ea)
  • Menambahkan movableContentOf yang mengonversi lambda composable menjadi lambda yang memindahkan statusnya, dan node yang sesuai, ke lokasi baru yang dipanggil. Saat panggilan sebelumnya meninggalkan komposisi, status dipertahankan untuk sementara. Jika panggilan baru ke lambda memasuki komposisi, status dan node terkait akan dipindahkan ke lokasi panggilan baru. Jika tidak ada panggilan baru yang ditambahkan, status akan dihapus secara permanen dan ingat bahwa observer akan diberi tahu.

    Jika lambda movableContentOf dipanggil beberapa kali dalam komposisi yang sama, status dan node baru akan dibuat untuk setiap panggilan. Saat panggilan meninggalkan komposisi dan panggilan baru masuk, status akan dipindahkan dari panggilan keluar pertama ke panggilan masuk sesuai urutan pemanggilan. Semua status yang tidak diklaim oleh panggilan baru akan dihapus secara permanen. (Ib4850)

  • FontFamilyResolver kini tersedia melalui LocalFontFamilyResolver.current

  • Menambahkan createFontFamilyResolver(context) dan createFontFamilyResolver(context, coroutineScope) untuk membuat resolver FontFamily baru di luar penggunaan compose.

  • Paragraph dan MultiParagraph sekarang menggunakan FontFamily.Resolver

  • TextLayoutResult.layoutInput.fontFamilyResolver kini berisi resolver yang digunakan untuk tata letak ini, TextLayoutResult.layoutInput.resourceLoader tidak digunakan lagi. (Id5a45, b/174162090)

  • Dukungan untuk memuat font yang asinkron dan opsional, dengan perilaku penggantian. Jalur ini digunakan oleh Text dan TextField, dan ditampilkan melalui FontFamilyResolver

  • Dukungan untuk melakukan pramuat font melalui FontFamilyResolver.preload

  • FontFamilyResolver.setAsyncLoadContext memungkinkan setelan konteks coroutine global yang digunakan untuk memuat font asinkron. (I87fe8, b/174162090)

  • Menambahkan AndroidFont, API level rendah baru untuk menyediakan jenis deskripsi resource font baru di Android. Misalnya, memuat font dari backend khusus aplikasi, secara opsional mendeteksi font yang sudah diinstal di perangkat, atau memuat font dari resource yang tidak disediakan oleh factory Font saat ini.

  • Memperluas API Font.ResourceLoaded untuk mendukung pemuatan font opsional dan asinkron. Sebaiknya developer aplikasi tidak menggunakan API ini secara langsung. Untuk menambahkan jenis font baru, lihat AndroidFont.

  • Fungsi ekstensi Font.AndroidResourceLoader memungkinkan konstruksi Font.ResourceLoader saat berada di luar komposisi.

  • Menambahkan parameter loadingStrategy ke font berbasis resource, untuk memungkinkan pemuatan asinkron saat font resource mereferensikan XML font yang dapat didownload. (Ie5aea, b/174162090)

  • Konstruktor Typeface(FontFamily) tidak digunakan lagi. Konstruktor ini sebelumnya digunakan untuk melakukan pramuat font, yang mungkin memerlukan waktu hingga 10 detik untuk font yang dapat didownload. Dengan font yang dapat didownload, panggilan ini dapat diblokir selama 10 detik. Sebagai gantinya, gunakan FontFamilyResolver.preload.

  • fontResource(FontFamily): Typeface tidak digunakan lagi. Konstruktor ini sebelumnya digunakan untuk melakukan pramuat font, yang mungkin memerlukan waktu hingga 10 detik untuk font yang dapat didownload. Sebagai gantinya, gunakan FontFamilyResolver.preload (If8e7c, b/174162090)

  • Konstruktor SubcomposeLayoutState yang menerima maxSlotsToRetainForReuse kini tidak digunakan lagi. Sebagai gantinya, ada konstruktor baru yang menerima SubcomposeSlotReusePolicy - antarmuka baru yang memungkinkan kontrol lebih terperinci tentang slot yang harus dipertahankan untuk penggunaan ulang masa mendatang. (I52c4d)

  • Menampilkan fungsi HSV dan HSL di Color sebagai API non-eksperimental. Ruang warna Oklab kini menjadi API publik. (I08fb6, b/180731008)

  • AndroidComposeTestRule.AndroidComposeStatement tidak digunakan lagi, yang tidak dimaksudkan untuk berada di API publik dan tidak melakukan apa pun untuk Anda. (Ibc46b)

  • Penggantian nama class kt yang dibuat internal (Ia0b9e, b/174162090)

  • Menghapus FontLoadingStrategy.values (I42a9d, b/174162090)

  • Loader font global kini disebut FontFamilyResolver. (I4f773, b/174162090)

  • Gunakan sistem pemuatan font baru untuk desktop. (I9ce5c, b/174162090)

  • FontFamily.Resolver.resolve menampilkan State<Any> (I4406c, b/174162090)

Perbaikan Bug

  • Kini TextFields akan dipertahankan di atas keyboard saat difokuskan dan keyboard akan ditampilkan, jika mode input virtual adalah ADJUST_PAN. (I8eaeb, b/190539358, b/192043120)
  • Desktop menggunakan lokal komposisi untuk FontFamily.Resolver
  • Desktop FontLoader tidak digunakan lagi
  • Factory createFontFamilyResolver baru di Desktop (I6bbbb, b/174162090)
  • Jenis input keyboard virtual tidak lagi berkedip saat mengubah fokus di antara kolom teks. (I1bf50, b/187746439)

Versi 1.2.0-alpha02

26 Januari 2022

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

Perubahan API

  • Menambahkan Modifier.onRotaryScrollEvent() dan Modifier.onPreRotaryScrollEvent() untuk perangkat Wear dengan tombol samping yang berputar (I18bf5, b/210748686)
  • Menambahkan ekstensi View.createLifecycleAwareRecomposer eksperimental (I0cde6)

Kontribusi Eksternal

  • PointerEvent.scrollDelta.y sekarang dibalik di Android (jika kita memiringkan roda mouse ke kanan, sekarang akan menampilkan 1, bukan -1) (Ia9811)

Versi 1.2.0-alpha01

12 Januari 2022

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

Perubahan API

  • FontFamily.canLoadSynchronously tidak digunakan lagi. Properti ini tidak memiliki arti semantik. (Ica5ef)
  • Menambahkan kolom identitas ke CompositionData untuk menghasilkan ID invarian di Layout Inspector. (Ic116e)
  • Menambahkan ID perangkat Wear OS ke daftar perangkat Pratinjau (I93232)

Update Dependensi

  • Sekarang bergantung pada Kotlin 1.6.10.

Versi 1.1

Versi 1.1.1

23 Februari 2022

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

Perbaikan Bug

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 jika HardwareRenderer.isDrawingEnabled() adalah false, dengan mengaktifkannya selama panggilan berlangsung (Idf3d0)

Versi 1.1.0-beta04

1 Desember 2021

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

Fitur Baru

  • Diupdate agar kompatibel dengan Kotlin 1.6.0

Perubahan API

  • Membersihkan nullability di androidx.core.view (I7078a, b/204917439)
  • API eksperimental telah ditambahkan yang memungkinkan pengguna menggunakan PointerInputchange secara keseluruhan atau memeriksa apakah API tersebut digunakan atau tidak. (I2e59d)
  • Menambahkan dukungan untuk peristiwa roda scroll mouse di lapisan UI. (Ia14eb, b/198214718)
  • Menambahkan overload Modifier.composed eksperimental yang menerima kunci untuk membandingkan kesetaraan dan pemenuhan syarat guna melewati pengoptimalan. (Ice799, b/205851704)
  • ComposeNotIdleException sekarang diperluas dari Exception, bukan langsung dari Throwable. Perlu diperhatikan bahwa perubahan ini berarti klausa tangkapan yang menangkap Exception sekarang dapat menangkap ComposeNotIdleException, 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() dan InjectionScope.dispose(). Pembuangan semua peristiwa dan penghapusan cakupan kini terjadi pada akhir metode perform*Input() yang dipanggil seperti sebelumnya. (I2bed8)
  • Menghapus MultiModalInjectionScope.Touch dan MultiModalInjectionScope.Mouse. Guna memasukkan peristiwa sentuh dan mouse untuk gestur multi-modal, kini Anda dapat menggunakan MultiModalInjectionScope.touch() dan MultiModalInjectionScope.mouse(), yang keduanya menerima lambda yang memiliki cakupan penerima modalitas tersebut. (Idde18)

Perbaikan Bug

  • Nilai default untuk durationMillis di TouchInjectionScope.swipeWithVelocity sekarang dihitung sehingga tindakan geser dapat dilakukan. (I19deb)

Versi 1.1.0-beta02

3 November 2021

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

Perubahan API

  • Menambahkan BringIntoView API eksperimental yang memungkinkan Anda mengirim permintaan ke induk agar men-scroll untuk menampilkan item (Ib918d, b/195353459)
  • Animation API baru untuk mendukung alat. Secara khusus, fungsi ini memungkinkan alat untuk memeriksa animasi & konfigurasinya dalam Transisi. (I4116e)

Kontribusi Eksternal

  • Menambahkan Modifier.pointerHoverIcon (I95f01)

Versi 1.1.0-beta01

27 Oktober 2021

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

Perubahan API

  • Menambahkan BringIntoView API eksperimental yang memungkinkan Anda mengirim permintaan ke induk sehingga akan men-scroll untuk menampilkan item (Ib918d, b/195353459)
  • Animation API baru untuk mendukung alat. Secara khusus, fungsi ini memungkinkan alat untuk memeriksa animasi & konfigurasinya dalam Transisi. (I4116e)

Versi 1.1.0-alpha06

13 Oktober 2021

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

Perubahan API

  • Menghapus ExperimentalComposeUiApi dari ViewRootForInspector dan LayoutInfo.ownerViewId (I5c2e3)
  • Overload tanpa turunan untuk Tata Letak telah ditambahkan, dengan peningkatan efisiensi (Ib0d9a)
  • Menghapus InternalCompilerApi dari metode Composer yang harus dipanggil lintas modul (I1aa0b)
  • SemanticsNodeInteraction.performSemanticsAction sekarang menampilkan SemanticsNodeInteraction tempat fungsi dipanggil. (I9e5db)
  • Menambahkan LocalInputModeManager CompositionLocal untuk mendeteksi TouchMode/NonTouchMode. (I6a83c, b/175899786)
  • Menambahkan viewConfiguration: ViewConfiguration ke LayoutInfo agar konsumen mendapatkan nilai yang tepat untuk hal-hal seperti waktu tunggu gestur tekan lama. (I76ca6)
    • Menambahkan viewConfiguration: ViewConfiguration ke InjectionScope guna memungkinkan pengujian untuk menyesuaikan injeksi input berdasarkan hal-hal seperti waktu tunggu gestur tekan lama atau touch slop.
    • Mengubah durasi default gestur tekan lama dan ketuk dua kali untuk input sentuh dan mouse agar didasarkan pada nilai dalam InjectionScope.viewConfiguration.
  • Implementasi ExposedDropdownMenu berdasarkan ExposedDropdownMenuBox dengan TextField dan DropdownMenu di dalamnya (If60b2)
  • dismissOnOutsideClick telah ditambahkan ke PopupProperties, menggantikan dismissOnClickOutside yang tidak digunakan lagi. Properti baru menerima posisi klik dan batas anchor, memberikan kontrol yang lebih baik atas penentuan keharusan memanggil onDismissRequest. Misalnya, hal ini dapat berguna untuk mencegah penutupan anchor untuk sentuhan pada anchor.
    • updateAndroidWindowManagerFlags telah ditambahkan ke PopupProperties, yang menawarkan kontrol tingkat rendah atas flag yang diteruskan oleh pop-up ke Android WindowManager. Parameter lambda akan menjadi flag yang dihitung dari nilai PopupProperties yang menghasilkan flag WindowManager: misalnya dapat difokuskan. Hasil lambda akan menjadi flag akhir yang akan diteruskan ke Android WindowManager. Secara default, updateAndroidWindowManagerFlags tidak akan mengubah flag yang dihitung dari parameter. API ini harus digunakan dengan hati-hati, hanya jika pop-up memiliki persyaratan perilaku yang sangat spesifik. (I6e9f9)
  • Recomposer.state tidak digunakan lagi dan diganti dengan Recomposer.currentState untuk mengubah jenisnya menjadi StateFlow (Ic2ab3, b/197773820)
  • flush() dan dispose() telah ditambahkan ke InjectionScope. Gunakan keduanya jika Anda ingin segera membersihkan semua peristiwa yang diantrekan dan kapan Anda ingin membuang cakupan. (Ifb73a)
  • Menambahkan performScrollToNode(matcher: SemanticsMatcher) yang men-scroll container yang dapat di-scroll ke konten yang cocok dengan matcher yang diberikan. (Ic1cb8)
  • InjectionScope kini mengimplementasikan Density sehingga Anda dapat mengonversi px dan dp dengan mudah di performTouchInput dan sejenisnya. (I8fe1f)

Perbaikan Bug

  • AndroidView sekarang menyebarkan LocalLifecycleOwner dan LocalSavedStateRegistryOwner ke tampilannya melalui ViewTreeLifecycleOwner dan ViewTreeSavedStateRegistryOwner. (I38f96, b/179708470)
  • Memperbaiki SwipeToDismissBox WearOS yang terkadang tidak menangani gestur geser. (I9387e)
  • Waktu default antara peristiwa input yang dimasukkan telah diubah dari 10 md menjadi 16 md. Perubahan ini berpotensi mengubah hasil pengujian yang menjalankan gestur input, seperti gestur geser tertentu. (I829fd)

Versi 1.1.0-alpha05

29 September 2021

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

Perubahan API

  • Menambahkan dukungan untuk komunikasi antar-pengubah (Id5467, b/198826874)
  • Menambahkan pointer historis eksperimental ke PointerEventChange. (Ic1fd8, b/197553056, b/199921305)
  • density: Density dan layoutDirection: LayoutDirection telah ditambahkan ke LayoutInfo. Ini memungkinkan konsumen LayoutInfo menafsirkan dimensi dan posisi yang diekspos di LayoutInfo dengan benar. (I002f1)
  • Menambahkan dukungan eksperimental untuk memasukkan peristiwa mouse. Gunakan performMouseInput untuk mulai mengirim peristiwa mouse, atau kirim peristiwa mouse melalui properti Mouse dari MultiModalInjectionScope selama gestur input multi-modal dengan performMultiModalInput. Lihat MouseInjectionScope untuk dokumentasi API yang tersedia. (Iaa4a8, b/190493367)

Perbaikan Bug

  • Memperbaiki dukungan aksesibilitas untuk scrollable (lambat dan tidak lambat) terkait scroll (I6cdb0)
  • Meningkatkan TouchInjectionScope.swipeWithVelocity. Sekarang menerima rentang variabel input yang lebih luas dan akan menyarankan perubahan pada input jika gestur geser tidak dapat dibuat (I40fbe, b/182477143)

Versi 1.1.0-alpha04

15 September 2021

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

Perubahan API

  • PointerEvent sekarang memiliki PointerEventType untuk mendukung peristiwa pengarahan kursor. (I091fa)
  • Mengizinkan turunan menerima input pointer di luar batas input pointer induk. Induk dapat menangkap panggilan tersebut dengan properti PointerInputScope.alwaysInterceptChildEvents (I9eae3, b/192479655)
  • performGesture dan GestureScope tidak digunakan lagi, telah diganti dengan performTouchInput dan TouchInjectionScope. (Ia5f3f, b/190493367)
  • Menambahkan touchBoundsInRoot ke SemanticsNode termasuk ukuran target sentuh minimum sehingga developer dapat memastikan bahwa target sentuh memenuhi batas minimum aksesibilitas. (I2e14b, b/197751214)
  • Mengulangi implementasi yang dapat diperiksa (I927bc, b/191017532)
  • Mengubah nama parameter yang dapat diperiksa agar sesuai (I3a482, b/191017532)
  • Memperkenalkan performTouchInput dan TouchInjectionScope sebagai pengganti performTouchInput dan TouchInjectionScope, sehingga mempermudah modalitas lain (seperti mouse).

    TouchInjectionScope memiliki metode yang sama dengan GestureScope, dengan pengecualian movePointerTo dan movePointerBy, yang telah diganti namanya menjadi updatePointerTo dan updatePointerBy. Semua metode lainnya sama.

    Perilaku TouchInjectionScope hampir identik dengan GestureScope, dengan dua detail kecil:

    1. Saat mengirimkan peristiwa ke bawah sementara pointer dipindahkan tanpa mengirim peristiwa pindah (dengan kata lain, updatePointerTo() telah digunakan, tetapi bukan move(), lalu down() 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.
    2. Saat mengirimkan peristiwa ke atas sementara pointer dipindahkan tanpa mengirimkan peristiwa pindah (mirip seperti di atas), implementasi sebelumnya akan memajukan waktu peristiwa dan mengirimkan peristiwa pindah sebelum mengirimkan peristiwa ke atas. Implementasi baru tersebut tidak melakukan keduanya: posisi baru pointer hanya akan ditampilkan melalui peristiwa ke atas.

    Terakhir, TouchInjectionScope memperkenalkan metode baru currentPosition(pointerId: Int) untuk mendapatkan posisi saat ini dari pointer tertentu. (If1191, b/190493367)

Perbaikan Bug

  • Mengizinkan klip untuk memperluas batas target sentuh di luar area klip untuk tujuan target sentuh minimum. (I43e10, b/171509422)
  • Dukungan untuk overscroll regangan telah ditambahkan di perangkat Android 12. (Iccf3c, b/171682480)

Versi 1.1.0-alpha03

1 September 2021

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

Fitur Baru

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

Perubahan API

  • Menambahkan Modifier.inspectable untuk menggabungkan pengubah lainnya. (I1909b, b/191017532)
  • Menambahkan BlurredEdgeTreatment API untuk menyederhanakan kasus penggunaan blur menjadi kombinasi flag potongan yang lebih umum digunakan dan TileMode. Sebagian besar kasus penggunaan melibatkan konten blur yang dirender di luar batas konten asli dan memburamkan wilayah di luar batas ini dengan warna hitam transparan, atau memotong konten ke batas konten yang mengambil sampel tepi terdekat untuk kernel blur yang melampaui batas konten. (I6b4b7, b/166927547)
  • Menambahkan dukungan untuk RenderEffect di desktop compose. Memperkenalkan OffsetEffect serta pengubah blur ini sebagai cara sederhana untuk memperkenalkan efek visual blur ke sebagian hierarki komposisi. (I0f6aa, b/166927547)
  • Memperkenalkan RenderEffect API yang dapat dikonfigurasi secara opsional pada Modifier.graphicsLayer untuk mengubah konten lapisan itu sendiri. Ini dapat digunakan untuk memburamkan konten composable dan composable turunan dalam hierarki komposisi. (I47c4d, b/166927547)
  • AwaitPointerEventScope sekarang memiliki withTimeout() dan denganTimeoutOrNull() (I507f0, b/179239764, b/182397793)
  • Ukuran target sentuh minimum ditambahkan ke ViewConfiguration agar digunakan dalam semantik dan input pointer untuk memastikan aksesibilitas. (Ie861c)
  • Menambahkan dukungan TileMode.Decal yang berguna dalam menentukan perilaku edge untuk RenderEffects berbasis blur. (I7e8ed, b/166927547)
  • performScrollToIndex, performScrollToKey, hasScrollToIndexAction, dan hasScrollToKeyAction sekarang menjadi API stabil (I142ae, b/178483889)
  • Metode pengujian telah ditambahkan agar mendapatkan batas yang terpotong. (I6b28e)

Perbaikan Bug

  • Menghapus metode isBounded dari BlurredEdgeTreatment untuk memeriksa secara eksplisit apakah parameter bentuk bernilai null. (I85d68)

Versi 1.1.0-alpha02

18 Agustus 2021

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

Perubahan API

  • PointerEvent sekarang memiliki dukungan untuk membaca status tombol mouse dan status pengubah keyboard. (I6310c, b/180075467)
  • Gestur yang dimasukkan sekarang menggunakan waktu MainTestClock sebagai sumber kebenaran untuk waktu. Waktu saat ini untuk peristiwa yang dimasukkan dalam performGesture akan diinisialisasi ke waktu saat ini MainTestClock. (Ifb364, b/192064452)
  • Menambahkan konstruktor DpRect(DpOffset, DpSize) (I2cf16, b/194219828)
  • Menambahkan class DpSize (I7abb1, b/194219828)

Perbaikan Bug

  • Update xml Grafik vektor yang mengurai untuk mendukung ColorStateLists sebagai properti tint warna root di VectorDrawable. (I86915, b/195668138)

Versi 1.1.0-alpha01

4 Agustus 2021

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

Perubahan API

  • RelocationRequester.bringIntoView sekarang menerima persegi panjang sebagai parameter yang memungkinkan kita menampilkan bagian composable (Ice2c5, b/194330245)
  • AnimatedImageVector dan API terkait kini berada dalam modul androidx.compose.animation:animation-graphics baru. (I60873)
  • Menambahkan pengubah eksperimental untuk menangani permintaan relokasi. (I65a97, b/178211874)
  • Memperkenalkan BrushPainter API untuk mendukung gambar Brush arbitrer di dalam Painter, yang mirip dengan ColorPainter

    Mengupdate Brush API agar memiliki parameter ukuran intrinsik yang dikueri dalam BrushPainter (Ia2752, b/189466433)

  • Memperbarui metode DrawScope#drawImage yang menggunakan rect sumber dan tujuan untuk menggunakan parameter FilterQuality opsional. Hal ini berguna untuk seni piksel yang memang sengaja dibuat menjadi piksel saat diskalakan untuk seni berbasis piksel. Mengupdate composable BitmapPainter + Image agar menggunakan parameter FilterQuality opsional juga (Ie4fb0, b/180311607)

  • Menambahkan metode GestureScope.advanceEventTime untuk memberikan lebih banyak kontrol terhadap waktu peristiwa dalam gestur (Ibf3e2)

Perbaikan Bug

  • Untuk mendukung perantaian pengubah gambar dengan lebih baik, pastikan implementasi Modifier.paint memanggil drawsContent. Sebelumnya, Modifier.paint diharapkan menjadi node daun dalam rantai Pengubah. Namun, dengan melakukan hal tersebut, Modifier.paint tidak akan terkonfigurasi pada container composable (misalnya, box) atau Modifier.paint akan menambahkan dekorasi tambahan di bagian atas seperti Modifier.paint().border(). Dengan meminta Modifier.paint memanggil drawContent setelah menggambar konten painter tertentu, kita akan memiliki konsistensi perilaku yang lebih baik dengan pola pengubah. (Ibb2a7, b/178201337, b/186213275)
  • Dialog sekarang mengikuti perilaku pengubahan ukuran platform. Setel usePlatformDefaultWidth ke salah (false) untuk mengganti perilaku ini. (Iffaed, b/192682388)
  • Memindahkan InfiniteAnimationPolicy ke :compose:ui (I5eb09, b/160602714)
  • Scrolling melalui tindakan semantik untuk lazy list dan komponen scroll reguler kini dianimasikan (Id9066, b/190742024)

Versi 1.0

Versi 1.0.5

3 November 2021

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

Perbaikan Bug

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

Versi 1.0.4

13 Oktober 2021

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

Update Dependensi

  • Diupdate agar bergantung pada Kotlin 1.5.31

Versi 1.0.3

29 September 2021

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

Update Dependensi

  • Diupdate agar bergantung pada Kotlin 1.5.30

Versi 1.0.2

1 September 2021

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

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

Versi 1.0.1

4 Agustus 2021

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

Update Dependensi

  • Diupdate agar bergantung pada Kotlin 1.5.21.

Versi 1.0.0

28 Juli 2021

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

Fitur utama 1.0.0

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

Masalah Umum

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

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

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

Versi 1.0.0-rc02

14 Juli 2021

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

Perbaikan Bug

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

Versi 1.0.0-rc01

1 Juli 2021

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

Fitur Baru

  • Membagi modul ui-tooling menjadi ui-tooling dan ui-tooling-preview (Iefa28, b/190649014)

Perubahan API

  • Menghapus FocusManager#moveFocusIn dan FocusManager#moveFocusOut eksperimental yang tidak digunakan lagi (I227d7, b/170154986, b/186567354, b/168510304)
  • Canvas sekarang mendukung parameter contentDescription untuk aksesibilitas. (Ib547c)
  • useDefaultMaxWidth di PopupProperties diganti namanya menjadi usePlatformDefaultWidth. (I05710)
  • Dialog kini dapat menggunakan seluruh lebar layar. (I83929, b/190810877)
  • Menambahkan dukungan eksperimental untuk representasi warna HSV dan HSL. (Id7cf8, b/180731008)

Perubahan Perilaku

  • Compose @Preview kini menyediakan LocalActivityResultRegistryOwner yang memungkinkan Anda melihat pratinjau Composable yang menggunakan API seperti rememberLauncherForActivityResult() yang bergantung pada pemilik yang ada. (Ib13d1, b/185693006)
  • Compose @Preview kini menyediakan LocalOnBackPressedDispatcherOwner yang memungkinkan Anda melihat pratinjau Composable yang menggunakan API seperti BackHandler yang bergantung pada pemilik yang ada. (Ia1c05, b/185693006)

Perbaikan Bug

  • Memindahkan InfiniteAnimationPolicy ke androidx.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 seperti ComposeTestRule.mainClock.advanceTimeUntil {} Batasan lainnya diharapkan dapat diidentifikasi di masa mendatang. (I284fa)

Aturan Profil yang Ditambahkan

Rilis ini menambahkan aturan profil ke modul Compose berikut (I14ed6):

  • androidx.compose.animation
  • androidx.compose.animation-core
  • androidx.compose.foundation
  • androidx.compose.foundation-layout
  • androidx.compose.material
  • androidx.compose.material-ripple
  • androidx.compose.runtime
  • androidx.compose.ui
  • androidx.compose.ui.geometry
  • androidx.compose.ui.graphics
  • androidx.compose.ui.text
  • androidx.compose.ui.text
  • androidx.compose.ui.unit
  • androidx.compose.ui.util

Apa itu aturan profil?

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

  • Aturan metode akan memiliki pola berikut:

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

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

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

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

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

Apa fungsi aturan tersebut?

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

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

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

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

Bagaimana cara kerjanya?

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

Versi 1.0.0-beta08

2 Juni 2021

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

Perubahan API

  • Enum NestedScrollSource digantikan oleh class inline. (Ie321b, b/187055290)
  • FocusManager.clearFocus(forcedClear = true) diganti namanya menjadi FocusManager.clearFocus(force = true) (Ia0c41)
  • Memfaktorkan ulang penggunaan enum ke class inline untuk menghindari masalah dengan pernyataan when lengkap saat nilai enum baru ditambahkan. (I2b5eb)
  • Menghapus @ExperimentalComposeUiApi dari PopupProperties. (I01fa6)
  • PointerType diubah dari enum menjadi class inline (If5058)
  • Properti semantik ContentDescription dan Text bukan lagi nilai tunggal, melainkan daftar. Hal ini memungkinkan untuk menggabungkannya sebagai daftar, bukan penyambungan. Juga disediakan API pengujian yang lebih baik untuk memanfaatkan perubahan ini (Ica6bf, b/184825850)
  • Modifier.focusModifier() tidak digunakan lagi dan diganti dengan Modifier.focusTarget() (I6c860)
  • Modifier.onSizeChanged() dan Modifier.onGloballyPositioned() bukan lagi menjadi fungsi inline (I727f6, b/186109675)
  • Enum KeyboardType digantikan oleh class inline. (I73045, b/187055290)
  • Mengganti enum FocusState dengan antarmuka FocusState (Iccc1a, b/187055290)
  • Enum ImeAction digantikan oleh class inline. (I18be5, b/187055290)
  • PlaceholderVerticalAlign dikonversi menjadi class inline. (If6290)
  • TextUnitType sekarang menjadi class inline. (I4cba9)
  • Fungsi AnnotatedString.withAnnotation sekarang menjadi ExperimentalTextApi, bukan ExperimentalComposeApi. (I0cd0a)
    • Konstruktor TextUnit dengan TextUnitType sekarang menjadi ExperimentalTextApi, bukan ExperimentalComposeApi.

Perbaikan Bug

  • Memperbaiki bug yang diperkenalkan pada versi beta07 saat item LazyColumn/Row ditampilkan sebagian setelah scroll (I8c9ac, b/188566058)
  • detectDragGesures, detectVerticalGestures, dan detectHorizontalGestures sekarang akan menggunakan perubahan posisi secara otomatis, tanpa perlu memanggil change.consumePositionChange dalam callback onDrag (I42fc4, b/185096350, b/187320697)
  • LayoutModifier yang menyediakan garis perataan telah diperbaiki. Bug yang menyebabkan induk tidak diukur ulang saat garis perataan turunan berubah telah diperbaiki. (I4401f, b/174315652)
  • Modifier.onGloballyPositioned() diubah untuk melaporkan koordinat pengubah ini dalam rantai pengubah, bukan koordinat tata letak setelah menerapkan semua pengubah. Artinya, kini urutan pengubah memengaruhi koordinat yang akan dilaporkan. (Ieb67d, b/177926591)

Versi 1.0.0-beta07

18 Mei 2021

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

Perubahan API

  • Menambahkan antarmuka ViewRootForInspector yang akan digunakan dalam pemeriksa (Ib70df )
  • SubcomposeLayoutState sekarang mendukung jumlah setelan slot yang dapat digunakan kembali. Tata letak akan mempertahankan slot jumlah aktif ini, bukan membuangnya agar dapat menggunakan kembali slot tersebut saat kita membutuhkan yang baru (Ieb981)
  • Enum KeyEventType digantikan oleh class inline. (Id670a, b/187055290)
  • Enum FocusDirection digantikan oleh class inline. (Ib6d03, b/187055290, b/184086802)
  • Memperkenalkan kemampuan untuk meningkatkan status SubcomposeLayout yang memungkinkan Anda mengomposisikan konten ke dalam slotId yang diperlukan, agar langkah pengukuran berikutnya dapat lulus lebih cepat karena tidak akan ada komposisi yang diperlukan pada saat berikutnya kami mencoba mensubkomposisikan dengan slotId tertentu. (I42580, b/184940225)
  • Menambahkan Tuas Pemilihan Klip (Iff80d, b/183408447)
  • Menghapus API yang tidak digunakan terkait dengan dukungan LayoutInspector. (I2ac78)

Perbaikan Bug

  • LazyColumn/Row sekarang akan mempertahankan hingga 2 item yang sebelumnya terlihat aktif (tidak dibuang) meskipun item tersebut ter-scroll. Ini memungkinkan komponen untuk menggunakan kembali subkomposisi yang aktif ketika kita perlu membuat item baru yang meningkatkan performa scroll. (Ie5555)
  • TextGeomerticTransform dan TextDecoration pada AnnotatedString akan diterapkan seperti yang ditentukan. (I61900, b/184760917)

Versi 1.0.0-beta06

5 Mei 2021

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

Perubahan API

  • Mengatasi Konflik dengan Gestur Navigasi (I1145e)
  • @ComposeCompilerApi tidak lagi @RequiresOptIn (Iab690)
  • Menambahkan API aksesibilitas CollectionInfo dan CollectionItemInfo yang memungkinkan penandaan koleksi beserta itemnya untuk layanan aksesibilitas (Id54ef, b/180479017)
  • Menambahkan SemanticsActions.ScrollToIndex untuk men-scroll daftar dengan item yang diindeks ke item dengan indeks tertentu, dan SemanticsProperties.IndexForKey guna mendapatkan indeks item dalam daftar dengan item yang terkunci. Kedua tindakan tersebut diterapkan oleh LazyList.
    • Menambahkan SemanticsNodeInteraction.performScrollToIndex yang men-scroll daftar ke indeks tertentu, dan SemanticsNodeInteraction.performScrollToKey yang men-scroll daftar ke item dengan kunci tertentu. (I4fe63, b/178483889, b/161584524)
  • Menambahkan ownerViewId ke GraphicLayerInfo (I19f62)
  • Menambahkan overload Font() untuk memuat font dari aset, File, dan FileDescriptor (I5d382)
  • Menambahkan API aksesibilitas error yang memungkinkan untuk menandai node berisi input yang tidak valid (I12997, b/180584804, b/182142737)
  • Menambahkan overload Font() untuk memuat font dari aset, File, dan FileDescriptor (I43007)
  • AnnotatedString menyimpan dukungan ke TextFieldValue.Saver. Menambahkan fungsi utilitas addTtsAnnotation dan withAnnotation ke AnnotatedString.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) dan FocusManager.moveFocus(Out) eksperimental (Ic5534, b/183746743)
  • Menambahkan performTextInputSelection API eksperimental (I2dcbb, b/178510628)
  • Antarmuka InputEventCallback tidak digunakan lagi. Anda tidak dapat menggunakan antarmuka dalam API publik; dan tidak ada penggunaannya dalam kode. (I34a02, b/184003208)
  • Fungsi TextLayoutResult/createTextLayoutResult tidak digunakan lagi. Ini adalah fungsi publik yang tidak digunakan yang ditambahkan untuk pengujian. Fungsi ini tidak bermanfaat untuk API teks Compose. Fungsi ini sekarang tidak digunakan lagi dan akan dihapus nanti. (I80413)

Perbaikan Bug

  • Memperbaiki tindakan scroll aksesibilitas ACTION_SCROLL_FORWARD, ACTION_SCROLL_BACKWARD, accessibilityActionScrollLeft, accessibilityActionScrollUp, accessibilityActionScrollRight, dan accessibilityActionScrollDown. Sekarang tindakan scroll hanya akan men-scroll satu layar ke arah yang ditentukan, bukan lagi men-scroll ke akhir bagian yang dapat di-scroll. (Ieccb0)
  • File AndroidManifest dari ui-test-manifest dan ui-tooling-data kini kompatibel dengan Android 12 (I6f9de, b/184718994)

Versi 1.0.0-beta04

7 April 2021

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

Perubahan API

  • Mengganti nama hideSoftwareKeyboard dan showSoftwareKeyboard di SoftwareKeyboardController menjadi hide() dan show().
    • Memberikan antarmuka CompositionLocal lengkap untuk LocalSoftwareKeyboardController, sehingga dapat ditetapkan (sangat berguna dalam pengujian) (I579a6)
  • API aksesibilitas LiveRegion ditambahkan. Jika node ditandai sebagai live region, layanan aksesibilitas akan otomatis memberi tahu pengguna tentang perubahannya (Idcf6f, b/172590946)
  • TextOverflow.Visible diperkenalkan. (Ic8f89)

Perbaikan Bug

  • Memperbaiki masalah saat item LazyColumn/LazyRow yang terletak di tepi salah diposisikan setelah ayunan jari cepat (Ie4d13, b/183877420)
  • AndroidViewBinding kini menghapus fragmen yang di-inflate melalui FragmentContainerView dengan benar saat AndroidViewBinding dihapus dari hierarki Compose. (Ib0248, b/179915946)
  • AndroidViewBinding kini menyarangkan fragmen yang di-inflate melalui FragmentContainerView dengan benar saat ComposeView berada dalam Fragment, sehingga mengatasi masalah terkait menyimpan dan memulihkan status fragmen tersebut. (I70eb0, b/179915946)
  • Compose ViewBinding kini bergantung pada Fragment 1.3.2 dan secara konsisten menampilkan fragmen yang di-inflate melalui FragmentContainerView setelah perubahan konfigurasi. (I0743d, b/179915946)

Versi 1.0.0-beta03

24 Maret 2021

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

Perubahan API

  • Menangguhkan pemeriksaan untuk dependensi ViewTree ComposeView (I8dbbf, b/182466548)
  • Menambahkan parameter startX/endX dan startY/endY opsional ke fungsi swipeUp/swipeDown/swipeLeft/swipeRight di GestureScope. (I49e2d, b/182063305)

Versi 1.0.0-beta02

10 Maret 2021

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

Perubahan API

  • Menambahkan API lokal komposisi LocalSoftwareKeyboardController baru untuk menggantikan antarmuka SoftwareKeyboardController sebelumnya di TextField. (I5951e, b/168778053)
  • Menambahkan API lokal komposisi LocalSoftwareKeyboardController baru untuk menggantikan antarmuka SoftwareKeyboardController sebelumnya di TextField. (I84472, b/168778053)
  • Menghapus SemanticsMatcher berikut:
    • hasWidth(width, tolerance)
    • hasHeight(height, tolerance)
    • hasLeftPosition(left, tolerance)
    • hasTopPosition(top, tolerance)
    • hasRightPosition(right, tolerance)
    • hasBottomPosition(bottom, tolerance) (If16bd)
  • Menandai SemanticsMatchers berikut sebagai @ExperimentalTestApi:
    • hasWidth(width, tolerance)
    • hasHeight(height, tolerance)
    • hasLeftPosition(left, tolerance)
    • hasTopPosition(top, tolerance)
    • hasRightPosition(right, tolerance)
    • hasBottomPosition(bottom, tolerance) (Ia600c)
  • Menambahkan SemanticsMatcher berikut:
    • hasWidth(width, tolerance)
    • hasHeight(height, tolerance)
    • hasLeftPosition(left, tolerance)
    • hasTopPosition(top, tolerance)
    • hasRightPosition(right, tolerance)
    • hasBottomPosition(bottom, tolerance) (I2f502)

Perbaikan Bug

  • Menerapkan batasan di penggunaan publik API eksperimental (I6aa29, b/174531520)
  • androidx.compose.ui:ui tidak lagi bergantung pada AppCompat atau Fragment. Jika Anda menggunakan ComposeView di aplikasi, dan Anda menggunakan Fragment dan/atau AppCompat, pastikan bahwa Anda menggunakan AppCompat 1.3+/Fragment 1.3+ - versi ini diperlukan untuk menyetel siklus proses dengan benar dan pemilik status tersimpan yang diperlukan untuk ComposeView. (I1d6fa, b/161814404)
  • Memperbaiki rememberSaveable { mutableStateOf(0) } yang rusak saat digunakan di dalam tujuan navigation-compose. (I1312b, b/180042685, b/180701630)
  • Menambahkan API lokal komposisi LocalSoftwareKeyboardController baru untuk menggantikan antarmuka SoftwareKeyboardController sebelumnya di TextField. (I658b6, b/168778053)
  • Memperbaiki NoSuchElementException yang langka di tearDownRegistry() ComposeRootRegistry (Iddce1)

Versi 1.0.0-beta01

24 Februari 2021

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

Ini adalah rilis pertama Compose 1.0.0 Beta.

Perubahan API

  • Callback onStart telah ditambahkan ke detectDragGestures (I67269, b/179995594)
  • Pengubah ukuran ke intrinsik tidak lagi bersifat eksperimental. (I15744)
  • MeasureBlocks diganti namanya menjadi MeasurePolicy yang menjadi antarmuka menyenangkan. Layout API telah diperbarui/disederhanakan untuk menggunakan MeasurePolicy. (Icab48, b/167662468, b/156751158)
  • InteractionState telah diganti dengan [Mutable]InteractionSource
    • Antarmuka bertanggung jawab untuk mengirimkan/mengumpulkan peristiwa Interaksi.
    • Daripada meneruskan interactionState = remember { InteractionState() } ke komponen seperti Button dan Modifier.clickable(), gunakan interactionSource = remember { MutableInteractionSource() }.
    • Sebagai ganti: Interaction.Pressed in interactionState Anda sebaiknya menggunakan fungsi ekstensi di InteractionSource, seperti InteractionSource.collectIsPressedAsState().
    • Untuk kasus penggunaan yang kompleks, Anda dapat menggunakan InteractionSource.interactions untuk mengamati streaming Interaksi. Lihat dokumentasi InteractionSource dan contoh untuk informasi selengkapnya.
    • (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
  • Menambahkan antarmuka AccessibilityManager dan LocalAccessibilityManager di CompositionLocals (I53520)
  • Menghapus metode LayoutCoordinates yang tidak digunakan lagi, menggunakan fungsi, bukan properti untuk positionInParent dan boundsInParent (I580ed, b/169874631, b/175142755)
  • Typealiases diganti dengan jenis yang mendasari:
    • ColorStop sekarang menjadi Pair<Float, Color>
    • SpanStyleRange sekarang menjadi `AnnotatedString.Range
    • ParagraphStyleRange sekarang menjadi AnnotatedString.Range<ParagraphStyle>
    • StringAnnotation sekarang menjadi AnnotatedString.Range<String>
    • (I8dd1a)
  • Membuat TextInputSession baru untuk sesi input dari komponen teks tingkat rendah seperti CoreTextField. (I8817f, b/177662148)
  • Placeable sekarang mengekspos measuredSize, yang menunjukkan ukuran tata letak turunan sebenarnya. Ukuran ini mungkin tidak mengikuti batasan pengukuran. (Ib2729, b/172560206, b/172338608)
  • Menambahkan pengubah selectionGroup yang memungkinkan untuk menandai koleksi Tab atau RadioButtons untuk tujuan aksesibilitas (Ie5c29)
  • defaultFactory untuk compositionLocalOf dan staticCompositionLocalOf sekarang bersifat wajib, bukan opsional.

    Perubahan ini menghapus error jenis potensial untuk jenis non-nullable jika tidak ada factory default yang tersedia. Sebelumnya, perubahan ini akan menyediakan referensi null untuk jenis non-nullable.

    Untuk jenis nullable, pertimbangkan untuk menyediakan { null } sebagai factory default.

    Sebaiknya jangan gunakan lokal dengan jenis non-nullable kecuali jika default yang logis tersedia. Jika tidak ada default yang logis, lambda defaultFactory akan memunculkan pengecualian. Namun, memunculkan pengecualian berarti bahwa konsumen lokal akan memiliki dependensi implisit yang diberikan yang tidak diterapkan oleh sistem jenis. (Ifbd2a)

  • Metode yang tidak digunakan lagi dari modul UI telah dihapus (I646f6)

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

  • Modifier.tapGestureFilter telah dihapus Gunakan Modifier.pointerInput { detectTapGestures(...) } saja. (I266ed, b/175294473)

  • konsumsi parsial dihapus dari sistem input pointer. Cara yang disarankan untuk mengoordinasi konsumsi parsial adalah Modifier.nestedScroll. (Ie9c9b)

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

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

  • AnimationClockObservable dan subclass telah dihapus. AnimatedFloat telah dihapus. (Icde52, b/177457083)

  • Providers telah diganti namanya menjadi CompositionLocalProvider

    • Konstruktor Composition tidak lagi menerima parameter kunci, dan sudah tidak digunakan lagi.
    • currentCompositeKeyHash telah diubah menjadi properti tingkat atas composable, bukan fungsi tingkat atas composable.
    • CompositionData dan CompositionGroup telah dipindahkan ke namespace androidx.compose.runtime.tooling
    • ComposableLambda telah dibuat sebagai antarmuka, bukan class konkret, dan tidak lagi memiliki parameter jenis.
    • ComposableLambdaN telah dibuat sebagai antarmuka, bukan class konkret, dan tidak lagi memiliki parameter jenis.
    • Fungsi snapshotFlow telah dipindahkan ke namespace androidx.compose.runtime
    • metode penggabungan SnapshotMutationPolicy tidak lagi bersifat eksperimental
    • Fungsi clearRoots level atas @TestOnly telah dihapus. Fungsi tersebut tidak diperlukan lagi.
    • Fungsi keySourceInfoOf dan resetSourceInfo telah dihapus. Fungsi tersebut tidak diperlukan lagi.
    • Composer.collectKeySourceInformation telah dihapus. Fungsi tersebut tidak diperlukan lagi.
    • Metode isJoinedKey, joinedKeyLeft, dan joinedKeyRight telah dihapus. Fungsi tersebut tidak diperlukan lagi.
    • Berbagai API tingkat atas telah dipindahkan dan diatur ulang menjadi file yang berbeda. Karena semantik class file Kotlin, ini akan memutus kompatibilitas biner, tetapi tidak dengan kompatibilitas sumber, sehingga tidak menjadi masalah bagi sebagian besar pengguna.
    • (I99b7d, b/177245490)
  • ComponentActivity.setContent() telah dihapus dari compose:ui. Gunakan kode dari androidx.activity:activity-compose:1.3.0-alpha01. viewModel() dan LocalViewModelStoreOwner telah dihapus dari compose:ui. Gunakan kode dari androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 (I6f36b)

  • Modifier.scrollable telah dikerjakan ulang. Kini menggunakan antarmuka Scrollable, bukan class ScrollableController (I4f5a5, b/174485541, b/175294473)

  • Dukungan CustomEvens dari PointerInputModifier telah dihapus (I02707, b/175294473)

  • SnapshotStateObserver tidak lagi bersifat Eksperimental (Id2e6a)

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

  • longPressGestureFilter dan DoubleClickGestureFilter telah dihapus. Gunakan Modifier.pointerInput dengan fungsi bantuan, mis. detectTapGestures (I2fedf, b/175294473)

  • Menghapus penggunaan String.format API yang difaktorkan ulang dalam berbagai metode toString untuk tidak memanfaatkan String.format secara internal. (Id1290)

  • Menghapus pernyataan dp (I798d2)

  • Menghapus androidx.compose.runtime:runtime-dispatch (I55feb)

  • Tindakan teks sekarang memeriksa fokus secara otomatis (I13777, b/179648629)

  • Menghapus runBlockingWithManualClock (I15cdc, b/179664814)

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

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

  • Menambahkan fungsi bantuan yang berguna untuk menetapkan tindakan yang sama untuk semua callback ImeAction (I63447, b/179226323)

  • Menghapus callback SoftwareKeyboardController dari semua kolom teks, untuk segera diganti dengan API baru. (Iae869, b/168778053)

  • FontSpan dan FontWeigthStyleSpan tidak lagi digunakan dan akan dihapus. (Ie5b56, b/177423444)

  • Membuat perubahan Material API berikut:

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

Perbaikan Bug

  • Menambahkan API untuk menggunakan resource AnimatedVectorDrawable di Compose. Gunakan animatedVectorResource untuk memuat XML <animated-vector> sebagai AnimatedImageVector dan menganimasikannya dengan painterFor (I8ea91)
  • Menambahkan API lokal komposisi LocalSoftwareKeyboardController baru untuk menggantikan antarmuka SoftwareKeyboardController sebelumnya di TextField. (I658b6, b/168778053)

Versi 1.0.0-alpha12

10 Februari 2021

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

Perubahan API

  • Dukungan untuk ViewGroups telah dihapus dari UiApplier. Composable emitView yang tidak digunakan lagi telah dihapus. (Ifb214)
  • Modifier.pointerInput sekarang mengharuskan kunci remember untuk menunjukkan kapan coroutine deteksi input pointer harus dimulai ulang untuk dependensi baru. (I849cd)
  • CompositionReference berganti nama menjadi CompositionContext (I53fcb)
  • Bounds telah diganti namanya menjadi DpRect (I4b32a)
  • Pembaruan pengujian: hasText() akan memeriksa teks input dan label/petunjuk/placeholder di kolom teks (Iab803)
  • Composable viewModel() dan LocalViewModelStoreOwner dipindahkan ke androidx.lifecycle.viewmodel.compose. Anda sekarang perlu menambahkan dependensi androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 terpisah untuk menggunakannya. (I7a374)
  • Izinkan tindakan nullable di AccessibilityAction, ubah label tindakan di AccessibilityAction dan CustomAccessibilityAction dari CharSequence ke String (I0dc82)
  • Untuk lebih mencocokkan konvensi penamaan dengan ImageBitmap dan ImageVector, ImagePainter diganti namanya menjadi BitmapPainter ke VectorPainter paralel. (Iba381, b/174565889)
  • API pengujian substring yang lebih baik dengan substring sekarang sebagai argumen (Icbe78)
  • Menambahkan Modifier.focusOrder() yang menerima FocusRequester tanpa menentukan urutan fokus khusus, lambda. Hal ini berguna jika kita hanya perlu menentukan referensi tetapi bukan urutan fokus khusus untuk sebuah composable (I4f52a, b/179180978)
  • ComponentActivity.setContent telah dipindahkan ke androidx.activity.compose.setContent di dalam modul androidx.activity:activity-compose. (Icf416)
  • Metode penataan dan copy() telah dihapus dari beberapa class yang jarang digunakan. (I26702, b/178659281)
  • Memindahkan Pop-up ke platform tertentu. AndroidPopupProperties telah diganti namanya menjadi PopupProperties, dan isFocusable telah dipindahkan ke parameter focusable di PopupProperties (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 seperti remember { mutableStateOf(0) }, kami juga akan menghapus composable savedInstanceState { 0 }. Sebagai gantinya, Anda harus menggunakan rememberSaveable { mutableStateOf(0) } dan tindakan ini akan disimpan dan otomatis dipulihkan jika jenis yang digunakan dalam MutableState dapat disimpan di Bundle. Jika sebelumnya Anda meneruskan objek saver kustom, sekarang Anda harus menggunakan overload rememberSaveable baru yang memiliki parameter stateSaver. Penggunaannya akan terlihat seperti ini: val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) } (Ib4c26, b/177338004)
  • Menambahkan semantik sandi untuk aksesibilitas (I231ce)
  • Menambahkan ProgressBarRangeInfo.Indeterminate guna menandai status progres tidak pasti untuk aksesibilitas (I6fe05)
  • Utilitas emptyContent() dan (@Composable () -> Unit).orEmpty() tidak digunakan lagi karena tidak lagi memiliki dampak atau nilai performa yang bagus (I0484d)
  • snapshotFlow dan withMutableSnapshot tidak lagi bersifat eksperimental (I6a45f)
  • Kini Recomposer dapat ditutup. Recomposer yang ditutup akan melanjutkan rekomposisi hingga coroutine turunan komposisi selesai. Recomposer.shutDown diganti namanya menjadi cancel untuk membedakannya dengan close. (Ib6d76)
  • UiSavedStateRegistry diganti namanya menjadi SaveableStateRegistry, AmbientUiSavedStateRegistry diganti namanya menjadi AmbientSaveableStateRegistry dan keduanya dipindahkan ke paket androidx.compose.runtime.saveable. (I30224)
  • Artefak androidx:compose:runtime:runtime-saved-instance-state diganti namanya menjadi androidx:compose:runtime:runtime-saveable (I6dcac)
  • Banyak API lama yang tidak digunakan lagi dalam paket UI akan dihapus. (I2f2dc)
  • Artefak compose:runtime-dispatch sekarang tidak digunakan lagi. MonotonicFrameClock sekarang dapat ditemukan di compose:runtime dan AndroidUiDispatcher dapat ditemukan di compose:ui. (Ib5c36)
  • Class Outline.* bukan lagi class data (I4879e, b/178001427)
  • Menghapus view.captureToImage() tanpa penggantian apa pun. (I7fcd2)
  • Memperkenalkan ColorMatrix API yang digunakan untuk mengubah nilai rgb di konten sumber Memfaktorkan ulang ColorFilter API menjadi antarmuka dan sesuai dengan implementasi PathEffect. (Ica1e8)
  • Tambahkan parameter layoutDirection ke createOutline Shape. Ini memungkinkan untuk membuat bentuk sadar arah tata letak. (I57c20, b/152756983)
  • onImeActionPerformed tidak digunakan lagi. Sebagai gantinya, gunakan KeyboardActions (If0bbd, b/179071523)
  • Memperkenalkan elemen konteks coroutine InfiniteAnimationPolicy yang akan diimplementasikan dalam animasi tak terbatas. Secara default tidak ada kebijakan yang diinstal, kecuali saat menjalankan pengujian dengan ComposeTestRule. (I50ec4, b/151940543)
  • canDrag telah dihapus dari Modifier.scrollable. (Id66e7, b/175294473)
  • Mengganti nama LayoutCoordinates.parentCoordinates menjadi LayoutCoordinates.parentLayoutCoordinates untuk memungkinkan properti parentCoordinates yang baru. Properti parentCoordinates sekarang menawarkan LayoutCoordintes pengubah induk. Ini akan menghasilkan kasus penggunaan yang lebih lengkap untuk onSizeChanged() dan onGloballyPositioned() (Idfbfd, b/177926591)
  • tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter, dan pressIndicaitonGestureFilter tidak digunakan lagi. Sebagai gantinya, gunakan Modifier.clickable atau Modifier.pointerInput dengan fungsi detectTapGestures. (I6baf9, b/175294473)
  • SaveableStateRegistry's unregisterProvider telah dihapus. Sebagai gantinya, registerProvider() sekarang menampilkan objek SaveableStateRegistry.Entry yang dapat Anda gunakan untuk membatalkan pendaftaran (Ic4274, b/178583739)
  • rememberSavedInstanceState() telah diganti namanya menjadi rememberSaveable() dan dipindahkan ke paket androidx.compose.runtime.saveable. (I1366e, b/177338004)
  • Menghapus CoreText dan CoreTextField dari API publik
    • Menghapus overload SelectionContainer yang tidak digunakan lagi
    • (I99c19)
  • Pengujian tempat Compose digunakan dalam hierarki yang ditambahkan/dihapus langsung ke WindowManager kini lebih stabil. (Ie81ed, b/175765614)
  • Menghapus Recomposer.current(). [Abstract]ComposeView kini ditetapkan secara default ke Recomposers dengan cakupan jendela yang dibuat secara lambat dan didorong oleh ViewTreeLifecycleOwner untuk jendela. Tick animasi berbasis Recomposition dan withFrameNanos dijeda selama Lifecycle host dihentikan. (I38e11)
  • Recomposer.runningRecomposers sekarang menawarkan StateFlow global dari RecomposerInfo yang hanya dapat dibaca untuk mengamati status komposisi yang sedang berlangsung dalam proses. Pilih API ini daripada Recomposer.current(), yang sekarang tidak digunakan lagi. (If8ebe)
  • Saver, listSaver(), mapSaver(), dan autoSaver telah dipindahkan dari androidx.compose.runtime.savedinstancestate ke androidx.compose.runtime.saveable (I77fe6)
  • EditCommands menerima RenotatedString. Namun, ini hanya perubahan API dan pengeditan teks multi-gaya belum diterapkan. (I4c3ea)
  • Uptime dan Duration telah dihapus. (Ib9bf4, b/177420019)
  • CompositionData.asTree() dan API terkait dipindahkan ke modul ui-tooling-data terpisah dan ditandai sebagai eksperimental (Ic95b8)
  • Parameter di RounderCornerShape, CutCornerShape, dan CornerBasedShape telah diganti namanya dari kiri/kanan menjadi awal/akhir untuk mendukung pencerminan otomatis bentuk di arah rtl. AbsoluteRounderCornerShape dan AbsoluteCutCornerShape digunakan saat pencerminan otomatis tidak diinginkan. (I61040, b/152756983)
  • API yang menjadi target plugin compiler Compose telah difaktorkan ulang agar dapat menggunakan antarmuka, bukan class konkret. Antarmuka juga tidak lagi menggunakan parameter jenis.

    Perubahan internal ini seharusnya tidak memengaruhi kompatibilitas kode sumber, tetapi merupakan perubahan yang dapat menyebabkan gangguan biner. (I3b922, b/169406779)

  • Menghapus fungsi StringBuilder.deleteAt publik secara tidak sengaja (Id6ed9)

Perbaikan Bug

  • ComposeView yang ditempatkan dalam hierarki tampilan yang merupakan turunan dari komposisi lain kini menjadi host komposisi turunan dari ancestornya (I92883)
  • Mengupdate imageFromResource API compose agar dapat menggunakan kembali cache drawable resource saat memuat objek ImageBitmap. (If3627, b/178751994)

Versi 1.0.0-alpha11

28 Januari 2021

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

Perubahan API

  • WithConstraints didesain ulang sebagai BoxWithConstraints dan dipindahkan ke foundation.layout. (I9420b, b/173387208)
  • Key.DPadUp tidak digunakan lagi. Sebagai gantinya, gunakan Key.DirectionUp. (Iab335, b/177954892)
  • Antarmuka Owner mulai sekarang berada di internal. (If8e35)
  • Menambahkan FocusManager.moveFocus() API untuk memindahkan fokus secara terprogram. (I045cb, b/177681839)
  • Mengubah PopupPositionProvider untuk menggunakan koordinat relatif jendela, bukan koordinat global. Mengganti nama parentGlobalBounds menjadi anchorBounds, dan mengubah windowGlobalBounds menjadi windowSize: IntSize (I2994a)
  • Duration dan Uptime akan diganti dengan milidetik Long, dan langkah ini akan menghapus dependensi input pointer di class tersebut. (Ia33b2, b/175142755, b/177420019)
  • AmbientSavedStateRegistryOwner ditambahkan serupa dengan AmbientLifecycleOwner dan AmbientViewModelStoreOwner yang sudah ada (I9a3e8, b/176756365)
  • Mengupdate API grafik vektor untuk mendukung penguraian penambahan tint yang diterapkan ke root grafik vektor. (Id9d53, b/177210509)
  • Menambahkan toolType ke PointerInputChange untuk membedakan perangkat (Iac787, b/175142755)
  • AmbientWindowManager diganti namanya menjadi AmbientWindowInfo (I2686a, b/177084714, b/177084983)
  • Menghentikan penggunaan metode koordinat global dan membuat metode koordinat berbasis jendela yang baru. (Iee284)
  • Menambahkan Modifier.toolingGraphicsLayer yang menambah pengubah lapisan grafis saat pemeriksaan diaktifkan. (I315df)
  • FocusRequester.createRefs kini ditandai sebagai eksperimental karena mungkin berubah. (I2d898, b/177000821)
  • SemanticsPropertyReceiver.hidden diganti namanya menjadi invisibleToUser dan ditandai @ExperimentalComposeUiApi. AccessibilityRangeInfo diganti namanya menjadi ProgressBarRangeInfo. stateDescriptionRange diganti namanya menjadi progressBarRangeInfo. AccessibilityScrollState diganti namanya menjadi ScrollAxisRange. horizontalAccessibilityScrollState diganti namanya menjadi horizontalScrollAxisRange. verticalAccessibilityScrollState diganti namanya menjadi verticalScrollAxisRange. (Id3148)
  • Menghapus PointerInputData dan memodifikasi PointerInputChange untuk memberikan semua kolom PointerInputData. Membuat PointerInputEvent dan PointerInputEventData internal karena tidak digunakan di API publik mana pun. (Ifff97, b/175142755)
  • Memperbarui kepadatan implementasi GraphicsLayerScope untuk mendukung konversi dp menjadi piksel mentah. (Ied528, b/176819695)
  • Mengupdate API matriks agar dapat mengikuti pengurutan baris utama dan memberikan konstanta indeks untuk membantu konversi antara representasi matriks yang berbeda agar cocok dengan logika konversi framework antara SkMatrix dan Matrix4 secara internal. (I432e6)
  • Menghapus metode monotonicFrameAnimationClockOf eksperimental (Ib753f, b/170708374)
  • Memindahkan String.fintPrecedingBreak dan String.fingFollowingBreak ke InternalTextApi. (I657c4)
  • androidx.compose.ui.util.isSurrogatePair telah dihapus dari API publik. (Ia9494)
  • Mengganti nama TransformedText.transformedText menjadi TransformedText.text
    • TransformedText bukan lagi class data (Ie672a)
  • Menghapus data class dari class berikut:
    • InlineTextContent
    • LocaleList (I605c7)
  • Class berikut bukan lagi class data:
    • AnnotatedString
    • ParagraphStyle
    • SpanStyle
    • TextStyle
    • FontWeight
    • TextDecoration
    • TextGeometricTransform
    • TextIndex
    • TextLayoutResult
    • TextLayoutInput (Iaff99)
  • Mengubah VisualTransformation menjadi antarmuka fungsional (I3bba4)
  • Menambahkan jenis parameter referensi fungsi (I5e1bd)
  • Menambahkan batas yang ditransformasikan ke InspectorNode (Ice42f)

Perbaikan Bug

  • onCommit, onDispose, dan onActive sudah tidak digunakan lagi dan digantikan dengan API SideEffect dan DisposableEffect (If760e)
  • Perubahan fungsi factory untuk Font/FontFamily/Typeface

    • Menambahkan fungsi factory yang dimulai dengan huruf kapital
    • Menghentikan penggunaan fungsi factory sebelumnya dengan huruf pertama huruf kecil
    • Fungsi factory baru menampilkan FontFamily, bukan subclass
    • Menyembunyikan konstruktor subclass sehingga hanya dapat dikonstruksi melalui fungsi factory.
    • Mengganti nama Font.asFontFamily menjadi Font.toFontFamily (I42aa7)
  • Memperkenalkan ComposeContentTestRule, yang memperluas ComposeTestRule dan menentukan setContent, yang telah dihapus dari ComposeTestRule. Menambahkan metode factory createEmptyComposeRule() yang menampilkan ComposeTestRule dan tidak meluncurkan Aktivitas untuk Anda. Gunakan ini jika Anda ingin meluncurkan Aktivitas selama pengujian, misalnya menggunakan ActivityScenario.launch (I9d782, b/174472899)

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

  • Parameter deskripsi konten telah ditambahkan ke Image dan Icon. Digunakan untuk memberikan deskripsi ke layanan aksesibilitas (I2ac4c)

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

  • OnSizeChanged melaporkan ukuran konten tata letak. Class ini sekarang melaporkan ukuran sesuai posisinya dalam rantai pengubah. (I36b78, b/177562900)

  • API emit() dan semua overload tidak digunakan lagi dan diganti namanya menjadi ComposeNode. API identik, hanya nama yang berbeda untuk mengikuti konvensi penamaan Compose (I4137b)

  • TextFieldValue menerima AnnotatedString. Namun, ini hanya perubahan API dan pengeditan teks multi-gaya belum diterapkan.

    • Menghapus initial dari parameter konstruktor EditingBuffer. (I326d5)
  • invalidate dan compositionReference() sekarang tidak digunakan lagi dan masing-masing telah digantikan dengan currentRecomposeScope dan rememberCompositionReference. (I583a8)

  • AnnotatedString diubah untuk memperluas dari kotlin.CharSequence. Oleh karena itu, panjang dan subSequence sekarang menjadi fungsi instance, dan fungsi ekstensi dihapus. (Iaf429)

  • RememberObserver menggantikan CompositionLifecycleObserver dan CompositionLifecycleObserver kini tidak digunakan lagi.

    RememberObserver adalah pengganti untuk CompositionLifecycleObserver dengan metode modifikasi semantik dan penggantian nama. Mengubah ke API baru dapat dilakukan secara mekanis untuk objek yang hanya diingat satu kali, dan terus menjadi, praktik yang direkomendasikan. Namun, jika referensi diingat lebih dari sekali dalam suatu komposisi, onRemembered dipanggil untuk setiap referensi saat onEnter hanya dipanggil sekali. onEnter dipanggil beberapa kali jika objek digunakan dalam subkomposisi, seperti WithConstraints dan Scaffold, yang membuat jaminan panggilan onEnter tunggal tidak dapat diandalkan dan telah dihapus untuk RememberObserver.

    RememberObserver menambahkan onAbandoned yang dipanggil jika instance RememberObserver ditampilkan dari callback yang diteruskan ke remember tetapi tidak diingat dalam status komposisi, dan, oleh karena itu, tidak akan pernah memanggil onRemembered. 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 instance RememberObserver yang mengikuti rekomendasi referensi tunggal di atas melacak resource eksternal onForgotten dan onAbandoned, masing-masing menunjukkan bahwa resource tidak lagi diperlukan. Jika objek sedang melacak pekerjaan yang dimulai atau resource yang dialokasikan di onRemembered, onAbandoned dapat diabaikan karena tidak akan dipanggil jika onRemembered dipanggil. (I02c36)

  • Operasi aritmetika yang tidak digunakan lagi di antara 2 atau beberapa TextUnits. Fungsi TextUnit.Sp dan TextUnit.Em yang sudah tidak digunakan lagi lebih diutamakan dibandingkan dengan fungsi ekstensi seperti Int.sp dan Int.em. (I48369)

  • Resource di library tanpa resource publik yang dideklarasikan secara eksplisit (misalnya melalui public.xml) sekarang bersifat pribadi secara default. (Ia1dcc, b/170882230)

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

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

  • Gunakan ImeAction.None, bukan ImeAction.NoAction

    • Gunakan ImeAction.Default, bukan ImeAction.Unspecified (Ie1bcc)
  • Memanfaatkan TestCoroutineDispatcher dalam pengujian (I532b6)

  • Mengganti nama TextInputService.onStateUpdated sebagai updateState (Id4853)

  • Transisi berbasis TransitionDefinition tidak digunakan lagi (I0ac57)

  • TextUnitType.Inherit dihapus. Sebagai gantinya, gunakan TextUnitType.Unspecified. (I9ff64)

Versi 1.0.0-alpha10

13 Januari 2021

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

Perubahan yang Dapat Menyebabkan Gangguan

  • Restrukturisasi API compiler internal memungkinkan perubahan batch pada node yang dihasilkan sebagai hasil komposisi ke dalam fase "terapkan perubahan" komposisi, setelah semua fungsi @Composable selesai.

    Ini adalah perubahan perilaku yang dapat menyebabkan gangguan yang memengaruhi kode aplikasi karena node tidak lagi tersedia dari API internal dan eksperimental hingga perubahan diterapkan. Hal ini biasanya dapat diatasi dengan mengelilingi kode dengan dependensi tersebut dalam composable SideEffect untuk menunda eksekusi kode hingga node dibuat dan diinisialisasi. (I018da)

Perubahan API

  • Menambahkan Modifier.focusOrder() yang dapat digunakan untuk menentukan urutan traversal fokus kustom (I90cf5, b/175899543, b/170155556, b/170155429)
  • Menghapus focusObserver yang tidak digunakan lagi. Sebagai gantinya, gunakan onFocusChanged atau onFocusEvent (I3ecb9, b/175156387)
  • Perubahan API EditOperations
    • Mengganti nama EditOperation sebagai EditCommand
    • Menambahkan akhiran Command untuk implementasi konkret EditOperation
    • EditCommand bukan lagi class data
    • Mengganti nama fungsi EditOperation.process menjadi applyTo
    • Mengganti nama InputEventListener menjadi InputEventCallback
    • (I0a366)
  • Menghapus PxSquared, PxCubed, dan PxInverse yang tidak digunakan. Mengubah Size.center() menjadi properti. (I973f7)
  • Modul ui-test sekarang dapat mengonfigurasi pembuatan Recomposers untuk UI yang sedang diuji (Ibebd8)
  • Modifikasi Velocity untuk memiliki bagian komponen dan operasi matematika. (Ib0447)
  • Mengganti nama @ExperimentalTesting menjadi @ExperimentalTestApi agar konsisten dengan anotasi API eksperimental yang serupa (Ia4502, b/171464963)
  • Mengganti nama Color.useOrElse() menjadi Color.takeOrElse() (Ifdcf5)
  • Menghapus class DpInverse, DpSquared, dan DpCubed yang tidak digunakan. (I4d62b)
  • Constraints#satisfiedBy diganti namanya menjadi isSatisfiedBy. (I9cf5c)
  • Menambahkan callback untuk memberi tahu Pemilik saat batas layoutnode berubah. (I72fd1)
  • Menambahkan isSpecified, isUnspecified, dan useOrElse untuk class inline dengan konstanta Unspecified. (I93f7b, b/174310811)
  • Luaskan API [Abstraksi]ComposeView untuk memungkinkan pendaurulangan tampilan berbasis Compose, membuang komposisinya untuk dibuat kembali nanti. Tambahkan API untuk menginstal dan menemukan Recomposers dan CompositionReferences dengan cakupan jendela untuk membuat komposisi turunan.

    Tambahkan ViewCompositionStrategy untuk mengonfigurasi strategi penghapusan komposisi dari [Abstract]ComposeViews; perilaku default adalah membuang pada jendela yang dilepas. (I860ab)

  • Menghapus API publik Any.identityHashCode() (I025d7)

  • Menghapus toStringAsFixed API dan digantikan dengan menggunakan String.format secara langsung. (Iaba6b)

  • Menambahkan Toggle ke Strings.kt foundation (I4a5b7, b/172366489)

  • nativeClass dipindahkan ke modul ui dan membuatnya internal. Penggunaan nativeClass yang diperbarui sama dengan implementasi untuk menggunakan 'is MyClass' sebagai gantinya. (I4f734)

  • Modifier.focus() dan Modifier.focusRequester() tidak digunakan lagi. Gunakan Modifier.focusModifier() dan Modifier.focusReference() sebagai gantinya. (I75a48, b/175160751, b/175160532, b/175077829)

  • Memperkenalkan SelectionRegistrar.notifySelectableChange untuk memberi tahu update Selectable ke SelectionManager. (I6ff30, b/173215242)

  • Memperkenalkan properti Outline.bounds untuk memperoleh rect pembatas untuk berbagai implementasi garis batas. (I16e74, b/175093504)

  • TestUiDispatcher tidak digunakan lagi. Gunakan Dispatchers.Main sebagai gantinya (Ic171f, b/175385255)

  • ImeOptions dan KeyboardOptions bukan lagi class data (I3c898, b/168684531)

  • Perubahan API VisualTransformation

    • Mengganti Nama OffsetMap menjadi OffsetMapping
    • Mengganti Nama OffsetMapping.identityOffsetMap menjadi OffsetMapping.Identity
    • PasswordTransformation bukan lagi class data
    • Memindahkan OffsetMapping ke filenya sendiri
    • (I0bdf3)
  • Mengganti nama Position menjadi DpOffset dan menghapus getDistance() (Ib2dfd)

  • Mengubah fun Dp.isFinite() menjadi val Dp.isFinite (I50e00)

Perbaikan Bug

  • Recomposer kini menampilkan Alur dari statusnya saat ini, memungkinkan pemantauan aktivitasnya dan aktivitas efek terkait. (Ifb2b9)
  • keyEvent native sekarang dapat diakses melalui keyEvent.nativeKeyEvent (I87c57, b/173086397)
  • animate() sekarang diganti dengan animateAsState(), yang menampilkan State<T>, bukan T. Hal ini memungkinkan performa yang lebih baik, karena cakupan pembatalan validasi dapat dipersempit ke tempat nilai State dibaca. (Ib179e)
  • Menambahkan API peran Semantik dan menambahkan Peran sebagai parameter ke SemanticsModifier yang dapat diklik, dipilih, dan diubah. Mengubah Modifier.progressSemantics agar Penggeser juga dapat menggunakannya. (I216cd)
  • Animatable API baru berbasis coroutine yang memastikan pengalaman eksklusif di antara animasinya.
    • DecayAnimationSpec baru untuk mendukung animasi peluruhan multi-dimensi
    • (I820f2, b/168014930)

Versi 1.0.0-alpha09

16 Desember 2020

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

Perubahan API

  • KeyEvent.Alt yang tidak digunakan lagi kini dihapus. KeyEvent.isAltPressed digunakan sebagai gantinya. (Idd695)
  • Modifier.keyInputFilter dan Modifier.previewKeyInputFilter tidak digunakan lagi, gunakan Modifier.onKeyEvent dan Modifier.onPreviewKeyEvent sebagai gantinya (Idbf1b, b/175156384)
  • Modifier.focusObserver tidak digunakan lagi. Gunakan Modifier.onFocusChanged atau Modifier.onFocusEvent sebagai gantinya (I30f17, b/168511863, b/168511484)
  • Untuk API input pointer yang menangguhkan, HandlePointerInputScope diganti namanya menjadi AwaitPointerEventScope dan handlePointerInput() diganti namanya menjadi awaitPointerEventScope(). (Idf0a1, b/175142755)
  • Autofill API kini menjadi API eksperimental dan mewajibkan keikutsertaan (I0a1ec)
  • Menambahkan deklarasi destrukturisasi untuk membuat instance FocuSRequester (I35d84, b/174817008)
  • accessibilityLabel diganti namanya menjadi contentDescription. accessibilityValue diganti namanya stateDescription. (I250f2)
  • Peristiwa kustom dihapus dari API input pointer yang menangguhkan (Ia54d5, b/175142755)
  • Memperkenalkan beberapa fungsi baru dalam SelectionRegistrar serta mengganti nama onPositionChange menjadi notifyPositionChange. (Ifbaf7)
  • Lebih banyak anggota LayoutNode yang kami tandai sebagai internal (I443c6)
  • LayoutInfo diperkenalkan untuk digunakan dengan alat dan pengujian (I9b190)
  • AndroidOwner dibuat internal (Ibcad0, b/170296980)
  • Menghapus anotasi ExperimentalPointerInput (Ia7a24)
  • Sistem scroll bertingkat ditambahkan. Lihat Modifier.nestedScroll untuk detail selengkapnya (I36e15, b/162408885)
  • subcomposeInto(LayoutNode) dibuat internal (Id724a)
  • Antarmuka Applier telah diubah untuk menyederhanakan hierarki build dari bawah ke atas, bukan dari atas ke bawah.

    Metode insert() telah diganti namanya menjadi insertTopDown().

    Menambahkan metode baru, insertBottomUp().

    Applier akan memasukkan node ke hierarki yang sedang diedit menggunakan insertTopDown() atau insertBottomUp() bergantung mana yang berperforma lebih baik.

    Beberapa hierarki, seperti LayoutNode dan View, jauh lebih efisien untuk dibuat dari bawah ke atas daripada dari atas ke bawah. Sebelum perubahan ini, stack insert diperlukan untuk menerapkan konstruksi dari bawah ke atas yang perlu disalin ke setiap applier yang memerlukan konstruksi tersebut untuk performanya. Dengan perubahan ini, Applier akan menggantikan insertBottomUp() untuk membuat hierarki dari bawah ke atas dan insertTopDown() untuk membuat hierarki dari atas ke bawah. (Icbdc2)

  • Menambahkan properti dismissOnBackPress dan dismissOnClickOutside ke AndroidDialogProperties. Hal ini memungkinkan konfigurasi saat lambda onDismissRequest dialog akan dipanggil. (If5e17)

  • Menambahkan painterResource API untuk menangani objek Painter dimuat buram dari format aset raster (seperti PNG) atau VectorDrawable. Konsumen tidak perlu lagi menentukan jenis aset terlebih dahulu dan dapat memanggil metode ini untuk mendapatkan objek Painter yang akan digunakan dalam fungsi Image yang dapat dikomposisi atau pengubah pelukis. (I2c703, b/173818471)

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

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

  • Memperkenalkan API grafis PathEffect untuk memberikan pola yang berbeda pada bentuk yang digores. NativePathEffect tidak digunakan lagi dan diganti dengan implementasi perkiraan/aktual PathEffect. (I5e976, b/171072166)

  • Menambahkan antarmuka IdlingResource ke Compose, sebagai varian Compose yang didukung dari resource tanpa aktivitas Espresso. Antarmuka ini dapat didaftarkan dan dibatalkan pendaftarannya melalui ComposeTestRule (I433f3)

  • Menghapus (un)registration global ComposeIdlingResource dan (un)registration global jam menjadi ComposeIdlingResource (I32660)

Perbaikan Bug

  • Lambda pada pengubah offset kini menampilkan IntOffset, bukan Float. (Ic9ee5, b/174137212, b/174146755)
  • Menghapus SlotTable, SlotReader, dan SlotWriter dari API publik. Sebelumnya, ini ditandai sebagai InternalComposeAPI. Kini keduanya bersifat internal untuk modul compose.

    Menambahkan CompositionData dan CompositionGroup sebagai pengganti ui-tooling API yang digunakan untuk mengekstrak informasi komposisi. Ini bersifat publik, tetapi tidak dimaksudkan untuk digunakan di luar ui-tooling API karena menyediakan informasi mentah yang ditafsirkan oleh ui-tooling API (I31a9c)

  • Memfaktorkan ulang ShaderBrush untuk membuat instance shader dengan lambat saat informasi pengaturan ukuran lingkungan gambar tersedia. Ini berguna untuk menentukan gradien yang memenuhi batas gambar penuh fungsi composable pada waktu komposisi, tanpa harus menerapkan implementasi DrawModifier kustom.

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

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

  • Menghentikan penggunaan BuildCompat.isAtLeastR (Idb37e)

  • Menambahkan fungsi factory buildAnnotatedString untuk membuat AnnotatedString. Menghentikan penggunaan fungsi builder annotatedString. (Idfe0b)

  • Menghapus metode ekstensi di Float dan Double untuk mengonversi nilai ke radian. Dipindahkan menjadi fungsi pribadi dalam implementasi PathParser yang merupakan satu-satunya tempat penggunaannya (I25f52)

Versi 1.0.0-alpha08

2 Desember 2020

androidx.compose.ui:ui-*:1.0.0-alpha08 dirilis. Versi 1.0.0-alpha08 berisi commit ini.

Perubahan API

  • Menambahkan tindakan semantik Dismiss (I2b706)
  • Memindahkan DrawModifier API dari paket androidx.compose.ui ke paket androidx.compose.ui.draw. Membuat file DrawModifierDeprecated.kt untuk menyertakan metode typealiases/helper guna membantu migrasi dari API yang tidak digunakan lagi ke API saat ini. (Id6044, b/173834241)
  • Mengganti nama Modifier.drawLayer menjadi Modifier.graphicsLayer Juga memperbarui class terkait ke GraphicsLayer sesuai masukan API. (I0bd29, b/173834241)
  • Metode baru placeable.placeWithLayer() dan placeable.placeRelativeWithLayer() telah ditambahkan, yang memungkinkan tata letak kustom dan pengubah tata letak menempatkan turunan dengan memperkenalkan layer grafis untuk gambarnya. Setelah itu, pertama-tama kita dapat mengoptimalkan gambar ulang, sehingga perlu memindahkan turunan, kita tidak perlu menggambar ulang kontennya, kedua kita dapat menerapkan transformasi gambar untuk turunan (Ibd8f6, b/170296989, b/171493718, b/173030831)
  • <T> telah dihapus dari deklarasi SubcomposeLayout. Kini Anda dapat menggunakannya tanpa menentukan jenis. (Ib60c8)
  • Menambahkan Modifier.scale/rotate API agar memudahkan untuk drawLayer.
    • Mengganti nama Modifier.drawOpacity menjadi Modifier.alpha
    • Mengganti nama Modifier.drawShadow menjadi Modifier.shadow (I264ca, b/173208140)
  • Membuat kolom waktu beroperasi dan posisi PointerInputData non-nullable. (Id468a)
  • MaterialTheme kini menetapkan warna yang tepat untuk handle pemilihan dan latar belakang pilihan. Aplikasi Non-Material dapat menggunakan AmbientTextSelectionColors secara manual untuk menyesuaikan warna yang digunakan untuk pemilihan. (I1e6f4, b/139320372, b/139320907)
  • Menambahkan WindowManager.isWindowFocused untuk memeriksa apakah jendela host dalam fokus, dan WindowFocusObserver yang menyediakan callback onWindowFocusChanged. (I53b2a, b/170932874)
  • Memperbarui TransformOrigin API agar memiliki sintaksis yang mendestrukturisasi untuk menampilkan pivotFractionX dan pivotFractionY sebagai component1 dan component2 (If43c4, b/173586560)
  • Menambahkan pemeriksaan lint untuk penamaan dan posisi parameter lambda fungsi yang dapat dikomposisi, agar konsisten dengan pedoman Compose. Selain itu, memigrasikan beberapa API menggunakan children sebagai nama untuk lambda akhirnya ke content, sesuai dengan pemeriksaan lint dan panduan. (Iec48e)
  • Menambahkan API untuk memeriksa apakah kunci pengubah Alt, Ctrl, Meta, atau Shift ditekan saat peristiwa tombol dikirim. (I50ed9)
  • Menambahkan overload Modifier.drawLayer() baru. Dibutuhkan blok lambda pada GraphicsLayerScope baru tempat Anda menentukan parameter lapisan dengan cara yang memungkinkan untuk melewatkan rekomposisi dan penataan letak ulang saat perubahan status terjadi. DrawLayerModifier kini internal dalam persiapan untuk memigrasikan logikanya ke metode placeable.placeWithLayer() LayoutModifier (I15e9f, b/173030831)
  • Ambient yang tidak digunakan lagi dinamai dengan Ambient sebagai akhirannya, dan menggantinya dengan properti baru yang diawali dengan Ambient, mengikuti pedoman Ambients dan Compose API lainnya. (I33440)
  • Memindahkan androidx.compose.ui.text.Typeface ke androidx.compose.ui.text.font.Typeface (Ic2b81)
  • Argumen semantik mergeAllDescendants diganti namanya menjadi mergeDescendants. (Ib6250)
  • Pendeteksi gestur tarik baru yang menangguhkan API input pointer, termasuk penguncian orientasi. (Icef25)
  • Mengganti nama VectorAsset menjadi ImageVector Memindahkan dan mengganti nama VectorAsset menjadi Builder agar menjadi class dalam ImageVector sesuai pedoman API. Menambahkan typealias VectorAssetBuilder ke link ke ImageVector.Builder untuk compat. (Icfdc8)
  • Mengganti nama ImageAsset dan metode terkait menjadi ImageBitmap. (Ia2d99)
  • Menambahkan parameter zIndex untuk place() PlacementScope sehingga Modifier.zIndex() kini berfungsi sebagai LayoutModifier dan setiap tata letak kustom dapat menetapkan zIndex untuk turunannya langsung di blok penempatan (I711f7, b/171493718)
  • Memindahkan properti semantik dasar ke ui (I6f05c)
  • Menghentikan penggunaan place(Offset) dan placeRelative(Offset). Menggunakan kelebihan beban dengan offset int (I4c5e7)
  • API yang sebelumnya Tidak Digunakan Lagi telah dihapus: Modifier.onPositioned telah dihapus, gunakan Modifier.onGloballyPositioned. Modifier.onDraw telah dihapus, gunakan Modifier.onDrawBehind. Modifier.plus telah dihapus, gunakan Modifier.then. Color.Unset telah dihapus, gunakan Color.Unspecified. Class PxBounds telah dihapus, gunakan Rect sebagai gantinya. (Ie9d02, b/172562222)
  • Antarmuka Alignment telah diperbarui dan berfungsi. (I46a07, b/172311734)
  • Pendeteksi gestur untuk ketuk, ketuk dua kali, tekan lama, dan indikasi tekan ditambahkan menggunakan input pointer penangguhan yang baru. Beberapa aplikasi utilitas juga ditambahkan, sehingga memudahkan developer menulis pendeteksi gesturnya sendiri. (I00807)
  • id diganti namanya menjadi layoutId untuk LayoutIdParentData. Measurable.id diganti namanya menjadi Measurable.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, yakni typeface(Typeface.DEFAULT). Juga mengganti nama typefaceFromFontFamily() menjadi typeface() (I52ab7)
  • Menambahkan pemeriksaan lint untuk memeriksa bahwa fungsi factory Modifier didefinisikan sebagai ekstensi di Modifier, sehingga dapat ditautkan secara efisien. (I07981)
  • Menghapus modul ui-test lama dan stub-nya (I3a7cb)
  • Recomposer tidak lagi menerima EmbeddingContext; dependensi penjadwalan yang diperlukan diperoleh dari effectCoroutineContext. FrameManager tidak digunakan lagi; integrasi platform harus melakukan inisialisasi penanganan snapshot globalnya sendiri. (I02369)
  • Meneruskan informasi gaya ke node aksesibilitas. (If5e8d)
  • TextUnit.Inherit diganti namanya menjadi TextUnit.Unspecified agar konsisten dengan unit lain. (Ifce19)

Compose UI Versi 1.0.0-alpha07

11 November 2020

androidx.compose.ui:ui-*:1.0.0-alpha07 dirilis. Versi 1.0.0-alpha07 berisi commit ini.

Perubahan API

  • Memperkenalkan class inline ScaleFactor untuk merepresentasikan faktor skala sumbu horizontal dan vertikal secara independen dari satu sama lain guna mendukung kasus penggunaan penskalaan tidak seragam.
    • Menambahkan metode DpConstraints ke ContentScale
    • Menambahkan ContentScale.FillBounds untuk melakukan penskalaan tidak seragam guna meluaskan batas src agar sepenuhnya memenuhi tujuan.
    • Menambahkan metode operator untuk menghitung parameter ScaleFactor dengan parameter Ukuran.
    • (Ic96a6, b/172291582)
  • Factory BiasAlignment dan BiasAbsoluteAlignment untuk membuat Alignment ditambahkan. (Iac836, b/169406772)
  • Memungkinkan developer menghapus fokus secara paksa. (I90372)
  • Bug yang menyebabkan ketinggian tidak digambar untuk Tampilan di dalam Compose telah diperbaiki. (If7782)
  • Membuat onDrawBehind API dalam ContentDrawScope untuk mencocokkan konvensi penamaan dengan Modifier.drawBehind. (I4fc3a, b/171955269)
  • Menambahkan dukungan untuk jarak kamera guna melengkapi transformasi 3D rotasiX/rotasiY pada API lapisan. (I40213, b/171492100)
  • Menambahkan SelectionContainer tanpa callback (Ibfadb)
  • Anotasi ExperimentalSubcomposeLayoutApi dihapus. SubcomposeLayout kini dapat digunakan tanpa menambahkan @OptIn (I708ad)
  • FirstBaseline dan LastBaseline dipindahkan ke paket androidx.compose.ui.layout (Ied2e7)
  • Opasitas dihapus dari pengubah drawShadow() karena membingungkan. (I82c62, b/171624638)
  • MeasureResult dikeluarkan dari MeasureScope. (Ibf96d, b/171184002)
  • Beberapa simbol terkait tata letak dipindahkan dari androidx.compose.ui ke androidx.compose.layout.ui. (I0fa98, b/170475424)
  • Menghapus FocusState2 yang tidak digunakan lagi (I686cb, b/168686446)
  • ZIndexModifier kini internal (I1808b, b/171493718)
  • Memperbarui jenis nilai yang ditampilkan metode lerp pada parameter Ukuran untuk menampilkan Ukuran non-null guna menghindari box yang tidak perlu. (Ib0044)
  • Menambahkan TestMonotonicFrameClock untuk kode pengujian yang mengandalkan MonotonicFrameClock Compose untuk menunggu peristiwa bingkai komposisi menggunakan runBlockingTest kotlinx-coroutines-test (I4402f)
  • Menghapus GestureScope.localToGlobal (I15299, b/171462785)
  • Menambahkan pencari onAllNodesWithSubstring (I81dd7, b/171462889)
  • Modul androidx.ui.test tidak digunakan lagi. Lakukan migrasi ke androidx.compose.ui.test dan androidx.compose.ui.test.junit4 (I452e8)

Perbaikan Bug

  • captureToBitmap dipindahkan ke captureToImage. (I86385)
  • foundation.Text sudah tidak digunakan lagi dan diganti dengan material.Text. Untuk API teks dasar tidak terkonfigurasi yang tidak memakai nilai dari tema, lihat androidx.compose.foundation.BasicText. (If64cb)
  • Mengupdate TextFields untuk menerima KeyboardOptions (Ida7f3)
  • Mengganti nama KeyboardOptions sebagai ImeOptions (I82f36)
  • Memindahkan KeyboardType dan ImeAction ke KeyboardOptions (I910ce)
  • provideDefault ditambahkan sebagai alternatif untuk menyediakan ambient, dan dapat digunakan untuk menentukan nilai ambient yang hanya akan ditetapkan jika tidak ada nilai ambient yang telah disediakan. (Id6635, b/171024925)
  • BaseTextField sudah tidak digunakan lagi. BasicTextField digunakan sebagai gantinya. (I896eb)
  • Memperkenalkan modul ui-test-junit4 (Ib91f8)
  • relativePaddingFrom diganti namanya menjadi paddingFrom. Pengubah paddingFromBaseline ditambahkan, untuk memudahkan penentuan jarak dari batas tata letak ke dasar pengukuran teks. (I0440a, b/170633813)
  • LaunchedTask diganti namanya menjadi LaunchedEffect agar konsisten dengan SideEffect dan DisposableEffect API. LaunchedEffect tanpa parameter subjek tidak diizinkan agar mendorong praktik terbaik. (Ifd3d4)
  • Memperkenalkan komponen resource yang merekomposisi saat konfigurasi diperbarui. (I6387c, b/167352819)
  • Recomposer kini memerlukan CoroutineContext saat pembuatan (Ic4610)
  • Menjumlahkan nilai zIndex saat beberapa Modifier.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 dari PointerInputFilter.onPointerEvent(...). (I6acd0)
  • MeasureScope dan IntrinsicMeasureScope dijadikan antarmuka. (I1a087, b/170461665)
  • Fungsi penggabungan untuk AlignmentLine disembunyikan. (I9da1a, b/170612900, b/170611568)
  • Menambahkan kemampuan untuk menentukan info pemeriksa dalam pengubah terkomposisi (Idee08, b/163494569)
  • Menambahkan opsi SelectAll ke menu pemilihan (Ief02b)
  • Memperbarui DrawTransform.rotate untuk mengambil parameter pivot default pusat agar sesuai dengan dokumentasi.
    • Memperbarui DrawScope.rotateRad untuk menggunakan Offset untuk titik pivot agar sesuai dengan metode transformasi lainnya.
    • Tidak lagi menggunakan overload DrawScope.rotateRad yang memakai float untuk koordinat x dan y pivot.
    • (Iffcbb, b/170434992)

Perbaikan Bug

  • Pemeriksaan lint API untuk MissingGetterMatchingBuilder diaktifkan untuk androidx (I4bbea, b/138602561)
  • Menambahkan pengujian. (I6b8ae)
  • Mengaktifkan transisi di ComposeTestRule; menghapus opsi untuk mengaktifkan kursor yang berkedip dari ComposeTestRule. (If0de3)
  • Menambahkan Opsi IME KeyboardCapitalization (I8ac38)
  • Menambahkan opsi keyboard satu baris ke CoreTextField (I72e6d)
  • Memindahkan SimpleContainer ke PopupTestUtils.kt (I65c3e)
  • Mengganti nama Radius API menjadi CornerRadius untuk menyatakan penggunaannya secara lebih baik di seluruh Compose. Memperbarui dokumen untuk menunjukkan bahwa radius sudut negatif dikunci ke nol. (I130c7, b/168762961)
  • Menyempurnakan interop Android dengan terus mengirimkan MotionEvents ke Tampilan Android turunan yang menampilkan salah untuk onTouchEvent untuk semua tindakan kecuali ACTION_DOWN (I94c5a, b/170320973)
  • Box dibuat menjadi fungsi inline. (Ibce0c, b/155056091)

Kontribusi Eksternal

  • Mendukung lokal yang berbeda untuk AnnotatedString.capitalize dan AnnotatedString.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> dari PointerInputFilter.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() dari Owner -- OwnedLayer menangani invalidasi. (Ica72b, b/162061312)
  • Menghapus metode operator pada Size API yang menggunakan parameter Offset. Hasil dari operasi ini tidak jelas dan jenis hasilnya tidak terduga. Misal. haruskah ukuran - offset menampilkan offset atau hasil ukuran dengan perbedaan?

    Juga menghapus metode yang tidak digunakan lagi di class Size. (Iec902, b/166514214)

Perbaikan Bug

  • Perbaikan untuk item LazyColumn yang terkadang salah digambar. Hal ini juga menyebabkan error dalam kondisi tertentu. (Ibcf17, b/163066980, b/165921895)
  • DpConstraint dan API yang menggunakannya tidak digunakan lagi. (I90cdb, b/167389835)
  • Memindahkan createAndroidComposeRule dan AndroidInputDispatcher dari androidx.ui.test.android ke androidx.ui.test (Idef08, b/164060572)
  • Penggunaan gravitasi secara konsisten diganti namanya menjadi untuk meratakan atau perataan dalam API tata letak. (I2421a, b/164077038)
  • Menambahkan onNode dan metode global lainnya di ComposeTestRule karena metode global yang ada saat ini akan segera dihentikan. (Ieae36)

Versi 1.0.0-alpha02

2 September 2020

androidx.compose.ui:ui-*:1.0.0-alpha02 dirilis. Versi 1.0.0-alpha02 berisi commit ini.

Perubahan API

  • menghapus callback untuk memberi tahu Pemilik saat batas layoutnode berubah. (If654e, b/166106882)
  • Menambahkan dukungan untuk parameter filltype pada jalur grafik vektor untuk mendukung potongan bentuk sesuai dengan aturan pengisian jalur evenOdd atau NonZero. (I43dd2)
  • Waktu beroperasi dan Velocity kini menjadi class inline (I48f4a)
  • Durasi kini menjadi class inline (I565eb)
  • Menambahkan callback untuk memberi tahu Pemilik saat batas layoutnode berubah. (Ic40b3)
  • Memperbaiki masalah ketika konstruktor fungsi Rect dengan Offset dan radius membuat Rect dalam urutan kiri, kanan, atas, bawah, bukan kiri, atas, kanan, bawah.

    Menghapus metode pendamping yang sudah tidak digunakan lagi di Rect dan diganti dengan konstruktor fungsi.

    Menambahkan pengujian untuk memverifikasi metode di Rect.kt (I08460, b/165822356)

Perbaikan Bug

  • Menambahkan MutableRect, yakni persegi panjang yang dapat dimodifikasi. (I71bd2, b/160140398)
  • Matrix4 diganti dengan Matrix. Semua bagian lain dari paket vectormath telah dihapus. (Ibd665, b/160140398)
  • Konvensi pemanggilan untuk fungsi yang dapat dikomposisi telah berubah. Ini adalah perubahan yang dapat menyebabkan gangguan biner. Semua library harus dikompilasi ulang agar berfungsi dengan versi plugin compiler compose saat ini.

    Perubahan ini tidak membuat perubahan yang dapat menyebabkan gangguan tingkat sumber karena satu-satunya API yang telah berubah adalah API compiler yang memiliki keikutsertaan eksplisit. (I7afd2, b/158123185)

  • Memperbaiki error yang dapat terjadi saat pengiriman ke PointerInputFilter menyebabkan PointerInputFilter dihapus secara sinkron. (I58f25)

Versi 1.0.0-alpha01

26 Agustus 2020

androidx.compose.ui:ui-*:1.0.0-alpha01 dirilis. Versi 1.0.0-alpha01 berisi commit ini.

Versi 0.1.0-dev

Versi 0.1.0-dev17

19 Agustus 2020

androidx.compose.ui:ui-*:0.1.0-dev17 dirilis. Versi 0.1.0-dev17 berisi commit berikut ini.

Perubahan API

  • emitView tidak digunakan lagi. Sebagai gantinya, gunakan AndroidView ketika memungkinkan untuk memunculkan Views di dalam Compose. Perlu diperhatikan bahwa pengomposisian langsung Views dan ViewGroups tidak akan dapat dilakukan di masa mendatang, kecuali keduanya merupakan daun dalam struktur pohon komposisi terkait dan tindakan itu dapat dilakukan menggunakan AndroidView. (I29b1e, b/163871221)
  • FocusState2 tidak digunakan lagi dan digantikan oleh FocusState (Ia8b79, b/160822876, b/160923332)
  • Overload AndroidView yang tidak digunakan lagi telah dihapus. (I946b9, b/163802393)
  • Emit khusus kini dapat mendeklarasikan bahwa satu atau beberapa penyetelnya dapat dilewati dan dikomposisi ulang secara terpisah dari emit. (Ibbd13)
  • Mengubah class Vector agar tidak lagi menjadi class data karena instance objek yang sama digunakan untuk komposisi.

    Menambahkan flag mutableStateOf untuk VectorPainter agar menggambar ulang secara bersyarat jika konten vektor berubah.

    Memfaktorkan ulang instance VectorComponent menjadi bagian dari VectorPainter karena digunakan kembali di seluruh komposisi.

    Memperbarui GroupComponent dan PathComponent agar kolom namanya dapat berubah (Ieae45, b/151378808)

  • Menghapus onChildPositioned dan OnChildPositionedModifier. Sebagai gantinya, developer sebaiknya menggunakan onPositioned dan OnPositionedModifier pada tata letak turunan. (I4522e, b/162109766)

  • Offset telah menjadi class inline (Iaec70)

  • Menambahkan parameter pengubah ke SelectionContainer (I4aada, b/161487952)

  • Menghapus FocusModifier yang tidak digunakan lagi (I0b4ba, b/160922116, b/160821157, b/162441435, b/160822875, b/160921940)

  • Menambahkan lambda mergePolicy ke SemanticsPropertyKey. 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 menjadi PlacementScope.place(), dan PlacementScope.place() sebelumnya diganti namanya menjadi PlacementScope.placeRelative(). Akibatnya, metode PlacementScope.place() tidak akan lagi secara otomatis mencerminkan posisi dalam konteks kanan-ke-kiri. Jika menginginkannya, gunakan saja PlacementScope.placeRelative(). (I873ac, b/162916675)

  • 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 ke remember { mutableStateOf(...) } menjadi lebih jelas. Ini mengurangi keseluruhan tampilan API dan jumlah konsep untuk pengelolaan status, serta mencocokkan pola by mutableStateOf() untuk delegasi properti class. (Ia5727)

  • Mengganti nama RRect menjadi RoundRect agar lebih cocok untuk menulis pola penamaan Membuat konstruktor fungsi yang serupa dengan RRect, dan menghentikan penggunaan konstruktor fungsi RRect (I5d325)

Versi 0.1.0-dev16

5 Agustus 2020

androidx.compose.ui:ui-*:0.1.0-dev16 dirilis. Versi 0.1.0-dev16 berisi commit berikut ini.

Perubahan API

  • OnChildPositioned tidak digunakan lagi. Sebagai gantinya, gunakan OnPositioned pada turunan. (I87f95, b/162109766)
  • setViewContent tidak digunakan lagi. Sebagai gantinya, setContent harus digunakan. (I7e497, b/160335130)
  • Menambahkan AndroidViewBinding API untuk meng-inflate dan menulis resource tata letak, berdasarkan ViewBinding. (I081c6)
  • KeyEvent2 digantikan oleh KeyEvent (I2d770, b/162097585)
  • Menambahkan dukungan untuk tombol hardware Alt (I9036b)
  • FocusManager Tidak Digunakan Lagi. Sebagai gantinya, gunakan Modifier.focus(), Modifier.focusObserver(), dan Modifier.focusRequester(). (I74ae4, b/162211322)
  • loadVectorResource mendukung atribut trimPath (I808fe)
  • Memindahkan dialog ke ui (I47fa6)
  • Menghapus 2 PointerEventPasses yang tidak diperlukan lagi. (I33ca7)
  • Mengimplementasikan PointerInteropModifier yang memberikan kemampuan menerima MotionEvents dan berinteraksi dengan Compose seolah-olah Anda sedang menjalankan implementasi Tampilan Android. (Ieb08c)
  • Menghapus pengubah tag yang tidak digunakan lagi. Sebagai gantinya, harap gunakan LayoutId. (Idaa05, b/162023919)
  • API untuk dukungan dari kanan ke kiri telah diupdate. Menambahkan LayoutDirectionAmbient yang bisa digunakan untuk membaca dan mengubah arah tata letak. Modifier.rtl dan Modifier.ltr telah dihapus. (I080b3)
  • Mendukung pemangkasan jalur dalam grafik vektor (Ie16c9, b/158188351)
  • Menambahkan Modifier.layout() yang memungkinkan untuk membuat pengubah tata letak khusus dengan mudah (I73b69, b/161355194)
  • Menambahkan AndroidView API baru dan tidak lagi menggunakan yang ada. (I5bcfd)
  • Modifier.plus tidak digunakan lagi. Sebagai gantinya, gunakan Modifier.then. 'Then' memiliki sinyal pengurutan yang lebih kuat, serta melarang pengetikan Modifier.padding().background() + anotherModifier yang memutus rantai dan lebih sulit dibaca (Iedd58, b/161529964)
  • Tambahkan subclass Tampilan [Abstract]ComposeView untuk menghosting konten Compose dalam hierarki Tampilan. (I46357)
  • Row dan Column kini berfungsi inline yang secara signifikan mengurangi overhead penggunaannya. (I75c10)
  • SubcomposeLayout ditambahkan. Ini adalah primitif tingkat rendah yang memungkinkan komposisi pada turunan selama pengukuran. Hal itu terjadi jika kita ingin menggunakan beberapa nilai yang hanya tersedia selama pengukuran untuk komposisi sub-pohon. Misalnya, WithConstraints tidak diimplementasikan menggunakan SubcomposeLayout. (I25cc8)
  • Menambahkan SemanticsNode.positionInRoot untuk mendapatkan posisi SemanticsNode relatif terhadap root hierarki Compose (Icdf26, b/161336532)
  • MotionEvents melewati seluruh Android, ke dalam Compose, dan kembali ke Android. (I14be8, b/158034713)
  • DropdownPopup dihapus. (I00430)
  • Memperbaiki posisi pop-up pada tampilan terpotong. (Idd7dd)
  • Menambahkan tindakan aksesibilitas untuk mendapatkan TextLayoutResult (I9d6e6)
  • RemeasurementModifier ditambahkan dan memungkinkan untuk mengukur tata letak secara sinkron. Secara umum, Anda tidak memerlukannya karena pengukuran ulang/penataan ulang tata letak terjadi secara otomatis, tetapi kami menggunakannya di dalam LazyColumnItems selama scroll. (I5f331, b/160791058)
  • Menghapus getLineEllipsisOffset/getLineEllipsisCount. Sebagai gantinya, gunakan getLineVisibleEnd/getLineEnd/isLineEllipsized. (I85aa2)
  • Menambahkan beberapa Tanda/Anotasi untuk alasan praktik terbaik. (I66b20)
  • memperlihatkan API baris lainnya di TextLayoutResult. (I79bd2)
  • Pengonversi vektor bawaan untuk mengonversi unit bawaan kini dapat diakses melalui Foo.VectorConverter. Misalnya, Dp.VectorConverter, Color.VectorConverter, Float.VectorConverter, dll. (I3e273)

Perbaikan Bug

  • Mengatasi masalah API umum (I077bc)
    1. Menghapus antarmuka OffsetBase yang tidak digunakan
    2. Meratakan class Offset dan IntOffset agar memiliki tampilan API yang konsisten
    3. Mengganti nama IntOffset.Origin menjadi IntOffset.Zero agar konsisten dengan Offset API
    4. Memindahkan metode nativeCanvas dari antarmuka Canvas untuk mendukung konsumen membuat instance Canvas mereka sendiri
    5. Membuat class EmptyCanvas stub untuk memfaktorkan ulang DrawScope menjadi parameter non-null, bukan lateinit, dan memastikan non-nullability pada kolom
    6. Mengganti nama enum ClipOp menjadi Pascal Case
    7. Mengganti nama enum FilterQuality menjadi Pascal Case
    8. Mengganti nama enum StrokeJoin menjadi Pascal Case
    9. Mengganti nama enum PointMode menjadi Pascal Case
    10. Mengganti nama enum PaintingStyle menjadi Pascal Case
    11. Mengganti nama enum PathFillType menjadi Pascal Case
    12. Mengganti nama enum StrokeCap menjadi Pascal Case
    13. Memperbarui implementasi DrawCache agar tidak lagi menggunakan parameter lateinit
    14. Memperbarui DrawScope agar tidak lagi menggunakan delegasi lambat untuk parameter internal fillPaint dan strokePaint
    15. Memperbarui composable Image untuk menghindari penggunaan Box untuk overhead yang lebih rendah
    16. Memperbarui class Outline agar memiliki anotasi @Immutable
    17. Memperbarui PathNode agar memiliki anotasi @Immutable untuk setiap petunjuk jalur
    18. Memperbarui subkomposisi Vektor untuk menghapus pemeriksaan persamaan bersyarat yang berlebihan karena compose sudah menanganinya
    19. Metode konstruktor pendamping Rect tidak digunakan lagi dan diganti dengan konstruktor fungsi
    20. Memperbarui class Brush dan konstruktor fungsi dengan API @Immutable dan @Stable
    21. Memperbarui enum VertexMode menjadi PascalCase
    22. Memperbarui metode DrawScope selectPaint untuk menimpa parameter goresan secara bersyarat pada paint jika telah diubah
    23. Memperbarui Ukuran untuk menambahkan API destrukturisasi, mengganti nama UnspecifiedSize menjadi Unspecified, dan menghapus metode yang tidak digunakan
  • Memperbarui pemakaian BlendMode API compose untuk memetakan dengan benar antara mode BlendMode dan PorterDuff framework Android bergantung pada API level. Memperkenalkan BlendMode#isSupported API untuk bertindak sebagai kueri kemampuan untuk menentukan apakah BlendMode didukung di perangkat sebelum digunakan. (I0ef42)
  • LazyItemScope telah ditambahkan untuk parameter itemContent dari daftar Lazy. Bagian ini menyediakan pengubah untuk mengisi ukuran maksimum induk yang akan menyelesaikan kasus penggunaan ketika item harus mengisi area pandang dan Modifier.fillMaxSize() biasa tidak akan berfungsi karena item diukur dengan batasan tak terbatas. (Ibd3b2, b/162248854)
  • SemanticsNodeInteraction.performPartialGesture dihapus. Sebagai gantinya, gunakan SemanticsNodeInteraction.performGesture. (Id9b62)
  • LazyColumnItems diganti namanya menjadi LazyColumnFor. LazyRowItems diganti namanya menjadi LazyRowFor (I84f84)
  • Paket foundation.shape.corner diratakan menjadi foundation.share (I46491, b/161887429)
  • Mengganti nama AndroidComposeTestRule menjadi createAndroidComposeRule. (I70aaf)
  • Menambahkan API lainnya ke TextLayoutResult. (Id7e04)
  • Material FilledTextField diganti namanya menjadi TextField dan TextField dasar diganti namanya menjadi BaseTextField agar API yang paling sederhana yang diinginkan mudah ditemukan dan digunakan (Ia6242, b/155482676)
  • Nama Modifier.drawBackground telah diganti menjadi Modifier.background (I13677)

Versi 0.1.0-dev15

22 Juli 2020

androidx.compose.ui:ui-*:0.1.0-dev15 dirilis. Versi 0.1.0-dev15 berisi commit berikut.

Update Dependensi

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

Perubahan API

  • FocusModifier tidak digunakan lagi dan digantikan oleh Modifier.focus, Modifier.focusRequester, Modifier.focusObserver. FocusState dan FocusDetailedState tidak digunakan lagi dan digantikan dengan FocusState2 (I46919, b/160822875, b/160922136)
  • Menambahkan pengubah untuk mengamati perubahan status fokus. (I05866, b/160924455, b/160923326)
  • Menambahkan pengubah untuk meminta perubahan fokus (I8dd73, b/161182057, b/160924778)
  • Sesuaikan Toolbar Menu untuk menampilkan fungsi menyalin, memotong, dan menempel dengan benar. (Id3955)
  • Properti semantik satu nilai sekarang menggunakan gaya pemanggilan. Misalnya, 'semantics {hidden = true}' sekarang ditulis sebagai: semantics { hidden() }. (Ic1afd, b/145951226, b/145955412)
  • Menambahkan Modifier.focus yang menggantikan FocusModifier. (Ib852a, b/160924778)
  • Tambahkan FloatingToolbar untuk TextField Selection. (Ie8b07)
  • Menambahkan anotasi API eksperimental untuk API terkait input kunci (I53c0a)
  • Menambahkan anotasi API eksperimental untuk semua API terkait Focus (I53b24, b/160903352)
  • Menambahkan FocusState2 yang akan menggantikan FocusDetailedState (I0a3ba, b/160822595)
  • Menambahkan ExperimentalFocus yang merupakan anotasi @OptIn untuk Focus API. (I1544b, b/160820961)
  • Class unit IntBounds telah ditambahkan dan mewakili batas piksel bilangan bulat dari tata letak. API PopupPositionProvider telah diupdate untuk menggunakannya. (I0d8d0, b/159596546)
  • Appier kini memerlukan metode clear() untuk memisahkan posisi (Ibe697)
  • KeyEvent tidak digunakan lagi dan digantikan oleh KeyEvent2 (I68730)
  • Sebuah flag opsional baru useUnmergedTree telah ditambahkan ke pencari pengujian. (I2ce48)
  • Membuat API eksperimental LayoutNode (I4f2e9)
  • Menambahkan metode penyalinan ke berbagai jenis class inline, termasuk:

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

  • (I45f09, b/152842521)

    • Nama ScaleFit berganti menjadi ContentScale
    • ContentScale telah dipindahkan dari modul ui-graphics ke ui-core untuk ditempatkan di modul yang sama dengan Alignment API.
    • Nama FillMaxDimension diganti menjadi Crop
    • Nama FillMinDimension diganti menjadi Fit
    • Nama Fit diganti menjadi Inside agar lebih cocok
    • ImageView.ScaleType setara
    • Menambahkan dokumentasi yang menunjukkan bahwa kombinasi Crop dan Alignment.Center mencapai hasil yang sama seperti ImageView.ScaleType.CENTER_CROP dan Fit yang digunakan dengan Alignment.Center mencapai hasil yang sama seperti ImageView.ScaleType.FIT_CENTER Inside yang digunakan dengan Alignment.Center mendapatkan hasil yang sama seperti ImageView.ScaleType.CENTER_INSIDE
  • Dukungan Rtl untuk pengubah gambar. (I0aaf9)

  • Merilis API untuk meng-inflate Tampilan Android dari XML. Lihat demo ViewInCompose untuk mengetahui detail selengkapnya. (I42916)

  • Menyempurnakan DrawModifier API:

    • Membuat cakupan penerima untuk draw() ContentDrawScope
    • Menghapus semua parameter pada draw()
    • DrawScope memiliki antarmuka yang sama dengan CanvasScope
    • ContentDrawScope memiliki metode drawContent() (Ibaced, b/152919067)
  • Menambahkan positionInParent dan boundsInParent untuk LayoutCoordinates. (Icacdd, b/152735784)

  • Sekarang DrawLayerModifier dan drawLayer() menjadi clipToBounds dan clipToOutline secara default ke false. (I0eb8b, b/152810850)

  • Nama LayoutResult diganti menjadi MeasureResult. (Id8c68)

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

  • Penggantian operator Modifier plus dengan fungsi ekstensi pabrik (I225e4)

  • Menambahkan properti translationX/Y untuk mendukung pengimbangan daftar tampilan perintah gambar untuk Layer tertentu. Hal ini berguna untuk memindahkan konten sebagai respons terhadap animasi atau peristiwa sentuh. (I8641c)

  • Menambahkan parameter pivotX, pivotY ke Layer API untuk mendukung rotasi dan penskalaan titik tertentu pada layer (Icf7c3)

  • Menambahkan OnPositionedModifier dan OnChildPositionedModifier untuk menggantikan fungsi yang dapat dikomposisi OnPositioned dan OnChildPositioned. (I2ec8f)

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

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

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

  • Dukungan awal untuk Rtl dalam tata letak Compose (Ia5519)

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

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

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

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

  • Penyempurnaan pada antarmuka API Constraints (I0fd15)

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

    • Menambahkan CanvasScopeSample serta mengupdate aplikasi demo guna menyertakan Demo grafis deklaratif (Ifd86d)
  • Menghapus MaskFilter API yang tidak digunakan karena penggunaannya terbatas dan tidak dioptimalkan untuk akselerasi hardware pada sebagian besar kasus penggunaan (I54f76)

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

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

  • Memperkenalkan parameter perbaikan opsional tambahan ke ImagePainter untuk mendukung penggambaran subset ImageAsset dasar (I0ea9e)

  • Menambahkan Unset Color untuk mewakili nilai yang tidak ditetapkan tanpa boxing Colors. (If901a)

  • Menambahkan metode ekstensi Canvas.rotate dan Canvas.scale untuk menggunakan koordinat pivot opsional bagi transformasi. Tindakan ini mengubah default ke sudut kiri atas dari terjemahan kanvas saat ini.

    Juga memindahkan Canvas.rotateRad agar menjadi metode ekstensi untuk konsistensi (Ibaca6)

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

  • Mengganti nama toFrameworkRect/toFrameworkRectF menjadi toAndroidRect/toAndroidRectF agar cocok dengan konvensi penamaan untuk konversi objek antara compose dan Android Framework API yang di-build untuk membuatnya. Selain itu, dokumen tentang API ini juga diperbarui (I86337)

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

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

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

  • Menambahkan TextDirection.Content (I48f36)

  • Menambahkan operator TextDecoration.plus (I0ad1a)

  • Force dihapus dari nilai enum TextDirectionAlgorithm (Icc944)

  • Nama TextDirectionAlgorithm diubah menjadi TextDirection (I75ce8)

  • Mengimplementasikan LongPressAndDrag untuk TextField Selection. (I17919)

  • Menambahkan AnnotatedString.getStringAnnotations yang menampilkan semua anotasi dalam rentang. (I1fa00)

  • Mengubah nama paket untuk Locale dan LocaleList dari androidx.ui.text 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 runOnIdleCompose diganti menjadi runOnIdle (I83607)
  • Beberapa nama API pengujian diganti menjadi lebih intuitif. Semua nama API findXYZ diganti menjadi onNodeXYZ. Semua nama API doXYZ diganti menjadi performXYZ. (I7f164)
  • Compose UI sekarang dapat dikomposisi di dalam ViewGroups tanpa memerlukan komposisi baru. Lihat ViewInteropDEM untuk melihat contohnya. (I9ab0b, b/160455080)
  • Menambahkan sortWith dan removeRange ke MutableVector (Icccf7)
  • Menerapkan Drag Selection Handles untuk mengubah pilihan TextField. (I27032)
  • Menghapus class inline Shader yang menggabungkan class expect NativeShader. Mengganti nama NativeShader menjadi Shader. Class inline Shader yang digabungkan tidak menambahkan apa pun yang berharga ke permukaan API dan merupakan class inline, jadi gunakan class NativeShader secara langsung. (I25e4d)
  • PainterModifier difaktorkan ulang agar tidak lagi menyediakan penskalaan berdasarkan batasan yang diberikan dan parameter ContentScale. Implementasi Painter adalah untuk menskalakan konten gambarnya sendiri berdasarkan ukuran DrawScope yang ditentukan.

    Memperbaiki masalah bitmap cache yang ada di VectorPainter ke ukuran default, bukan ukuran yang ditetapkan.

    ImagePainter telah diupdate untuk menskalakan kontennya, bukan mengandalkan PainterModifier untuk melakukan hal tersebut atas namanya. (I6ba90)

  • menambahkan fungsi top-level withFrameNanos untuk pengaturan waktu animasi (Ie34c5)

  • Anotasi @Untracked sudah tidak digunakan lagi. Ganti dengan @ComposableContract(tracked=false) (Id211e)

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

  • Memperbaiki masalah ketika pengiriman input pointer akan menyebabkan error jika PointerInputFilters dihapus melalui subkomposisi selama pengiriman. Hal ini sekarang telah diperbaiki. (I1f48b, b/157998762)

  • Memperbaiki masalah ketika pengiriman input pointer akan menyebabkan error jika PointerInputFilters dihapus melalui subkomposisi selama pengiriman. Hal ini sekarang telah diperbaiki. (Iab398, b/157998762)

  • Memfaktorkan ulang class Radius untuk menjadi class inline. Menghapus metode pembuatan pengiring yang mendukung konstruktor fungsi dengan parameter default agar memiliki radius sepanjang sumbu y yang cocok dengan parameter radius sumbu x wajib.

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

  • Fungsi yang dapat dikomposisi Recompose tidak lagi menjadi abstraksi yang berguna. Sebagian besar rekomposisi harus terjadi sebagai hasil penugasan MutableState. Untuk hal-hal selain itu, sebaiknya Anda menggunakan fungsi invalidate untuk memicu rekomposisi cakupan saat ini. (Ifc992)

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

  • Mengubah strategi pembuatan kode compiler Compose. Sebelum perubahan, compiler compose akan mengubah panggilan ke fungsi yang dapat dikomposisi. Dengan perubahan ini, sekarang kami mengubah isi fungsi yang dapat dikomposisi dan membiarkan callsite tidak berubah (sebagian besarnya).

    Artinya, sebagian besar logika yang digunakan untuk berkomunikasi dengan runtime compose terjadi di awal isi fungsi, bukan di callsite.

    Ini seharusnya menjadi perubahan yang kompatibel dengan sumber untuk semua penggunaan compose. Sebagian besar pengguna compose tidak perlu mengupdate kode apa pun karena perubahan ini.

    Untuk mendukung tugas ini, tanda tangan JVM dari semua fungsi yang dapat dikomposisi telah berubah. Fungsi yang dapat dikomposisi yang menerima satu parameter diubah menjadi fungsi yang menerima 3 parameter. Parameter tambahannya adalah Composer, bilangan bulat 'kunci', dan bilangan bulat bitmask yang digunakan untuk menyebarkan metadata melalui panggilan.

    Compose kini juga mengubah argumen default ke fungsi yang dapat dikomposisi. Hal ini dilakukan tanpa menimbulkan kelebihan beban default pada fungsi itu sendiri, sehingga perubahan ini akan menyebabkan lebih sedikit fungsi yang ditentukan.

    Perubahan perilaku disengaja dan diketahui yang dihasilkan dari tindakan berikut:

    1. Beberapa panggilan akan melewati bagian, di mana tidak pernah dilakukan sebelumnya
    2. Ekspresi composable dalam ekspresi argumen default kini berlangganan dan ditangani dengan benar

    Tugas ini mencakup beberapa pengoptimalan: 1. Hasil perbandingan parameter disebarkan melalui grafik panggilan ke fungsi yang dapat dikomposisi lainnya. Ini akan menyebabkan lebih sedikit perbandingan pada saat runtime, mengurangi ukuran tabel slot, serta lebih banyak melewatkan fungsi yang dapat dikomposisi yang sebelumnya tidak dilewati 2. Parameter yang ditetapkan sebagai "statis" pada waktu kompilasi tidak lagi dibandingkan atau disimpan di runtime. Hal ini mengurangi jumlah perbandingan dan mengurangi ukuran tabel slot. 3. Struktur alur kontrol pada bagian isi fungsi digunakan untuk meminimalkan jumlah kelompok yang dihasilkan. Tindakan ini mengurangi ukuran tabel slot dan menyebabkan lebih sedikit tugas untuk runtime 4. Parameter pengirim dan penerima ke fungsi yang tidak terpakai tidak akan disertakan dalam menentukan kemampuan melewati fungsi jika tidak digunakan di dalam bagian isi fungsi.

    Sebagian besar perubahan yang dapat menyebabkan gangguan terjadi pada API yang ditargetkan oleh compiler secara langsung, dan penggunaan compose biasanya tidak akan terpengaruh: 1. Composer::startExpr telah dihapus 2. Composer::endExpr telah dihapus 3. Composer::call tidak digunakan lagi 4. Kelebihan beban non-vararg pada key telah dihapus. Gunakan versi vararg ke depannya. 5. Anotasi Pivotal tidak digunakan lagi. Gunakan key sebagai pengganti. 6. ScopeUpdateScope::updateScope diubah untuk mengharapkan Function3, bukan Function1 7. restartableFunction dan restartableFunctionN diupdate untuk menyertakan parameter waktu kompilasi tambahan (I60756, b/143464846)

  • Pengubah LayoutAlign yang tidak digunakan lagi telah dihapus. (I10877)

  • RepaintBoundary dihapus dan digantikan dengan DrawLayerModifier (I00aa4)

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

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

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

  • Mengubah perilaku TextDirection default untuk ditentukan oleh LayoutDirection, yaitu jika LayoutDirection adalah RTL, maka TextDirection default adalah RTL. Sebelumnya 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)