Kaskus

Tech

fizcodeAvatar border
TS
fizcode
Shifting dari XML ke Compose? Ubah Sudut Pandang Cara Bikin Pondasi UI Dulu Gan
Shifting dari XML ke Compose? Ubah Sudut Pandang Cara Bikin Pondasi UI Dulu Gan


Waktu jaman ane masih UI slicing pakai XML dan pas mau belajar Jetpack Compose ane kebingungan cara bikin pondasi kayak constraint layout dan relative layout. Gimana cara bikin layout yang align ke top to bottom, start to end, dll. Kesalahan berpikir ane menyamakan apa yang ada di XML sampe-sampe cara membuat UI di XML itu mau diimplementasi juga di Compose.

Di Jetpack Compose, ada beberapa standard layout component. Seperti contoh Column, Row, Box. Kita akan fokus di tiga ini gan.Shifting dari XML ke Compose? Ubah Sudut Pandang Cara Bikin Pondasi UI Dulu Gan


Spoiler for Layout Component:



1. Column
Seperti pada namanya, Column untuk membuat konten align secara vertikalatau atas-bawah.

Spoiler for Column:



2. Row
Sebaliknya, Row untuk memuat konten align secara horizontalatau kiri-kanan.

Spoiler for Row:



3. Box
Untuk box, digunakan untuk konten yang saling tumpang tindih.


Spoiler for Box:



Real Use Case

Agan-agan mungkin udah mulai tercerahkan bagaimana cara bikin pondasi untuk layouting. Ane kasih lagi nih real case untuk penggunaan Column, Row dan Box.


Spoiler for Example:


Dari gambar di atas, yang mana yang Column, Row dan Box akan kita bedah satu satu. Kita kelompokin dulu biar gampang nentuinnya. Kira kira seperti ini:


Spoiler for UI Breakdown:


1. Biru: Pondasi awal itu pakai Rowuntuk memisahkan section image dan section teks.

2. Ijo: Kemudian di section image kita lihat ada rating yang overlap. Maka cocok di sini kita pakai Box.

3. Ungu: Di sebelah kanan lebih simpel. Agan harusnya udah bisa menduga kalo ini pakai Column.



Spoiler for Tree:


Trus di antara Agan-agan semua pasti ada pertanyaan: Kenapa nggak pakai Box aja atau RelativeLayout?biar efisien, biar sekali render aja kayak di XML. Lanjut ke penjelasan terakhir kenapa Row/Column lebih ringan ketimbang Box.

Perbedaan mendasar Row/Column dengan Box

1. Row/Column

- Row: menyusun child horizontal 
- Column: menyusun child vertical
- Kedua layout ini punya measuring rules yang sederhana dan linear
- Optimized heavily oleh Compose runtime

→ Dampaknya:

Shifting dari XML ke Compose? Ubah Sudut Pandang Cara Bikin Pondasi UI Dulu GanMeasure lebih minimal

Shifting dari XML ke Compose? Ubah Sudut Pandang Cara Bikin Pondasi UI Dulu GanLayout lebih predictable

Shifting dari XML ke Compose? Ubah Sudut Pandang Cara Bikin Pondasi UI Dulu GanNggak perlu align pass tambahan

Shifting dari XML ke Compose? Ubah Sudut Pandang Cara Bikin Pondasi UI Dulu GanNggak perlu overlaping detection

2. Box

- Box: semua child di-measure seakan mereka bebas
- Jetpack Compose harus:
   > Measure semua anak tanpa aturan (nggak tau urutan)
   > Mengalkulasi alignment masing-masing anak
   > Mengatur posisi manual dari setiap anak

→ Dampaknya:

Shifting dari XML ke Compose? Ubah Sudut Pandang Cara Bikin Pondasi UI Dulu GanAda alignment calculation

Shifting dari XML ke Compose? Ubah Sudut Pandang Cara Bikin Pondasi UI Dulu GanSemua di-measure tanpa constraint unik

Shifting dari XML ke Compose? Ubah Sudut Pandang Cara Bikin Pondasi UI Dulu GanPotensi re-measure lebih sering

Sehingga kesimpulannya:

Shifting dari XML ke Compose? Ubah Sudut Pandang Cara Bikin Pondasi UI Dulu GanColumn + Row lebih ringan

Shifting dari XML ke Compose? Ubah Sudut Pandang Cara Bikin Pondasi UI Dulu GanBox keliatan lebih laggy, terutama pas fling scroll

Trus bakal nested dong?

Nah, justru solusinya lebih gampang. Item bisa dibikin component aja. Peran component disini selain bisa mengurangi nested, juga mengurangi boilerplate.

Jadi kurang lebih begitu cara bikin pondasi layout di compose. Cukup beda approach ya gan. Menurut ane cukup mudah buat layouting tanpa ConstraintLayout. Cuma harus dibiasain aja pemetaan kapan harus Column, kapan harus Row, kapan harus Box.

Sekian aja dari ane gan. Mungkin nextnya ane bakal bahas Lifecycle di compose atau malah Recomposition kali ya. Jangan sungkan cendolnya gan kalau Agan ngerasa trit ini insightful. Terima kasih Shifting dari XML ke Compose? Ubah Sudut Pandang Cara Bikin Pondasi UI Dulu Gan

Sumur:




Diubah oleh fizcode 18-11-2025 20:32
0
46
1
GuestAvatar border
Komentar yang asik ya
Urutan
Terbaru
Terlama
GuestAvatar border
Komentar yang asik ya
Komunitas Pilihan