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
24 Maret 2021 - - 1.0.0-beta03 -

Struktur

Compose adalah kombinasi 6 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.

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-beta04"
}

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerVersion "1.4.32"
        kotlinCompilerExtensionVersion "1.0.0-beta04"
    }
}

tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach {
    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Untuk informasi dependensi selengkapnya, lihat Menambahkan dependensi build.

Masukan

Masukan Anda membantu meningkatkan kualitas Jetpack. Beri tahu kami jika Anda menemukan masalah baru atau 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.

Laporkan masalah baru

Lihat dokumentasi Issue Tracker untuk informasi selengkapnya.

Versi 1.0.0

Versi 1.0.0-beta03

24 Maret 2021

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

Perubahan API

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

Versi 1.0.0-beta02

10 Maret 2021

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

Perubahan API

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

Perbaikan Bug

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

Versi 1.0.0-beta01

24 Februari 2021

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

Ini adalah rilis pertama Compose 1.0.0 Beta.

Perubahan API

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

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

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

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

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

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

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

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

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

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

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

  • Penyedia telah diganti namanya menjadi CompositionLocalProvider

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

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

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

  • SnapshotStateObserver tidak lagi bersifat Eksperimental (Id2e6a)

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

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

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

  • Menghapus pernyataan dp (I798d2)

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

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

  • Menghapus runBlockingWithManualClock (I15cdc, b/180664814)

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

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

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

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

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

  • Membuat perubahan Material API berikut:

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

Perbaikan Bug

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

Versi 1.0.0-alpha12

10 Februari 2021

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

Perubahan API

  • Dukungan untuk ViewGroups telah dihapus dari UiApplier. emitView yang dapat dikomposisi, tetapi tidak digunakan lagi, telah dihapus. (Ifb214)
  • Modifier.pointerInput sekarang mengharuskan kunci remember untuk menunjukkan kapan coroutine deteksi input pointer harus dimulai ulang untuk dependensi baru. (I849cd)
  • CompositionReference berganti nama menjadi CompositionContext (I53fcb)
  • Bounds telah diganti namanya menjadi DpRect (I4b32a)
  • Pembaruan pengujian: hasText() akan memeriksa teks input dan label/petunjuk/placeholder di kolom teks (Iab803)
  • viewModel() dapat disusun dan LocalViewModelStoreOwner dipindahkan ke androidx.lifecycle.viewmodel.compose. Anda sekarang perlu menambahkan dependensi androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 terpisah untuk menggunakannya. (I7a374)
  • Izinkan tindakan nullable di AccessibilityAction, ubah label tindakan di AccessibilityAction, dan CustomAccessibilityAction dari CharSequence ke String (I0dc82)
  • Untuk lebih mencocokkan konvensi penamaan dengan ImageBitmap dan ImageVector, ImagePainter diganti namanya menjadi BitmapPainter ke VectorPainter paralel. (Iba381, b/174565889)
  • API pengujian substring yang lebih baik dengan substring sekarang sebagai argumen (Icbe78)
  • Menambahkan Modifier.focusOrder() yang menerima FokusRequester tanpa menentukan urutan fokus khusus, lambda. Hal ini berguna jika kita hanya perlu menentukan referensi tetapi bukan urutan fokus khusus untuk (I4f52a, b/179180978) yang dapat disusun
  • ComponentActivity.setContent telah dipindahkan ke androidx.activity.compose.setContent di dalam modul androidx.activity:activity-compose. (Icf416)
  • Metode penataan dan copy() telah dihapus dari beberapa class yang jarang digunakan. (I26702, b/178659281)
  • Memindahkan Pop-up ke platform tertentu. AndroidPopupProperties telah diganti namanya menjadi PopupProperties, dan isFocusable telah dipindahkan ke parameter focusable di PopupProperties (Ieeea5)
  • Memindahkan Dialog ke platform tertentu. Mengganti nama AndroidDialogProperties menjadi DialogProperties. (I4ef69, b/179138130)
  • Membuat LayoutNode internal (I8a7b1, b/175103944)
  • Constraints.enforce telah diganti dengan Constraints.constrain. (I8b8ea)
  • loadFontResource tidak digunakan lagi. Sebagai gantinya, gunakan fontResource. imageResource, loadImageResource, vectorResource, dan loadVectorResource tidak digunakan lagi. Sebagai gantinya, gunakan painterResource. (I6b809)
  • Untuk alasan performa, semantik ScrollAxisRange sekarang mengambil lambda yang menampilkan Float, bukan nilai Float langsung. (If4a35, b/178657186)
  • Menambahkan semantik EditableText untuk menandai teks input yang dapat diedit pada kolom teks untuk aksesibilitas dan metode pengujian yang sesuai guna memeriksa semantik (I8e07a)
  • Membuat OwnerLayer/OwnerScope/OwnerSnapshotObserver internal (I4ffaf, b/175103944)
  • toIntPx() diganti namanya menjadi roundToPx(). (I9b7e4, b/173502290)
  • IntBounds diganti namanya menjadi IntRect dan API-nya telah disempurnakan. (I1f6ff)
  • API cuplikan diupdate agar lebih konsisten dengan pedoman API serta menyembunyikan class implementasi internal dari API publik. (Id9e32)
  • Menambahkan perluasan dan menciutkan tindakan semantik. Menambahkan perluasan dan halfExpand di ModalBottomSheetState (Ib5064)
  • Modifier.dragGestureFilter sudah tidak digunakan lagi. Sebagai gantinya, gunakan Modifier.pointerInput { detectDragGestures (...)}. Atau, gunakan Modifier.draggable untuk menarik satu sumbu (I0ba93, b/175294473)
  • Mengganti nama Ambients agar cocok dengan penggantian nama Ambient -> CompositionLocal. Ambients sebelumnya bernama AmbientFoo, dan sekarang CompositionLocals diberi nama LocalFoo. (I2d55d)
  • BaseTextField yang sudah tidak digunakan lagi sekarang dihapus. BasicTextField digunakan sebagai gantinya. (I71368)
  • Pilihan telah dipindahkan ke fondasi. (I7892b)
  • Sama seperti saat kami menghapus state { 0 } yang dapat dikomposisi dan kini mempromosikan penggunaan seperti remember { mutableStateOf(0) }, kami juga akan menghapus savedInstanceState { 0 } yang dapat dikomposisi. Sebagai gantinya, Anda harus menggunakan rememberSaveable { mutableStateOf(0) } dan tindakan ini akan disimpan dan otomatis dipulihkan jika jenis yang digunakan dalam MutableState dapat disimpan di Paket. Jika sebelumnya Anda meneruskan objek saver kustom, sekarang Anda harus menggunakan overload rememberSaveable baru yang memiliki parameter stateSaver. Penggunaannya akan terlihat seperti ini: val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) } (Ib4c26, b/177338004)
  • Menambahkan semantik sandi untuk aksesibilitas (I231ce)
  • Menambahkan ProgressBarRangeInfo.Indeterminate guna menandai status progres tidak pasti untuk aksesibilitas (I6fe05)
  • Utilitas emptyContent() dan (@Composable () -> Unit).orEmpty() tidak digunakan lagi karena tidak lagi memiliki dampak atau nilai performa yang bagus (I0484d)
  • snapshotFlow dan withMutableSnapshot tidak lagi bersifat eksperimental (I6a45f)
  • Kini Recomposer dapat ditutup. Recomposer yang ditutup akan melanjutkan rekomposisi hingga coroutine turunan komposisi selesai. Recomposer.shutDown diganti namanya menjadi batal untuk membedakannya dengan tutup. (Ib6d76)
  • UiSavedStateRegistry diganti namanya menjadi SaveableStateRegistry, AmbientUiSavedStateRegistry diganti namanya menjadi AmbientSaveableStateRegistry dan keduanya dipindahkan ke paket androidx.compose.runtime.saveable. (I30224)
  • Artefak androidx:compose:runtime:runtime-saved-instance-state diganti namanya menjadi androidx:compose:runtime:runtime-saveable (I6dcac)
  • Banyak API lama yang tidak digunakan lagi dalam paket UI akan dihapus. (I2f2dc)
  • Artefak compose:runtime-dispatch sekarang tidak digunakan lagi. MonotonicFrameClock sekarang dapat ditemukan di compose:runtime dan AndroidUiDispatcher dapat ditemukan di compose:ui. (Ib5c36)
  • Class Outline.* bukan lagi class data (I4879e, b/178001427)
  • Menghapus view.captureToImage() tanpa penggantian apa pun. (I7fcd2)
  • Memperkenalkan API ColorMatrix yang digunakan untuk mengubah nilai rgb di konten sumber API ColorFilter yang Difaktorkan Ulang menjadi antarmuka dan menyesuaikan implementasi PathEffect. (Ica1e8)
  • Tambahkan parameter layoutDirection ke createOutline Bentuk. Ini memungkinkan untuk membuat bentuk sadar arah tata letak. (I57c20, b/152756983)
  • onImeActionPerformed tidak digunakan lagi. Sebagai gantinya, gunakan KeyboardActions (If0bbd, b/179071523)
  • Memperkenalkan elemen konteks coroutine InfiniteAnimationPolicy yang akan diimplementasikan dalam animasi tak terbatas. Secara default tidak ada kebijakan yang diinstal, kecuali saat menjalankan pengujian dengan ComposeTestRule. (I50ec4, b/151940543)
  • canDrag telah dihapus dari Modifier.scrollable. (Id66e7, b/175294473)
  • Mengganti nama LayoutCoordinates.parentCoordinates menjadi LayoutCoordinates.parentLayoutCoordinates untuk memungkinkan properti parentCoordinates yang baru. Properti parentCoordinates sekarang menawarkan LayoutCoordintes pengubah induk. Ini akan menghasilkan kasus penggunaan yang lebih lengkap untuk onSizeChanged() dan onGloballyPositioned() (Idfbfd, b/177926591)
  • tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter, dan pressIndicaitonGestureFilter tidak digunakan lagi. Sebagai gantinya, gunakan Modifier.clickable atau Modifier.pointerInput dengan fungsi detectTapGestures. (I6baf9, b/175294473)
  • SaveableStateRegistry's unregisterProvider telah dihapus. Sebagai gantinya, registerProvider() sekarang mengembalikan objek SaveableStateRegistry.Entry yang dapat Anda gunakan untuk membatalkan pendaftaran (Ic4274, b/178583739)
  • rememberSavedInstanceState() telah diganti namanya menjadi rememberSaveable() dan dipindahkan ke paket androidx.compose.runtime.saveable. (I1366e, b/177338004)
  • Menghapus CoreText dan CoreTextField dari API publik
    • Menghapus overload SelectionContainer yang tidak digunakan lagi
    • (I99c19)
  • Pengujian tempat Compose digunakan dalam hierarki yang ditambahkan/dihapus langsung ke WindowManager kini lebih stabil. (Ie81ed, b/175765614)
  • Recomposer.current(). [Abstract]ComposeView yang dihapus kini ditetapkan secara default ke Recomposers dengan cakupan jendela yang dibuat secara lambat dan didorong oleh ViewTreeLifecycleOwner untuk jendela. Rekomposisi dan tick animasi withFrameNanos-based dijeda selama Lifecycle host dihentikan. (I38e11)
  • Recomposer.runningRecomposers sekarang menawarkan StateFlow global dari RecomposerInfo yang hanya dapat dibaca untuk mengamati status komposisi yang sedang berlangsung dalam proses. Pilih API ini daripada Recomposer.current(), yang sekarang tidak digunakan lagi. (If8ebe)
  • Saver, listSaver(), mapSaver(), dan autoSaver telah dipindahkan dari androidx.compose.runtime.savedinstancestate ke androidx.compose.runtime.saveable (I77fe6)
  • EditCommands menyetujui RenotatedString. Namun, ini hanya perubahan API dan pengeditan teks multi-gaya belum diterapkan. (I4c3ea)
  • Uptime dan Duration telah dihapus. (Ib9bf4, b/177420019)
  • CompositionData.asTree() dan API terkait yang dipindahkan ke modul ui-tooling-data terpisah dan ditandai sebagai eksperimental (Ic95b8)
  • Parameter di RounderCornerShape, CutCornerShape, dan CornerBasedShape telah diganti namanya dari kiri/kanan menjadi awal/akhir untuk mendukung pencerminan otomatis bentuk di arah rtl. AbsoluteRounderCornerShape dan AbsoluteCutCornerShape digunakan saat pencerminan otomatis tidak diinginkan. (I61040, b/152756983)
  • API yang menjadi target plugin compiler Compose telah difaktorkan ulang agar dapat menggunakan antarmuka, bukan class konkret. Antarmuka juga tidak lagi menggunakan parameter jenis.

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

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

Perbaikan Bug

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

Versi 1.0.0-alpha11

28 Januari 2021

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

Perubahan API

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

Perbaikan Bug

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

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

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

  • Parameter deskripsi konten telah ditambahkan ke Gambar dan Ikon. Parameter ini digunakan untuk memberikan deskripsi ke layanan aksesibilitas (I2ac4c)

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

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

  • API emit() dan semua overload tidak digunakan lagi dan diganti namanya menjadi ComposeNode. API tersebut sama, hanya namanya yang berbeda agar dapat mengikuti konvensi penamaan Compose (I4137b)

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

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

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

  • RememberObserver menggantikan CompositionLifecycleObserver dan CompositionLifecycleObserver kini tidak digunakan lagi.

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

    RememberObserver menambahkan onAbandoned yang dipanggil jika instance RememberObserver ditampilkan dari callback yang diteruskan ke remember tetapi tidak diingat dalam status komposisi, dan, oleh karena itu, tidak akan pernah memanggil onRemembered. Hal ini dapat terjadi jika pengecualian menghentikan komposisi sebelum selesai atau komposisi dibuang karena status tujuan komposisi itu diproduksi tidak lagi aktif atau tidak diperlukan lagi. Jika instance RememberObserver yang mengikuti rekomendasi referensi tunggal di atas melacak resource eksternal onForgotten dan onAbandoned, masing-masing menunjukkan bahwa resource tidak lagi diperlukan. Jika objek sedang melacak pekerjaan yang dimulai atau resource yang dialokasikan di onRemembered, onAbandoned dapat diabaikan karena tidak akan dipanggil jika onRemembered dipanggil. (I02c36)

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

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

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

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

  • Gunakan ImeAction.None, bukan ImeAction.NoAction

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

  • Mengganti nama TextInputService.onStateUpdated sebagai updateState (Id4853)

  • Transisi berbasis TransitionDefinition tidak digunakan lagi (I0ac57)

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

Versi 1.0.0-alpha10

13 Januari 2021

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

Perubahan yang Dapat Menyebabkan Gangguan

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

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

Perubahan API

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

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

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

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

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

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

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

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

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

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

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

  • Perubahan API VisualTransformation

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

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

Perbaikan Bug

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

Versi 1.0.0-alpha09

16 Desember 2020

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

Perubahan API

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

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

    Menambahkan metode baru, insertBottomUp().

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

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

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

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

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

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

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

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

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

Perbaikan Bug

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

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

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

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

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

  • Menghentikan penggunaan BuildCompat.isAtLeastR (Idb37e)

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

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

Versi 1.0.0-alpha08

2 Desember 2020

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

Perubahan API

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

    Menambahkan LazyListState.snapToItem dan LazyListState.smoothScrollBy, serta API level rendah untuk kontrol scroll. API ini menyediakan antarmuka penangguhan untuk mengontrol scroll yang menunggu hingga scroll selesai sebelum ditampilkan kembali. (Ie5642)

  • Modifier.focusable perlu ditambahkan dalam dasar. Gunakan ini untuk menambahkan perilaku yang dapat difokuskan ke komponen, dengan semantik dan aksesibilitas yang tepat. (I41eb9, b/152525426, b/162865824)

  • Menyediakan implementasi default metode dan properti dalam AnimationClockTestRule yang dapat didelegasikan ke clock (I7ea3d, b/173399709)

  • AndroidComposeTestRule kini dapat menerima peluncur aktivitas kustom (Ib8288, b/153623653, b/154135019)

  • TextLayoutResult.getLineVisibleEnd tidak digunakan lagi. Sebagai pengganti kini TextLayoutResult.getLineEnd memiliki parameter baru visibleEnd. (I73282)

  • Memperbarui TextFieldValue API

    • menjadikan TextFieldValue.composition hanya baca
    • menghapus pengecualian yang dimunculkan untuk rentang pilihan yang tidak valid (I4a675, b/172239032)
  • Mendukung TtsAnnotation untuk mesin text to speech. (I54cc6)

  • API baru untuk menjalankan animasi dalam coroutine (Ied662)

Perbaikan Bug

  • Parameter perataan Box diganti namanya menjadi contentAlignment. (I2c957)
  • Pengubah offsetPx diganti namanya menjadi offset. Pengubah tersebut kini mengambil parameter lambda, bukan State. (Ic3021, b/173594846)
  • Menambahkan parameter resetInput ke TextInputService#onStateUpdated (I3e8f5, b/172239032, b/171860947)
  • Menambahkan pemeriksaan lint untuk parameter Modifier dalam fungsi Composable. Pemeriksaan lint ini memeriksa penamaan, jenis nilai yang ditampilkan, nilai default, dan urutan parameter agar konsisten dengan pedoman Compose. (If493b)
  • Menambahkan opsi untuk sementara agar TestAnimationClock dapat didorong oleh MonotonicFrameClock (I1403b, b/173402197)
  • Menambahkan wrapper Typeface Android. Anda dapat memuat Typeface Android melalui fungsi typeface, yakni typeface(Typeface.DEFAULT). Juga mengganti nama typefaceFromFontFamily() menjadi typeface() (I52ab7)
  • Menambahkan pemeriksaan lint untuk memeriksa bahwa fungsi factory Modifier didefinisikan sebagai ekstensi di Modifier, sehingga dapat ditautkan secara efisien. (I07981)
  • Menghapus modul ui-test lama dan stub-nya (I3a7cb)
  • Recomposer tidak lagi menerima EmbeddingContext; dependensi penjadwalan yang diperlukan diperoleh dari effectCoroutineContext. FrameManager tidak digunakan lagi; integrasi platform harus melakukan inisialisasi penanganan snapshot globalnya sendiri. (I02369)
  • Meneruskan informasi gaya ke node aksesibilitas. (If5e8d)
  • TextUnit.Inherit diganti namanya menjadi TextUnit.Unspecified agar konsisten dengan unit lain. (Ifce19)

Compose UI Versi 1.0.0-alpha07

11 November 2020

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

Perubahan API

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

Perbaikan Bug

  • captureToBitmap dipindahkan ke captureToImage. (I86385)
  • foundation.Text sudah tidak digunakan lagi dan diganti dengan material.Text. Untuk API teks dasar tidak terkonfigurasi yang tidak memakai nilai dari tema, lihat androidx.compose.foundation.BasicText. (If64cb)
  • Mengupdate TextFields untuk menerima KeyboardOptions (Ida7f3)
  • Mengganti nama KeyboardOptions sebagai ImeOptions (I82f36)
  • Memindahkan KeyboardType dan ImeAction ke KeyboardOptions (I910ce)
  • provideDefault ditambahkan sebagai alternatif untuk menyediakan ambient, dan dapat digunakan untuk menentukan nilai ambient yang hanya akan ditetapkan jika tidak ada nilai ambient yang telah disediakan. (Id6635, b/171024925)
  • BaseTextField sudah tidak digunakan lagi. BasicTextField digunakan sebagai gantinya. (I896eb)
  • Memperkenalkan modul ui-test-junit4 (Ib91f8)
  • relativePaddingFrom diganti namanya menjadi paddingFrom. Pengubah paddingFromBaseline ditambahkan, untuk memudahkan penentuan jarak dari batas tata letak ke dasar pengukuran teks. (I0440a, b/170633813)
  • LaunchedTask diganti namanya menjadi LaunchedEffect agar konsisten dengan SideEffect dan DisposableEffect API. LaunchedEffect tanpa parameter subjek tidak diizinkan agar mendorong praktik terbaik. (Ifd3d4)
  • Memperkenalkan komponen resource yang merekomposisi saat konfigurasi diperbarui. (I6387c, b/167352819)
  • Recomposer kini memerlukan CoroutineContext saat pembuatan (Ic4610)
  • Menjumlahkan nilai zIndex saat beberapa Modifier.zIndex() diterapkan. Sebelumnya yang pertama menang. (Ic514c, b/170623936)
  • Perubahan pada implementasi SlotTable internal yang tidak akan memengaruhi API publik. (If9828)
  • Menambahkan Opsi IME koreksi otomatis Keyboard (I57b8d)
  • androidx.ui.test dipindahkan ke androidx.compose.ui.test (I9ffdb)
  • Menghapus KeyboardOptions.toImeOptions dari API publik. (Ic2e45)

Kontribusi Eksternal

  • Menonaktifkan publikasi artefak internal androidx.compose.ui:ui-text-android (Ib93fa)

Versi 1.0.0-alpha06

28 Oktober 2020

androidx.compose.ui:ui-*:1.0.0-alpha06 dirilis. Versi 1.0.0-alpha06 berisi commit 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)
  • Memindahkan LongPress ke Text. (Iff2bc)
  • Pengubah input penangguhan Modifier.pointerInput eksperimental (Ia77d2)
  • Menambahkan tindakan aksesibilitas Salin/Tempel/Potong (I6db4f)
  • Konstruktor publik untuk AndroidOwner telah dihapus (Iacaef)
  • Pop-up dan dialog sekarang mewarisi FLAG_SECURE dari Jendela induk. Juga menambahkan opsi untuk mengonfigurasi ini secara eksplisit (I64966, b/143778148, b/143778149)
  • Data pemakaian kini dapat berubah. Selain itu, fungsi panggilan ke ekstensi yang menggunakan data pemakaian kini tidak lagi menampilkan PointerInputChange baru, melainkan memutasikan PointerInputChange yang tersedia.

    Ini adalah langkah pertama dalam proses 2 langkah untuk membuat data PointerEvent dapat berubah, sehingga data pointer lainnya tidak dapat diedit oleh kode pengguna. Langkah kedua adalah menghapus jenis nilai yang ditampilkan List<PointerInputChange> dari PointerInputFilter.onPointerEvent(...). (Id067e)

  • Nonaktifkan Pilihan dalam Teks, dan Demo. (Ie7e97)

  • Membuat onGloballyPositioned menjadi fungsi inline (I15830)

  • OnPositionedModifier diganti nama menjadi OnGloballyPositionedModifier dan onPositioned() diganti nama menjadi onGloballyPositioned(). (I587e8, b/169083903)

  • Properti hasPendingMeasureOrLayout ditambahkan ke Pemilik, yang memberi tahu apakah Pemilik memiliki pekerjaan tata letak yang tertunda. (I3d9f8, b/169038599)

  • Menambahkan API untuk secara terprogram menghapus fokus (Ie1dc2, b/161487952)

  • PointerInputFilter.onPointerInput(...) dihapus. PointerInputFilter.onPointerEvent(...) harus digunakan di tempatnya. (I6f04a)

  • Perubahan Ukuran

    • Menghapus Size.getFlipped
    • Menghapus Size.rem
    • Menghapus Size.truncDiv (Ief44d, b/169790720)
  • Sebagai bagian dari standardisasi nilai sentinel untuk class inline, ganti nama Color.Unset ke Color.Unspecified agar konsisten dengan class inline lainnya (I97611, b/169797763)

  • TextOverflow.None diperkenalkan. Bila tambahan adalah Tidak Ada, Teks tidak akan lagi menangani tambahan, dan akan melaporkan ukuran sebenarnya ke LayoutNode. (I175c9, b/158830170)

  • Parameter cakupan dalam AnnotatedString.Builder.addStringAnnotation diganti nama untuk memberi tag konsistensi API. (I7c8cb)

Perbaikan Bug

  • Performa scroll LazyColumn/Row ditingkatkan dengan melakukan lebih sedikit pekerjaan dalam subkomposisi pada setiap scroll. Metode hasInvalidations() baru ditambahkan untuk class Composition. Metode hasPendingChanges() dari Recomposer diganti nama menjadi hasInvalidations() (Ib2f32, b/168293643, b/167972292, b/165028371)
  • Memperbarui parameter Size.Unspecified menjadi Float.NaN, bukan Float.POSITIVE_INFINITY. Memperbarui implementasi Painter untuk diperiksa dengan Size.Unspecified serta Ukuran yang tidak terbatas. (I95a7e)
  • Urutan panggilan telepon yang dilakukan dalam Layouts kustom kini menentukan urutan gambar untuk turunan (Ibc9f6)
  • Dukung konversi AnnotatedString ke SpannableString untuk aksesibilitas. (Ief907)
  • Menambahkan stub untuk class Android yang ada di platform lama untuk mencegah penggunaan refleksi jika memungkinkan. (Ia1790)
  • Memperbaiki bug: Jika keyboard virtual yang ditampilkan menyebabkan aplikasi diterjemahkan, koordinat input pointer akan menjadi salah. (Ic4cec, b/163077821)

Versi 1.0.0-alpha04

1 Oktober 2020

androidx.compose.ui:ui-*:1.0.0-alpha04 dirilis. Versi 1.0.0-alpha04 berisi commit 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, memiliki cakupan penerima yang merupakan tambahan untuk batasan dan layoutDirection menyediakan properti minWidth, maxWidth, minHeight, dan maxHeight di Dp (I91b9a, b/149979702)

  • Nama LayoutModifier2 diganti menjadi LayoutModifier. (Id29f3)

  • Menghapus antarmuka LayoutModifier yang sudah tidak digunakan lagi. (I2a9d6)

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

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

  • Modifier.zIndex() baru ditambahkan untuk mengontrol urutan gambar turunan dalam tata letak induk yang sama. Properti elevasi pada DrawLayerModifier diganti namanya menjadi shadowElevation dan tidak lagi mengontrol urutan gambar. Urutan parameter DrawShadow diubah: elevasi kini menjadi yang pertama dan bentuknya adalah yang kedua dengan default RectangleShape. (I20150, b/152417501)

  • OnSizeChange dan onPositionChange di Owner dihapus. (I5c718)

  • Menambahkan Constraints2, salinan Constraints yang hanya mendukung nilai batasan Int, bukan IntPx. IntPx akan dihapus dan semua batasan bilangan bulat akan diasumsikan sebagai piksel seperti Android.

    • Juga menambahkan IntSize, yang nantinya akan menggantikan IntPxSize. (I4b43a)
  • Membuat Alignment instantiable dengan nilai arbitrer. Menambahkan Alignment 1D. (Ia0c05)

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

  • (I45f09, b/152842521)

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

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

  • Menyempurnakan DrawModifier API:

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

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

  • Nama LayoutResult diganti menjadi MeasureResult. (Id8c68)

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Penyempurnaan pada antarmuka API Constraints (I0fd15)

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

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

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

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

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

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

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

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

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

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

  • Menambahkan VectorPainter API untuk menggantikan API subkomposisi yang ada untuk grafik vektor. Hasil subkomposisi adalah objek VectorPainter, bukan DrawModifier. Penggunaan 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 pengiring yang mendukung konstruktor fungsi dengan parameter default agar memiliki radius sepanjang sumbu y yang cocok dengan parameter radius sumbu x wajib.

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

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

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

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

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

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

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

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

    Perubahan perilaku disengaja dan diketahui yang dihasilkan dari tindakan berikut:

    1. Beberapa panggilan akan melewati bagian, di mana tidak pernah dilakukan sebelumnya
    2. Ekspresi 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)