MainActivity.kt

// 8-0 어떤 것을 만들지 살펴보기(이미지포함)

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            PocketTheme {
                PocketCard()
            }
        }
    }
}

@Composable
fun PocketCard(){

    var cardFront by remember {
        mutableStateOf(true)
    }

    val animationDegree by animateFloatAsState(
        targetValue = if(cardFront) 0f else 180f,
        animationSpec = tween(500)
    )

    Log.d("cardFront", cardFront.toString())
    Log.d("animationDegree", animationDegree.toString())

    Box(modifier = Modifier
        .fillMaxSize()
        .padding(top = 50.dp, bottom = 50.dp, start = 20.dp, end = 20.dp)
        .clickable {
            cardFront = !cardFront
        }
        .graphicsLayer {
            rotationY = animationDegree
        }
        //.background(Color.Gray)
    ) {
        if(animationDegree <= 90) {
            PocketFront()
        } else {
            PocketBack()
        }
    }

}

@Composable
fun PocketFront(){

    Box(modifier = Modifier
        .fillMaxSize()
        .background(Color(0xffffd700), shape = RoundedCornerShape(30.dp))
    ) {

        Box(modifier = Modifier
            .fillMaxSize()
            .padding(10.dp)
            .background(Color.Black, shape = RoundedCornerShape(30.dp)),
            contentAlignment = Alignment.Center
        ) {
            Image(
                painter = painterResource(id = R.drawable.card),
                contentDescription = null
            )
        }

    }

}

@Composable
fun PocketBack(){

    Box(modifier = Modifier
        .fillMaxSize()
        .background(Color(0xffffd700), shape = RoundedCornerShape(30.dp))
    ) {

        Box(modifier = Modifier
            .fillMaxSize()
            .padding(10.dp)
            .background(Color.Red, shape = RoundedCornerShape(30.dp))
            .graphicsLayer {
                rotationY = 180f
            }
            ,
            contentAlignment = Alignment.Center
        ) {
            Column(
                modifier = Modifier.fillMaxSize(),
                verticalArrangement = Arrangement.Center,
                horizontalAlignment = Alignment.CenterHorizontally
            ) {
                Image(
                    painter = painterResource(id = R.drawable.img),
                    contentDescription = null
                )

                Spacer(modifier = Modifier.padding(20.dp))

                Text(
                    text = "파이리",
                    fontSize = 30.sp,
                    color = Color.White,
                    fontWeight = FontWeight.ExtraBold
                )

            }
        }

    }

}