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
modifier
dari tanda tangan metodeDiceWithButtonAndImage()
ke argumen pengubahColumn()
. -
Teruskan argumen
horizontalAlignment
ke 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
roll
ke 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
painter
ke fungsiImage()
, lalu tetapkan nilaipainterResource
yang 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
result
menjadi composableremember
.
Composable remember
memerlukan fungsi yang diteruskan.
- Dalam isi composable
remember
, teruskan fungsimutableStateOf()
, lalu teruskan argumen1
ke fungsi tersebut.
- Di bawah pembuatan instance variabel
result
, buat variabelimageResource
tetap yang ditetapkan ke ekspresiwhen
yang menerima variabelresult
, lalu tetapkan setiap kemungkinan hasil ke drawable-nya.
- Ubah ID yang diteruskan ke parameter
painterResource
composableImage
dari drawableR.drawable.dice_1
ke variabelimageResource
. - Ubah parameter
contentDescription
composableImage
untuk mencerminkan nilai variabelresult
dengan mengonversi variabelresult
menjadi string dengantoString()
dan meneruskannya sebagaicontentDescription
.
Comments
Post a Comment