📅  最后修改于: 2023-12-03 15:23:06.256000             🧑  作者: Mango
在 Android Jetpack Compose 中创建触摸弹跳动画非常简单,我们只需使用 animate*AsState
函数即可。本文将向你展示如何在 Jetpack Compose 中创建一个简单的触摸弹跳动画。
首先,我们需要创建一个可触摸的 Composable。我们可以使用 Modifier.clickable
函数来创建一个可点击的组件。
@Composable
fun TouchableDemo() {
var scaleState by remember { mutableStateOf(1f) }
val scaleValue by animateFloatAsState(
targetValue = if (scaleState == 1f) 1.2f else 1f,
animationSpec = spring()
)
Box(
Modifier
.fillMaxSize()
.clickable {
scaleState = if (scaleState == 1f) 0f else 1f
}
.graphicsLayer(
scaleX = scaleValue,
scaleY = scaleValue,
pivot = Pivot.Center
)
) {
Text(
text = "Click me!",
style = TextStyle(fontSize = 20.sp),
modifier = Modifier.align(Alignment.Center)
)
}
}
这段代码中,我们创建了一个 TouchableDemo
Composable,其中使用了 Box
来创建一个可点击的容器,并使用 MutableState
来保存其缩放状态。我们将状态传递给 animateFloatAsState
函数,并设置 animationSpec
参数(此处我们使用了默认的 spring
动画),返回一个可观测的缩放值,用于更新 Box
容器的 scaleX
和 scaleY
。
现在我们可以在我们的应用程序中使用 TouchableDemo
Composable,如下所示:
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
MaterialTheme {
TouchableDemo()
}
}
}
}
恭喜你,你已经成功地在 Android Jetpack Compose 中创建了一个简单的触摸弹跳动画。通过使用 animate*AsState
函数,我们可以轻松地实现这些动画效果。在实际应用中,你可以根据需要使用更多的参数来自定义动画效果,例如时长、缓动函数、重复次数等。