// ShowSuit Example // Source code file: MainActivity.kt // Display a spade, heart, diamond, or club image // when the button is clicked, depending on which // radio button is checked. package it372.ssmith.showsuit 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.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.material3.Button import androidx.compose.material3.RadioButton import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.res.painterResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) enableEdgeToEdge() setContent { MainLayout( ) } } } @Composable fun MainLayout( ) { // State variables for composables var selected = remember { mutableStateOf(2) } var imageDisplay = remember { mutableStateOf(R.drawable.heart) } Column(Modifier.padding(all = 50.dp), horizontalAlignment = Alignment.CenterHorizontally) { Row(verticalAlignment = Alignment.CenterVertically) { RadioButton( selected = selected.value == 1, onClick = { selected.value = 1 }, modifier = Modifier .padding(all = 20.dp) .size(width = 50.dp, height = 50.dp) ) Text(text = "Spade") } Row(verticalAlignment = Alignment.CenterVertically) { RadioButton( selected = selected.value == 2, onClick = { selected.value = 2 }, modifier = Modifier .padding(all = 20.dp) .size(width = 50.dp, height = 50.dp) ) Text(text = "Heart") } Row(verticalAlignment = Alignment.CenterVertically) { RadioButton( selected = selected.value == 3, onClick = { selected.value = 3 }, modifier = Modifier .padding(all = 20.dp) .size(width = 50.dp, height = 50.dp) ) Text(text = "Diamond") } Row(verticalAlignment = Alignment.CenterVertically) { RadioButton( selected = selected.value == 4, onClick = { selected.value = 4 }, modifier = Modifier .padding(all = 20.dp) .size(width = 50.dp, height = 50.dp) ) Text(text = "Club") } Button(onClick = { val imageResource = if (selected.value == 1) R.drawable.spade else if (selected.value == 2) R.drawable.heart else if (selected.value == 3) R.drawable.diamond else R.drawable.club imageDisplay.value = imageResource }) { Text(text = "Show Suit") } Image( painter = painterResource(imageDisplay.value), contentDescription = "Andromeda Galaxy", contentScale = ContentScale.Crop, modifier = Modifier .padding(30.dp) .fillMaxWidth() ) } } @Preview(showBackground = true) @Composable fun MainLayoutPreview() { MainLayout( ) }