Tugas Pertemuan ke-4 [Memodifikasi App dengan Button Component]
Mengatur Tata Letak
Fungsi
Column()
adalah tata letak composable yang menempatkan turunannya dalam urutan vertikal. Di desain aplikasi yang diharapkan, Anda dapat melihat bahwa gambar dadu ditampilkan secara vertikal di atas tombol lempar:
-
Dalam fungsi
DiceWithButtonAndImage(), tambahkan fungsiColumn(). -
Teruskan argumen
modifierdari tanda tangan metodeDiceWithButtonAndImage()ke argumen pengubahColumn(). -
Teruskan argumen
horizontalAlignmentke fungsiColumn(), lalu tetapkan ke nilaiAlignment.CenterHorizontally.
Argumen modifier memastikan bahwa composable dalam fungsi
Column() mematuhi batasan yang dipanggil pada instance
modifier.
fun DiceWithButtonAndImage(modifier: Modifier = Modifier) {
Column(
modifier = modifier,
horizontalAlignment = Alignment.CenterHorizontally
)
}
Menambahkan Component Button
- Di file
strings.xml, tambahkan string dan tetapkan ke nilaiRoll. - Dalam isi lambda
Column(), tambahkan fungsiButton(). - Di file
MainActivity.kt, tambahkan fungsiText()keButton()dalam isi lambda fungsi. - Teruskan ID resource string dari string
rollke fungsistringResource()dan teruskan hasilnya ke composableText.
Column(
modifier = modifier,
horizontalAlignment = Alignment.CenterHorizontally
) {
Button(onClick = { /*TODO*/ }) {
Text(stringResource(R.string.roll))
}
}Menambahkan Composable Image
Column untuk menumpuk Composable secara vertikal sehingga Composable mana pun yang dideklarasikan pertama dalam fungsi Column() akan ditampilkan sebelum composable dideklarasikan setelah itu dalam fungsi Column() yang sama.- Pada isi fungsi
Column(), buat fungsiImage()sebelum fungsiButton().
Column(
modifier = modifier,
horizontalAlignment = Alignment.CenterHorizontally
) {
Image()
Button(onClick = { /*TODO*/ }) {
Text(stringResource(R.string.roll))
}
}- Teruskan argumen
painterke fungsiImage(), lalu tetapkan nilaipainterResourceyang menerima argumen ID resource drawable. Untuk saat ini, teruskan ID resource berikut: argumenR.drawable.dice_1.
Mengatur Logika Pelemparan Dadu
Composable bersifat stateless secara default, yang berarti bahwa composable tersebut tidak memiliki nilai dan dapat disusun ulang oleh sistem kapan saja sehingga mengakibatkan nilai tersebut direset. Namun, Compose menyediakan cara yang praktis untuk menghindari hal ini. Fungsi composable dapat menyimpan objek dalam memori menggunakan composable remember.
- Ubah variabel
resultmenjadi composableremember.
Composable remember memerlukan fungsi yang diteruskan.
- Dalam isi composable
remember, teruskan fungsimutableStateOf(), lalu teruskan argumen1ke fungsi tersebut.
- Di bawah pembuatan instance variabel
result, buat variabelimageResourcetetap yang ditetapkan ke ekspresiwhenyang menerima variabelresult, lalu tetapkan setiap kemungkinan hasil ke drawable-nya.
- Ubah ID yang diteruskan ke parameter
painterResourcecomposableImagedari drawableR.drawable.dice_1ke variabelimageResource. - Ubah parameter
contentDescriptioncomposableImageuntuk mencerminkan nilai variabelresultdengan mengonversi variabelresultmenjadi string dengantoString()dan meneruskannya sebagaicontentDescription.


Comments
Post a Comment