Dessert Clicker App 🍩

Furstin Aprilavia Putri - 5025221234 - PPB D

Membuat Proyek Android: Dessert Clicker App 🍩

1. Pendahuluan  

Dessert Clicker adalah aplikasi sederhana berbasis Jetpack Compose yang digunakan untuk mempelajari Activity Lifecycle di Android. Dalam aplikasi ini, pengguna dapat mengklik gambar dessert untuk mendapatkan poin dan melihat bagaimana data tetap konsisten saat orientasi layar berubah atau saat aplikasi berpindah antar state seperti paused atau resumed. 

2. Aplikasi  📱

Kode lengkap bisa dilihat di GitHub : https://github.com/furstinvia/ppb-d-9-dessertclicker.git


Lifecycle Logging

MainActivity mengimplementasikan semua callback dari Android Activity Lifecycle untuk mencetak log:

override fun onStart() {
    super.onStart()
    Log.d(TAG, "onStart Called")
}
Ini sangat berguna untuk melihat bagaimana Compose berinteraksi dengan siklus hidup Activity saat aplikasi dijalankan, di-pause, atau di-rotate.

Komponen Utama: DessertClickerApp

State revenue, dessertsSold, dan info dessert saat ini disimpan dengan rememberSaveable, agar data tetap terjaga saat orientasi berubah:

var revenue by rememberSaveable { mutableStateOf(0) }
var dessertsSold by rememberSaveable { mutableStateOf(0) }

val currentDessertIndex by rememberSaveable { mutableStateOf(0) }

var currentDessertPrice by rememberSaveable {
    mutableStateOf(desserts[currentDessertIndex].price)
}
onDessertClicked = {
    revenue += currentDessertPrice
    dessertsSold++
    val dessertToShow = determineDessertToShow(desserts, dessertsSold)
    currentDessertImageId = dessertToShow.imageId
    currentDessertPrice = dessertToShow.price
}

Fitur Share

Aplikasi ini juga memiliki fitur berbagi menggunakan Intent.ACTION_SEND, yang bisa dibuka lewat tombol di AppBar:

private fun shareSoldDessertsInformation(intentContext: Context, dessertsSold: Int, revenue: Int) {
    val sendIntent = Intent().apply {
        action = Intent.ACTION_SEND
        putExtra(
            Intent.EXTRA_TEXT,
            intentContext.getString(R.string.share_text, dessertsSold, revenue)
        )
        type = "text/plain"
    }

    val shareIntent = Intent.createChooser(sendIntent, null)

    try {
        ContextCompat.startActivity(intentContext, shareIntent, null)
    } catch (e: ActivityNotFoundException) {
        Toast.makeText(
            intentContext,
            intentContext.getString(R.string.sharing_not_available),
            Toast.LENGTH_LONG
        ).show()
    }
}

 Tampilan UI

UI utama menggunakan Scaffold yang memuat AppBar dan DessertClickerScreen. Di dalamnya ada gambar latar, gambar dessert, dan informasi transaksi.

DessertClickerScreen(
    revenue = revenue,
    dessertsSold = dessertsSold,
    dessertImageId = currentDessertImageId,
    onDessertClicked = { ... },
    modifier = Modifier.padding(contentPadding)
)

3. Video Presentasi  

https://youtu.be/-C_yr9Z93os







Comments