Aplikasi Dessert Clicker
Nama : Mohammad Ahnaf Fauzan
NRP: 5025211170
Aplikasi Dessert Clicker
Analisis Kode Sumber Aplikasi "Dessert Clicker"
Untuk memahami struktur serta fungsionalitas aplikasi, berikut adalah penjabaran dari komponen-komponen penting yang terdapat dalam proyek ini:-
Struktur Data: Dessert.kt dan Datasource.kt
Aplikasi ini menggunakan pendekatan data yang sederhana namun efektif dalam merepresentasikan berbagai jenis makanan penutup (dessert), dengan memanfaatkan data class pada Kotlin.
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 fileDatasource.kt
dalam bentukList<Dessert>
.
-
Antarmuka Pengguna (UI) dengan Jetpack Compose
Seluruh tampilan dibangun menggunakan pendekatan deklaratif Jetpack Compose. Fokus utama pengembangan UI berada di dalam fileMainActivity.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).
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.
Fitur .clickable
memungkinkan pengguna berinteraksi langsung dengan gambar dessert.
-
Logika Aplikasi dan Lifecycle Aktivitas
a. Logika Pemilihan Dessert
FungsidetermineDessertToShow()
digunakan untuk menentukan dessert mana yang tampil berdasarkan jumlah penjualan saat ini:
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.
Hal ini membantu pengembang memahami alur siklus hidup saat aplikasi berjalan, dijeda, atau dihentikan.
Link Github
Komentar
Posting Komentar