Tugas 8 - PPB G Image Scroll

Muhammad Fahmi Syahputra 

5025221302 - PPB (G)

Link GitHub : https://github.com/fahmisyahputra/app-imagescroll

Pada tugas kali ini, saya membuat sebuah aplikasi Image Scroll dengan menerapkan Jetpack Compose dan bahasa pemrograman Kotlin. Aplikasi ini digunakan untuk tampilan yang dapat menampilkan gambar dan teks dalam bentuk card dan dapat di scroll oleh pengguna

File 1: MainActivity.kt

File ini adalah entry point aplikasi dan tempat semua UI Compose dimuat pertama kali.

  • MainActivity mewarisi ComponentActivity, lalu dalam onCreate(), kita panggil setContent {} 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 item Affirmation.

  • 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.




Kita pakai anotasi @StringRes dan @DrawableRes supaya Android Studio tahu bahwa properti ini harus berupa resource ID, bukan string/gambar langsung.


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 sebagai AffirmationCard.

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

Popular posts from this blog

Tugas 2 PPB G - Membuat Aplikasi "Hello Android" dengan Jetpack Compose

Final Project PPB G

Tugas 9 - PPB G Aplikasi Woof