Tugas 4 PPB A
Nama : Muhamad Faiz Fernanda
NRP : 5025211186
Pada pertemuan keempat kita membuat aplikasi dice roller interaktif yang dapat menampilkan acakan dadu saat menekan tombol roll, berikut kode yang digunakan :
package com.example.diceroller
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.compose.foundation.Image
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.wrapContentSize
import androidx.compose.material3.Button
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import com.example.diceroller.ui.theme.DicerollerTheme
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
DicerollerTheme {
DiceRollerApp()
}
}
}
}
@Preview(showBackground = true)
@Composable
fun DiceRollerApp() {
DiceWithButtonAndImage(Modifier.fillMaxSize().wrapContentSize(Alignment.Center))
}
@Composable
fun DiceWithButtonAndImage(modifier: Modifier = Modifier) {
var result by remember { mutableStateOf(1) }
val imageResource = when (result) {
1 -> R.drawable.dice_1
2 -> R.drawable.dice_2
3 -> R.drawable.dice_3
4 -> R.drawable.dice_4
5 -> R.drawable.dice_5
else -> R.drawable.dice_6
}
Column(
modifier = modifier,
horizontalAlignment = Alignment.CenterHorizontally
) {
Image(
painter = painterResource(imageResource),
contentDescription = result.toString()
)
Spacer(modifier = Modifier.height(16.dp))
Button(onClick = { result = (1..6).random() }) {
Text(stringResource(R.string.roll))
}
}
}
Deskripsi Proyek:
Aplikasi Android ini bernama Dice Roller, yang dirancang untuk mensimulasikan lemparan dadu secara acak ketika pengguna menekan sebuah tombol. Proyek ini menggunakan Jetpack Compose, sebuah framework UI deklaratif dari Android.
Struktur Proyek:
-
MainActivity: Merupakan kelas utama yang menjalankan aplikasi. Kelas ini mewarisi
ComponentActivity
dan menggunakan fungsisetContent
untuk menampilkan antarmuka Compose. Di dalamnya, dipanggil fungsiDiceRollerApp()
. -
DiceRollerApp: Merupakan fungsi composable yang menjadi pintu utama tampilan aplikasi. Ia memanggil komponen
DiceWithButtonAndImage
untuk membentuk antarmuka utama pengguna. -
DiceWithButtonAndImage: Fungsi composable ini menampilkan gambar dadu beserta tombol untuk melakukan lemparan. Gambar dadu akan berubah berdasarkan nilai acak (1–6) yang disimpan dalam variabel
result
. Ketika tombol ditekan, nilai acak baru dihasilkan dan gambar dadu diperbarui. -
strings.xml: Berkas ini menyimpan string sumber daya, seperti nama aplikasi dan teks pada tombol Roll.
Alur Kerja Aplikasi:
-
Saat aplikasi dijalankan, fungsi
DiceRollerApp()
dipanggil dan memuat tampilan. -
Di dalamnya,
DiceWithButtonAndImage
akan menampilkan gambar dadu berdasarkan nilairesult
. -
Gambar diambil menggunakan
painterResource
, yang menunjuk ke gambar sesuai nilairesult
. -
Ketika tombol Roll ditekan, aplikasi menghasilkan angka acak dari 1 sampai 6, lalu mengganti gambar dadu sesuai angka tersebut.
Manajemen Sumber Daya:
-
Gambar dadu disimpan dalam folder
drawable
dengan namadice_1
,dice_2
, hinggadice_6
, sesuai jumlah titik pada sisi dadu. -
Selain itu, ada juga ikon aplikasi seperti
ic_launcher_foreground
danic_launcher_background
.
Kesimpulan:
Proyek ini merupakan contoh sederhana dari interaksi pengguna menggunakan Jetpack Compose. Fungsinya adalah melempar dadu secara acak dan menampilkan hasilnya dalam bentuk gambar. Interaksi utamanya terjadi saat tombol ditekan, yang menghasilkan perubahan gambar berdasarkan angka acak yang dihasilkan aplikasi.
Link Source : Source
Komentar
Posting Komentar