系统相关
首页 > 系统相关> > Android系统 Compose 列表排序动画代码怎么实现?

Android系统 Compose 列表排序动画代码怎么实现?

作者:互联网

下面是一个简单的示例,介绍了如何在列表排序时应用动画效果:

import androidx.compose.animation.core.Animatable
import androidx.compose.animation.core.animateDpAsState
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.*
import androidx.compose.material3.*
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.Dp
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp

@Composable
fun SortingList() {
    var items by remember { mutableStateOf(listOf("Banana", "Apple", "Peach", "Orange")) }
    var sorted by remember { mutableStateOf(false) }

    Column {
        Button(onClick = {
            sorted = !sorted
            items = if (sorted) items.sorted() else items.sortedDescending()
        }) {
            Text("Sort")
        }

        LazyColumn {
            items(items) { item ->
                ListItem(item)
            }
        }
    }
}

@Composable
fun ListItem(text: String) {
    var height by remember { mutableStateOf(50.dp) }
    val animatedHeight: Dp by animateDpAsState(targetValue = height)

    Box(
        modifier = Modifier
            .fillMaxWidth()
            .height(animatedHeight)
            .padding(4.dp)
            .clickable {
                height = if (height == 50.dp) 70.dp else 50.dp // 点击时改变高度
            },
        contentAlignment = Alignment.Center
    ) {
        Text(text)
    }
}

Kotlin

在这个示例中,我们创建了一个简单的可点击列表项,当点击列表项时会触发高度动画,并且我们有一个按钮来改变列表的排序。 通过 animateDpAsState,我们可以让高度平滑过渡,达到动画效果。

标签:
来源: