UI
Update Terbaru | Rilis Stabil Saat Ini | Kandidat Rilis Berikutnya | Rilis Beta | Rilis Alfa |
---|---|---|---|---|
1 Oktober 2020 | - | - | - | 1.0.0-alpha04 |
Struktur
Compose adalah kombinasi 7 ID Grup Maven dalam androidx
. Setiap Grup
berisi subkumpulan fungsi yang ditargetkan, masing-masing dengan kumpulan catatan
rilisnya sendiri.
Tabel ini menjelaskan grup tersebut dan memiliki link ke setiap kumpulan catatan rilis.
Grup | Deskripsi |
---|---|
compose.animation | Mem-build animasi di aplikasi Jetpack Compose untuk memperkaya pengalaman pengguna. |
compose.compiler | Mentransformasi fungsi @Composable dan mengaktifkan pengoptimalan dengan plugin compiler Kotlin. |
compose.foundation | Menulis aplikasi Jetpack Compose dengan elemen penyusun siap pakai dan memperluas dasar untuk mem-build bagian sistem desain Anda sendiri. |
compose.material | Mem-build 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.runtime | Elemen penyusun yang penting untuk model pemrograman dan pengelolaan status Compose, serta runtime inti untuk ditarget Compose Compiler Plugin. |
compose.ui | Komponen dasar compose UI yang diperlukan untuk berinteraksi dengan perangkat, termasuk tata letak, gambar, dan input. |
ui | Berfungsi dengan library Jetpack Compose. |
Mendeklarasikan dependensi
Untuk menambahkan dependensi pada Compose UI, Anda harus menambahkan repositori Maven Google ke project Anda. Baca repositori Maven Google untuk mengetahui informasi selengkapnya.
Tambahkan dependensi untuk artefak yang diperlukan dalam file build.gradle
bagi aplikasi atau modul Anda:
dependencies { // New dependencies implementation "androidx.compose.ui:ui-tooling:1.0.0-alpha08" implementation "androidx.compose.ui:ui-test:1.0.0-alpha08" // Old dependencies implementation "androidx.ui:ui-tooling:1.0.0-alpha07" implementation "androidx.ui:ui-test:1.0.0-alpha07" } android { buildFeatures { compose true } composeOptions { kotlinCompilerVersion "1.4.0" kotlinCompilerExtensionVersion "1.0.0-alpha08" } } tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach { kotlinOptions { jvmTarget = "1.8" freeCompilerArgs += ["-Xallow-jvm-ir-dependencies", "-Xskip-prerelease-check"] } }
Untuk informasi dependensi selengkapnya, lihat Menambahkan dependensi build.
Masukan
Masukan Anda membantu meningkatkan kualitas Jetpack. Beri tahu kami jika Anda menemukan masalah baru atau punya masukan untuk meningkatkan kualitas library ini. Harap periksa masalah yang sudah diketahui dalam library ini sebelum membuat laporan baru. Anda dapat memberikan suara untuk masalah yang sudah diketahui dengan mengklik tombol bintang.
Lihat dokumentasi Issue Tracker untuk informasi selengkapnya.
Versi 1.0.0
Versi 1.0.0-alpha04
1 Oktober 2020
androidx.ui:ui-test:1.0.0-alpha04
dan androidx.ui:ui-tooling:1.0.0-alpha04
dirilis. Versi 1.0.0-alpha04 berisi commit berikut ini.
Perubahan API
- Menambahkan fungsi penangguhan di ComposeTestRule untuk menunggu aplikasi yang tidak ada aktivitas (I4212c, b/168226343, b/168227042)
- Menganotasi rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled dan textInputServiceFactory dengan @VisibleForTesting, menjadikannya API internal dan menyembunyikan kdoc (I554eb, b/168308412)
Perbaikan Bug
- 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 kelebihan untuk for Rect.translate(offset) dan Rect.shift yang tidak digunakan lagi
- (If086a, b/167737376)
- Menghapus parameter inlineContent dari Teks dengan input String. Ini tidak akan digunakan karena inlineContent harus berfungsi dengan AnnotatedString. (Ief403)
Versi 1.0.0-alpha03
16 September 2020
androidx.ui:ui-test:1.0.0-alpha03
dan androidx.ui:ui-tooling:1.0.0-alpha03
dirilis. Versi 1.0.0-alpha03 berisi commit berikut ini.
Perubahan API
- Fungsi pengujian global seperti onNode atau waitForIdle kini tidak digunakan lagi, migrasikan ke fungsi barunya yang ditentukan di ComposeTestRule (I7f45a)
- Memindahkan
createAndroidComposeRule
danAndroidInputDispatcher
dariandroidx.ui.test.android
keandroidx.ui.test
(Idef08, b/164060572) - Menambahkan onNode dan metode global lainnya di ComposeTestRule karena metode global yang ada saat ini akan segera dihentikan. (Ieae36)
- Memperbaiki penghitungan ukuran dan posisi di GestureScope, yang menyebabkan, diantaranya, gestur geser menjadi tidak valid (Iaf358, b/166589947)
Perbaikan Bug
- Penggunaan gravitasi secara konsisten diganti namanya menjadi untuk meratakan atau perataan dalam API tata letak. (I2421a, b/164077038)
- InnerPadding diganti namanya menjadi PaddingValues. (I195f1, b/167389171)
Versi 1.0.0-alpha02
2 September 2020
androidx.ui:ui-test:1.0.0-alpha02
dan androidx.ui:ui-tooling:1.0.0-alpha02
dirilis. Versi 1.0.0-alpha02 berisi commit berikut ini.
Perubahan API
- TestUiDispatcher ditandai eksperimental (Iae99d, b/161247083)
- Durasi kini menjadi class inline (I565eb)
Menambahkan
ManualFrameClock.hasAwaiters
untuk melihat apakah ada yang menunggu frame dari jam tersebut;runWithManualClock
sebagai penggantirunBlocking
saat menjalankan pengujian yang memerlukan ManualFrameClock;TestUiDispatcher.Main
yang memberikan akses mudah ke dispatcher UI utama dalam pengujian Anda.Contoh:
@Test fun myTest() = runWithManualClock { clock -> // set some compose content withContext(TestUiDispatcher.Main) { clock.advanceClock(1000L) } if (clock.hasAwaiters) { println("The clock has awaiters") } else { println("The clock has no more awaiters") } }
Perbaikan Bug
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)
Versi 1.0.0-alpha01
26 Agustus 2020
androidx.ui:ui-test:1.0.0-alpha01
dan androidx.ui:ui-tooling: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.ui:ui-test:0.1.0-dev17
dan androidx.ui:ui-tooling:0.1.0-dev17
dirilis. Versi 0.1.0-dev17 berisi commit berikut.
Perubahan API
- Offset telah menjadi class inline (Iaec70)
- IntSize kini menjadi class inline (I2bf42)
- AlertDialog kini menggunakan FlowRow untuk tombol (I00ec1, b/161809319, b/143682374)
- Menambahkan fungsi
createAndroidComposeRule
yang menggunakanClass<T : ComponentActivity>
sebagai parameter untuk membuat AndroidComposeRule dengan mudah yang diberikan class aktivitas tertentu. (I40da4)
Perbaikan Bug
- Memperbarui nama PointerEventPass untuk rilis Alfa. (Ifda6f)
PlacementScope.placeAbsolute()
diganti namanya menjadiPlacementScope.place()
, danPlacementScope.place()
sebelumnya diganti namanya menjadiPlacementScope.placeRelative()
. Akibatnya, metodePlacementScope.place()
tidak akan lagi secara otomatis mencerminkan posisi dalam konteks kanan-ke-kiri. Jika menginginkannya, gunakan sajaPlacementScope.placeRelative()
. (I873ac, b/162916675)- 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)
- Memperbaiki error saat sesuatu yang menyimpan status sebelumnya digunakan di dalam for loop. Sekarang memiliki kunci yang sama di savedInstanceState() diizinkan, API UiSavedStateRegistry sekarang disesuaikan dengan persyaratan baru ini (I4ab76, b/160042650, b/156853976, b/159026663, b/154920561)
state { ... }
yang dapat dikomposisi kini tidak lagi digunakan agar panggilan eksplisit keremember { mutableStateOf(...) }
menjadi lebih jelas. Ini mengurangi keseluruhan tampilan API dan jumlah konsep untuk pengelolaan status, serta mencocokkan polaby mutableStateOf()
untuk delegasi properti class. (Ia5727)- Pengaturan spacedBy telah ditambahkan untuk Baris dan Kolom, guna memungkinkan penempatan tata letak anak dengan spasi tetap. Pengaturan yang disejajarkan juga ditambahkan untuk memungkinkan penempatan tata letak anak di samping yang lainnya dan disejajarkan dalam Baris/Kolom sesuai dengan Penyelarasan. Metode Arrangement.Vertical#arrange dan Arrangement.Horizontal#arrange sebelumnya tidak digunakan lagi, dan penulisan Pengaturan kustom tidak akan didukung di masa mendatang. (I6733d, b/161985975)
- Modifier.drawBorder tidak digunakan lagi. Gunakan Modifier.border sebagai gantinya. Class data Border telah diganti dengan BorderStroke (I4257d, b/158160576)
Versi 0.1.0-dev16
5 Agustus 2020
androidx.ui:ui-test:0.1.0-dev16
dan androidx.ui:ui-tooling:0.1.0-dev16
dirilis. Versi 0.1.0-dev16 berisi commit berikut.
Sebagian besar paket Jetpack Compose telah difaktorkan ulang, sesuai dengan tabel di bawah.
Pemfaktoran Ulang Paket Jetpack Compose
Nama Paket Lama | Nama Paket Baru |
---|---|
androidx.animation |
androidx.compose.animation.core |
androidx.ui.autofill |
androidx.compose.ui.autofill |
androidx.compose |
androidx.compose.runtime |
androidx.compose.dispatch |
androidx.compose.runtime.dispatch |
androidx.ui.animation |
androidx.compose.animation |
androidx.ui.core |
androidx.compose.ui androidx.compose.ui.unit androidx.compose.ui.graphics |
androidx.ui.foundation |
androidx.compose.foundation |
androidx.ui.geometry |
androidx.compose.ui.geometry |
androidx.ui.graphics |
androidx.compose.ui.graphics |
androidx.ui.input |
androidx.compose.ui.text.input |
androidx.ui.intl |
androidx.compose.ui.text.intl |
androidx.ui.layout |
androidx.compose.foundation.layout |
androidx.ui.livedata |
androidx.compose.runtime.livedata |
androidx.ui.material |
androidx.compose.material |
androidx.ui.material.icons |
androidx.compose.material.icons |
androidx.ui.rxjava2 |
androidx.compose.runtime.rxjava2 |
androidx.ui.savedinstancestate |
androidx.compose.runtime.savedinstancestate |
androidx.ui.node |
androidx.compose.ui.node androidx.compose.ui.input.pointer |
androidx.ui.platform |
androidx.compose.ui.platform |
androidx.ui.res |
androidx.compose.ui.res |
androidx.ui.semantics |
androidx.compose.ui.semantics |
androidx.ui.testutils |
androidx.compose.ui.input.pointer |
androidx.ui.text |
androidx.compose.foundation.text androidx.compose.ui.text |
androidx.ui.text.platform |
androidx.compose.ui.text.android androidx.compose.ui.platform |
androidx.ui.unit |
androidx.compose.ui.unit |
androidx.ui.util |
androidx.compose.ui.util |
androidx.ui.viewinterop |
androidx.compose.ui.viewinterop |
androidx.ui.viewmodel |
androidx.compose.ui.viewinterop |
Belum Difaktorkan Ulang (tidak ada perubahan) |
---|
androidx.ui.test |
androidx.ui.tooling |
Jika menggunakan Android Studio, Anda dapat mengganti pernyataan impor dengan
cuplikan kode di bawah ini dan menggunakan tombol Optimize Imports
di Android Studio.
Untuk kasus yang tidak dicakup Android Studio, lihat daftar
paket di atas.
import androidx.compose.runtime.*
import androidx.compose.animation.*
import androidx.compose.animation.core.*
import androidx.compose.foundation.*
import androidx.compose.foundation.gestures.*
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.lazy.*
import androidx.compose.foundation.shape.*
import androidx.compose.material.*
import androidx.compose.material.icons.*
import androidx.compose.material.icons.filled.*
import androidx.compose.ui.*
import androidx.compose.ui.geometry.*
import androidx.compose.ui.draw.*
import androidx.compose.ui.graphics.*
import androidx.compose.ui.graphics.drawscope.*
import androidx.compose.ui.graphics.painter.*
import androidx.compose.ui.graphics.vector.*
import androidx.compose.ui.layout.*
import androidx.compose.ui.platform.*
import androidx.compose.ui.res.*
import androidx.compose.ui.text.*
import androidx.compose.ui.text.font.*
import androidx.compose.ui.text.style.*
import androidx.compose.ui.unit.*
import androidx.compose.ui.util.*
import androidx.compose.ui.viewinterop.*
import androidx.ui.tooling.preview.*
Perubahan API
- KeyEvent2 digantikan oleh KeyEvent (I2d770, b/162097585)
SemanticsNodeInteraction.performPartialGesture
dihapus. Sebagai gantinya, gunakanSemanticsNodeInteraction.performGesture
. (Id9b62)- Mengganti nama
SemanticsNodeInteraction.getBoundsInRoot()
menjadiSemanticsNodeInteraction.getUnclippedBoundsInRoot()
(Icafdf, b/161336532) - Mengganti nama AndroidComposeTestRule menjadi createAndroidComposeRule. (I70aaf)
- Menambahkan SemanticsMatcher isFocused() dan isNotFocused(). (I0b760)
- Menghapus
BaseGestureScope.globalBounds
, yang tidak boleh digunakan dari pengujian. Menggunakan koordinat lokal ke node tempat Anda berinteraksi. (Ie9b08) - Meningkatkan akurasi API pemeriksa (I3cfbf)
Perbaikan Bug
- Memindahkan dialog ke ui (I47fa6)
- 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)
- Memerlukan jenis T agar ditentukan secara eksplisit untuk transitionDefinition. (I1aded)
- Modifier.plus tidak digunakan lagi. Sebagai gantinya, gunakan Modifier.then. 'Then' memiliki sinyal pengurutan yang lebih kuat, sekaligus melarang pengetikan
Modifier.padding().background() + anotherModifier
yang memutus rantai dan lebih sulit dibaca (Iedd58, b/161529964) - Menambahkan
SemanticsNode.positionInRoot
untuk mendapatkan posisi SemanticsNode relatif terhadap root hierarki Compose (Icdf26, b/161336532) - Menambahkan tindakan aksesibilitas untuk mendapatkan TextLayoutResult (I9d6e6)
- Nama Material FillingTextField diganti menjadi TextField dan nama TextField dasar diganti menjadi BaseTextField, agar API paling sederhana yang diinginkan mudah ditemukan dan digunakan (Ia6242, b/155482676)
- Nama Modifier.drawBackground telah diganti menjadi Modifier.background (I13677)
- Nama ColorPalette diganti menjadi Colors, untuk memetakan sistem warna Material dengan lebih baik dan menghilangkan kebingungan terkait ColorPalette menjadi objek bertema 'generik', bukan implementasi khusus sistem warna Material. Selain itu, nama lightColorPalette dan darkColorPalette diganti menjadi lightColors dan darkColors. (I9e976, b/161812111)
- Paket foundation.shape.corner diratakan menjadi foundation.share (I46491, b/161887429)
Row
danColumn
kini berfungsi inline yang secara signifikan mengurangi overhead penggunaannya. (I75c10)
Versi 0.1.0-dev15
22 Juli 2020
androidx.ui:ui-test:0.1.0-dev15
dan androidx.ui:ui-tooling:0.1.0-dev15
dirilis. Versi 0.1.0-dev15 berisi commit berikut.
Sebagian besar artefak Jetpack Compose telah difaktorkan ulang, sesuai dengan tabel di bawah.
Harap diperhatikan, dalam rilis ini, hanya nama artefak yang telah difaktorkan ulang. Dalam rilis mendatang, nama paket akan diperbarui untuk mengikuti nama artefak barunya.
Pemfaktoran Ulang Artefak Jetpack Compose
Artefak Lama | Artefak Baru |
---|---|
androidx.compose:compose-dispatch |
androidx.compose.runtime:runtime-dispatch |
androidx.compose:compose-runtime |
androidx.compose.runtime:runtime |
androidx.ui:ui-animation |
androidx.compose.animation:animation |
androidx.ui:ui-animation-core |
androidx.compose.animation:animation-core |
androidx.ui:ui-core |
androidx.compose.ui:ui |
androidx.ui:ui-foundation |
androidx.compose.foundation:foundation |
androidx.ui:ui-geometry |
androidx.compose.ui:ui-geometry |
androidx.ui:ui-graphics |
androidx.compose.ui:ui-graphics |
androidx.ui:ui-layout |
androidx.compose.foundation:foundation-layout |
androidx.ui:ui-livedata |
androidx.compose.runtime:runtime-livedata |
androidx.ui:ui-material |
androidx.compose.material:material |
androidx.ui:ui-material-icons-core |
androidx.compose.material:material-icons-core |
androidx.ui:ui-material-icons-extended |
androidx.compose.material:material-icons-extended |
androidx.ui:ui-rxjava2 |
androidx.compose.runtime:runtime-rxjava2 |
androidx.ui:ui-saved-instance-state |
androidx.compose.runtime:runtime-saved-instance-state |
androidx.ui:ui-text |
androidx.compose.foundation:foundation-text |
androidx.ui:ui-text-android |
androidx.compose.ui:ui-text-android |
androidx.ui:ui-text-core |
androidx.compose.ui:ui-text |
androidx.ui:ui-unit |
androidx.compose.ui:ui-unit |
androidx.ui:ui-util |
androidx.compose.ui:ui-util |
Belum Difaktorkan Ulang (tidak ada perubahan) |
---|
androidx.compose:compose-compiler |
androidx.ui:ui-test |
androidx.ui:ui-tooling |
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
- Nama
runOnIdleCompose
diganti menjadirunOnIdle
(I83607) - Beberapa nama API pengujian diganti menjadi lebih intuitif. Semua nama API findXYZ diganti menjadi onNodeXYZ. Semua nama API doXYZ diganti menjadi performXYZ. (I7f164)
- API untuk mencetak semantik aplikasi sebagai hierarki, bukan daftar datar. Hapus juga SemanticsMatcher.any dan sebagai gantinya, gunakan findRoot().printToString() untuk mencetak semantik. (I866b5)
- KeyEvent tidak digunakan lagi dan digantikan oleh KeyEvent2 (I68730)
- Sebuah flag opsional baru useUnmergedTree telah ditambahkan ke pencari pengujian. (I2ce48)
- Menghapus API pengujian ukuran yang tidak digunakan lagi. (Iba0a0)
- Class unit IntBounds telah ditambahkan dan mewakili batas piksel bilangan bulat dari tata letak. API PopupPositionProvider telah diupdate untuk menggunakannya. (I0d8d0, b/159596546)
- Menambahkan parameter perangkat baru ke @Preview (I39049)
Perbaikan Bug
- 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 lagi digunakan untuk mendukung ScrollState' (I400ce, b/157225838, b/149460415, b/154105299)
- Properti semantik satu nilai sekarang menggunakan gaya pemanggilan. Misalnya, 'semantik { hidden = true }' sekarang ditulis sebagai: 'semantik { hidden() }'. (Ic1afd, b/145951226, b/145955412)
- Menambahkan anotasi API eksperimental untuk API terkait input kunci (I53c0a)
- Transition API telah diubah untuk mengembalikan TransitionState, bukan meneruskan TransitionState ke turunan. Hal ini membuat API lebih konsisten dengan API animate(). (I24e38)
- Applier kini memerlukan metode clear() untuk memisahkan posisi (Ibe697)
- Membuat API eksperimental LayoutNode (I4f2e9)
- Pop-ups, Dialogs, dan Menus sekarang mewarisi MaterialTheme kontekstual (Ia3665, b/156527485)
- tambahkan fungsi top-level withFrameNanos untuk pengaturan waktu animasi (Ie34c5)
- Menghapus parameter arah tata letak dari blok ukuran fungsi Layout(). Namun, arah tata letak tersedia di dalam callback melalui objek cakupan pengukuran (Ic7d9d)
- Gunakan AnimationSpec, bukan AnimationBuilder di API level atas untuk memperjelas konsep spesifikasi animasi statis -Meningkatkan DSL transisi dengan menghapus persyaratan lambda untuk membuat AnimationSpec seperti tween, spring. Sebaliknya, API mengambil parameter konstruktor secara langsung. -Meningkatkan kemudahan penggunaan AnimationSpec secara keseluruhan yang membuka konstruktor, bukan mengandalkan builder -Mengubah durasi dan penundaan untuk KeyFrames dan Tween menjadi Int. Tindakan ini menghilangkan tipe transmisi yang tidak perlu dan overloading metode (untuk mendukung Long dan Int). (Ica0b4)
IllegalStateException sekarang dimunculkan jika Anda mencoba memicu sinkronisasi di thread utama, misalnya saat Anda melakukan:
runOnIdleCompose { findByTag(\"tag\").assertExists() }
Hapus panggilan ke runOnIdleCompose jika terjadi:
findByTag(\"tag\").assertExists()
Menambahkan operator TextDecoration.plus (I0ad1a)
Slot konten Button kini berfungsi sebagai Row (berguna jika Anda harus memiliki ikon dengan teks, lihat contoh cara menulis di Button) (I0ff10, b/158677863)
Versi 0.1.0-dev14
24 Juni 2020
androidx.ui:ui-*:0.1.0-dev14
dirilis. Versi 0.1.0-dev14 berisi commit berikut.
Perubahan API
- Penggunaan
IntPx
diganti denganInt
.IntPxPosition
diganti denganIntOffset
.IntPxSize
diganti denganIntSize
. (Ib7b44) - Agar dapat mengonsolidasi jumlah class yang digunakan untuk mewakili informasi ukuran, kami membuat standar penggunaan class
Size
, bukanPxSize
. Hal ini memberikan manfaat dari class inline untuk menggunakan tipe data long yang memuat 2 nilai float untuk mewakili lebar dan tinggi yang diwakili sebagai float. (Ic0191) - Agar dapat mengonsolidasi jumlah class yang digunakan untuk mewakili informasi pemosisian, kami membuat standar penggunaan class
Offset
, bukanPxPosition
. Hal ini memberikan manfaat dari class inline untuk menggunakan tipe data long yang memuat 2 nilai float untuk mewakili offset x dan y yang diwakili 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 (I086f4) - Posisi Int baris perataan yang ditampilkan dari
Placeable#get(AlignmentLine)
sekarang bukan null. Jika baris perataan yang dikueri tidak ada,AlignmentLine.Unspecified
akan ditampilkan. (I896c5, b/158134875) - Parameter pengubah telah ditambahkan pada composable
AndroidView
. (I48a88, b/158746303) Semantics()
tidak digunakan lagi. GunakanModifier.semantics()
sebagai gantinya. (I72407, b/158841414)- Tambahkan composable
viewModel()
yang memungkinkan untuk membuat atau mendapatkan ViewModel yang sudah dibuat dan serupa dengan cara kerjanya di Aktivitas atau Fragmen (I5fdd1) - 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 (I97a5a) TestTag
tidak digunakan lagi. GunakanModifier.testTag
sebagai gantinya (If5110, b/157173105)- Penerapan
ParentDataModifier#modifyParentData
default tanpa pengoperasian telah dihapus - hal ini sama dengan tidak menerapkan antarmuka sejak awal. (I0deaa) ScaleFit
yang tidak digunakan lagi telah dihapus. GunakanContentScale
sebagai gantinya. (Ifbc5b)AdapterList
diganti namanya menjadiLazyColumnItems
(6decc02)- Menambahkan
LazyRowItems
- Analog scrolling horizontalLazyColumnItems
(Ibbcf7) androidx.ui.foundation.shape.RectangleShape
telah dihapus; gunakanandroidx.ui.graphics.RectangleShape
sebagai gantinya (I94939, b/154507984)- Menambahkan
Modifier.zoomable
untuk fungsionalitas cubit untuk zoom (Id5d63) - Komponen
Toggleable
tidak digunakan lagi. GunakanModifier.toggleable
sebagai gantinya (I35220, b/157642842) MutuallyExclusiveSetItem
tidak digunakan lagi. GunakanModifier.selectable
sebagai gantinya. (I02b47, b/157642842)- Menambahkan parameter
fontWeight
ke Text, yang sebelumnya tidak sengaja terlewatkan (I56937) - Parameter persen saat membuat panduan ConstraintLayout telah diganti namanya menjadi fraksi. (Ida2db)
- Menambahkan dukungan untuk margin penghalang ConstraintLayout. (I47ffe)
- Memperbaiki dukungan RTL di ConstraintLayout. Menambahkan API unaware RTL. (I3b1c7)
- DSL baru untuk ConstraintLayout telah ditambahkan. Lihat contoh untuk detail selengkapnya. (Icaa9a)
- Menambahkan anotasi
@ExperimentalLayout
. ConstraintLayout, FlowRow, dan FlowColumn sekarang diberi tag untuk menandai bahwa API mereka akan berubah. (I412a8) - Menambahkan Material Outlined Textfield (I1a518)
TabRow.TabPosition
tidak berisi posisi di Dp, bukan di IntPx (I34a07, b/158577776)Modifier.ripple
tidak digunakan lagi. Clickable kini menggunakan ripple sebagai indikasi default (jika Anda memiliki MaterialTheme {} yang disetel di aplikasi Anda) sehingga pada umumnya, Anda cukup menggunakan clickable saja dan mendapatkan indikasi ripple secara gratis. Jika Anda perlu menyesuaikan warna/ukuran/parameter terbatas untuk ripple, Anda dapat membuat RippleIndication secara manual dan meneruskannya ke clickable sebagai parameter indikasi. (I101cd, b/155375067)- Scaffold API telah dibuat ulang: beberapa parameter telah berubah namanya, menambahkan parameter baru untuk penyesuaian yang lebih baik. Menambahkan pengambil ke ukuran kueri Fab, TopBar, dan BottomBar (I0e7ce)
- Menambahkan parameter strokeWidth ke CircularProgressIndicator untuk menyesuaikan ukuran goresan. Untuk mengubah ukuran goresan (tinggi) LinearProgressIndicator, Anda dapat menggunakan Modifier.preferredHeight() atau pengubah ukuran lainnya. (Icea16, b/154919081)
- Menambahkan
relativeOffset(x, y)
keGestureScope
danPartialGestureScope
, yang menghasilkan instance Offset dengan nilai-nilai yang berhubungan dengan ukuran komponen.relativeOffset(.1f, .2f)
adalah Offset di mana x 10% dari lebar komponen dan y 20% dari tinggi komponen. (Ia4bf7, b/158291007) - Saat memasukkan klik dua kali dan klik panjang, Anda kini dapat menentukan durasi gestur yang dimasukkan tersebut. (I51c97, b/155464717)
Menambahkan properti ke GestureScope dan PartialGestureScope untuk mengakses koordinat umum sebuah komponen. Atribut itu adalah Float untuk properti 1 dimensi (seperti
right
) dan Offsets untuk properti 2 dimensi (seperticenterLeft
).Properti 1 dimensi adalah:
left
centerX
right
top
centerY
bottom
Properti 2 dimensi adalah: *
topLeft
*topCenter
*topRight
*centerLeft
*center
(sudah ada, disebutkan untuk kelengkapan) *centerRight
*bottomLeft
*bottomCenter
*bottomRight
Contoh penggunaan:
findByTag("widget") .doGesture { sendSwipe(topLeft, bottomRight) }
(I49ef3, b/158291007) - Menambahkan API injeksi gestur multi-sentuh untuk menguji komponen saat melakukan gestur multi-sentuh.
Saat menginjeksikan gestur, Anda sekarang dapat menetapkan beberapa
pointer dengan menyediakan ID pointer ke metode gestur parsial. Jika tidak ada
id pointer yang ditetapkan, pointer 0 diasumsikan, dan disebut pointer
default. Perhatikan bahwa semua gestur prefab (sendClick
, sendSwipe
, dan
semua metode yang dibuat di sini) menggunakan pointer default. Metode
berikut di PartialGestureScope sekarang memiliki beban berlebih yang menerima
ID pointer:
- sendDown
- sendMoveTo
- sendMoveBy
- sendUp
Setiap peristiwa kini berisi daftar lengkap lokasi saat ini dari setiap
pointer aktif (pointer aktif yang sedang tidak aktif), dan
metode yang tercantum di atas segera mengirimkan peristiwa. Selain itu, tiga metode
baru diperkenalkan:
- movePointerTo
- movePointerBy
- sendMove
Metode movePointerTo
dan movePointerBy
mengubah lokasi saat ini dari sebuah pointer, tetapi tidak mengirimkan peristiwa untuk menunjukkannya. Akibatnya, metode itu juga tidak memajukan waktu gestur saat ini. Hal ini memungkinkan Anda memindahkan beberapa pointer secara bersamaan. Metode terakhir, sendMove
, tidak menerima parameter apa pun dan hanya mengirimkan peristiwa pemindahan, memungkinkan Anda untuk "mengosongkan" semua gerakan pointer. Jika pointer telah diupdate dengan movePointerXx
, dan peristiwa down atau up akan dikirim, peristiwa pemindahan akan segera dikirim sebelum peristiwa down atau up.
Penentuan waktu semua metode juga sedikit berubah. Untuk saat ini, sendDown
dan sendUp
tidak lagi memajukan waktu gestur, sehingga Anda dapat mengirimkan beberapa pointer down atau up secara bersamaan. Semua metode lainnya memajukan waktu gestur. Saat ini tidak (belum) memungkinkan untuk mengubah delta waktu.
(I9acac, b/157142514)
- Menambahkan AnnotatedString.getStringAnnotations
yang menampilkan semua anotasi dalam rentang itu. (I1fa00)
Perbaikan Bug
- Memperkenalkan API animasi stateless tingkat rendah. API ini (I63bf7)
- 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 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 di berbagai class compose sebagai bagian dari upaya pemfaktoran ulang besar-besaran agar hanya mengandalkan jenis primitif dan Dp untuk parameter piksel (Id3434)
- Kini Crossfade dapat berfungsi dengan null sebagai nilai awal (Iad6a4, b/155947711)
- 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)
androidx.ui.foundation.TextFieldValue
danandroidx.ui.input.EditorValue
tidak digunakan lagi. ComposableTextField
,FilledTextField
, danCoreTextField
yang menggunakan jenis tersebut juga tidak digunakan lagi. Sebagai gantinya, gunakan androidx.ui.input.TextFieldValue (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.
Memperbarui
DrawScope.drawRoundRect
agar menggunakan satu parameter Radius, bukan 2 nilai float yang terpisah untuk radius sepanjang sumbu x dan y (I46d1b)Kursor TextField memiliki animasi berkedip (Id10a7)
Gestur parsial tidak lagi mengharuskan penerusan
GestureToken
(Id7ea5)Memperbaiki bug ConstraintLayout yang menyebabkan error pada rekomposisi. (Ibee5a, b/158164341)
Memperbaiki
onClick
yang tidak dipanggil untukDropdownMenuItem
. (I3998b, b/157673259)Mengubah nama paket untuk
Locale
danLocaleList
dariandroidx.ui.text
menjadiandroidx.ui.intl
(I8132c)
Versi 0.1.0-dev13
10 Juni 2020
androidx.ui:ui-*:0.1.0-dev13
dirilis. Versi 0.1.0-dev13 berisi commit berikut.
Masalah Umum
- Jika aplikasi bergantung pada
androidx.core:core-ktx:1.2.0
dan menggunakan FontFamily dengan beberapa font/ketebalan font, font akan dirender dengan ketebalan reguler. Kami akan menangani masalah ini, solusi sementaranya adalah dengan menggunakanandroidx.core:core-ktx:1.2.0-alpha01
atauandroidx.core:core-ktx:1.1.0
.
Versi 0.1.0-dev12
27 Mei 2020
androidx.ui:ui-*:0.1.0-dev12
dirilis. Versi 0.1.0-dev12 berisi commit berikut.
Perubahan API
- Menambahkan dukungan
animate()
untukDp
,Px
,Size
,Position
,Bounds
,PxPosition
,PxSize
,PxBounds
,IntPx
,IntPxSize
,IntPxPosition
,IntPxBounds
, danAnimationVector
(Ib7518, b/156559139) - Menambahkan komponen
DropdownMenu
diui-material
, untuk implementasi menu Desain Material. (I9bb3d, b/135742486) - Menghapus
LayoutTag()
yang tidak digunakan lagi, sebagai gantinya gunakan Modifier.tag(). (If8044, b/157020665, b/156577646) - Menghapus
Modifier.matchParent()
yang tidak digunakan lagi, sebagai gantinya gunakanModifier.matchParentSize()
. (If8044, b/157020665, b/156577646) - Mengganti penggunaan class Px di berbagai class compose sebagai bagian dari upaya pemfaktoran ulang besar-besaran guna hanya bergantung pada jenis primitive dan Dp untuk parameter piksel (I57bff, b/156681014)
- Modifier.semantics sudah tidak digunakan lagi untuk memungkinkan penggunaan komponen tingkat tinggi. (I4cfdc, b/153198273, b/154023028)
DoubleTapGestureFilter
sekarang membedakanSingleTapGestureFilter
di seluruh hierarki. (If92b1, b/147609897, b/148553848, b/138605697, b/148464969)- Memperbarui Alignment API dan menambahkan dukungan untuk perataan mutlak (yang tidak otomatis mencerminkan konteks Rtl) (I38cd3, b/153633345)
VerticalScroller
sekarang menyediakan Kolom secara otomatis.HorizontalScroller
sekarang menyediakanRow
secara otomatis. (Ieca5d, b/157020670)Modifier.indication
telah ditambahkan ke paket dasar. Gunakan API tersebut untuk menampilkan indikator tekan/tarik/lainnya pada elemen khusus yang digunakan untuk berinteraksi (I8425f, b/155287131)VerticalScroller
danHorizontalScroller
kini mendukung scroll balik jikaisReversed
ditetapkan padaScrollerPosition
(I953bd, b/155852672)- Mendukung penambahan composable ke tata letak teks. (I1373c, b/139320966)
- Menghapus DrawBackground API dan diganti dengan API ekstensi drawBackground di Pengubah. Memfaktorkan ulang implementasi drawBackground paint, kuas, dan warna untuk mengurangi jalur kode serta menghapus persyaratan agar Pengubah dibuat sebagai bagian dari komposisi. (I0343a, b/155999867)
Modifier.padding(InnerPadding)
telah ditambahkan (I94985, b/157133803)- Menghapus RowAlign, ColumnAlign in Row, dan Column yang tidak digunakan lagi. (If60d4, b/154524540, b/155858731)
- Menambahkan pengubah tata letak
offsetPx
, yang dapat digunakan untuk menentukan offset (dinamis) dalam px. (I5af57, b/154841615) - Mengizinkan penampilan/penyembunyian keyboard virtual secara manual menggunakan SoftwareKeyboardController (Ifb9d6, b/155427736)
- Mengganti nama
Emphasis.emphasize()
menjadiEmphasis.applyEmphasis()
(Iceebe, b/152874916) - Menambahkan utilitas untuk menyimulasikan gestur cubit dalam pengujian. (If6c42, b/145593752)
- Menghapus class
Size
yang tidak digunakan karena terdapat classSize
duplikat pada modului-geometry
yang sedang digunakan. (I1b602, b/156546424) AnnotatedString.Item
diganti namanya menjadiAnnotatedString.Range
. (I2d44d, b/156126205)Mengubah strategi pembuatan kode compiler Compose. Sebelum perubahan, compiler compose akan mengubah panggilan ke fungsi yang dapat dikomposisi. Dengan perubahan ini, sekarang kami mengubah isi fungsi yang dapat dikomposisi dan membiarkan callsite tidak berubah (sebagian besarnya).
Artinya, sebagian besar logika yang digunakan untuk berkomunikasi dengan runtime compose terjadi di awal isi fungsi, bukan di callsite.
Ini seharusnya menjadi perubahan yang kompatibel dengan sumber untuk semua penggunaan compose. Sebagian besar pengguna compose tidak perlu mengupdate kode apa pun karena perubahan ini.
Untuk mendukung tugas ini, tanda tangan JVM dari semua fungsi yang dapat dikomposisi telah berubah. Fungsi yang dapat dikomposisi yang menerima satu parameter diubah menjadi fungsi yang menerima 3 parameter. Parameter tambahannya adalah Composer, bilangan bulat 'kunci', dan bilangan bulat bitmask yang digunakan untuk menyebarkan metadata melalui panggilan.
Compose kini juga mengubah argumen default ke fungsi yang dapat dikomposisi. Hal ini dilakukan tanpa menimbulkan kelebihan beban default pada fungsi itu sendiri, sehingga perubahan ini akan menyebabkan lebih sedikit fungsi yang ditentukan.
Perubahan perilaku disengaja dan diketahui yang dihasilkan dari tindakan berikut:
- Beberapa panggilan akan melewati bagian, di mana tidak pernah dilakukan sebelumnya
- Ekspresi yang dapat dikomposisi dalam ekspresi argumen default kini berlangganan dan ditangani dengan benar
Tugas ini mencakup beberapa pengoptimalan:
- 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
- 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.
- 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
- 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:
Composer::startExpr
telah dihapusComposer::endExpr
telah dihapusComposer::call
tidak digunakan lagi- Kelebihan beban non-vararg pada
key
telah dihapus. Gunakan versivararg
ke depannya. - Anotasi Pivotal tidak digunakan lagi. Gunakan
key
sebagai pengganti. - ScopeUpdateScope::updateScope diubah untuk mengharapkan Function3, bukan Function1
- restartableFunction dan restartableFunctionN diupdate untuk menyertakan parameter waktu kompilasi tambahan
Anotasi @Model
tidak digunakan lagi
Anotasi
@Model
kini tidak digunakan lagi. Gunakanstate
danmutableStateOf
sebagai alternatif. Keputusan penghentian ini tercapai setelah diskusi yang dilakukan secara saksama.Justifikasi
Alasan mencakup, tetapi tidak terbatas pada:
- Mengurangi konsep dan area permukaan API yang perlu diajari
- Lebih selaras dengan toolkit lainnya yang dapat dibandingkan (Swift UI, React, Flutter)
- Keputusan yang reversibel. Kami dapat selalu mengembalikan
@Model
di lain waktu. - Menghapus penggunaan corner-case dan kesulitan untuk menjawab pertanyaan tentang mengonfigurasi @Model sebagai hal-hal yang perlu ditangani
- Class data
@Model
, yang setara, kode hash, dll. - Bagaimana cara membuat beberapa properti "diamati" dan yang lainnya tidak?
- Bagaimana cara menentukan kesetaraan struktural vs. referensi untuk digunakan dalam pengamatan?
- Class data
- Mengurangi "keganjilan" dalam sistem. Akan mengurangi kemungkinan seseorang menganggap sistem lebih cerdas dari seharusnya (contoh, mengetahui cara membedakan daftar)
- Membuat perincian pengamatan lebih intuitif.
- Meningkatkan kemampuan pemfaktoran ulang dari variabel -> properti pada class
- Berpotensi membuka kemungkinan untuk melakukan pengoptimalan khusus Status secara manual
- Lebih selaras dengan bagian ekosistem lainnya dan mengurangi ambiguitas terhadap immutable atau "menerapkan status yang dapat diubah"
Catatan Migrasi
Hampir semua penggunaan
@Model
yang sudah ada telah diubah dengan baik menggunakan salah satu dari dua cara. Contoh di bawah ini menampilkan class@Model
dengan dua properti hanya untuk keperluan contoh, dan menunjukkan class tersebut saat sedang digunakan dalam fungsi yang dapat dikomposisi.@Model class Position( var x: Int, var y: Int ) @Composable fun Example() { var p = remember { Position(0, 0) } PositionChanger( position=p, onXChange={ p.x = it } onYChange={ p.y = it } ) }
Alternatif 1: Gunakan
State<OriginalClass>
dan buat salinan.Pendekatan ini dibuat lebih mudah dengan class data Kotlin. Intinya, buat semua properti
var
sebelumnya menjadi propertival
pada class data, kemudian gunakanstate
sebagai ganti dariremember
, lalu tetapkan nilai status ke salinan clone aslinya menggunakan metode praktiscopy(...)
class data.Penting untuk diperhatikan bahwa pendekatan ini hanya berfungsi saat satu-satunya mutasi ke class tersebut dilakukan dalam cakupan yang sama tempat instance
State
dibuat. Jika class secara internal bermutasi sendiri di luar cakupan penggunaan tersebut, dan Anda mengandalkan pengamatannya, maka pendekatan berikutnya adalah yang sebaiknya Anda gunakan.data class Position( val x: Int, val y: Int ) @Composable fun Example() { var p by state { Position(0, 0) } PositionChanger( position=p, onXChange={ p = p.copy(x=it) } onYChange={ p = p.copy(y=it) } ) }
Alternatif 2: Gunakan
mutableStateOf
dan delegasi propertiPendekatan ini dibuat lebih mudah dengan delegasi properti Kotlin dan
mutableStateOf
API yang memungkinkan Anda membuat instance MutableState di luar komposisi. Intinya, ganti semua propertivar
dari class asal menggunakan propertivar
denganmutableStateOf
sebagai delegasi propertinya. Hal ini memiliki keuntungan bahwa penggunaan class tidak akan berubah sama sekali, kecuali implementasi internalnya. Perilaku ini tidak sepenuhnya identik dengan contoh aslinya, karena setiap properti saat ini diamati/berlangganan satu per satu, sehingga rekomposisi yang Anda lihat setelah pemfaktoran ulang berikut dapat menjadi lebih sempit (hal yang baik).class Position(x: Int, y: Int) { var x by mutableStateOf(x) var y by mutableStateOf(y) } // source of Example is identical to original @Composable fun Example() { var p = remember { Position(0, 0) } PositionChanger( position=p, onXChange={ p.x = it } onYChange={ p.y = it } ) }
(I409e8, b/152050010, b/146362815, b/146342522, b/143413369, b/135715219, b/143263925, b/139653744)
Perbaikan Bug
- Memperbaiki bug: Teks tidak dirender dengan benar saat ketebalan dan jenis font disarangkan pada AnnotatedString. (I77a9d, b/155081453)
- Menggabungkan implementasi CanvasScope sehingga hanya terdapat DrawScope dan ContentDrawScope
- Mengganti nama CanvasScope menjadi DrawScope.
- Memperbarui DrawScope guna mengimplementasikan antarmuka Density dan menyediakan LayoutDirection
- Menghapus subclass DrawScope dalam ContentDrawScope
- Painter dan PainterModifier telah diperbarui agar tidak lagi menyimpan properti RTL sendiri karena DrawScope telah menyediakannya secara otomatis (I1798e, b/155918846)
- Mengganti penggunaan class Px di berbagai class compose sebagai bagian dari upaya pemfaktoran ulang besar-besaran guna hanya bergantung pada jenis primitive dan Dp untuk parameter piksel (Iede0b, b/156681014)
Versi 0.1.0-dev11
14 Mei 2020
androidx.ui:ui-*:0.1.0-dev11
dirilis. Versi 0.1.0-dev11 berisi commit berikut.
Perubahan API
- Kini Crossfade menerima parameter
AnimationBuilder
opsional untuk memungkinkan pengonfigurasian animasi (I6d6e0) - API lambda akhir WithConstraints telah diubah. Sebagai ganti dari dua parameter, kini API tersebut memiliki cakupan penerima, selain batasan dan layoutDirection yang menyediakan properti
minWidth
,maxWidth
,minHeight
, danmaxHeight
di Dp (I91b9, b/149979702) - Mengganti nama
LayoutModifier2
menjadiLayoutModifier
. (Id29f3) - Menghapus antarmuka
LayoutModifier
yang tidak digunakan lagi. (I2a9d6) HorizontalScroller
danVerticalScroller
kini memulihkan posisi scroll-nya menggunakan status instance tersimpan. (Ia0fae, b/155075048)FocusManagerAmbient
dihapus. GunakanFocusModifier.requestFocus
untuk memperoleh fokus. (Ic4826)- Tata letak tabel sementara waktu dihapus hingga kami menyediakannya kembali dengan API baru. (Id88a7)
- Membuat CanvasScope API yang menggabungkan objek Canvas untuk mengekspos antarmuka API gambar yang deklaratif dan stateless. Transformasi disertakan dalam cakupan penerimanya sendiri dan informasi ukuran juga mencakup batas inset yang sesuai. Ini tidak mengharuskan konsumen untuk mempertahankan stateobject Paint-nya sendiri dalam mengonfigurasi operasi gambar.
- Menambahkan CanvasScopeSample serta mengupdate aplikasi demo guna menyertakan Demo grafis deklaratif (Ifd86d)
ColoredRect
telah dihapus Sebagai gantinya, gunakanBox
dengan pengubahdrawBackground
(I983c7, b/152753731)- Menambahkan penyesuaian warna kursor ke
TextField
(I6e33f) - Kini Anda dapat menyembunyikan/menampilkan keyboard virtual dengan menggunakan
SoftwareKeyboardController
yang dikirim oleh callbackonTextInputStarted
(I8dc44, b/151860051) TextFieldValue
yang digunakan denganTextField
kini dapat bertahan dari pembuatan ulang aktivitas jika digunakan seperti ini: teks variabel persavedInstanceState(saver = TextFieldValue.Saver) { TextFieldValue() }
(I5c3ce, b/155075724)- Menambahkan parameter yang sering digunakan ke
Text()
. Jika saat ini Anda membuat jenis teks lokal untuk meneruskan sejumlah parameter berikut, sepertiText(style = TextStyle(textAlign = TextAlign.Center))
, Anda dapat memberikan parameternya secara langsung:Text(textAlign = TextAlign.Center)
(I82768) - Mengganti parameter
CoreTextField/TextField
focusIdentifier
denganFocusNode
agar dapat berintegrasi dengan subsistem yang menjadi fokus. (I7ea48) - Memperbarui TextField agar menempati semua ruang yang tersedia yang diberikan dalam dimensi horizontal (Ib08df, b/154638552)
- AlignmentLineOffset yang dapat disusun sudah tidak digunakan lagi, sebagai gantinya harap gunakan pengubah relativePaddingFrom(). CenterAlignmentLine yang dapat disusun telah dihapus. (I60107)
- Menambahkan pengubah tata letak
defaultMinSizeConstraints
, yang menentukan batasan ukuran ke tata letak gabungan saja saat batasan tersebut belum ditentukan (0 untuk batasan minimal dan tidak terbatas untuk batasan maksimal). (I311ea, b/150460257) Container
telah dihapus Sebagai gantinya, gunakanBox
(Ibbc2b, b/151407926)- Menghapus pengubah
LayoutWidth
/Height
/Size
yang tidak digunakan lagi. (Ib0bc1) - Menambahkan parameter value default untuk pengubah offset. (I37f06)
- Menambahkan pengubah padding simetris. (I39840, b/152941819)
- Menghapus penggubah
LayoutAspectRatio
yang tidak digunakan lagi. (I65a74) - Memperbaiki bug pada lebar dan tinggi pengubah yang menyebabkan layout gabungan diukur tanpa batasan sumbu yang berlawanan. (I210b8, b/154797971)
- Desain tombol yang tidak aktif kini mengikuti spesifikasi Desain Material (I47dcb, b/155076924)
FilledTextField
mendapatkan tindakan IME, transformasi visual, dan dukungan jenis keyboard (I1f9cf, b/155075201)- Menambahkan parameter
strokeWidth
keCircularProgressIndicator
untuk menyesuaikan ukuran goresan. Untuk mengubah ukuran (tinggi) goresanLinearProgressIndicator
, Anda dapat menggunakanModifier.preferredHeight()
atau pengubah ukuran lain. (Icea16, b/154919081) - Menambahkan slot API untuk ikon awal dan akhir pada
FilledTextField
dan menangani status error-nya (Ic12e0) - Menambahkan tindakan
doPartialGesture
dengan penerima PartialGestureScope yang memiliki metodesendDown
,sendMoveTo
,sendMoveBy
,sendUp
, dansendCancel
. (I6b058, b/152477560) - Menambahkan metode
sendDown
,sendMove
,sendUp
, dansendCancel
keInputDispatcher
danGestureToken
untuk menggabungkan peristiwa sentuh individu ke dalam satu gestur. (Ibd278, b/152477560) - Menambahkan operator plus untuk (Text/Paragraph/Span)Style yang didelegasikan ke fungsi merge(). (Ia1add)
- Project
ui-framework
danui-platform
telah digabungkan menjadiui-core
, sehingga semua dependensi pada modul tersebut hanya perlu bergantung pada ui-core. (/I70067)
Perbaikan Bug
- 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)
- Menghapus pengubah
LayoutAlign
yang tidak digunakan lagi. (I10877) - Menambahkan
Toolbar
untuk operasi terkait teks. (I49d53)
Versi 0.1.0-dev10
29 April 2020
androidx.ui:ui-*:0.1.0-dev10
dirilis. Versi 0.1.0-dev10 berisi commit berikut.
Perubahan API
- Mengganti semua penggunaan
Color
nullable di API dengan yang non-nullable dan menggunakanColor.Unset
, bukannull
(Iabaa7) - Fungsi pengukuran intrinsik di
Layout
danLayoutModifier2
sekarang memiliki penerimaIntrinsicMeasureScope
yang menyediakan API kueri intrinsik dengan arah tata letak yang disebarkan secara implisit. (Id9945) - Turunan
Layout
danLayoutModifier
dapat diukur dengan arah tata letak yang berbeda. (Ibd731) Modifier.zIndex()
baru ditambahkan untuk mengontrol urutan gambar turunan dalam tata letak induk yang sama. Properti elevasi padaDrawLayerModifier
diganti namanya menjadishadowElevation
dan tidak lagi mengontrol urutan gambar. Urutan parameterDrawShadow
telah diubah: parameter pertama kini menjadielevation
dan parameter kedua kini menjadishape
, dengan defaultRectangleShape
. (I20150, b/152417501)- Menghapus
onSizeChange
danonPositionChange
diOwner
. (I5c718) - Menambahkan
Constraints2
, salinanConstraints
yang hanya mendukung nilai konstantaInt
bukanIntPx
.IntPx
akan dihapus dan semua batasan bilangan bulat akan diasumsikan sebagai piksel seperti Android.- Juga menambahkan
IntSize
, yang nantinya akan menggantikanIntPxSize
. (I4b43a)
- Juga menambahkan
- Menambahkan
InteractionState
danInteraction
, yang mempermudah pembuatan komponen yang bereaksi terhadap perubahan status UI seperti menekan, dan menarik (Icfe25, b/152525426) RectangleShape
telah dipindahkan dariandroidx.ui.foundation.shape.*
keandroidx.ui.graphics.*
(Ia74d5, b/154507984)- Update
TextField
API - callbackonFocus
danonBlur
telah digabung menjadi callbackonFocusChange(Boolean)
tunggal dengan parameter boolean (I66cd3) FontLoader
telah dihapus Silakan gunakanfontResource
. (Id0308)- Menghapus
MaskFilter
API yang tidak digunakan karena memiliki penggunaan terbatas dan tidak dioptimalkan untuk akselerasi hardware dalam sebagian besar kasus penggunaan (I54f76) - Menambahkan Unset
Color
untuk merepresentasikan nilai yang belum ditetapkan tanpa boxing `Colors. (If901a) - Menambahkan metode ekstensi
Canvas.rotate
danCanvas.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
menjadi metode ekstensi untuk konsistensi (Ibaca6)
- Juga memindahkan
- Warna default FAB dan FAB yang Diperluas telah diubah menjadi
MaterialTheme.colors.secondary
. (I3b9b9, b/154118816) - Tidak perlu lagi memanggil
onIdle()
secara eksplisit setelahComposeTestRule.setContent {}
. (Iafb2e, b/154079800) - Anda sekarang dapat meneruskan
ActivityTestRule
kustom keAndroidComposeTestRule
(I38206, b/153623653) - Menambahkan
getLineStart
,getLineEnd
,getEllipsisOffset
, dangetEllipsisCount
keTextLayoutResult
(Ibc801) FontWeight.lerp
tidak lagi terpisah. Class tersebut masih merupakan class data. (I521c2)- Konstruktor
FontWeight
kini bersifat publik, bukan lagi class data. (Id6b1f)
Perbaikan Bug
- Memperkenalkan parameter persegi panjang opsional tambahan ke
ImagePainter
untuk mendukung penggambaran subbagianImageAsset
yang mendasarinya (I0ea9e) - Memperbaiki error di
AdapterList
saat menghapus item (Ic64b0, b/153195921) - Sekarang, Anda diharuskan untuk menggunakan
ComposeTestRule
agar Finders (seperti findByTag) dapat berfungsi (I75bb9, b/153565271)
Versi 0.1.0-dev09
15 April 2020
androidx.ui:ui-*:0.1.0-dev09
dirilis. Versi 0.1.0-dev09 berisi commit berikut.
Perubahan API
- Membuat Alignment instantiable dengan nilai arbitrer. Menambahkan Alignment 1D. (Ia0c05)
alignToSiblings now accepts a
Measuredinstead of
Placeable`. (I5788d)- (I45f09, b/152842521)
- Mengganti nama
ScaleFit
menjadiContentScale
- Memindahkan
ContentScale
dariui-graphics
ke modului-core
agar berada dalam modul yang sama dengan Alignment API. - Mengganti nama
FillMaxDimension
menjadiCrop
- Mengganti nama
FillMinDimension
menjadiFit
- Mengganti nama
Fit
menjadiInside
agar cocok denganImageView.ScaleType
yang setara - Dokumentasi tambahan yang menunjukkan kombinasi dari
Crop
danAlignment.Center
mendapatkan hasil yang sama sepertiImageView.ScaleType.CENTER_CROP
, danFit
yang digunakan denganAlignment.Center
mendapatkan hasil yang sama sepertiImageView.ScaleType.FIT_CENTER
Inside
yang digunakan denganAlignment.Center
mendapatkan hasil yang sama sepertiImageView.ScaleType.CENTER_INSIDE
- Mengganti nama
- Menambahkan dukungan Rtl untuk pengubah gambar. (I0aaf9)
- Merilis API untuk meng-inflate Tampilan Android dari XML. Lihat demo ViewInCompose untuk mengetahui detail selengkapnya. (I42916)
- Menambahkan
positionInParent
danboundsInParent
untukLayoutCoordinates
. (Icacdd, b/152735784) DrawLayerModifier
dandrawLayer()
sekarang mengubah defaultclipToBounds
danclipToOutline
menjadifalse
. (I0eb8b, b/152810850)- Mengganti nama
LayoutResult
menjadiMeasureResult
. (Id8c68) - Menambahkan
LayoutModifier2
, API baru untuk menentukan pengubah tata letak; tidak menggunakan lagiLayoutModifier
(If32ac) - Menghapus
ProvideContentColor
, sebagai gantinya gunakanContentColorAmbient
langsung denganProviders
(Iee942) - Menambahkan parameter warna ke teks, memungkinkan penggantian warna gaya teks tanpa perlu menggabungkan dengan gaya yang disediakan dalam tema secara manual. (I41a66)
- Sistem bertema bentuk telah diperbarui berdasarkan spesifikasi desain Material. Sekarang Anda dapat menyediakan bentuk kecil, sedang, dan besar untuk digunakan oleh sebagian besar komponen (Ifb4d1)
LayoutDirectionAmbient
tidak digunakan lagi. Untuk membaca arah tata letak yang ditentukan oleh lokal, gunakanlocaleLayoutDirection
padaConfigurationAmbient
(I851b1)LifecycleOwnerAmbient
baru kini tersedia. Sekarang, Aktivitas yang Anda gunakan dengan Compose UI akan memperluasandroidx.activity.ComponentActivity
(atauAppCompatActivity
).setContent
padaandroid.app.Activity
sekarang sudah tidak digunakan lagi (Idb25a, b/153141084)- Memunculkan RTL dukungan (Ib6657)
- Menambahkan
ClipboardManager
. (I1dd2b) - Menambahkan dukungan untuk menyesuaikan dimensi turunan dari ConstraintLayout (Idb1a5)
OnChildPositioned
telah dihapus Sebagai gantinya, developer sebaiknya menggunakan pengubahModifier.onChildPositioned
. (I5ade7, b/151141173, b/151641453, b/151818355)- Mengganti nama
toFrameworkRect
/toFrameworkRectF
menjaditoAndroidRect
/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) - Mengganti nama
EdgeInsets
menjadiInnerPadding
. Mengganti parameter innerPadding dari Material Button menjadi padding. (I66165) - Menambahkan pengubah untuk mengubah ukuran ke pengukuran intrinsik dan menghentikan penggunaan komponen yang digunakan atas tujuan ini. (I8295d)
- Menghapus
Wrap
danCenter
yang dapat disusun yang tidak digunakan lagi. (I29e23) - Penggeser sekarang bersifat stateless. Pengguna perlu meneruskan dan memperbarui statusnya sendiri, seperti halnya pada kontrol lainnya. (Ia00aa)
StaticDrawer
telah dihapus. Jika Anda memerlukannya, gunakanBox
dengan lebar yang ditentukan material (I244a7)- Menambahkan param pengubah ke ListItem dan mengurutkan ulang param untuk mempromosikan konten lambda di akhir (I66e21)
- Menambahkan parameter konstruktor
defaultFontFamily
keTypography
, sehingga memungkinkan penentuan jenis font default yang akan digunakan untuk setiap TextStyles yang disediakan yang tidak memiliki kumpulan jenis. (I89d07) - Menghapus Tabel Data Material untuk sementara dari antarmuka API. (Iaea61)
- Mengganti nama parameter dalam
Divider
yang dapat disusun (Ic4373) - Parameter "turunan" di akhir diganti namanya untuk berbagai komponen Material. Harap gunakan nama baru jika Anda menggunakannya melalui param bernama (atau cukup gunakan sintaksis lambda di akhir) (Ia6d19)
- Menghapus
MaterialTheme.emphasisLevels
, sebagai gantinya gunakanEmphasisAmbient.current
untuk mengambil level penekanan (Ib5e40) savedInstanceState()
sekarang dapat digunakan dengan jenis nullable (I6847f, b/153532190)Menambahkan
ui-rxjava2
- artefak baru dengan adaptor untuk RxJava2. (Ifab4b, b/153369097)- Contoh penggunaan:
val value by observable.subscribeAsState()
Menambahkan
ui-livedata
- artefak baru dengan adaptor untuk LiveData. (Ie9e8c, b/150465596)- Contoh penggunaan:
val value by liveData.observeAsState()
Perbaikan Bug
- Menambahkan parameter
verticalGravity
danhorizontalGravity
keRow
danColumn
. (I7dc5a) ui-text module was renamed as
ui-text-core` (I57dec)- Menyempurnakan
DrawModifier
API ((Ibaced, b/152919067)):- Membuat cakupan penerima untuk
draw()
ContentDrawScope
- Menghapus semua parameter pada
draw()
DrawScope
memiliki antarmuka yang sama sepertiCanvasScope
terdahuluContentDrawScope
memiliki metodedrawContent()
- Membuat cakupan penerima untuk
runOnIdleCompose
danrunOnUiThread
sekarang menjadi fungsi global, sebagai ganti metode padaComposeTestRule
. (Icbe8f)- [Mutable]Operator delegasi properti status dipindahkan ke ekstensi untuk mendukung pengoptimalan delegasi properti Kotlin 1.4. Pemanggil harus menambahkan impor untuk terus menggunakan
by state { ... }
atauby mutableStateOf(...)
. (I5312c) ColoredRect
tidak digunakan lagi. Silakan gunakanBox(Modifier.preferredSize(width, height).drawBackground(color))
. (I499fa, b/152753731)- Kami mengubah cara kami mengukur tata letak pertama yang Anda masukkan ke dalam blok
activity.setContent { }
. Sebelumnya, tata letak dipaksa mengisi seluruh layar aktivitas, dan sekarang berperilaku seolah-olah Anda memasukkan tata letak ke dalam Stack: tata letak bisa lebih kecil dari layar dan akan diposisikan di sebelah kiri atas layar. Jika Anda menginginkan perilaku lama, Anda dapat menerapkan Modifier.fillMaxSize() untuk tata letak Anda. (Ie88a7, b/153453714) - Modul
ui-text-compose
diganti namanya menjadiui-text
.ui-text
sekarang berisiCoreText
danCoreTextField
yang dapat disusun (Ib7d47) - Memindahkan
ui-framework/CoreText
danCoreTextField
yang dapat disusun di bawahui-text-compose
. Anda dapat menyertakanui-text-compose
dalam project Anda. (I32042) - Memperbarui
wrapContentWidth
danwrapContentHeight
yang mengharapkanAlignment
vertikal atau horizontal, bukanAlignment
. Pengubah gravitasi diperbarui untuk menerimaAlignment
vertikal atau horizontal.Row
,Column
, danStack
diperbarui untuk mendukungAlignment
kustom berkelanjutan. (Ib0728) - Membuat
PixelMap
API untuk mendukung permintaan informasi piksel dariImageAsset
. (I69ad6) - Menambahkan implementasi Desain Material dari Kolom Teks yang Terisi (Ic75cd)
- Nama paket
ui-android-text
(androidx.text
) telah diganti denganandroidx.ui.text.platform
agar sesuai dengan kebijakan androidx. (I42711)
Versi 0.1.0-dev08
1 April 2020
androidx.ui:ui-*:0.1.0-dev08
dirilis. Versi 0.1.0-dev08 berisi commit berikut.
Perubahan API
- 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 (Ikf7c3) - Draggable telah dipindahkan ke pengubah (Id9b16, b/151959544)
- Memindahkan
Text
ke paketandroidx.ui.foundation
, dariandroidx.ui.core
. (I87ce5) - Menambahkan param
enabled
ke Checkbox, Switch, dan Toggleable I41c16) - Ripple kini menjadi Modifier. Meskipun Clickable belum dikonversi, penggunaan yang direkomendasikan adalah
Clickable(onClick = { ... }, modifier = ripple())
(Ie5200, b/151331852, b/150060763) - Menambahkan VectorPainter API untuk menggantikan API subkomposisi yang ada untuk grafik vektor. Hasil subkomposisi adalah objek VectorPainter, bukan DrawModifier.
- Penggunaan DrawVector yang dapat disusun sebelumnya tidak digunakan lagi dan diganti dengan VectorPainter.
- Mengganti nama
Image(Painter)
API menjadiPaintBox(Painter)
- Membuat
Vector
yang dapat disusun berperilaku sepertiImage
yang dapat disusun denganVectorAsset
, bukanImageAsset
(I9af9a) (b/149030271)
ParentData
yang dapat disusun sudah tidak digunakan lagi. Sebaiknya buat pengubah yang mengimplementasikan antarmukaParentDataModifier
, atau gunakan pengubahLayoutTag
jika Anda hanya perlu memberi tag turunan tata letak agar dapat mengenalinya di dalam blok pengukuran. (I51368, b/150953183)OnPositioned
dihapus dan diganti dengan pengubahonPositioned
(I2ea3c)- Anggota
RowScope
danColumnScope
kini dapat diakses dari luarRow
danColumn
. (I3a641) Container
kini sudah tidak digunakan lagi. Silakan gunakanBox
. (I675ce, b/151407926)FloatingActionButton
API telah difaktorkan ulang untuk menerima lambda yang dapat disusun, bukan primitive. Lihat contoh terbaru untuk mengetahui informasi penggunaan. (I00622)- Fungsi baru:
savedInstanceState()
danrememberSavedInstanceState()
. Keduanya mirip denganstate()
danremember()
, tetapi memiliki build dukungan status instance yang tersimpan (If1987, b/152025209)
Perbaikan Bug
- Mengganti operator Modifier plus dengan fungsi ekstensi pabrik (I225e4)
- Center yang dapat disusun sudah tidak digunakan lagi. Ini harus diganti dengan pengubah
LayoutSize.Fill
+LayoutAlign.Center
, atau dengan salah satu dariBox
atauStack
yang dapat disusun dengan pengubah yang cocok dan sudah diterapkan Idf5e0) - Mengubah
MaterialTheme
API sepertiMaterialTheme.colors()
danMaterialTheme.typography()
menjadi properti, bukan fungsi. Menghapus tanda kurung dari panggilan yang ada dan tidak mengharapkan adanya perubahan perilaku. (I3565a)
Versi 0.1.0-dev07
18 Maret 2020
androidx.ui:ui-*:0.1.0-dev07
dirilis. Versi 0.1.0-dev07 berisi commit berikut.
Perubahan API
- Penambahan API ke ManualAnimationClock:
hasObservers: Boolean
dan parameter konstruktordispatchOnSubscribe: Boolean
(Iaa134) - Menambahkan OnPositionedModifier dan OnChildPositionedModifier untuk menggantikan fungsi OnPositioned dan OnChildPositioned yang dapat disusun. (I2ec8f)
- Menambahkan LayerModifier, pengubah yang mengizinkan penambahan RenderNode untuk Tata letak. 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)
- Membuat Image yang dapat disusun untuk menangani pengubahan ukuran/tata letak selain menggambar ImageAsset tertentu ke layar. Gambar yang dapat disusun ini juga mendukung semua instance Painter arbitrer yang berkaitan dengan ukuran intrinsiknya, serta mendukung ukuran yang telah ditetapkan atau ukuran minimumnya (Ibcc8f)
- 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. (Id5bbd)
- Membuat metode ekstensi pada
android.graphics.Bitmap
danBitmap.asImageAsset()
untuk membuat instance dari ImageAsset yang berguna untuk menggabungkan pengembangan aplikasi Android tradisional dengan framework compose. (Id5bbd) androidx.compose.ViewComposer
telah dipindahkan keandroidx.ui.node.UiComposer
danandroidx.compose.Compose.subcomposeInto
telah dipindahkan keandroidx.ui.core.subcomposeInto
(Idef00)- Menghapus fungsi Layout Composable yang menerima vararg turunan. (I8f7f6)
WithConstraints
memiliki parameterLayoutDirection
(I6d6f7)- Menambahkan pengubah LayoutOffset untuk mengimbangi posisi tata letak (I0b8a3)
- Surface dan Card dipindahkan dari
androidx.ui.material.surface
keandroidx.ui.material
(I88a6d) (b/150863888)
Perbaikan Bug
- Mengganti nama LayoutFlexible menjadi LayoutWeight. Mengganti nama parameter tight menjadi fill. (If4738)
- Fungsi Opacity yang dapat disusun telah diganti dengan pengubah drawOpacity. (I5fb62)
- Sekarang pengujian yang menggunakan AndroidComposeTestRule menyediakan jam animasi pada root komposisi yang memungkinkannya untuk dijeda, dilanjutkan, dan dilanjutkan secara manual. (Id54c5)
- 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) - DrawVector telah diubah dari fungsi reguler yang dapat disusun menjadi menampilkan drawVector() Modifier yang akan menggambar vektor sebagai latar belakang dari suatu tata letak. (I7b8e0)
- Mengganti fungsi Clip yang dapat disusun dengan drawClip() pengubah. DrawClipToBounds adalah pengubah yang dapat digunakan dengan mudah saat Anda hanya perlu menyesuaikan nilai layer yang terhubung yang memiliki bentuk persegi panjang. (If28eb)
- Mengganti fungsi yang dapat disusun DrawShadow dengan pengubah drawShadow(). Sekarang bayangan digambar sebagai bagian dari LayerModifier. (I0317a)
- Wrap yang dapat dikomposisi sudah tidak digunakan lagi. Ini dapat diganti dengan pengubah LayoutAlign atau dengan Stack yang dapat disusun (Ib237f)
- Mengganti nama Painter.toModifier menjadi Painter.asModifier karena Modifier yang baru dibuat memiliki referensi ke Painter asli yang dapat dibagikan ke beberapa instance Modifier (I7195b)
- Padding negatif di LayoutPadding sekarang tidak diizinkan. Sebagai gantinya, gunakan LayoutOffset untuk offset posisi negatif. (Ifb5b1)
Versi 0.1.0-dev06
4 Maret 2020
androidx.ui:ui-*:0.1.0-dev06
dirilis. Versi 0.1.0-dev06 berisi commit berikut.
Perubahan API
- Komponen stack mendukung arah kanan-ke-kiri (Ic9e00)
- Dukungan awal untuk Rtl dalam tata letak Compose (Ia5519)
- Menambahkan Icon, IconButton, dan IconToggleButton, serta menghapus AppBarIcon. Anda dapat langsung mengganti penggunaan AppBarIcon yang ada dengan IconButton, dan target sentuhnya akan menjadi benar. Lihat contoh untuk mengetahui informasi penggunaan, dan lihat Ikon untuk Ikon Material yang telah tersedia yang dapat Anda gunakan secara langsung dengan komponen ini. (I96849)
- Snackbar API dengan parameter String telah dihapus, karena telah digantikan dengan overload yang menerima lambda yang dapat dikomposisi. Lihat contoh terbaru untuk mengetahui informasi penggunaan (I55f80)
- Tab API telah difaktorkan ulang untuk menerima lambda
text
danicon
(Ia057e) - Komponen BottomNavigation telah ditambahkan, lihat dokumen dan contoh untuk mengetahui informasi penggunaannya (I731a0)
- Menambahkan dukungan untuk memanggil tindakan semantik kustom. (I8c818)
Perbaikan Bug
- Mendukung arah kanan-ke-kiri dalam pengubah LayoutPadding (I9e8da)
Versi 0.1.0-dev05
19 Februari 2020
androidx.ui:ui-*:0.1.0-dev05
dirilis. Versi 0.1.0-dev05 berisi commit berikut.
Perubahan API
- Menambahkan Painter API. Membuat API untuk menggambar konten secara abstrak ke region yang ditentukan. Perilaku ini mirip dengan Drawable API, tetapi menyediakan antarmuka API yang lebih sederhana. Selain itu, terdapat implementasi umum untuk menerapkan berbagai efek seperti alfa dan menerapkan ColorFilters untuk implementasi gambar arbitrer dengan kemampuan implementasi tersebut untuk menyediakan dukungan yang lebih dioptimalkan untuk fasilitas ini. (aosp/1214802)
- Perubahan yang dapat menyebabkan gangguan pada API ambien. Lihat log dan dokumentasi
Ambient<T>
untuk mengetahui detail selengkapnya (I4c7ee, b/143769776) - 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) - 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 dukungan awal untuk menyematkan Tampilan Android ke dalam Compose. Lihat demo ViewInCompose.kt untuk mengetahui detail selengkapnya. (I6d1ce)
- LayoutAlign telah diperbarui agar tidak mengisi ruang yang tersedia (I2b14f)
- Menambahkan modul
androidx.ui:ui-material-icons-core
danandroidx.ui:ui-material-icons-extended
. Anda dapat bergantung padaandroidx.ui:ui-material-icons-extended
agar dapat langsung menggunakan semua ikon Material (material.io/icons) dari dalam Compose. Subset kecil (yang saat ini berjumlah tiga, dan akan bertambah di masa mendatang) termasuk ikon yang paling sering digunakan akan langsung disertakan sebagai bagian dari library material UI utama, jadi Anda tidak perlu menambahkan dependensi besar ini untuk menggunakan ikon seperti Menu. Lihat dokumentasiandroidx.ui.material.icons.Icons
dan contoh terkait untuk mengetahui informasi selengkapnya. - AspectRatio yang dapat disusun telah dihapus dan diganti dengan pengubah. Menghapus FlexColumn yang tidak digunakan lagi, FlexRow yang dapat disusun, dan pengubah Spacing (Iec8a7)
- Mengganti ButtonStyle dengan fungsi yang berbeda dan menghapus kelebihan beban pada teks (string). Lihat contoh Button terbaru untuk mengetahui informasi penggunaannya. (If63ab, b/146478620, b/146482131)
Perbaikan Bug
- 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)
Masalah Umum
- Perubahan terhadap properti semantik komponen secara tidak benar menyebabkan semua status pada turunan hilang, mengakibatkan error pada animasi dan semua yang bergantung pada status yang tetap pada seluruh rekomposisi. Karena lambda saat ini tidak dapat dibandingkan, ini mencakup komponen apa pun yang menetapkan tindakan semantik menggunakan lambda non-
remember
ed, seperti Scroller. Masalah ini akan diperbaiki dalam rilis berikutnya. (b/148606417)
Versi 0.1.0-dev04
29 Januari 2020
androidx.ui:ui-*:0.1.0-dev04
dirilis. Commit yang disertakan dalam versi ini dapat dilihat (di sini).
Perubahan API
- Menjadikan ID pointer unik secara universal. (I42cde)
- Penggabungan node semantik (aosp/1138236)
- Penyempurnaan pada antarmuka API Constraints (I0fd15)
PathParser
danPathNode
/PathCommand
telah difaktorkan ulang (I715ae)- Mengupdate antarmuka API DpConstraints (I712a0)
- Dukungan untuk pengubah yang mengimplementasikan beberapa antarmuka telah ditambahkan. (I22c16)
- Tindakan batalkan untuk bagian lain pendeteksi gestur telah diimplementasikan. (I349f4)
Color.compositeOver()
telah ditambahkan ke Color (I5379d)- Menghapus beberapa class yang tidak diperlukan untuk
androidx.ui:ui-core
:ImageByteFormat
,ImageRepeat
,Matrix2
. (I45e6b) - Kompilasi Kotlin inkremental dalam project Compose telah diaktifkan (b/144304390)
- Menggabungkan Pengubah dengan
+
(Ic33d3) - Pengubah LayoutTag telah ditambahkan (I69fe4)
- Atribut ParagraphStyle telah ditambahkan ke TextStyle (If0d40)
- DrawModifier, jenis pengubah yang diizinkan untuk menggambar di permukaan tata letak yang dimodifikasi, telah ditambahkan. (I5fa56)
- Mengubah penyimpanan untuk posisi pengubah menjadi relatif. (I5977f)
- API pengujian telah ditambahkan untuk melakukan gerakan geser pada elemen (I9125a)
- Komponen Box telah ditambahkan untuk menggabungkan fungsi umum tata letak dan menggambar. (I6e2a7)
- Sekarang, scroller menampilkan perilaku gerakan lempar pada Android native. (b/147493715)
- DrawBorder diganti dengan Border Modifier (Id335a)
- Deteksi gestur Scroller telah disempurnakan. (I87d36)
- Menambahkan metadata contentColor ke fondasi (Icd074)
- Komponen material Scaffold telah ditambahkan. Scaffold mengimplementasikan struktur tata letak visual desain material dasar. (I7731b)
- Menggunakan contentColor param Surface yang baru di Buttons (b/146210556)
textStyle.withOpacity()
telah dihapus (I8cc9a)- Menambahkan subsistem Emphasis (Ife95c)
- Sekarang, properti FAB
FloatingActionButtonKt
bersifat pribadi (I9c121) - Iterasi pertama dari Snackbar telah diimplementasikan (If1c08)
- Dukungan awal untuk tema gelap telah ditambahkan (I6323a)
- Ukuran, pusat, dan localToGlobal telah ditambahkan ke
GestureScope
(I1ea37) - Menambahkan API untuk injeksi gestur klik dua kali (I44902)
sendLongClick methods
telah ditambahkan keGestureScope
(Ic7db9)- Mengonversikan (x, y) ke
PxPosition
dalam injeksi gestur (Ifefa4) - Kecepatan yang diinginkan telah ditambahkan ke gestur yang diinjeksikan (I3b9df)
- Pengambilan bitmap telah ditambahkan ke dalam Compose test API (
androidx.ui:ui-test
). (I4e36c) doClick
telah dipindahkan keGestureScope
(I56211)findBySubstring
dan filter yang sesuai telah ditambahkan keFindersKt
. (Ief0b9)- Batas Pemilihan Teks Hingga 1 Karakter Telah Difaktorkan Ulang. (Iff757)
- TextSpan telah dihapus (Iebece)
- Class Composition dihapus dan digantikan class dasar Composer (Ieadbf)
- Vektor defaultWidth/defaultHeight telah diubah untuk menggunakan Dp (Iad267)
- Membuat grup dengan tepat pada panggilan composable inline (Ibf739)
- Pembuatan prototipe tanda di Gesture Detectors telah diaktifkan. (I4b7b0)
- Mengubah argumen maxLines dan elipsis dari nullable menjadi non-null (I46dac)
- Sekarang, AnnotatedString menggunakan SpanStyle (Ib6d3e)
- Dukungan pengubah untuk WithConstraints telah ditambahkan (b/145399789)
- Meneruskan gaya paragraf ke TextDelegate (Id2d4a)
- Class
SpanStyle
telah ditambahkan (Ifdb4f) - Menggunakan nilai default, alih-alih Float nullable di
TextGeometricTransform
. (I1bf00) PreviewActivity
telah ditambahkan keandroidx.ui:ui-tooling
(Ic8988)- Sekarang,
ModelObserver
menjadi thread tunggal. (b/146144712) - Tolok ukur untuk ModelObserver telah ditambahkan (Ia176b)
- Memanggil callback batalkan jika PointerInputNode dihapus dari hierarki. (I7112a)
- Pengubah LayoutInflexible untuk Baris dan Kolom telah dihapus (I0d820)
- Mewarisi pengubah tata letak dari
ParentDataModifier
(I49b6a) - Pengubah yang Digabungkan telah ditambahkan (I6f8df)
- Pengubah Yang Diselaraskan telah ditambahkan (Ifc581)
- Menambahkan Constraint Layout ke Compose (I175ad)
Faktor ulang