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

Compose Animation

Mem-build animasi di aplikasi Jetpack Compose untuk memperkaya pengalaman pengguna.
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 entri 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.animation:animation:1.0.0-beta03"
}

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerVersion "1.4.31"
        kotlinCompilerExtensionVersion "1.0.0-beta03"
    }
}

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.animation:animation:1.0.0-beta03 dan androidx.compose.animation:animation-core:1.0.0-beta03 dirilis. Versi 1.0.0-beta03 berisi commit berikut ini.

Versi 1.0.0-beta02

10 Maret 2021

androidx.compose.animation:animation:1.0.0-beta02 dan androidx.compose.animation:animation-core:1.0.0-beta02 dirilis. Versi 1.0.0-beta02 berisi commit berikut ini.

Perbaikan Bug

Versi 1.0.0-beta01

24 Februari 2021

androidx.compose.animation:animation:1.0.0-beta01 dan androidx.compose.animation:animation-core: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

  • InteractionState telah diganti dengan [Mutable]InteractionSource
    • Antarmuka bertanggung jawab untuk mengirimkan/mengumpulkan peristiwa Interaksi.
    • Sebagai ganti meneruskan interactionState = remember { InteractionState() } ke komponen seperti Button dan Modifier.clickable(), gunakan interactionSource = remember { MutableInteractionSource() }.
    • Daripada Interaction.Pressed in interactionState, sebaiknya gunakan 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)
  • Paket metode smoothScrollBy dan scrollBy berubah menjadi androidx.compose.foundation.gestures.* (I3f7c1, b/175294473)
  • Pengubah ukuran telah diganti namanya. Modifier.width/height/size berganti nama menjadi requiredWidth/requiredHeight/requiredSize. Modifier.preferredWidth/preferredHeight/preferredSize berganti nama menjadi width/height/size. (I5b414)
  • Orientasi telah dipindahkan ke paket dasar. VelocirtTracker dipindahkan dari ui.gesture ke ui.input.pointer. (Iff4a8, b/175294473)
  • AnimationClockObservable dan subclass telah dihapus. AnimatedFloat telah dihapus. (Icde52, b/177457083)
  • Modifier.draggable kini menerima DraggableState dan bukan lambda sederhana. Anda dapat membuat status melalui rememberDraggableState { delta -> } untuk mendapatkan perilaku yang sama seperti sebelumnya (Ica70f, b/175294473)
  • animate, animasiValue, AnimatedValue API telah dihapus (If27bc, b/177457083)
  • AnimationEndReason.Interrupted dihapus. CancellationException akan ditampilkan jika animasi terhenti. (I2cbbc, b/179695417)
  • TargetAnimation API telah dihapus. (If47d1, b/177457083)

Versi 1.0.0-alpha12

10 Februari 2021

androidx.compose.animation:animation:1.0.0-alpha12 dan androidx.compose.animation:animation-core:1.0.0-alpha12 dirilis. Versi 1.0.0-alpha12 berisi commit berikut ini.

Perubahan API

  • Modifier.pointerInput sekarang mengharuskan kunci remember untuk menunjukkan kapan coroutine deteksi input pointer harus dimulai ulang untuk dependensi baru. (I849cd)
  • Bounds telah diganti namanya menjadi DpRect (I4b32a)
  • Menggabungkan nama parameter untuk AnimationSpec ke animationSpec di seluruh sistem animasi. Juga membatasi Enter/ExitTransition untuk menerima FiniteAnimationSpec. (Ie47c5, b/177457083)
  • Animatable.snapTo dan Animatable.stop sekarang menangguhkan fungsi (If4288)
  • Sama seperti saat kami menghapus composable state { 0 } dan kini mempromosikan penggunaan seperti remember { mutableStateOf(0) }, kami juga akan menghapus composable savedInstanceState { 0 }. Sebagai gantinya, Anda harus menggunakan rememberSaveable { mutableStateOf(0) } dan tindakan ini akan disimpan dan otomatis dipulihkan jika jenis yang digunakan dalam MutableState dapat disimpan di 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)
  • Memperbarui tanda tangan metode Crossfade agar lebih konsisten dengan sistem animasi lainnya. (Ib05ed, b/177457083)
  • rememberSavedInstanceState() telah diganti namanya menjadi rememberSaveable() dan dipindahkan ke paket androidx.compose.runtime.saveable. (I1366e, b/177338004)
  • RestorableStateHolder diganti namanya menjadi SaveableStateHolder dan dipindahkan ke paket androidx.compose.runtime.saveable. Metode internal RestorableStateProvider diganti namanya menjadi SaveableStateProvider. Jenis umum telah dihapus agar Anda dapat meneruskan Any sebagai kunci. Anotasi eksperimental tidak diperlukan lagi. (I0902e, b/174598702)
  • Mengupdate Modifier.animateContentSize API agar konsisten dengan sistem animasi lainnya. (I0bf75, b/177457083)
  • AnimatedValue/Float sekarang tidak digunakan lagi. Sebagai gantinya, gunakan Animatable. (I71345, b/177457083)
  • tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter, dan pressIndicaitonGestureFilter tidak digunakan lagi. Sebagai gantinya, gunakan Modifier.clickable atau Modifier.pointerInput dengan fungsi detectTapGestures. (I6baf9, b/175294473)
  • 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)
  • Metode penataan dan copy() telah dihapus dari beberapa class yang jarang digunakan. (I26702, b/178659281)
  • Waktu putar dalam animasi sekarang digabungkan menjadi nanodetik (If776a)
  • Artefak compose:runtime-dispatch sekarang tidak digunakan lagi. MonotonicFrameClock sekarang dapat ditemukan di compose:runtime dan AndroidUiDispatcher dapat ditemukan di compose:ui. (Ib5c36)
  • Menambahkan Animation.isInfinite dan VectorizedAnimationSpec.isInfinite yang memberi sinyal apakah animasi bersifat tak terbatas atau tidak. Ini dapat digunakan dalam implementasi animasi agar memiliki penanganan khusus untuk animasi semacam itu. Misalnya, pesan khusus "sisa waktu" dapat ditampilkan, atau selama pengujian, animasi dapat dibatalkan untuk mencegah waktu tidak ada aktivitas tanpa batas. (Iebb05, b/151940543)
  • Gunakan Long, bukan Uptime, sebagai jenis waktu animasi (Ie3aa7, b/177420019)

Versi 1.0.0-alpha11

28 Januari 2021

androidx.compose.animation:animation:1.0.0-alpha11 dan androidx.compose.animation:animation-core:1.0.0-alpha11 dirilis. Versi 1.0.0-alpha11 berisi commit berikut ini.

Perubahan API

  • Transition berbasis TransitionDefinition sudah tidak digunakan lagi (I0ac57)
  • Kolom label ditambahkan untuk Transition dan animasi turunan yang akan ditampilkan di alat (I619fb)
  • animateAsState sekarang menjadi animateFooAsState dengan Foo merupakan jenis variabel yang dianimasikan. misalnya, Float, Dp, Offset, dll. (Ie7e25)
  • InfiniteTransition baru yang menjalankan sejumlah animasi turunan. (I1da81)
  • Mengubah antarmuka parameter stateful Material agar memiliki fungsi @Composable yang menampilkan State<T>. Menambahkan Animatable.asState() untuk mempermudah mengonversi Animatable menjadi State. Selain itu, mengubah juga animateElevation menjadi ekstensi yang ditangguhkan di Animatable. (If613c)

Perbaikan Bug

  • onCommit, onDispos, dan onActive sudah tidak digunakan lagi dan digantikan dengan API SideEffect dan DisposableEffect (If760e)
  • State awal di updateTransition sekarang didukung (Ifd51d)
  • Parameter deskripsi konten telah ditambahkan ke Image dan Icon. Digunakan untuk memberikan deskripsi ke layanan aksesibilitas (I2ac4c)
  • invalidate dan compositionReference() sekarang tidak digunakan lagi dan masing-masing telah digantikan dengan currentRecomposeScope dan rememberCompositionReference. (I583a8)
  • Duration dan Uptime akan diganti dengan milidetik Long, dan langkah ini akan menghapus dependensi input pointer di class tersebut. (Ia33b2, b/175142755, b/177420019)
  • clickable, toggleable, and selectable sekarang bisa dibuat di luar komposisi (I0a130, b/172938345, b/175294473)
  • Easing telah diubah menjadi antarmuka fungsional (Ib14e5)
  • Metode factory items(count: Int) baru untuk cakupan LazyColumn/LazyRow/LasVerticalGrid. 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)
  • Memanfaatkan TestCoroutineDispatcher dalam pengujian (I532b6)
  • Menghapus PointerInputData dan mengubah PointerInputChange untuk mendapatkan semua kolom PointerInputData. Membuat PointerInputEvent dan PointerInputEventData internal karena tidak digunakan di API publik mana pun. (Ifff97, b/175142755)

Versi 1.0.0-alpha10

13 Januari 2021

androidx.compose.animation:animation:1.0.0-alpha10 dan androidx.compose.animation:animation-core:1.0.0-alpha10 dirilis. Versi 1.0.0-alpha10 berisi commit berikut ini.

Perubahan API

  • Mengubah Velocity agar 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 Position menjadi DpOffset dan menghapus getDistance() (Ib2dfd)
  • Menghapus API publik Any.identityHashCode() (I025d7)

Perbaikan Bug

  • Animatable API baru berbasis coroutine yang memastikan pengalaman eksklusif di antara animasinya. DecayAnimationSpec baru untuk mendukung animasi peluruhan multi-dimensi (I820f2, b/168014930)
  • 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)

Versi 1.0.0-alpha09

16 Desember 2020

androidx.compose.animation:animation:1.0.0-alpha09 dan androidx.compose.animation:animation-core:1.0.0-alpha09 dirilis. Versi 1.0.0-alpha09 berisi commit berikut ini.

Perubahan API

  • Memindahkan Dp.VectorConverter, Position.VectorConverter, dll. ke animation-core dan tidak menggunakan lagi VectorConveters lama (If0c4b)
  • Memperkenalkan rangkaian baru Transition API dengan kemudahan penggunaan yang disempurnakan, serta dukungan untuk animasi yang ditambahkan secara dinamis dan target animasi yang dihitung secara dinamis. API ini ditandai eksperimental agar mudah dibedakan dengan API berbasis TransitionDefinition. (Ia7fe3)

Perbaikan Bug

  • Lambda pada pengubah offset kini menampilkan IntOffset, bukan Float. (Ic9ee5, b/174137212, b/174146755)
  • Menghentikan penggunaan LazyColumnFor, LazyRowFor, LazyColumnForIndexed, dan LazyRowForIndexed. Gunakan LazyColumn dan LazyRow sebagai gantinya (I5b48c)
  • Untuk API input pointer yang ditangguhkan, HandlePointerInputScope diganti namanya menjadi AwaitPointerEventScope dan handlePointerInput() diganti namanya menjadi awaitPointerEventScope(). (Idf0a1, b/175142755)
  • Fungsi infiniteRepeatable untuk membuat InfiniteRepeatableSpec (I668e5)
  • Menghapus anotasi ExperimentalPointerInput (Ia7a24)

Versi 1.0.0-alpha08

2 Desember 2020

androidx.compose.animation:animation:1.0.0-alpha08 dan androidx.compose.animation:animation-core:1.0.0-alpha08 dirilis. Versi 1.0.0-alpha08 berisi commit berikut ini.

Perubahan API

  • Menambahkan pemeriksaan lint untuk penamaan dan posisi parameter lambda yang dapat dikomposisi, untuk memeriksa apakah konsisten dengan panduan Compose. Selain itu, memigrasikan beberapa API menggunakan children sebagai nama untuk lambda akhirnya ke content, sesuai dengan pemeriksaan lint dan panduan. (Iec48e)
  • API yang Tidak Digunakan Sebelumnya 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 dihapus dan sebagai gantinya gunakan Rect.
    • (Ie9d02, b/172562222)
  • Menambahkan opsi untuk sementara agar TestAnimationClock dapat didorong oleh MonotonicFrameClock (I1403b, b/173402197)

Perbaikan Bug

  • Mengganti nama Modifier.drawLayer menjadi Modifier.graphicsLayer Juga mengupdate class terkait ke GraphicsLayer sesuai masukan dari dewan API. (I0bd29, b/173834241)
  • Menambahkan Modifier.scale/rotate API agar memudahkan 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)
  • Nama pengubah offsetPx diganti menjadi offset. Pengubah tersebut kini mengambil parameter lambda, bukan State. (Ic3021, b/173594846)
  • API baru untuk menjalankan animasi dalam coroutine (Ied662)
  • 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)
  • Kontrol waktu dalam pengujian (TestAnimationClock dan penggunaannya) kini bersifat eksperimental (I6ef86, b/171378521)
  • Menghapus modul ui-test lama dan stub-nya (I3a7cb)
  • Fungsi RestorableStateHolder.withRestorableState diganti namanya menjadi RestorableStateProvider (I66640)
  • Antarmuka Alignment telah diperbarui dan berfungsi. (I46a07, b/172311734)

Versi 1.0.0-alpha07

11 November 2020

androidx.compose.animation:animation:1.0.0-alpha07 dan androidx.compose.animation:animation-core:1.0.0-alpha07 dirilis. Versi 1.0.0-alpha07 berisi commit berikut ini.

Perbaikan Bug

  • AmbientTextStyle, ProvideTextStyle, dan AmbientContentColor dasar tidak digunakan lagi. Sebagai gantinya, gunakan versi baru yang tersedia di library Material. Untuk aplikasi non-Material, Anda harus membuat ambient tema khusus sistem desain sendiri yang dapat dipakai dalam komponen sendiri. (I74acc, b/172067770)
  • 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)
  • 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)

Versi 1.0.0-alpha06

28 Oktober 2020

androidx.compose.animation:animation:1.0.0-alpha06 dan androidx.compose.animation:animation-core:1.0.0-alpha06 dirilis. Versi 1.0.0-alpha06 berisi commit berikut ini.

Perubahan API

  • Mengaktifkan transisi di ComposeTestRule; menghapus opsi untuk mengaktifkan kursor yang berkedip dari ComposeTestRule. (If0de3)

Versi 1.0.0-alpha05

14 Oktober 2020

androidx.compose.animation:animation:1.0.0-alpha05 dan androidx.compose.animation:animation-core:1.0.0-alpha05 dirilis. Versi 1.0.0-alpha05 berisi commit berikut ini.

Perubahan API

  • Antarmuka dan subclass Animasi Baru: Class ini menyimpan kondisi awal dan akhir untuk animasi sehingga nilai yang diizinkan dan kecepatan dapat dikueri hanya melalui waktu putar (Ie95bd, b/163329867)

Perbaikan Bug

  • OnPositionedModifier diganti nama menjadi OnGloballyPositionedModifier dan onPositioned() diganti nama menjadi onGloballyPositioned(). (I587e8, b/169083903)
  • Tidak lagi menggunakan API contentColor() dan currentTextStyle(), dan menggantinya masing-masing dengan ambient AmbientContentColor dan AmbientTextStyle. Anda dapat mengakses nilai saat ini dengan menggunakan .current di properti ambient, seperti dengan ambient lainnya. Perubahan ini dilakukan demi konsistensi dan untuk menghindari banyaknya cara untuk menyelesaikan hal yang sama. Selain itu, mengganti nama properti ambient tertentu untuk mendeskripsikan tujuannya dengan lebih baik sebagai berikut:

    • ContentColorAmbient -> AmbientContentColor
    • TextStyleAmbient -> AmbientTextStyle
    • IndicationAmbient -> AmbientIndication
    • EmphasisAmbient -> AmbientEmphasisLevels
    • RippleThemeAmbient -> AmbientRippleTheme (I37b6d)

Version 1.0.0-alpha04

1 Oktober 2020

androidx.compose.animation:animation:1.0.0-alpha04 dan androidx.compose.animation:animation-core:1.0.0-alpha04 dirilis. Versi 1.0.0-alpha04 berisi commit berikut ini.

Perubahan API

  • Menganotasi rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled dan textInputServiceFactory dengan @VisibleForTesting, menjadikannya API internal dan menyembunyikan kdoc (I554eb, b/168308412)

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 Pengubah (Modifier.background, Modifier.border, Modifier.padding) (Ibae92, b/167680279)
  • Kami mencegah impor statis konten dari cakupan tata letak (misalnya, alignWithSiblings di RowScope). Sebagai gantinya, alternatif cakupan eksplisit harus digunakan: with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) }. (I216be, b/166760797)

Versi 1.0.0-alpha03

16 September 2020

androidx.compose.animation:animation:1.0.0-alpha03 dan androidx.compose.animation:animation-core:1.0.0-alpha03 dirilis. Versi 1.0.0-alpha03 berisi commit berikut ini.

Perbaikan Bug

  • Penggunaan gravitasi secara konsisten diganti namanya menjadi align atau alignment dalam API tata letak. (I2421a, b/164077038)

Versi 1.0.0-alpha02

2 September 2020

androidx.compose.animation:animation:1.0.0-alpha02 dan androidx.compose.animation:animation-core:1.0.0-alpha02 dirilis. Versi 1.0.0-alpha02 berisi commit berikut ini.

Perubahan API

  • Menambahkan ManualFrameClock.hasAwaiters untuk melihat apakah ada yang menunggu frame dari jam tersebut; runWithManualClock sebagai pengganti runBlocking saat menjalankan pengujian yang memerlukan ManualFrameClock; TestUiDispatcher.Main yang memberikan akses mudah ke dispatcher UI utama dalam pengujian Anda.

    Contoh:

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

    (I0a85b, b/161247083)

Perbaikan Bug

  • onPreCommit sudah tidak digunakan lagi; onCommit kini memiliki perilaku onPreCommit.

    onCommit dan onActive kini dijalankan dalam frame choreographer yang sama dengan tempat perubahan komposisi dilakukan, bukan di awal frame choreographer berikutnya. (I70403)

Versi 1.0.0-alpha01

26 Agustus 2020

androidx.compose.animation:animation:1.0.0-alpha01 dan androidx.compose.animation:animation-core: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.animation:animation:0.1.0-dev17 dan androidx.compose.animation:animation-core:0.1.0-dev17 dirilis. Versi 0.1.0-dev17 berisi commit berikut ini.

Fitur Baru

Perubahan API

  • Offset telah menjadi class inline (Iaec70)
  • IntOffset kini menjadi class inline (Iac0bf)
  • IntSize kini menjadi class inline (I2bf42)
  • Composable AnimatedVisibilty menganimasi kemunculan dan penghilangan konten turunan.

    EnterTransition dan ExitTransition diperkenalkan agar berfungsi dengan composable AnimatedVisibilty untuk memberikan 3 jenis animasi muncul dan menghilang: memudarkan, menggeser, dan meluaskan/menciutkan konten. Berbagai jenis animasi dapat digabungkan untuk mendapatkan tampilan dan nuansa yang lebih tajam. (Idda11)

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

Perbaikan Bug

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

Versi 0.1.0-dev16

5 Agustus 2020

androidx.compose.animation:animation:0.1.0-dev16 dan androidx.compose.animation:animation-core:0.1.0-dev16 dirilis. Versi 0.1.0-dev16 berisi commit berikut ini.

Perubahan API

  • Pengonversi vektor bawaan untuk mengonversi unit bawaan kini dapat diakses melalui Foo.VectorConverter. misalnya, Dp.VectorConverter, Color.VectorConverter, Float.VectorConverter, dll. (I3e273)
  • Mendukung pemroses akhir di Modifier.animateContentSize() sehingga saat animasi perubahan ukuran selesai, pemroses akan diberi tahu, bersama dengan ukuran awal/akhir animasi. (I277b2)
  • Pengubah animateContentSize baru yang menganimasikan perubahan ukuran tata letak pengubah turunannya (Ieffdc)
  • Menambahkan MonotonicFrameAnimationClock yang memungkinkan Anda menggunakan MonotonicFrameClock sebagai AnimationClockObservable untuk menutup kesenjangan antara jam berbasis coroutine baru dan API yang masih menggunakan jam berbasis callback lama.

    MonotonicFrameClock yang setara dengan ManualAnimationClock sekarang adalah ManualFrameClock. (I111c7, b/161247083)

Perbaikan Bug

  • 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)
  • Paket foundation.shape.corner diratakan menjadi foundation.share (I46491, b/161887429)
  • 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)
  • Nama Modifier.drawBackground telah diganti menjadi Modifier.background (I13677)

Versi 0.1.0-dev15

22 Juli 2020

androidx.compose.animation:animation:0.1.0-dev15 dan androidx.compose.animation:animation-core:0.1.0-dev15 dirilis. Versi 0.1.0-dev15 berisi commit berikut ini.

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

  • Transition API telah diubah untuk menampilkan TransitionState, bukan meneruskan TransitionState ke turunan. Hal ini membuat API lebih konsisten dengan API animate(). (I24e38)
  • Parameter pengubah ditambahkan untuk Crossfade (I87cfe, b/159706180)
  • Gunakan AnimationSpec dan bukan AnimationBuilder di API level teratas untuk memperjelas konsep spesifikasi animasi statis
    • Menyempurnakan kualitas DSL transisi dengan menghapus persyaratan lambda untuk membuat AnimationSpecs seperti hitung nilai dan efek pegas. Sebaliknya, API mengambil parameter konstruktor secara langsung.
    • Meningkatkan kemudahan penggunaan AnimationSpec secara keseluruhan yang membuka konstruktor, bukan mengandalkan builder
    • Mengubah durasi dan keterlambatan untuk KeyFrames dan Tween menjadi Int. Tindakan ini menghilangkan tipe transmisi yang tidak perlu dan overloading metode (untuk mendukung Long dan Int). (Ica0b4)
  • 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 dalam berbagai class compose sebagai bagian dari upaya pemfaktoran ulang yang besar-besaran agar hanya mengandalkan jenis primitif dan Dp untuk parameter piksel (I086f4)
  • Menambahkan dukungan animate() untuk Dp, Px, Size, Position, Bounds, PxPosition, PxSize, PxBounds, IntPx, IntPxSize, IntPxPosition, IntPxBounds, dan AnimationVector (Ib7518)
  • Kini Crossfade menerima parameter AnimationBuilder opsional untuk memungkinkan konfigurasi animasi (I6d6e0)
  • Mengganti semua penggunaan Color nullable di API dengan non-nullable dan menggunakan Color.Unset, bukan null (Iabaa7)
  • Menghapus class ValueHolder. Menyusun ulang class AnimatedValue, AnimatedFloat untuk membuat kolom nilai animasi menjadi abstrak sehingga subclass dapat menonton pembaruan nilai.
    • Menambahkan class model untuk AnimatedValue, AnimatedFloat, dll.
    • Menambahkan set baru @Composable API ringan untuk menganimasikan di antara nilai. (I79530)
  • Perubahan yang dapat menyebabkan gangguan pada API ambien. Lihat log dan dokumentasi Ambient<T> untuk detail selengkapnya (I4c7ee, b/143769776)
  • Mode pengulangan baru: Reverse. Mode ini membalikkan iterasi sebelumnya saat animasi berulang di RepeatableSpec atau VectorizedRepeatableSpec. (Ibe0f5)
  • Penambahan API ke ManualAnimationClock: hasObservers: Boolean dan parameter konstruktor dispatchOnSubscribe: Boolean (Iaa134)
  • Menambahkan API untuk mendapatkan batas minimum/maksimum di AnimatedFloat (Icd9cc)

Perbaikan Bug

  • runOnIdleCompose diganti namanya 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)
  • Memperkenalkan API animasi stateless tingkat rendah. API ini (I63bf7)
  • Composable 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)
  • Menggabungkan implementasi CanvasScope sehingga hanya terdapat DrawScope dan ContentDrawScope Mengganti nama CanvasScope ke DrawScope. Mengupdate DrawScope untuk menerapkan antarmuka Density dan menyediakan LayoutDirection. Menghapus subclass DrawScope di ContentDrawScope. Painter dan PainterModifier telah diupdate untuk tidak lagi mempertahankan properti RTL sendiri karena DrawScope menyediakan ini tanpa menyediakannya secara manual (I1798e)
  • 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)
  • Menambahkan parameter verticalGravity dan horizontalGravity ke Row dan Column. (I7dc5a)
  • Nama modul ui-text diganti menjadi ui-text-core (I57dec)
  • 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)
  • Sekarang runOnIdleCompose dan runOnUiThread menjadi fungsi global, bukan metode di ComposeTestRule. (Icbe8f)
  • Operator delegasi properti [Mutable]State dipindahkan ke ekstensi untuk mendukung pengoptimalan delegasi properti Kotlin 1.4. Pemanggil harus menambahkan impor untuk terus menggunakan by state { ... } atau by mutableStateOf(...). (I5312c)
  • ColoredRect tidak digunakan lagi. Sebagai gantinya, gunakan Box(Modifier.preferredSize(width, height).drawBackground(color)). (I499fa, b/152753731)
  • Penggantian operator Modifier plus dengan fungsi ekstensi pabrik (I225e4)
  • Menghentikan penggunaan composable Center. Center ini harus diganti baik dengan pengubah LayoutSize.Fill + LayoutAlign.Center maupun dengan salah satu composable Box atau Stack dengan pengubah yang sesuai diterapkan (Idf5e0)
  • Mengganti nama LayoutFlexible menjadi LayoutWeight. Mengganti nama parameter tight menjadi fill. (If4738)
  • Fungsi yang dapat dikomposisi Opacity 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)
  • Mendukung arah kanan-ke-kiri dalam pengubah LayoutPadding (I9e8da)
  • Density dan DensityScope telah digabungkan dalam satu antarmuka. Sebagai ganti ambientDensity(), sekarang Anda dapat menggunakan DensityAmbient.current. Sebagai ganti withDensity(density), gunakan with(density) (I11cb1)
  • Menambahkan metode penyalinan ke berbagai jenis class inline, termasuk:
    • Offset
    • Size
    • Radius
    • Motion
    • TransformOrigin
    • Metode objek pengiring Size.copy sudah tidak digunakan lagi untuk mendukung metode penyalinan instance (Ife290, b/159905651)
  • androidx.compose.ViewComposer telah dipindahkan ke androidx.ui.node.UiComposer androidx.compose.Emittable telah dihapus. Berlebihan dengan ComponentNode. androidx.compose.ViewAdapters telah dihapus. Kasus penggunaannya sudah tidak didukung. Compose.composeInto sudah tidak digunakan lagi. Sebagai gantinya, gunakan setContent atau setViewContent. Compose.disposeComposition sudah tidak digunakan lagi. Sebagai gantinya, gunakan metode dispose pada Composition yang ditampilkan oleh setContent. androidx.compose.Compose.subcomposeInto telah dipindahkan ke androidx.ui.core.subcomposeInto Nama ComponentNode#emitInsertAt telah diganti menjadi ComponentNode#insertAt Nama ComponentNode#emitRemoveAt telah diganti menjadi ComponentNode#removeAt Nama ComponentNode#emitMode telah diganti menjadi ComponentNode#move (Idef00)