Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

Compose Foundation

Menulis aplikasi Jetpack Compose dengan elemen penyusun siap pakai dan memperluas dasar untuk mem-build bagian sistem desain Anda sendiri.
Update Terbaru Rilis Stabil Saat Ini Kandidat Rilis Berikutnya Rilis Beta Rilis Alfa
2 September 2020 - - - 1.0.0-alpha02

Struktur

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

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

GrupDeskripsi
composeMenentukan UI Anda secara terprogram dengan fungsi yang dapat dikomposisi yang mendeskripsikan bentuk dan dependensi datanya.
compose.animationMem-build animasi di aplikasi Jetpack Compose untuk memperkaya pengalaman pengguna.
compose.foundationMenulis aplikasi Jetpack Compose dengan elemen penyusun siap pakai dan memperluas dasar untuk mem-build bagian sistem desain Anda sendiri.
compose.materialMem-build Jetpack Compose UI dengan Komponen Desain Material siap pakai. Ini adalah titik masuk level yang lebih tinggi untuk Compose, yang dirancang untuk menyediakan komponen yang cocok dengan yang dijelaskan di www.material.io.
compose.runtimeElemen penyusun model pemrograman dan pengelolaan status Compose, serta runtime inti untuk Compose Compiler Plugin untuk ditargetkan.
compose.uiKomponen dasar compose UI yang diperlukan untuk berinteraksi dengan perangkat, termasuk tata letak, gambar, dan input.
uiBerfungsi dengan library Jetpack Compose.

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:

dependencies {
    implementation "androidx.compose.foundation:foundation:1.0.0-alpha02"
}

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerVersion "1.4.0"
        kotlinCompilerExtensionVersion "1.0.0-alpha02"
    }
}

tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach {
    kotlinOptions {
        jvmTarget = "1.8"
        freeCompilerArgs += ["-Xallow-jvm-ir-dependencies", "-Xskip-prerelease-check"]
    }
}

Untuk informasi dependensi selengkapnya, lihat Menambahkan dependensi build.

Masukan

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

Melaporkan masalah baru

Lihat dokumentasi Issue Tracker untuk informasi selengkapnya.

Versi 1.0.0

Versi 1.0.0-alpha02

2 September 2020

androidx.compose.foundation:foundation:1.0.0-alpha02, androidx.compose.foundation:foundation-layout:1.0.0-alpha02, dan androidx.compose.foundation:foundation-text:1.0.0-alpha02 dirilis. Versi 1.0.0-alpha02 berisi commit berikut.

Perbaikan Bug

  • TestUiDispatcher ditandai eksperimental (Iae99d, b/161247083)
  • Menambahkan ManualFrameClock.hasAwaiters untuk melihat apakah ada yang menunggu frame dari jam tersebut; runWithManualClock sebagai pengganti runBlocking saat menjalankan pengujian yang memerlukan ManualFrameClock; TestUiDispatcher.Main yang memberikan akses mudah ke dispatcher UI utama dalam pengujian Anda.

    Contoh:

    @Test
    fun myTest() = runWithManualClock { clock ->
        // set some compose content
        withContext(TestUiDispatcher.Main) {
            clock.advanceClock(1000L)
        }
        if (clock.hasAwaiters) {
            println("The clock has awaiters")
        } else {
            println("The clock has no more awaiters")
        }
    }
    

    (I0a85b, b/161247083)

Versi 1.0.0-alpha01

26 Agustus 2020

androidx.compose.foundation:foundation:1.0.0-alpha01, androidx.compose.foundation:foundation-layout:1.0.0-alpha01, dan androidx.compose.foundation:foundation-text:1.0.0-alpha01 dirilis. Versi 1.0.0-alpha01 berisi commit berikut.

Versi 0.1.0-dev

Versi 0.1.0-dev17

19 Agustus 2020

androidx.compose.foundation:foundation:0.1.0-dev17, androidx.compose.foundation:foundation-layout:0.1.0-dev17, dan androidx.compose.foundation:foundation-text:0.1.0-dev17 dirilis. Versi 0.1.0-dev17 berisi commit berikut.

Perubahan API

  • Pengaturan spacedBy telah ditambahkan untuk Baris dan Kolom, guna memungkinkan penempatan tata letak anak dengan spasi tetap. Pengaturan yang disejajarkan juga ditambahkan untuk memungkinkan penempatan tata letak turunan di samping yang lainnya dan disejajarkan dalam Baris/Kolom sesuai dengan Penyelarasan. Metode Arrangement.Vertical#arrange dan Arrangement.Horizontal#arrange sebelumnya tidak digunakan lagi, dan penulisan Pengaturan kustom tidak akan didukung di masa mendatang. (I6733d, b/161985975)
  • Offset telah menjadi class inline (Iaec70)
  • Menghapus callback onFocusChanged dari TextField. Gunakan Modifier.focusObserver sebagai gantinya. (I51089, b/161297615)
  • Modifier.drawBorder tidak digunakan lagi. Gunakan Modifier.border sebagai gantinya. Class data Border telah diganti dengan BorderStroke (I4257d, b/158160576)
  • VerticalScroller dan HorizontalScroller telah dihapus. Sebagai gantinya, gunakan ScrollableColumn/Row. Modifier.drawBackground telah dihapus. Gunakan Modifier.background (I73b0d, b/163019183)
  • Menghapus ditandai sebagai pengubah fillMax* yang tidak digunakan lagi dari LazyItemScope karena akan mempersulit penambahan pengubah tersebut dengan benar untuk item yang bukan turunan langsung dari LazyColumnFor (Ifa78d)
  • menambahkan implementasi LazyColumn/LazyRow sebagai DSL (I93cc6)
  • Batasannya kini menjadi class inline (I88736)
  • Menambahkan kemampuan untuk mengubah ukuran tata letak menjadi bagian dari ruang yang tersedia, menggunakan pengubah fillMaxWidth, fillMaxHeight, dan fillMaxSize. (I945bb, b/161562591)

Perbaikan Bug

  • Menambahkan parameter pengubah ke SelectionContainer (I4aada, b/161487952)
  • Menambahkan lambda mergePolicy ke SemanticsPropertiKey. Ini dapat digunakan untuk menentukan kebijakan kustom untuk penggabungan semantik mergeAllDescendants. Kebijakan defaultnya adalah menggunakan nilai induk jika sudah ada, atau nilai turunan jika tidak ada. (Iaf6c4, b/161979921)
  • PlacementScope.placeAbsolute() diganti namanya 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)
  • Menghapus komponen FilledTextField yang sudah tidak digunakan lagi. Sebagai gantinya, harap gunakan TextField untuk mendapatkan implementasi Filled text field Desain Material. (I5e889)
  • Menambahkan parameter backgroundColor ke LinearProgressIndicator dan menghapus padding internal dari CircularProgressIndicator. Menambahkan ProgressIndicatorConstants.DefaultProgressAnimationSpec baru yang dapat digunakan sebagai AnimationSpec default saat membuat animasi progres antarnilai (If38b5, b/160809914, b/160804677)
  • 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 serupa pada RRect dan konstruktor fungsi RRect yang tidak digunakan lagi (I5d325)
  • Menghapus onChildPositioned dan OnChildPositionedModifier. Sebagai gantinya, developer harus menggunakan onPositioned dan OnPositionedModifier pada tata letak turunan. (I4522e, b/162109766)
  • IntSize kini menjadi class inline (I2bf42)
  • Tekan Lama Area Kosong untuk Mengedit. (Ib1e5b)
  • Menyembunyikan FloatingToolbar Setelah Mengetuk Teks. (If4525)
  • Menyembunyikan FloatingToolbar Saat Memperbarui Pilihan. (I8444c)
  • Batalkan Pilihan Saat Blur. (I781a2)

Versi 0.1.0-dev16

5 Agustus 2020

androidx.compose.foundation:foundation:0.1.0-dev16, androidx.compose.foundation:foundation-layout:0.1.0-dev16, dan androidx.compose.foundation:foundation-text:0.1.0-dev16 dirilis. Versi 0.1.0-dev16 berisi commit berikut.

Perubahan API

  • LazyItemScope telah ditambahkan untuk parameter itemContent dari daftar Lazy. Bagian ini menyediakan pengubah untuk mengisi ukuran maksimum induk yang akan menyelesaikan kasus penggunaan ketika item harus mengisi area pandang dan Modifier.fillMaxSize() biasa tidak akan berfungsi karena item diukur dengan batasan tak terbatas. (Ibd3b2, b/162248854)
  • Memindahkan dialog ke ui (I47fa6)
  • Menambahkan LazyColumnForIndexed/LazyRowForIndexed - versi LazyColumnFor/LazyRowFor yang menyediakan indeks dan item di itemCallback. Elemen ini berguna saat menambahkan item saat ini yang perlu Anda ketahui indeks saat ini. (I65ff3)
  • Nama Modifier.deternimateProgress telah diganti menjadi Modifier.progressSemantics (I9c0b4)
  • LazyColumnItems telah diganti namanya menjadi LazyColumnFor. LazyRowItems telah diganti namanya menjadi LazyRowFor (I84f84)
  • Menambahkan beberapa Tanda/Anotasi untuk alasan praktik terbaik. (I66b20)
  • Paket foundation.shape.corner diratakan menjadi foundation.share (I46491, b/161887429)
  • Menambahkan parameter berat crossaxis untuk LazyRowItems/LazyColumItems. LazyRowItems/LazyColumnItems kini mendukung perilaku konten gabungkan. (Ib39fc)
  • ZoomableState telah diganti namanya menjadi ZoomableController. Dukungan kurva kustom telah ditambahkan untuk smoothScale. Fungsi enabled dan onZoomStarted telah ditambahkan (If8b8f)
  • Nama Material FillingTextField diganti menjadi TextField dan nama TextField dasar diganti menjadi BaseTextField, agar API paling sederhana yang diinginkan mudah ditemukan dan digunakan (Ia6242, b/155482676)
  • AdapterList yang sebelumnya tidak digunakan lagi telah dihapus. Sebagai gantinya, gunakan LazyColumnItems (I12b9b)
  • Nama Modifier.drawBackground telah diganti menjadi Modifier.background (I13677)
  • DSL ConstraintLayout lama dihapus. ConstraintSet2 diganti namanya menjadi ConstraintSet. (If58d1, b/162450908)
  • Menambahkan Modifier.absoluteOffset() dan Modifier.absoluteOffsetPx(). Tidak seperti pengubah offset, pengubah offset absolut tidak akan mencerminkan otomatis dalam konteks kanan-ke-kiri (I3a21)
  • Row dan Column kini berfungsi inline yang secara signifikan mengurangi overhead penggunaannya. (I75c10)

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 API Offset
    4. Memindahkan metode nativeCanvas dari antarmuka Canvas untuk mendukung konsumen membuat instance Canvas mereka sendiri
    5. Membuat class EmptyCanva 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 Gambar yang dapat disusun 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 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
  • Menambahkan MonotonicFrameAnimationClock yang memungkinkan Anda menggunakan MonotonicFrameClock sebagai AnimationClockObservable untuk menutup kesenjangan antara jam berbasis coroutine baru dan API yang masih menggunakan jam berbasis callback lama.

    MonotonicFrameClock yang setara dengan ManualAnimationClock kini menjadi ManualFrameClock. (I111c7, b/161247083)

  • SemanticsNodeInteraction.performPartialGesture dihapus. Sebagai gantinya, gunakan SemanticsNodeInteraction.performGesture. (Id9b62)

  • Mengganti nama SemanticsNodeInteraction.getBoundsInRoot() menjadi SemanticsNodeInteraction.getUnclippedBoundsInRoot() (Icafdf, b/161336532)

  • API untuk dukungan dari kanan ke kiri telah diupdate. Menambahkan LayoutDirectionAmbient yang bisa digunakan untuk membaca dan mengubah arah tata letak. Modifier.rtl dan Modifier.ltr telah dihapus. (I080b3)

  • Modifier.plus tidak digunakan lagi. Sebagai gantinya, gunakan Modifier.then. 'Then' memiliki sinyal pengurutan yang lebih kuat, serta melarang pengetikan Modifier.padding().background() + anotherModifier yang memutus rantai dan lebih sulit dibaca (Iedd58, b/161529964)

  • Menambahkan SemanticsMatcher isFocused() dan isNotFocused(). (I0b760)

  • RemeasurementModifier ditambahkan. Fitur ini memungkinkan pengguna menghapus tata letak secara sinkron. Secara umum, Anda tidak memerlukannya karena pengukuran ulang/penataan ulang tata letak terjadi secara otomatis, tetapi kami menggunakannya di dalam LazyColumnItems selama scroll. (I5f331, b/160791058)

  • isSystemInDarkTheme kini selalu mempertimbangkan setelan tema gelap di seluruh sistem, dan mengabaikan status penghematan daya sebelum Q, mengikuti panduan terbaru. (I0c10c)

  • OnChildPositioned tidak digunakan lagi. Sebagai gantinya, gunakan OnPositioned pada turunan. (I87f95, b/162109766)

  • Mengganti nama AndroidComposeTestRule menjadi createAndroidComposeRule. (I70aaf)

  • Menambahkan tindakan aksesibilitas untuk mendapatkan TextLayoutResult (I9d6e6)

Versi 0.1.0-dev15

22 Juli 2020

androidx.compose.foundation:foundation:0.1.0-dev15, androidx.compose.foundation:foundation-layout:0.1.0-dev15, dan androidx.compose.foundation:foundation-text:0.1.0-dev15 dirilis. Versi 0.1.0-dev15 berisi commit berikut.

Untuk menggunakan versi Compose 0.1.0-dev15, yang diperlukan adalah:

Update Dependensi

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

Perubahan API

  • Serupa dengan parameter baru di ScrollableColumn/ScrollableRow, LazyColumnItems/LazyRowItems kini juga memiliki parameter contentPadding yang memungkinkan penambahan padding untuk konten setelah dipotong yang tidak mungkin dilakukan hanya dengan parameter pengubah. Parameter ini juga memungkinkan penambahan spasi hanya sebelum item pertama/setelah item terakhir. (Ibc24e)
  • Nama callback onFocusChange di kolom teks diganti menjadi onFocusChanged (Ida4a1)
  • VerticalScroller dan HorizontalScroller tidak lagi digunakan. Gunakan ScrollableColumn dan ScrollableRow untuk pengalaman bawaan dengan parameter dan perilaku Column/Row, atau Modifier.verticalScroll dan Modifier.horizontalScroll pada elemen Anda sendiri. Demikian pula, ScrollerPosition tidak digunakan lagi untuk mendukung ScrollState' (I400ce, b/157225838, b/149460415, b/154105299)
  • API Modifier.draggable dan Modifier.scrollable telah dikerjakan ulang. DragDirection telah dihapus untuk mendukung Orientation. Status yang diperlukan untuk dapat di-scroll telah disederhanakan. Nama ScrollableState telah diganti menjadi ScrollableController (Iab63c, b/149460415)
  • Properti semantik satu nilai sekarang menggunakan gaya pemanggilan. Misalnya, 'semantics {hidden = true}' sekarang ditulis sebagai: semantics { hidden() }. (Ic1afd, b/145951226, b/145955412)
  • Ukuran sudut yang digunakan oleh RoundedCornerShape dan CutCornerShape sekarang dapat lebih besar dari 50% (Id2340, b/160400213)
  • Mengubah parameter ContentScale default untuk fungsi yang dapat dikomposisi Image dari Inside (di dalam) menjadi Fit (pas). Tindakan ini dilakukan guna mendapatkan perilaku untuk meningkatkan skala Painter dasar jika ukuran tata letak lebih besar dari ukuran intrinsik painter dengan tetap mempertahankan rasio tinggi lebar. Perilaku ini lebih cocok dengan ekspektasi untuk menyediakan ukuran tetap ke Image tanpa memengaruhi perilaku default jika hanya ukuran intrinsik yang digunakan untuk menghitung ukuran fungsi yang dapat dikomposisi. (I40ae3, b/159838006)
  • Gunakan AnimationSpec, bukan AnimationBuilder di API level atas untuk memperjelas konsep spesifikasi animasi statis -Meningkatkan DSL transisi dengan menghapus persyaratan lambda untuk membuat AnimationSpecs seperti tween, spring. Sebaliknya, API mengambil parameter konstruktor secara langsung. -Meningkatkan kemudahan penggunaan AnimationSpec secara keseluruhan yang membuka konstruktor, bukan mengandalkan builder -Mengubah durasi dan penundaan untuk KeyFrames dan Tween menjadi Int. Tindakan ini menghilangkan tipe transmisi yang tidak perlu dan overloading metode (untuk mendukung Long dan Int). (Ica0b4)
  • Clickable telah dihapus. Gunakan Modifier.clickable (I84bdf)
  • Menambahkan LazyRowItems - Analog scrol horizontal untuk LazyColumnItems (Ibbcf7)
  • Memperkenalkan API animasi stateless tingkat rendah. These APIs (I63bf7)
  • androidx.ui.foundation.TextFieldValue dan androidx.ui.input.EditorValue tidak digunakan lagi. Fungsi yang dapat dikomposisi TextField, FilledTextField, dan CoreTextField yang menggunakan tipe tersebut juga tidak digunakan lagi. Sebagai gantinya, gunakan androidx.ui.input.TextFieldValue instead (I4066d, b/155211005)
  • Mengganti penggunaan IntPx dengan Int. Mengganti IntPxPosition dengan IntOffset. Mengganti IntPxSize dengan IntSize. (Ib7b44)
  • androidx.ui.foundation.shape.RectangleShape dihapus; gunakan androidx.ui.graphics.RectangleShape (I94939, b/154507984)
  • Untuk menggabungkan jumlah class yang digunakan untuk menyatakan informasi pengubahan ukuran, menstandarkan 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 pemosisian, menstandarkan penggunaan class Offset, bukan PxPosition. Tindakan ini memberikan manfaat dari class inline untuk menggunakan 2 nilai float yang panjang untuk dipaketkan untuk menyatakan offset x dan y yang dinyatakan sebagai float. (I3ad98)
  • Menambahkan Modifier.zoomable untuk fungsi pinch-to-zoom (Id5d63)
  • Komponen yang dapat dialihkan tidak digunakan lagi. Sebagai gantinya, gunakan Modifier.toggleable (I35220, b/157642842)
  • MutuallyExclusiveSetItem tidak digunakan lagi. Sebagai gantinya, gunakan Modifier.selectable. (I02b47, b/157642842)
  • TestTag sekarang tidak digunakan lagi. Sebagai gantinya, gunakan Modifier.testTag. (If5110, b/157173105)
  • Menambahkan parameter fontWeight ke Text yang secara tidak sengaja telah ditambahkan sebelumnya (I56937)
  • Mengganti penggunaan class Px di berbagai class compose sebagai bagian dari upaya pemfaktoran ulang besar-besaran agar hanya mengandalkan jenis primitif dan Dp untuk parameter piksel (I19d02)
  • VerticalScroller sekarang menyediakan Kolom dari kotak. HorizontalScroller sekarang menyediakan Baris dari kotak. (Ieca5d, b/157020670)
  • Mengganti penggunaan kelas Px dalam berbagai class compose sebagai bagian dari upaya pemfaktoran ulang yang besar-besaran guna hanya mengandalkan jenis primitive dan Dp untuk parameter piksel (Ieda0b)
  • Modifier.indication telah ditambahkan ke paket dasar. Gunakan API tersebut untuk menampilkan indikator tekan/tarik/lainnya pada elemen khusus yang digunakan untuk berinteraksi (I8425f, b/155287131)
  • VerticalScroller dan HorizontalScroller sekarang mendukung scrol terbalik jika isReversed ditetapkan pada ScrollerPosition (I953bd)
  • Mendukung penambahan composable ke tata letak teks. (I1373c)
  • Menggabungkan implementasi CanvasScope sehingga hanya terdapat DrawScope dan ContentDrawScope Mengganti nama CanvasScope ke DrawScope. Mengupdate DrawScope untuk menerapkan antarmuka Density dan menyediakan subclass LayoutDirection. Menghapus DrawScope di ContentDrawScope Painter dan PainterModifier telah diupdate untuk tidak lagi mempertahankan properti RTL sendiri karena DrawScope menyediakan ini tanpa menyediakannya secara manual (I1798e)
  • Menghapus API DrawBackground API yang tidak digunakan lagi dan digantikan dengan API ekstensi drawBackground di Pengubah. Memfaktorkan ulang implementasi drawBackground cat, kuas, dan warna untuk mengurangi jalur kode serta menghapus persyaratan agar Pengubah dibuat sebagai bagian dari komposisi. (I0343a)
  • Mengupdate API compose dengan level yang lebih tinggi yang mengekspos Canvas untuk mengekspos CanvasScope. Tindakan ini akan menghapus keperluan konsumen untuk mengelola objek Paint-nya. Bagi konsumen yang masih memerlukan akses ke Canvas, mereka dapat menggunakan metode ekstensi drawCanvas yang menyediakan callback untuk mengeluarkan perintah menggambar menggunakan Canvas yang mendasarinya. (I80afd)
  • HorizontalScroller dan VerticalScroller tidak memulihkan posisi scroll-nya menggunakan status instance tersimpan. (Ia0fae, b/155075048)
  • FocusManagerAmbient dihapus. Gunakan FocusModifier.requestFocus untuk mendapatkan fokus. (Ic4826)
  • Tata letak tabel sementara waktu dihapus hingga kami menyediakannya kembali dengan API baru. (Id88a7)
  • Membuat API CanvasScope yang menggabungkan objek Canvas untuk mengekspos permukaan API gambar yang deklaratif dan stateless. Transformasi disertakan dalam cakupan penerimanya sendiri dan informasi pengubahan ukuran juga mencakup batas inset yang sesuai. Ini tidak mengharuskan konsumen untuk mempertahankan stateobject Paint-nya sendiri dalam mengonfigurasi operasi gambar.

    Menambahkan CanvasScopeSample serta mengupdate aplikasi demo guna menyertakan Demo grafis deklaratif (Ifd86d)

  • ColoredRect telah dihapus. Box Pengguna dengan pengubah drawBackground sebagai gantinya (I983c7, b/152753731)

  • Tambahkan penyesuaian warna kursor ke TextField (I6e33f)

  • Sekarang Anda dapat menyembunyikan/menampilkan keyboard software dengan menggunakan SoftwareKeyboardController yang dikirimkan oleh callback onTextInputStarted (I8dc44, b/151860051)

  • Sekarang TextFieldValue yang digunakan dengan TextField dapat mempertahankan aktivitas rekreasi saat digunakan seperti ini: var text by savedInstanceState(saver = TextFieldValue.Saver) { TextFieldValue() } (I5c3ce, b/155075724)

  • Menambahkan parameter yang umum digunakan ke Text(). Jika saat ini Anda membuat gaya teks lokal untuk meneruskan sejumlah kecil parameter ini, seperti Text(style = TextStyle(textAlign = TextAlign.Center)), Anda sekarang dapat memberikan parameter secara langsung: Text(textAlign = TextAlign.Center) (I82768)

  • Mengganti parameter focusIdentifier CoreTextField/TextField dengan FocusNode untuk diintegrasikan dengan subsistem fokus. (I7ea48)

  • Mengupdate TextField agar menempati semua ruang yang tersedia yang diberikan dalam dimensi horizontal (Ib08df, b/154638552)

  • Menambahkan InteractionState dan Interaction sehingga mempermudah pembuatan komponen yang bereaksi terhadap perubahan status UI seperti tekan dan tarik (Icfe25, b/152525426)

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

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

  • Mengupdate TextField API agar menggabungkan callback onFocus dan onBlur ke dalam callback onFocusChange(Boolean) tunggal dengan parameter (I66cd3)

  • Mengganti nama ScaleFit menjadi ContentScale Memindahkan ContentScale dari modul ui-graphics ke ui-core agar berada di modul yang sama dengan Alignment API. Mengganti nama FillMaxDimension menjadi Crop Mengganti nama FillMinDimension menjadi Fit Mengganti nama Fit menjadi Inside agar lebih cocok dengan kesetaraan ImageView.ScaleType Menambahkan dokumentasi yang menunjukkan bahwa kombinasi Crop dan Alignment.Center mencapai hasil yang sama seperti ImageView.ScaleType.CENTER_CROP dan Fit yang digunakan dengan Alignment.Center mencapai hasil yang sama seperti ImageView.ScaleType.FIT_CENTER Inside yang digunakan dengan Alignment.Center mencapai hasil yang sama seperti ImageView.ScaleType.CENTER_INSIDE (I45f09, b/152842521)

  • Menghapus ProvideContentColor, sebagai gantinya cukup gunakan ContentColorAmbient langsung dengan Providers (Iee942)

  • Menambahkan parameter warna ke teks, memungkinkan penggantian warna gaya teks tanpa perlu menggabungkan dengan gaya yang disediakan dalam tema secara manual. (I41a66)

  • 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)
  • ColoredRect tidak digunakan lagi. Sebagai gantinya, gunakan Box(Modifier.preferredSize(width, height).drawBackground(color)). (I499fa, b/152753731)

  • Sistem bertema bentuk telah diperbarui berdasarkan spesifikasi desain Material. Sekarang Anda dapat menyediakan bentuk kecil, sedang, dan besar untuk digunakan oleh sebagian besar komponen (Ifb4d1)

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

  • Draggable telah dipindahkan ke pengubah (Id9b16, b/151959544)

  • Telah memindahkan Text ke paket androidx.ui.foundation dari androidx.ui.core. (I87ce5)

  • Menambahkan param enabled ke Checkbox, Switch, dan Toggleable I41c16)

  • Ripple kini menjadi Modifier. Meskipun Clickable belum dikonversi, penggunaan yang direkomendasikan adalah Clickable(onClick = { ... }, modifier = ripple()) (Ie5200, b/151331852, b/150060763)

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

    Mengganti nama API Image(Painter) menjadi PaintBox(Painter) Created Vector yang dapat disusun yang berperilaku seperti Image dapat disusun kecuali dengan VectorAsset bukan ImageAsset (I9af9a, b/149030271)

  • Membuat fungsi yang dapat dikomposisi Image untuk menangani pengubahan ukuran/tata letak selain menggambar ImageAsset tertentu ke layar. Gambar yang dapat disusun ini juga mendukung semua instance Painter arbitrer yang berkaitan dengan ukuran intrinsiknya, serta mendukung ukuran yang telah ditetapkan atau ukuran minimumnya (Ibcc8f)

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

  • Mengganti nama Image menjadi ImageAsset agar dapat membedakan dengan jelas data Image dan Image yang dapat disusun mendatang yang digunakan untuk menyusun tata letak dan konten gambar.

    Membuat metode ekstensi di android.graphics.Bitmap, Bitmap.asImageAsset(), untuk membuat instance ImageAsset yang berguna untuk menggabungkan pengembangan aplikasi Android tradisional dengan framework penulisan. (Id5bbd)

  • DrawImage yang dapat disusun telah dihapus. Gunakan ImagePainter untuk menggambar gambar pada tata letak yang ada, atau SimpleImage untuk memperkenalkan Image yang memerlukan ruang (I595e1, b/149827027)

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

  • Menambahkan Icon, IconButton, dan IconToggleButton, serta menghapus AppBarIcon. Anda dapat langsung mengganti penggunaan AppBarIcon yang ada dengan IconButton, dan target sentuhnya akan menjadi benar. Lihat contoh untuk mengetahui informasi penggunaan, dan lihat Ikon untuk Ikon Material yang telah tersedia yang dapat Anda gunakan secara langsung dengan komponen ini. (I96849)

  • DrawShape yang dapat dikomposisi telah dihapus. Sebagai gantinya, gunakan pengubah DrawBackground. (I7ceb2)

  • Menambahkan AdapterList, komponen daftar scroll yang hanya menyusun dan mengatur tata letak item yang terlihat. Saat ini, masalah yang diketahui mencakup vertikal saja dan tidak sepenuhnya menangani semua kasus perubahan pada turunannya. (Ib351b)

  • Komponen yang dapat di-scroll telah ditambahkan sehingga memungkinkan pembuatan Scroller/List kustom (I5fd37)

  • Mengganti nama latar belakang menjadi DrawBackground dan menjadikannya agar dapat diingat secara default (Ia0bd3)

  • Menambahkan padding, batas, bentuk, dan parameter background ke Box (I05027, b/148147281)

  • Komponen Canvas ditambahkan. Komponen ini dapat disusun dengan beberapa ukuran (disediakan oleh pengguna) dan Anda dapat menggambar menggunakan CanvasScope (I0d622)

  • mengganti nama pengubah Border menjadi DrawBorder (I8ffcc)

  • Komponen Box telah ditambahkan untuk menggabungkan fungsi umum tata letak dan menggambar. (I6e2a7)

  • Sekarang, scroller menampilkan perilaku gerakan lempar pada Android native. (I922af, b/147493715)

  • DrawBorder digantikan dengan Border Modifier (Id335a)

  • Nama Modifier.tag diganti menjadi Modifiers.layoutId untuk menghindari kebingungan dengan Modifier.testTag. (I995f0)

  • Parameter persen saat membuat panduan ConstraintLayout telah diganti namanya menjadi fraksi. (Ida2db)

  • Menambahkan dukungan untuk margin penghalang ConstraintLayout. (I47ffe)

  • Memperbaiki dukungan RTL di ConstraintLayout. Menambahkan API unaware RTL. (I3b1c7)

  • DSL baru untuk ConstraintLayout telah ditambahkan. Lihat contoh untuk detail selengkapnya. (Icaa9a)

  • Menambahkan anotasi @ExperimentalLayout annotation. ConstraintLayout, FlowRow, dan FlowColumn sekarang diberi tag untuk menandai bahwa API mereka akan berubah. (I412a8)

  • Modifier.padding(InnerPadding) telah ditambahkan (I94985, b/157133803)

  • Menghapus RowAlign, ColumnAlign in Row, dan Column yang tidak digunakan lagi. (If60d4, b/155858731)

  • Menghapus LayoutTag() yang tidak digunakan lagi, sebagai gantinya gunakan Modifier.tag(). Menghapus Modifier.matchParent() yang tidak digunakan lagi, sebagai gantinya gunakan Modifier.matchParentSize(). (If8044)

  • Menambahkan pengubah tata letak offsetPx yang dapat digunakan untuk menentukan offset (dinamis) dalam px. (I5af57)

  • AlignmentLineOffset yang dapat disusun sudah tidak digunakan lagi, sebagai gantinya harap gunakan pengubah relativePaddingFrom(). CenterAlignmentLine yang dapat disusun telah dihapus. (I60107)

  • Menambahkan pengubah tata letak defaultMinSizeConstraints yang menentukan batasan ukuran ke tata letak gabungan saja saat batasan tersebut belum ditentukan (0 untuk batasan minimal dan tidak terbatas untuk batasan maksimal). (I311ea, b/150460257)

  • Container telah dihapus. Sebagai gantinya gunakan Box (Ibbc2b, b/150407926)

  • Menghapus pengubah LayoutWidth/Height/Size yang tidak digunakan lagi. (Ib0bc1)

  • Menambahkan parameter value default untuk pengubah offset. (I37f06)

  • Menambahkan pengubah padding simetris. (I39840)

  • Pengubah LayoutAspectRasio yang tidak digunakan lagi telah dihapus. (I65a74)

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

  • Memperbaiki bug pada lebar dan tinggi pengubah yang menyebabkan layout gabungan diukur tanpa batasan sumbu yang berlawanan. (I210b8, b/154797971)

  • Menambahkan parameter verticalGravity dan horizontalGravity ke Row dan Column. (I7dc5a)

  • Memperbarui wrapContentWidth dan wrapContentHeight untuk mengharapkan Alignment vertikal atau horizontal, bukan sembarang Alignment. Pengubah gravitasi diperbarui untuk menerima Alignment vertikal atau horizontal. Row, Column, dan Stack telah diperbarui untuk mendukung Alignment berkelanjutan khusus. (Ib0728)

  • Membuat Alignment instantiable dengan nilai arbitrer. Menambahkan Alignment 1D. (Ia0c05)

  • Mengganti nama EdgeInsets menjadi InnerPadding. Mengganti parameter innerPadding dari Material Buttons menjadi padding. (I66165)

  • Sekarang alignToSiblings menerima Measured, bukan Placeable. (I5788d)

  • Menambahkan pengubah untuk mengubah ukuran ke pengukuran intrinsik dan menghentikan penggunaan komponen yang digunakan atas tujuan ini. (I8295d)

  • Menambahkan dukungan untuk menyesuaikan dimensi turunan dari ConstraintLayout (Idb1a5)

  • Menghapus Wrap dan Center yang dapat disusun dan tidak digunakan lagi. (I29e23)

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

  • Anggota RowScope dan ColumnScope kini dapat diakses dari luar Baris dan Kolom. (I3a641)

  • Container sudah tidak digunakan lagi. Sebagai gantinya, gunakan Box. (I675ce, b/151407926)

  • Menambahkan pengubah LayoutOffset untuk mengimbangi posisi tata letak (I0b8a3)

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

  • LayoutAlign telah diperbarui agar tidak mengisi ruang yang tersedia (I2b14f)

  • AspectRatio yang dapat disusun telah dihapus dan diganti dengan pengubah. Menghapus FlexColumn yang tidak digunakan lagi, FlexRow yang dapat disusun, dan pengubah Spacing (Iec8a7)

  • Menghapus pengubah LayoutInflexible untuk Row dan Column (I0d820)

  • Menerapkan Drag Selection Handles untuk mengubah pilihan TextField. (I27032)

  • Mengimplementasikan LongPressAndDrag untuk TextField Selection. (I17919)

Perbaikan Bug

  • FocusModifier tidak digunakan lagi dan digantikan oleh Modifier.focus, Modifier.focusRequester, Modifier.focusObserver. FocusState dan FocusDetailedState tidak digunakan lagi dan digantikan dengan FocusState2 (I46919, b/160822875, b/160922136)
  • Nama runOnIdleCompose diganti 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)
  • Menghapus Modifier.ripple yang sebelumnya tidak digunakan lagi. Clickable kini menggunakan ripple sebagai indikasi default (jika Anda memiliki MaterialTheme {} yang disetel di aplikasi Anda) sehingga pada umumnya, Anda cukup menggunakan clickable saja dan mendapatkan indikasi ripple secara gratis. Jika Anda perlu menyesuaikan warna/ukuran/parameter terbatas untuk ripple, Anda dapat membuat RippleIndication secara manual dan meneruskannya ke clickable sebagai parameter indikasi. (I663b2, b/155375067)
  • Menghapus API pengujian ukuran yang tidak digunakan lagi. (Iba0a0)
  • Membuat API eksperimental LayoutNode (I4f2e9)
  • Versi 1 dari penguncian orientasi scroll diterapkan di seluruh Compose. (I1ce7a, b/150289741)
  • Pop-ups, Dialogs, dan Menus sekarang mewarisi MaterialTheme kontekstual (Ia3665, b/156527485)
  • Menghapus parameter arah tata letak dari blok ukuran fungsi Layout(). Namun, arah tata letak tersedia di dalam callback melalui objek cakupan pengukuran (Ic7d9d)
  • Menambahkan AbsoluteArrangement memungkinkan penyusunan turunan di dalam Row tanpa pencerminan otomatis di RTL (I3a1df)
  • Anotasi @Untracked sudah tidak digunakan lagi. Ganti dengan @ComposableContract(tracked=false) (Id211e)
  • Sebelum perubahan ini, plugin compiler tulis akan melakukan intersepsi panggilan terhadap konstruktor di dalam fungsi @Composable jika terdapat (I5205a, b/158123804)
  • Menambahkan composable viewModel() yang memungkinkan untuk membuat atau mendapatkan ViewModel yang sudah dibuat dan serupa dengan cara kerjanya di Activity atau Fragment (I5fdd1)
  • Memfaktorkan ulang class Radius untuk menjadi class inline. Menghapus metode pembuatan pengiring yang mendukung konstruktor fungsi dengan parameter default agar memiliki radius sepanjang sumbu y yang cocok dengan parameter radius sumbu x wajib.

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

  • Mengganti penggunaan class Px di berbagai class compose sebagai bagian dari upaya pemfaktoran ulang besar-besaran agar hanya mengandalkan jenis primitif dan Dp untuk parameter piksel. Menghapus class Px secara keseluruhan (I3ff33)

  • Mengganti penggunaan class Px dalam berbagai class compose sebagai bagian dari upaya pemfaktoran ulang yang besar-besaran agar hanya mengandalkan jenis primitive 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 primitive dan Dp untuk parameter piksel (I97a5a)

  • Kursor TextField memiliki animasi berkedip (Id10a7)

  • Gestur parsial tidak lagi memerlukan penerusan GestureToken (Id7ae5)

  • Mengganti penggunaan class Px di berbagai class compose sebagai bagian dari upaya pemfaktoran ulang besar-besaran agar hanya mengandalkan jenis primitive dan Dp untuk parameter piksel (I57bff)

  • Modifier.semantics sudah tidak digunakan lagi untuk memungkinkan penggunaan komponen tingkat tinggi. (I4cfdc)

  • Nama AnnotatedString.Builder.addAnnotationString menjadi addStringAnnotation. (I5059e)

  • Memperbarui Alignment API dan menambahkan dukungan untuk perataan mutlak (yang tidak otomatis mencerminkan konteks Rtl) (I38cd3)

  • Turunan Layout dan LayoutModifier dapat diukur dengan arah layout yang berbeda. (Ibd731)

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

  • Memperbaiki error di AdapterList saat menghapus item (Ic64b0, b/153195921)

  • Kami mengubah cara kami mengukur tata letak pertama yang Anda masukkan ke dalam blok activity.setContent { }. Sebelumnya, tata letak dipaksa mengisi seluruh layar aktivitas, dan sekarang berperilaku seolah-olah Anda memasukkan tata letak ke dalam Stack: tata letak bisa lebih kecil dari layar dan akan diposisikan di sebelah kiri atas layar. Jika Anda menginginkan perilaku lama, Anda dapat menerapkan Modifier.fillMaxSize() untuk tata letak Anda. (Ie88a7, b/153453714)

  • Nama modul ui-text-compose diganti menjadi ui-text. sekarang ui-text berisi fungsi yang dapat dikomposisi CoreText dan CoreTextField (Ib7d47)

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

  • Memindahkan ui-framework/CoreText, CoreTextField yang dapat dikomposisi di bawah ui-text-compose. Anda mungkin ingin menyertakan ui-text-compose dalam project Anda. (I32042)

  • Sekarang runOnIdleCompose dan runOnUiThread menjadi fungsi global, bukan metode di ComposeTestRule. (Icbe8f)

  • Operator delegasi properti [Mutable]State dipindahkan ke ekstensi untuk mendukung pengoptimalan delegasi properti Kotlin 1.4. Pemanggil harus menambahkan impor untuk terus menggunakan by state { ... } atau by mutableStateOf(...). (I5312c)

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

  • Nama LayoutResult diganti menjadi MeasureResult. (Id8c68)

  • Fungsi yang dapat dikomposisi Center tidak digunakan lagi. Center ini harus diganti baik dengan pengubah LayoutSize.Fill + LayoutAlign.Center maupun dengan salah satu komposer Box atau Stack dengan pengubah yang sesuai diterapkan (Idf5e0)

  • Mengganti nama LayoutFlexible menjadi LayoutWeight. Mengganti nama parameter tight menjadi fill. (If4738)

  • DrawVector telah diubah dari fungsi yang dapat dikomposisi reguler menjadi menampilkan drawVector() Modifier yang akan menggambar vektor sebagai latar belakang dari suatu tata letak. (I7b8e0)

  • Mengganti Clip fungsi yang dapat dikomposisi dengan drawClip() pengubah. DrawClipToBounds adalah pengubah yang dapat digunakan dengan mudah saat Anda hanya perlu menyesuaikan batas layer yang memiliki bentuk persegi panjang. (If28eb)

  • Mengganti fungsi yang dapat dikomposisi DrawShadow dengan pengubah drawShadow(). Sekarang bayangan digambar sebagai bagian dari LayerModifier. (I0317a)

  • androidx.compose.ViewComposer telah dipindahkan ke androidx.ui.node.UiComposer androidx.compose.Emittable telah dihapus. Berlebihan dengan ComponentNode. androidx.compose.ViewAdapters telah dihapus. Kasus penggunaannya sudah tidak didukung. Compose.composeInto sudah tidak digunakan lagi. Sebagai gantinya, gunakan setContent atau setViewContent. Compose.disposeComposition sudah tidak digunakan lagi. Sebagai gantinya, gunakan metode dispose pada Composition yang ditampilkan oleh setContent. androidx.compose.Compose.subcomposeInto telah dipindahkan ke androidx.ui.core.subcomposeInto Nama ComponentNode#emitInsertAt telah diganti menjadi ComponentNode#insertAt Nama ComponentNode#emitRemoveAt telah diganti menjadi ComponentNode#removeAt Nama ComponentNode#emitMode telah diganti menjadi ComponentNode#move (Idef00)

  • Wrap yang dapat dikomposisi sudah tidak digunakan lagi. Wrap tersebut dapat diganti dengan pengubah LayoutAlign atau dengan Stack yang dapat disusun (Ib237f)

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

  • Mengganti nama Painter.toModifier menjadi Painter.asModifier karena Modifier yang baru dibuat memiliki referensi ke Painter asli yang dapat dibagikan ke beberapa instance Modifier (I7195b)

  • Tidak digunakan lagi: Draw yang dapat disusun adalah sumber bug umum seperti (I78392, b/149827027)

  • Mendukung arah kanan-ke-kiri dalam pengubah LayoutPadding (I9e8da)

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

  • Menghapus class ValueHolder. Menyusun ulang class AnimatedValue, AnimatedFloat untuk membuat kolom nilai animasi menjadi abstrak sehingga subclass dapat menonton pembaruan nilai.

    • Menambahkan class model untuk AnimatedValue, AnimatedFloat, dll.
    • Menambahkan set baru @Composable API ringan untuk menganimasikan di antara nilai.
    • (I79530)
  • Perubahan yang dapat menyebabkan gangguan pada API ambien. Lihat log dan dokumentasi Ambient<T> untuk detail selengkapnya (I4c7ee, b/143769776)

  • Posisi Int baris perataan yang ditampilkan dari Placeable#get(AlignmentLine) sekarang tidak null. Jika baris perataan kueri tidak ada, AlignmentLine.Unspecified akan ditampilkan. (I896c5, b/158134875)

  • Memperbaiki bug ConstraintLayout yang menyebabkan error pada rekomposisi. (Ibee5a, b/158164341)

  • API lambda akhir WithConstraints telah diubah. Sekarang, sebagai ganti dua parameter, memiliki cakupan penerima yang merupakan tambahan untuk batasan dan layoutDirection menyediakan properti minWidth, maxWidth, minHeight, dan maxHeight di Dp (I91b9a, b/149979702)

  • Nama LayoutModifier2 diganti menjadi LayoutModifier. (Id29f3)

  • Fungsi pengukuran intrinsik di Layout dan LayoutModifier2 kini memiliki penerima IntrinsicMeasureScope yang memberikan API kueri instrinsik dengan arah tata letak yang disebarkan secara implisit. (Id9945)

  • LayoutDirectionAmbient tidak digunakan lagi. Untuk membaca arah tata letak yang ditentukan oleh lokal, gunakan localeLayoutDirection di ConfigurationAmbient (I851b1)

  • Menambahkan positionInParent dan boundsInParent untuk LayoutCoordinates. (Icacdd, b/152735784)

  • Fungsi yang dapat dikomposisi ParentData tidak digunakan lagi. Sebaiknya buat pengubah yang mengimplementasikan antarmuka ParentDataModifier, atau gunakan pengubah LayoutTag jika Anda hanya perlu memberi tag turunan tata letak agar dapat mengenalinya di dalam blok pengukuran. (I51368, b/150953183)

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

  • Melarang padding negatif di LayoutPadding. Sebagai gantinya, gunakan LayoutOffset untuk offset posisi negatif. (Ifb5b1)

  • WithConstraints mendapatkan parameter LayoutDirection (I6d6f7)

  • Memperbarui flag ComposeFlags.COMPOSER_PARAM menjadi true, yang akan mengubah strategi pembuatan kode untuk plugin compose. Pada tingkat tinggi, hal ini menyebabkan fungsi @Composable dibuat dengan parameter sintetik tambahan, yang akan diteruskan ke panggilan @Composable berikutnya agar runtime dapat mengelola eksekusi dengan benar. Ini adalah perubahan yang dapat menyebabkan gangguan biner yang signifikan, tetapi semestinya dapat menjaga kompatibilitas tingkat sumber pada semua penggunaan compose yang disetujui. (I7971c)

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

  • Menambahkan TextDirection.Content (I48f36)

  • Sesuaikan Toolbar Menu untuk menampilkan fungsi menyalin, memotong, menempel dengan benar. (Id3955)

  • Tambahkan FloatingToolbar untuk TextField Selection. (Ie8b07)

  • Nama TextDirectionAlgorithm diganti menjadi TextDirection (I75ce8)

  • Nama TextDirection diganti menjadi ResolvedTextDirection (I3ff38)

  • Menambahkan HapticFeedback ke TextField Selection. (I58050)

  • Menambahkan metode Copy, Cut, dan Paste ke TextField Selection. (Idb70b)

  • TestTag dan Semantics telah dihapus. Sebagai gantinya, gunakan Modifier.testTag dan Modifier.semantics (I15ff0, b/158841414)

  • Mengubah nama paket untuk Locale dan LocaleList dari androidx.ui.text menjadi androidx.ui.intl (I8132c)

  • Perubahan API: Nama AnnotatedString(builder: Builder) diganti menjadi annotatedString(builder: Builder). (Ia6377)

  • Perubahan API: Nama AnnotatedString.Item diganti menjadi AnnotatedString.Range. (I2d44d)

  • Menambahkan Toolbar untuk operasi terkait teks. (I49d53)

  • Sekarang tersedia LifecycleOwnerAmbient yang baru. Sekarang, Aktivity yang Anda gunakan dengan UI Compose harus memperluas androidx.activity.ComponentActivity (atau AppCompatActivity). setContent di android.app.Activity sekarang tidak digunakan lagi (Idb25a, b/153141084)

  • Nama paket ui-android-text (androidx.text) diganti dengan androidx.ui.text.platform agar sesuai dengan kebijakan androidx. (I42711)