Tugas 9
Nama: Muhamad Faiz Fernanda
Kelas: PPB-A
NRP: 50251211186
Analisis dan Implementasi Aplikasi "Dessert Clicker" dengan Jetpack Compose
Tampilan Antarmuka Aplikasi
1. Analisis Kode Sumber Aplikasi "Dessert Clicker"
Untuk memahami struktur serta fungsionalitas aplikasi, berikut adalah penjabaran dari komponen-komponen penting yang terdapat dalam proyek ini:
2. Struktur Data: Dessert.kt
dan Datasource.kt
Aplikasi ini menggunakan pendekatan data sederhana namun efektif dalam merepresentasikan berbagai jenis makanan penutup (dessert), dengan memanfaatkan data class
pada Kotlin.
data class Dessert(
val imageId: Int,
val price: Int,
val startProductionAmount: Int
)
Penjelasan atribut:
imageId
: ID untuk gambar (resource drawable) dari dessert.price
: Harga per unit dari dessert.startProductionAmount
: Jumlah minimum penjualan sebelum dessert ini mulai muncul di aplikasi.
Data tersebut disediakan secara statis melalui file Datasource.kt
dalam bentuk List<Dessert>
.
3. Antarmuka Pengguna (UI) dengan Jetpack Compose
Seluruh tampilan dibangun menggunakan pendekatan deklaratif Jetpack Compose. Fokus utama pengembangan UI berada di dalam file MainActivity.kt
.
a. Manajemen Status (State Management)
Jetpack Compose menggunakan konsep state untuk menangani data yang berubah. Dengan rememberSaveable
, status tetap tersimpan meskipun terjadi perubahan konfigurasi (seperti rotasi layar).
var revenue by rememberSaveable { mutableStateOf(0) }
var dessertsSold by rememberSaveable { mutableStateOf(0) }
b. Fungsi Composable untuk UI
Fungsi utama seperti DessertClickerScreen
digunakan untuk menyusun struktur UI: mulai dari gambar latar, dessert yang dapat diklik, hingga informasi transaksi.
Image(
painter = painterResource(dessertImageId),
contentDescription = null,
modifier = Modifier.clickable { onDessertClicked() }
)
Fitur .clickable
memungkinkan pengguna berinteraksi langsung dengan gambar dessert.
4. Logika Aplikasi dan Lifecycle Aktivitas
a. Logika Pemilihan Dessert
Fungsi determineDessertToShow()
digunakan untuk menentukan dessert mana yang tampil berdasarkan jumlah penjualan saat ini:
fun determineDessertToShow(desserts: List<Dessert>, dessertsSold: Int): Dessert {
var dessertToShow = desserts.first()
for (dessert in desserts) {
if (dessertsSold >= dessert.startProductionAmount) {
dessertToShow = dessert
} else {
break
}
}
return dessertToShow
}
Fungsi ini efisien karena menghentikan iterasi setelah menemukan batas jumlah penjualan.
b. Observasi Siklus Hidup (Activity Lifecycle)
Aplikasi ini juga dirancang untuk menunjukkan bagaimana Android mengelola siklus hidup Activity
. Pada MainActivity
, beberapa metode lifecycle seperti onCreate()
, onStart()
, dan onDestroy()
di-override untuk mencatat log aktivitas.
override fun onStart() {
super.onStart()
Log.d(TAG, "onStart Called")
}
Hal ini membantu pengembang memahami alur siklus hidup saat aplikasi berjalan, dijeda, atau dihentikan.
5. Kesimpulan
Proyek Dessert Clicker merupakan sarana pembelajaran yang efektif untuk mengenal dasar-dasar pengembangan aplikasi Android modern, khususnya dengan Jetpack Compose dan Kotlin. Beberapa poin penting yang dapat dipelajari dari proyek ini:
- Pembuatan antarmuka secara deklaratif menggunakan fungsi Composable.
- Pengelolaan status menggunakan
rememberSaveable
agar data tetap konsisten saat terjadi perubahan konfigurasi. - Logika aplikasi sederhana untuk menangani interaksi pengguna.
- Pengamatan siklus hidup
Activity
melalui metode lifecycle dan log.
Komentar
Posting Komentar