Tugas 8 - PPB G Image Scroll
Muhammad Fahmi Syahputra
File 1: MainActivity.kt
File ini adalah entry point aplikasi dan tempat semua UI Compose dimuat pertama kali.
-
MainActivitymewarisiComponentActivity, lalu dalamonCreate(), kita panggilsetContent {}untuk mulai rendering Compose UI. -
Di dalamnya, kita menggunakan
AffirmationsTheme {}untuk menerapkan styling global (Material 3). -
Komponen utama yang ditampilkan adalah
AffirmationsApp().
Fungsi AffirmationsApp()
Fungsi ini cuma memanggil AffirmationList() dan mengoper data afirmasi dari Datasource() ke dalamnya.
Di bagian akhir file, terdapat fungsi AffirmationCardPreview() yang menggunakan anotasi:
Fungsi ini dibuat khusus agar kita bisa melihat tampilan komponen AffirmationCard secara langsung di editor Android Studio tanpa harus menjalankan aplikasi ke emulator.
File 2: Datasource.kt
File ini berisi class Datasource yang fungsinya hanya untuk menyediakan data dummy afirmasi.
Isinya:
-
Fungsi
loadAffirmations()mengembalikan list dari 10 itemAffirmation. -
Setiap item terdiri dari:
-
Sumber teks dari
strings.xml(R.string.affirmationX) -
Sumber gambar dari
drawable(R.drawable.imageX)
-
File 3: Affirmation.kt
File ini merupakan model data untuk setiap item afirmasi.
Bagian UI: AffirmationList() dan AffirmationCard()
AffirmationList()
-
Menggunakan
LazyColumnuntuk menampilkan daftar yang bisa di-scroll secara vertikal. -
Di dalamnya, kita panggil
items()dan menampilkan setiap item sebagaiAffirmationCard.
AffirmationCard()
Setiap item list ditampilkan dalam bentuk Card yang berisi:
-
Gambar (
Image):-
Menggunakan
painterResource()untuk mengambil gambar dari drawable. -
ContentScale.Cropdipakai supaya gambar menutupi seluruh lebar dengan crop.
-
-
Text (
Text):-
Menggunakan
LocalContext.current.getString(...)untuk mengambil teks dari resource ID. -
Font-nya diatur pakai
MaterialTheme.typography.headlineSmall.
-
Desain dan Satuan Ukuran
-
Padding dan tinggi layout menggunakan satuan
dp(density-independent pixels). -
Ukuran teks menggunakan
sp(scale-independent pixels), agar bisa mengikuti pengaturan ukuran font user.
Screenshot hasil :






Comments
Post a Comment