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.
-
MainActivity
mewarisiComponentActivity
, 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
LazyColumn
untuk 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.Crop
dipakai 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