android / snippets

Main repository for snippets surfaced on developer.android.com.
Apache License 2.0
583 stars 156 forks source link

The following code may encounter issues when using AnimatedVisibility, as the animation is very uneven #224

Open Kuki93 opened 6 months ago

Kuki93 commented 6 months ago

@Preview
@Composable
fun AnimatedVisibilityCookbook() {
    var visible1 by remember {
        mutableStateOf(true)
    }

    var visible2 by remember {
        mutableStateOf(true)
    }
    Row(
        modifier = Modifier.padding(top = 20.dp).fillMaxWidth(),
        horizontalArrangement = Arrangement.spacedBy(6.dp)
    ) {
        Button(
            modifier = Modifier,
            onClick = {
                visible1 = !visible1
            },
            shape = RoundedCornerShape(6.dp),
            colors = ButtonDefaults.buttonColors(containerColor = Color.White),
            contentPadding = PaddingValues(horizontal = 8.dp)
        ) {
            Text(
                text = "text",
                color = Color.Black,
                textAlign = TextAlign.Center
            )
        }
        AnimatedVisibility(
            modifier =  Modifier.weight(1f),
            visible = visible1
        ) {
            Button(
                modifier = Modifier,
                onClick = {  },
                shape = RoundedCornerShape(6.dp),
                colors =  ButtonDefaults.buttonColors(containerColor = Color.White),
                contentPadding = PaddingValues(horizontal = 8.dp)
            ) {
                Text(
                    text = "text1",
                    color = Color.Black,
                    textAlign = TextAlign.Center
                )
            }
        }
        AnimatedVisibility(
            modifier = Modifier.weight(1f),
            visible = visible2
        ) {
            Button(
                modifier = Modifier,
                onClick = {  },
                shape = RoundedCornerShape(6.dp),
                colors =  ButtonDefaults.buttonColors(containerColor = Color.White),
                contentPadding = PaddingValues(horizontal = 8.dp)
            ) {
                Text(
                    text = "text2",
                    color = Color.Black,
                    textAlign = TextAlign.Center
                )
            }
        }
    }
}