[go: up one dir, main page]


Diposting oleh Ben Trengrove, Android Developer Relations Engineer

Hari ini, sebagai bagian dari Bill of Materials Compose Agustus '23, kami merilis Jetpack Compose versi 1.5, toolkit UI native modern Android yang digunakan oleh aplikasi seperti Play Store, Dropbox, dan Airbnb. Rilis ini sangat berfokus pada peningkatan performa, karena bagian utama dari refaktor pengubah yang kami mulai pada rilis Oktober '22 sekarang telah digabungkan.

Performa

Ketika kami pertama kali merilis Compose 1.0 pada 2021, kami berfokus untuk mendapatkan platform API yang tepat untuk memberikan fondasi yang kuat saat membangun. Kami menginginkan API yang kuat dan ekspresif serta mudah digunakan dan stabil sehingga developer dapat menggunakannya dengan percaya diri dalam produksi. Sejalan dengan upaya kami untuk terus meningkatkan API, performa merupakan prioritas utama kami, dan pada rilis Agustus '23, kami memberikan banyak peningkatan performa.

Performa pengubah

Pengubah melihat peningkatan besar dalam performa, hingga 80% pada waktu komposisi, dalam rilis ini. Bagian terbaiknya adalah, berkat kerja keras kami untuk menghadirkan platform API yang tepat pada rilis pertama, mayoritas aplikasi akan mendapatkan manfaat ini hanya dengan melakukan upgrade ke rilis Agustus '23.

Kami memiliki serangkaian tolok ukur yang digunakan untuk memantau regresi dan menginformasikan investasi kami dalam meningkatkan performa. Setelah rilis awal Compose 1.0, kami mulai berfokus pada hal-hal yang dapat kami tingkatkan. Tolok ukur menunjukkan bahwa kami menghabiskan lebih banyak waktu daripada yang diperkirakan untuk merealisasikan pengubah. Pengubah membentuk sebagian besar pohon komposisi, dan karenanya, merupakan kontributor terbesar untuk waktu komposisi awal di Compose. Pemfaktoran ulang pengubah ke desain yang lebih efisien dimulai secara mendasar sejak rilis Oktober '22.

Rilis Oktober '22 menyertakan API baru dan peningkatan performa di modul level terendah kami, Compose UI. Pengubah dibangun di atas satu sama lain, jadi kami mulai memigrasikan pengubah level rendah kami di Compose Foundation pada rilis berikutnya, Maret '23. Ini mencakup graphicsLayer, pengubah fokus level rendah, padding, dan offset. Pengubah level rendah ini digunakan oleh pengubah lain yang sangat sering digunakan seperti Clickable, dan juga digunakan oleh banyak framework Composable seperti Text. Memigrasikan pengubah pada rilis Maret '23 menghadirkan peningkatan performa pada komponen-komponen tersebut, tetapi keuntungan yang sesungguhnya akan terlihat ketika kami bisa memigrasikan pengubah level yang lebih tinggi dan composable itu sendiri ke sistem pengubah yang baru.

Pada rilis Agustus '23, kami mulai memigrasikan pengubah Clickable ke sistem pengubah baru, yang secara substansial meningkatkan waktu komposisi, pada beberapa kasus hingga 80%. Hal ini sangat relevan khususnya dalam lazy list yang berisi elemen yang dapat diklik, seperti tombol. Modifier.indication yang digunakan oleh Clickable, masih dalam proses migrasi, jadi kami mengharapkan lebih banyak peningkatan lagi di rilis mendatang.

Sebagai bagian dari upaya ini, kami mengidentifikasi kasus penggunaan untuk pengubah terkomposisi yang tidak tercakup dalam refaktor asli dan menambahkan API baru untuk membuat elemen Modifier.Node yang menggunakan instance CompositionLocal.

Kami sekarang sedang mengerjakan dokumentasi untuk memandu Anda dalam memigrasikan pengubah Anda sendiri ke API Modifier.Node yang baru. Untuk segera memulai, Anda bisa merujuk pada contoh di repositori kami.

Pelajari lebih lanjut tentang alasan di balik perubahan tersebut dalam pembahasan mendalam Pengubah Compose dari Android Dev Summit '22.

Memori

Rilis ini menyertakan sejumlah peningkatan dalam penggunaan memori. Kami telah mencermati alokasi yang terjadi di berbagai API Compose dan telah mengurangi total alokasi di sejumlah area, terutama di stack grafik dan pemuatan sumber daya vektor. Ini tidak hanya mengurangi jejak memori Compose, tetapi juga secara langsung meningkatkan performa, karena kita memangkas waktu untuk mengalokasikan memori dan mengurangi pembersihan sampah memori.

Selain itu, kami memperbaiki kebocoran memori saat menggunakan ComposeView, yang akan bermanfaat bagi semua aplikasi, terutama bagi aplikasi yang menggunakan arsitektur multi-aktivitas atau interop View/Compose dalam jumlah besar.

Teks

BasicText telah beralih ke sistem rendering baru yang didukung oleh pekerjaan pengubah, yang menghasilkan rata-rata peningkatan sebesar 22% pada waktu komposisi awal dan peningkatan hingga 70% dalam satu tolok ukur tata letak kompleks yang melibatkan teks.

Beberapa API Text juga telah distabilkan, termasuk:

Peningkatan dan perbaikan fitur inti

Kami juga telah meluncurkan fitur baru dan peningkatan pada API inti serta menstabilkan beberapa API:

  • LazyStaggeredGrid kini stabil.
  • Penambahan asComposePaint API untuk menggantikan toComposePaint saat objek yang ditampilkan membungkus android.graphics.Paint asli.
  • Penambahan IntermediateMeasurePolicy untuk mendukung pengawasan di SubcomposeLayout.
  • Penambahan pengubah onInterceptKeyBeforeSoftKeyboard untuk mencegat peristiwa tombol sebelum dikirim ke keyboard virtual.

Mulai!

Kami berterima kasih atas semua laporan bug dan permintaan fitur yang dikirimkan ke issue tracker — semua itu membantu kami memperbaiki Compose dan membangun API yang Anda butuhkan. Terus berikan masukan Anda dan bantu kami menjadikan Compose lebih baik!

Ingin tahu rencana kami berikutnya? Lihat roadmap kami untuk melihat fitur-fitur yang sedang kami pikirkan dan kerjakan. Kami tidak sabar ingin segera melihat kreasi Anda yang berikutnya.

Selamat menggunakan Compose!



Diposting oleh Lin Guo, Software Engineer

Penggunaan emoji dalam komunikasi semakin populer dalam beberapa tahun terakhir. Ikon kecil ini bisa digunakan untuk mengekspresikan berbagai macam emosi dan dapat menambahkan sentuhan personal ke dalam pesan. Namun, menambahkan emoji ke aplikasi Android Anda merupakan sebuah tantangan tersendiri. Di sinilah library pemilih Emoji hadir. Anda cukup menambahkan beberapa baris kode ke aplikasi, kemudian Anda bisa langsung menggunakan emoji. Ini adalah cara termudah untuk mulai menggunakan emoji, dan ini akan membuat aplikasi Anda lebih menyenangkan serta ekspresif.

Gambar bergerak penggunaan EmojiPicker di Google Pixel 6 Pro
Gambar 1. Pemilih Emoji

Beberapa fitur berguna yang disediakan oleh library

Emoji terbaru tanpa tofu (☐)

Setiap tahun, versi emoji baru dipublikasikan, dan kami akan mengupdate library secara berkala untuk menyediakan emoji baru ini. Ponsel kelas atas akan merender emoji terbaru ini tanpa masalah. Untuk ponsel kelas bawah, emoji terbaru mungkin ditampilkan sebagai kotak persegi kecil yang disebut tofu (☐). Library menjamin untuk mendeteksi dan menghapusnya. Ini memastikan library kompatibel di seluruh versi/perangkat Android.

UI yang Mulus

Library ini memiliki beberapa pengoptimalan untuk mengurangi latensi startup dan mempercepat pengalaman scrolling, seperti meng-cache emoji yang dapat dirender, menggambar emoji secara asinkron, dan pengoptimalan RecyclerView.

Personalisasi pengalaman inklusif

Pilihan pengguna bersifat persisten dalam library. Emoji yang baru dipilih akan ditampilkan di baris atas, sehingga memudahkan pengguna untuk menemukan dan membagikannya. Library juga menawarkan berbagai emoji yang mewakili orang dan budaya yang berbeda di panel varian. Jika pengguna memilih emoji dari salah satu panel variasi (Gambar 2), pilihan akan dipertahankan dan disetel sebagai default di panel utama.

Gambar yang menunjukkan berbagai karakter yang dapat dipilih di EmojiPicker
Gambar 2. Varian emoji

Mengintegrasikan pemilih emoji ke dalam aplikasi Anda dalam 3 langkah

Langkah 1: Impor library dalam build.gradle 
dependencies { implementation "androidx.emoji2:emojipicker:$version" }

Langkah 2: Inflate EmojiPickerView

Secara opsional, atur emojiGridColumns dan emojiGridRows berdasarkan ukuran yang diinginkan dari setiap sel emoji

Contoh yang menggunakan EmojiPickerView dalam XML
<androidx.emoji2.emojipicker.EmojiPickerView app:emojiGridColumns="9" />

Pemilih emoji yang sangat sederhana sekarang ditampilkan di aplikasi Anda! Untuk langkah berikutnya, kami berasumsi Anda ingin melakukan sesuatu pada emoji yang dipilih.


Langkah 3: Memberikan pemroses untuk emoji yang dipilih
// a listener example emojiPickerView.setOnEmojiPickedListener { findViewById<EditText>(R.id.edit_text).append(it.emoji) }

Sekarang Anda memiliki pemilih emoji dasar yang berfungsi. Untuk menyesuaikannya lebih lanjut (mis., mengganti beberapa gaya atau memberikan perilaku yang berbeda untuk baris emoji terbaru), lihat api dan aplikasi contoh kami.

Jangan ragu untuk mengirimkan Laporan Bug atau Permintaan Fitur untuk membantu kami menyempurnakan library!