Tugas 10 - Cake Clicker App
Muhammad Fahmi Syahputra
File Utama: MainActivity.kt
File ini adalah entry point utama dari aplikasi. Kita menggunakan ComponentActivity sebagai basis, dan memanggil setContent untuk mengisi UI menggunakan Jetpack Compose.
Di dalamnya juga terdapat lifecycle logging (menggunakan Log.d()) untuk mencatat fase hidup aktivitas seperti onCreate, onStart, onResume, dll. Ini berguna untuk debugging dan pemahaman alur hidup aktivitas Android.
Fungsi DessertClickerApp()
Fungsi utama Compose yang mengatur keseluruhan struktur UI aplikasi.
- State Management
Menggunakan rememberSaveable untuk menyimpan state berikut:
-
revenue: jumlah pendapatan total -
dessertsSold: total dessert yang dijual -
currentDessertPricedancurrentDessertImageId: menyimpan dessert yang sedang ditampilkan
Semua data ini tetap tersimpan meskipun layar diputar, karena rememberSaveable secara otomatis menyimpan state melalui lifecycle.
-Layout
Menggunakan Scaffold dengan:
-
TopBar: berisi nama aplikasi dan tombol share -
Konten utama: ditampilkan lewat
DessertClickerScreen()
Fungsi DessertClickerScreen()
UI utama tempat interaksi terjadi.
-
Latar belakang ditampilkan dengan
Image(R.drawable.bakery_back) -
Gambar dessert ditampilkan dan bisa diklik menggunakan
Modifier.clickable { onDessertClicked() } -
Bagian bawah layar menampilkan informasi transaksi seperti total penjualan dan revenue lewat
TransactionInfo().
Fungsi TransactionInfo()
Menampilkan dua komponen penting:
-
DessertsSoldInfo(): total penjualan dessert -
RevenueInfo(): total pendapatan
Keduanya ditampilkan dalam Row dengan jarak kiri-kanan menggunakan Arrangement.SpaceBetween.

Fungsi determineDessertToShow()
Fungsi ini menentukan dessert apa yang ditampilkan selanjutnya tergantung jumlah yang sudah dijual (dessertsSold). Daftar dessert diurutkan berdasarkan startProductionAmount, jadi semakin banyak yang dijual, semakin mahal dessert berikutnya.
Fungsi shareSoldDessertsInformation()
Membuat intent ACTION_SEND untuk berbagi informasi penjualan dan pendapatan. Fungsi ini menggunakan try-catch untuk menghindari crash jika tidak ada aplikasi yang bisa menangani intent tersebut (contohnya tidak ada aplikasi berbagi di device).

Fungsi DessertClickerAppBar()
Menampilkan top bar dengan:
-
Judul aplikasi (dari
stringResource) -
Ikon share (
Icons.Filled.Share) yang bisa diklik dan memanggil fungsishareSoldDessertsInformation().
AppBar ini juga mempertimbangkan WindowInsets agar tampilannya tetap rapi meski ada status bar atau notch.













Comments
Post a Comment