5.9 KiB
Kalkulator BMI - Aplikasi Android Modern dengan Jetpack Compose
Selamat datang di repositori Kalkulator BMI, sebuah aplikasi Android yang dirancang untuk menghitung Indeks Massa Tubuh (Body Mass Index) dengan antarmuka yang modern, bersih, dan interaktif. Aplikasi ini dibangun dari dasar menggunakan Jetpack Compose dan Kotlin, menunjukkan implementasi praktik terbaik dalam pengembangan UI Android modern.
Proyek ini tidak hanya berfungsi sebagai alat praktis, tetapi juga sebagai studi kasus dalam penggunaan Material 3, navigasi, manajemen state, dan animasi dalam ekosistem Jetpack Compose.
🎨 Galeri Aplikasi
(PENTING: Ganti URL gambar di atas dengan screenshot aplikasi Anda. Anda bisa mengunggahnya ke layanan seperti Imgur untuk mendapatkan link).
✨ Fitur Utama dan Implementasi Teknis
Aplikasi ini dirancang dengan fokus pada pengalaman pengguna (UX) dan kejelasan kode.
1. Antarmuka Pengguna Modern dengan Material 3
- Tema Kustom Pink & Putih: Aplikasi mengimplementasikan tema
lightColorSchemekustom yang didominasi warna pink dan putih, memberikan nuansa yang lembut dan konsisten di seluruh layar. - Komponen Material 3: Menggunakan komponen M3 terbaru seperti
Card,OutlinedTextField,Button,OutlinedButton, danIconuntuk tampilan yang sesuai dengan pedoman desain Google. - Latar Belakang Gradien:
Boxutama setiap layar menggunakanBrush.verticalGradientuntuk transisi warna halus dari warna primer tema ke warna latar belakang, menciptakan kedalaman visual.
2. Manajemen State yang Efektif
- State Hoisting: Menggunakan
remember { mutableStateOf(...) }untuk mengelola state lokal seperti nilai input (tinggiBadan,beratBadan), hasil kalkulasi (bmiResult,bmiCategory), dan warna kartu hasil (bmiColor). - State-Driven UI: Antarmuka pengguna bersifat reaktif. Perubahan pada variabel state (misalnya, setelah menekan tombol "Hitung") secara otomatis memicu recomposition pada UI untuk menampilkan hasil terbaru tanpa manipulasi manual.
3. Umpan Balik Visual dan Animasi Halus
AnimatedVisibilityuntuk Hasil: Kartu hasil BMI tidak muncul secara tiba-tiba. Komponen ini dibungkus dalamAnimatedVisibilitydengan efekfadeIndanslideInVerticallyuntuk transisi yang elegan saatbmiResulttidak lagi null.- Warna Kartu Hasil Dinamis:
Cardyang menampilkan hasil BMI mengubah warnanya (containerColor) berdasarkan kategori:- Hijau (
#4CAF50): Berat badan normal. - Kuning (
#FFC107): Kelebihan berat badan. - Merah (dari tema): Berat badan kurang (
error) atau Obesitas (errorContainer). Ini memberikan umpan balik instan yang mudah dipahami oleh pengguna.
- Hijau (
4. Navigasi Type-Safe dengan Navigation Compose
NavHost: Mengatur alur navigasi aplikasi dariLoginScreenkeMainScreen.NavController: Digunakan untuk memicu navigasi, sepertinavController.navigate("login")saat pengguna menekan tombol "Keluar".- Manajemen Back Stack:
popUpTo(0)digunakan saat keluar untuk membersihkan back stack, memastikan pengguna tidak bisa kembali ke halaman kalkulator setelah logout dengan menekan tombol kembali.
5. Pengalaman Pengguna yang Ditingkatkan (UX)
- Ikon pada Input Field:
OutlinedTextFielduntuk tinggi dan berat badan dilengkapi denganleadingIcon(HeightdanMonitorWeight), mempermudah identifikasi field. - Manajemen Keyboard:
KeyboardOptionsdiatur untuk menampilkan keyboard numerik (KeyboardType.Number).imeActiondiatur keImeAction.NextdanImeAction.Doneuntuk alur pengisian yang lancar.LocalFocusManagerdigunakan untuk menyembunyikan keyboard secara otomatis (focusManager.clearFocus()) saat tombol "Hitung" ditekan, mencegah keyboard menutupi hasil.
🛠️ Teknologi, Library, dan Arsitektur
Proyek ini memanfaatkan ekosistem modern Android untuk pengembangan yang efisien dan dapat dipelihara.
- Bahasa Pemrograman: Kotlin
- Toolkit UI: Jetpack Compose (BOM
2024.05.00)androidx.compose.ui: Komponen UI fundamental.androidx.compose.material3: Komponen Material Design 3.androidx.compose.animation: API untuk animasi UI.androidx.compose.foundation: Blok bangunan dasar dan layout.
- Navigasi: Navigation Compose (
androidx.navigation:navigation-compose:2.7.7) untuk navigasi deklaratif antar Composable. - Ikon: Material Icons Extended (
androidx.compose.material:material-icons-extended) untuk akses ke set ikon yang lebih luas. - Core Libraries:
androidx.core:core-ktxdanandroidx.activity:activity-compose:1.9.0. - Arsitektur: Mengadopsi arsitektur UI satu arah (Unidirectional Data Flow - UDF) pada tingkat layar. State mengalir ke bawah (dari
MainScreenke komponen di dalamnya), dan events mengalir ke atas (darionClickpadaButtonuntuk memanggil fungsicalculateBmi).
🚀 Panduan Menjalankan Proyek
Ikuti langkah-langkah ini untuk meng-clone dan menjalankan aplikasi di lingkungan pengembangan Anda.
-
Prasyarat
- Android Studio Iguana | 2023.2.1 atau yang lebih baru.
- JDK 17 atau yang lebih baru.
-
Clone Repositori Buka terminal atau Git Bash, lalu jalankan perintah berikut:


