Tugas 9 - PPB G Aplikasi Woof
Muhammad Fahmi Syahputra
File 1: MainActivity.kt
File ini adalah entry point utama aplikasi. Di dalam onCreate()
, kita menggunakan setContent {}
untuk mengatur UI berbasis Jetpack Compose.
Aplikasi dibungkus dengan WoofTheme {}
agar seluruh tampilan konsisten mengikuti tema yang telah disediakan (baik untuk light mode maupun dark mode). Di dalamnya, fungsi WoofApp()
dipanggil untuk menampilkan semua konten utama.
Fungsi WoofApp()
Fungsi ini memanfaatkan Scaffold
sebagai layout utama, yang menyediakan Top App Bar dan isi konten di bawahnya.
-
Di bagian atas ada
WoofTopAppBar()
(menampilkan logo dan nama aplikasi). -
Di bagian kontennya, ditampilkan list anjing menggunakan
LazyColumn
dan data daridogs
(berasal dari fileDog.kt
). -
Setiap item ditampilkan menggunakan
DogItem()
.
Fungsi DogItem()
Menampilkan 1 kartu (Card
) berisi:
-
Gambar anjing (dipanggil dari fungsi
DogIcon
) -
Nama dan umur anjing (dipanggil dari
DogInformation
)
Layout-nya menggunakan Row
(horizontal), sehingga gambar dan teks ada di satu baris.
Fungsi WoofTopAppBar()
Top app bar menampilkan logo ic_woof_logo
dan teks "Woof" di tengah (CenterAlignedTopAppBar
). Komponen di dalamnya ditata dengan Row
agar gambar dan teks sejajar horizontal.
Ukuran gambar dan padding diatur pakai dimensionResource(...)
, yaitu nilai dimensi yang disimpan di res/values/dimens.xml
agar konsisten di seluruh aplikasi.
Fungsi DogIcon()
dan DogInformation()
DogIcon()
-
Menampilkan gambar anjing berdasarkan ID drawable (
@DrawableRes
). -
Ukurannya disesuaikan dan dipotong (
clip(...)
) supaya tampilannya lebih estetik.
DogInformation()
-
Menampilkan nama anjing (
@StringRes
) dan usia anjing (dalam tahun). -
Teks usia diambil dari string resource yang pakai placeholder:
stringResource(R.string.years_old, age)
Fungsi WoofPreview()
& WoofDarkThemePreview()
Ini dua fungsi preview Compose:
-
WoofPreview()
menampilkan tampilan aplikasi pada light theme -
WoofDarkThemePreview()
menampilkan pada dark theme
Keduanya dibungkus dalam WoofTheme {}
agar sesuai gaya aslinya, dan hanya aktif di panel Preview Design di Android Studio. Gak akan tampil di aplikasi saat dijalankan.
File 2: Dog.kt
File ini berisi:
-
Data class
Dog
: representasi tiap anjing dengan:-
imageResourceId
→ gambar anjing (drawable) -
name
→ nama anjing (string resource) -
age
→ usia -
hobbies
→ hobi anjing (string resource, belum digunakan di UI)
-
-
List
dogs
: data dummy berisi 9 anjing. Data ini dipakai olehWoofApp()
untuk menampilkan semua anjing di layar.
Desain & Resources
-
Semua dimensi seperti padding dan ukuran gambar diatur lewat
dimensionResource(R.dimen.xxx)
agar bisa lebih fleksibel jika ingin diubah semua sekaligus. -
String dan drawable resource digunakan agar aplikasi bisa lebih mudah diterjemahkan atau dimodifikasi.
Comments
Post a Comment