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
MainActivity
mengimplementasikan semua callback dari Android Activity Lifecycle untuk mencetak log:
override fun onStart() { super.onStart() Log.d(TAG, "onStart Called") }
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
}
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()
}
}
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
Comments
Post a Comment