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

Compose UI

Komponen dasar compose UI yang diperlukan untuk berinteraksi dengan perangkat, termasuk tata letak, gambar, dan input.
Update Terbaru Rilis Stabil Saat Ini Kandidat Rilis Berikutnya Rilis Beta Rilis Alfa
11 November 2020 - - - 1.0.0-alpha07

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 memiliki 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 Jetpack Compose UI dengan Komponen Desain Material siap pakai. Ini adalah titik masuk pada tingkat yang lebih tinggi untuk Compose, yang dirancang untuk menyediakan komponen yang cocok dengan yang dijelaskan di www.material.io.
compose.runtimeElemen penyusun yang penting untuk model pemrograman dan pengelolaan status Compose, serta runtime inti untuk ditarget Compose Compiler Plugin.
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.ui:ui:1.0.0-alpha03"
}

android {
    buildFeatures {
        compose true
    }

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

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 punya masukan untuk meningkatkan kualitas library ini. Harap periksa masalah yang sudah diketahui dalam library ini sebelum membuat laporan baru. Anda dapat memberikan suara pada masalah yang ada dengan mengklik tombol bintang.

Melaporkan masalah baru

Lihat dokumentasi Issue Tracker untuk informasi selengkapnya.

Versi 1.0.0

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 berikut.

Fitur Baru

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 Penyelarasan 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 berikut.

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 berikut.

Perubahan API

  • Menambahkan DSL untuk menentukan informasi pemeriksa (Ic9a22)
  • Pindahkan 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 berikut 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 batas
    • 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 berikut 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 berikut.

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 berikut 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/160206799)

  • 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 trimming jalur dalam grafik vektor (Ie16c9, b/160188351)
  • 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 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 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/1500482676)
  • Nama Modifier.drawBackground telah diganti menjadi Modifier.background (I13677)

Versi 0.1.0-dev15

22 Juli 2020

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

Update Dependensi

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

Perubahan API

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

    • Offset
    • Size
    • Radius
    • Motion
    • TransformOrigin

    • Metode objek pendamping Size.copy tidak digunakan lagi untuk mendukung metode penyalinan instance (Ife290, b/159905651)

  • Pop-ups, Dialogs, dan Menus sekarang mewarisi MaterialTheme kontekstual (Ia3665, b/156527485)

  • Nama TextDirection diganti menjadi ResolvedTextDirection (I3ff38)

  • Menghapus parameter arah tata letak dari blok ukuran fungsi Layout(). Namun, arah tata letak tersedia di dalam callback melalui objek cakupan pengukuran (Ic7d9d)

  • SelectionHandles difaktorkan ulang untuk digunakan kembali. (I420e0)

  • Clickable telah dihapus. Gunakan Modifier.clickable (I84bdf)

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

  • Sebelum perubahan ini, plugin compiler tulis akan melakukan intersepsi panggilan terhadap konstruktor di dalam fungsi @Composable jika terdapat (I5205a, b/158123804)

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

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

  • Parameter pengubah telah ditambahkan pada AndroidView yang dapat dikomposisi. (I48a88, b/158746303)

  • Semantics() tidak digunakan lagi. Gunakan Modifier.semantics() sebagai gantinya. (I72407, b/158841414)

  • Tambahkan fungsi yang dapat dikomposisi viewModel() yang memungkinkan untuk membuat atau mendapatkan ViewModel yang sudah dibuat dan serupa dengan cara kerjanya di Activity atau Fragment (I5fdd1)

  • Mengganti penggunaan IntPx dengan Int. Mengganti IntPxPosition dengan IntOffset. Mengganti IntPxSize dengan IntSize. (Ib7b44)

  • Untuk menggabungkan jumlah class yang digunakan untuk menyatakan informasi pengubahan ukuran, standarkan penggunaan class Size, bukan PxSize. Tindakan ini memberikan manfaat dari class inline untuk menggunakan 2 nilai float yang panjang untuk dipaketkan untuk menyatakan lebar dan tinggi yang dinyatakan sebagai float. (Ic0191)

  • Untuk menggabungkan jumlah class yang digunakan untuk menyatakan informasi positioning, standarkan penggunaan class Offset, bukan PxPosition. Tindakan ini memberikan manfaat dari class inline untuk menggunakan 2 nilai float yang panjang untuk dipaketkan untuk menyatakan offset x dan y yang dinyatakan sebagai float. (I3ad98)

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

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

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

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

  • TestTag sekarang tidak digunakan lagi. Sebagai gantinya, gunakan Modifier.testTag. (If5110, b/157173105)

  • Penerapan ParentDataModifier#modifyParentData default tanpa pengoperasian telah dihapus - hal ini sama dengan tidak menerapkan antarmuka sejak awal. (I0deaa)

  • ScaleFit yang sebelumnya tidak digunakan telah dihapus. Gunakan ContentScale sebagai gantinya. (Ifbc5b)

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

  • Menambahkan komponen DropdownMenu di ui-material, sebagai implementasi menu Desain Material. (I9bb3d)

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

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

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

  • Menggabungkan implementasi CanvasScope sehingga hanya terdapat DrawScope dan ContentDrawScope Mengganti nama CanvasScope ke DrawScope. Mengupdate DrawScope untuk menerapkan antarmuka Density dan menyediakan subclass LayoutDirection. Menghapus DrawScope di ContentDrawScope Painter dan PainterModifier telah diupdate untuk tidak lagi mempertahankan properti RTL sendiri karena DrawScope menyediakan ini tanpa menyediakannya secara manual (I1798e)

  • DoubleTapGestureFilter sekarang akan membedakan SingleTapGestureFilter di seluruh hierarki. (If92b1).

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

  • API pengubah DrawLayer telah diubah: nama outlineShape diganti ke shape dan memiliki nilai default RectangleShape, serta kini tidak dapat dinolkan; nama clipToOutline diganti menjadi clip; clipToBounds dihapus karena sama dengan clip == true dengan RectangleShape (I7ef11, b/155075735)

  • Mengupdate API compose dengan level yang lebih tinggi yang mengekspos Canvas untuk mengekspos CanvasScope. Tindakan ini akan menghapus keperluan konsumen untuk mengelola objek Paint-nya. Bagi konsumen yang masih memerlukan akses ke Canvas, mereka dapat menggunakan metode ekstensi drawCanvas yang menyediakan callback untuk mengeluarkan perintah menggambar menggunakan Canvas yang mendasarinya. (I80afd)

  • API lambda akhir WithConstraints telah diubah. Sekarang, sebagai ganti dua parameter, API ini memiliki cakupan penerima yang, sebagai 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 DrawVector yang dapat dikomposisi 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. 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)

  • 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 pendamping 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 yang dapat dikomposisi 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)