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 -
currentDessertPrice
dancurrentDessertImageId
: 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